神经网络的激活函数(Activation Function)
神经网络可以用在分类问题和回归问题上,不过需要根据情况改变输出层的激活函数。一般而言,回归问题用恒等函数,分类问题用softmax函数。
神经网络的激活函数必须使用非线性函数,因为使用线性函数的话,加深神经网络的层数就再没有意义了:
- 非线性: 当激活函数是非线性的时候(一阶导数不为常数),一个两层的神经网络就可以逼近基本上所有的函数了。如果激活函数是恒等激活函数的时候(即f(x)=x),就不满足这个性质了,而且如果MLP使用的是恒等激活函数,那么其实整个网络跟单层神经网络是等价的。
- 可微性: 当优化方法是基于梯度的时候这个性质是必须的
- 单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数
- f(x)≈x: 当激活函数满足这个性质的时候,如果参数的初始化是random的很小的值,那么神经网络的训练将会很高效;如果不满足这个性质,那么就需要很用心的去设置初始值。
- 输出值的范围: 当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况下,一般需要更小的learning rate.
softmax函数
分类问题中使用的softmax函数可以用下式表示:
yk=eak∑i=1neai y_k = \frac{ \text e ^{a_k}}{ \sum_{i=1}^n \text e^{a_i}} yk=∑i=1neai