激活函数
约 10 分钟
没有它,一百层也白搭
这里有个反直觉的事实:如果每一层只做「加权求和」,那么叠多少层都等价于一层——因为直线叠直线还是直线, 展开后依然是一次式。多层网络的全部魔力,来自每次求和之后塞进去的一个小函数:激活函数,它负责把直线「掰弯」。
最有名的激活函数:ReLU
ReLU 简单到只有一条规则:负数变 0,正数不变,写成 。输入 −3 输出 0,输入 2.5 输出 2.5。它像一个只放行正能量的闸门。就这么个简单函数,计算快、训练稳,2012 年后几乎一统天下。
它的前辈们
更早流行的是 sigmoid:把任何数挤压到 0 和 1 之间,像一个「柔和的开关」,输出可以直接当概率用。但它有个毛病:输入很大或很小时曲线太平,训练信号几乎传不动(梯度消失),所以现在的隐藏层多用 ReLU,sigmoid 退守到输出层。
常见误区
别把激活函数当可有可无的装饰——没有它就没有深度学习;也别纠结「背下所有激活函数」,先记住 ReLU 一个就够用,《动手学深度学习》的多层感知机一章会讲清来龙去脉。
练一练:口算这几个 ReLU:输入 5、−2、0、100 各输出什么?再说说 sigmoid 的输出范围。
小纸条
口算 ReLU 在 5、−2、0、100 处的输出,并说出 sigmoid 输出的取值范围。
登录 后可看答案