激活函数
在普通的DNN中,如果不使用激活函数,相当于激活函数是f(x) = x。无论有多少隐藏层,输出的都是输入的线性组合,只能运用于线性分类。与没有隐藏层的效果相当,这就是原始的感知机。所以引入了非线性激活函数,增加神经网络的非线性。
常见激活函数:
(1)sigmoid函数
在逻辑回归中使用的激活函数,。
它的优点在于求导方便。
但是有三大缺点:
1、容易出现gradient vanishing:可以看到sigmoid在很大或者很小的情况下梯度趋近于0。而神经网络的反向传播过程是一个链式法则,是当前层的导数是之前各层导数的乘积,结果可能会很接近0。同时,sigmoid的导数最大值为0.25,这可能在反向传播层数较多的情况下被压缩为极小的数值,这也导致模型收敛过慢。
2、不是zero-centered:导致输入下一层神经元的数值全为正。
由于
,
的符号取决于
的符号,这导致ω的梯度始终为正或者负,意味着ω一直朝着某个方向变化,这就是一个之字形(zig-zag)的更新走势,这导致收敛过程非