深度学习中的激活函数对比

来源:互联网 发布:应用商店软件下载 编辑:程序博客网 时间:2024/06/05 22:30

1、激活函数的作用:

是为了增加神经网络模型的非线性。否则你想想,没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。所以你没有非线性结构的话,根本就算不上什么神经网络。

激活函数通常有如下一些性质:

非线性: 当激活函数是线性的时候,一个两层的神经网络就可以逼近基本上所有的函数了。但是,如果激活函数是恒等激活函数的时候(即f(x)=x),就不满足这个性质了,而且如果MLP使用的是恒等激活函数,那么其实整个网络跟单层神经网络是等价的。可微性: 当优化方法是基于梯度的时候,这个性质是必须的。单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数。f(x)≈x: 当激活函数满足这个性质的时候,如果参数的初始化是random的很小的值,那么神经网络的训练将会很高效;如果不满足这个性质,那么就需要很用心的去设置初始值。输出值的范围: 当激活函数输出值是 有限 的时候,基于梯度的优化方法会更加 稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是 无限 的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的learning rate.  

2、激活函数列表

激活函数列表

3、 ReLU和sigmoid对比

Sigmoid 的数学形式如下:

f(x)=11+ex

sigmoid

ReLU的数学表达式为:

f(x)=max(0,x)

ReLU

发现ReLU效果显著的论文:
Jarrett, K., Kavukcuoglu, K., Ranzato, M., and LeCun, Y. (2009a). What is the best multi-stage architecture for object recognition?

发现ReLU更容易学习优化。因为其分段线性性质,导致其前传,后传,求导都是分段线性。而传统的sigmoid函数,由于两端饱和,在传播过程中容易丢弃信息:
Glorot, X., Bordes, A., and Bengio, Y. (2011b). Deep sparse rectifier neural networks. In JMLR W&CP: Proceedings of the Fourteenth International Conference on Artificial Intelligence and Statistics (AISTATS 2011). 130, 297

缺点是不能用Gradient-Based方法。同时如果de-active了,容易无法再次active。不过有办法解决,使用maxout激活函数:
Goodfellow, I. J., Warde-Farley, D., Mirza, M., Courville, A., and Bengio, Y. (2013a). Maxout networks. In S. Dasgupta and D. McAllester, editors, ICML’13, pages 1319–1327. 130, 152, 243

4、激活函数选择:

如果你使用 ReLU,那么一定要小心设置learning rate, 而且要注意不要让你的网络出现很多“dead”神经元,如果这个问题不好解决,那么可以试试 Leaky ReLU、PReLU 或者Maxout.
友情提醒:最好不要用sigmoid,你可以试试tanh,不过可以预期它的效果会比不上 ReLU 和 Maxout.
还有,通常来说,很少会把各种激活函数串起来在一个网络中使用的。

未完待续。。。。。
1 0
原创粉丝点击