1.激活函数
使用一个神经网络时,需要决定使用哪种激活函数(Activation functions)用隐藏层上,哪种用在输出节点上。到目前为止,之前只用过 sigmoid 激活函数,但是,有时其他的激活函数效果会更好。
常用的四种激活函数:
- sigmoid ,
- tanh ,
- ReLu ,max(0,z)$
- Leaky ReLu ,max(0.01z,z)$
图像如下:
微信截图_20190730172718.png1.1 sigmoid函数
公式:
sigmoid函数的值域:(0,1),现在基本上使用sigmoid函数的场合很少,大多数情况下使用tanh函数替代,tanh函数在所有场合都优于 sigmoid 函数。除非在二分类情况下,期待输出的y值为0或1(而不是-1和1)
1.2 tanh函数
公式:
tanh 函数是 sigmoid 的向下平移和伸缩后的结果。对它进行了变形后,穿过了(0,0)点,并且值域介于+1 和-1 之间。结果表明,如果在隐藏层上使用tanh 函数,效果总是优于 sigmoid 函数。且在训练一个算法模型时,如果使用 tanh 函数代替sigmoid 函数中心化数据,使得数据的平均值更接近 0 而不是sigmoid函数的0.5
sigmoid和tanh函数的缺点:
在z特别大或者特别小的情况下,导数的梯度或者函数的斜率会变得特别小,最后就会接近于0,导致降低梯度下降的速度。
1.3 ReLu函数
公式:
修正线性单元(Rectified linear unit,ReLU)是在机器学习中很流行的一个函数,用其替代sigmoid函数可大幅加速梯度下降的过程,降低训练时间。
如图,函数分为两个部分,左半部分z<0时,函数值恒 = 0,导数 = 0;右半部分当z >= 0 时,函数是斜率为1的线性函数,导数恒 = 1.
这有一些选择激活函数的经验法则:
如果输出是0、1值(二分类问题),则输出层选择sigmoid /tanh函数,然后其它的所有单元都选择Relu函数。
1.4 Leaky ReLu函数
公式:
Leaky ReLu是Relu的改装版,当z是负值时,这个函数的值不是等于 0,而是轻微的倾斜,为什么常数是 0.01?其实是个经验值,当然,也可以选择不同的参数。 这个函数通常比 Relu 激活函数效果要好,尽管在实际中 Leaky ReLu 使用的并不多。
Relu由于在z < 0时,梯度直接为0,神经元此时不会训练,即大大加速了模型训练,节约时间。但同时会产生所谓的稀疏性,为了平衡稀疏性和模型训练效率,才诞生了 Leaky ReLu。
2.激活函数的导数
- sigmoid ,
- anh ,
- ReLu ,
- Leaky ReLu ,
2.1 sigmoid
,
在神经网络中:
2.2 tanh
,
2.3 ReLu
,
通常在z = 0的时候给定其导数0或1,不过z = 0的情况很少
2.4 Leaky ReLu
,
通常在z = 0的时候给定其导数0.01或1,不过z = 0的情况很少
网友评论