什么是激活函数
激活函数是指在多层神经网络中,上层神经元的输出和下层神经元的输入存在一个函数关系,这个函数就是激活函数。如下图所示,上层神经元通过加权求和,得到输出值,然后被作用一个激活函数,得到下一层的输入值。引入激活函数的目的是为了增加神经网络的非线性拟合能力
三种常见的激活函数
- RElU(Rectified Linear Unit), 线性整流函数,在神经网络中是常用的激活函数。 也指代了数学中的斜坡函数, f(X) = max(0, X)。 函数图像如下图所示:
使用ReLU激活函数作为非线性变换得到的输出结果是:Output = max(0, W.T*X + b).
ReLU函数的优点:1)作为激活函数,计算简单,更加高效,速度快,得到一个值,可以直接看这个值的大小,然后直接得出结果,不用多余的加减乘除计算 2)ReLU函数也被认为具有生物学合理性
单侧抑制,小于0全部抑制;
宽兴奋边界,大于0的部分达到无穷都可以,没有限制,即兴奋程度可以很高;
有很好的稀疏性,能让小于0的全部变为0,增大了稀疏性。
稀疏性越大:是指数据中0的数量很多;反之,则稀疏性小 3)在优化时,不像Sigmoid型函数的两端饱和(两端的梯度都接近0),ReLU函数为左饱和函数,且在x> 0 时导数为1,而且导数也好求,在一定程度上能解决梯度消失的问题,加速梯度下降的收敛速度
- Sigmoid,连续、平滑的s型激活函数, 也被称为逻辑函数(logistic), 可以将一个实数映射到(0, 1)的区间,用作二分类。 f(x) = 1.0 / (1.0 + e^(-x)) 函数图像如下图所示:
Sigmoid函数优点:平滑、易于求导。
Sigmoid函数缺点:计算量大, 反向传播求误差梯度时, 求导设计除法, 也很容易出现梯度消失,无法训练的情况。
- Tanh函数, 双曲正切函数。 f(x) = tanh(x) = (e^x - e^(-x)) / (e^x + e^(-x))。 函数图像如下图所示:
为什么激活函数要采用非线性函数的例子
激活函数采用非线性函数的数学推导 就是证明当激活函数采用线性函数时, 对于多层神经网络, 其输出是输入的多层拟合。
激活函数g(z) = lambda * z, 以两层神经网络为例, 其输出为:
无论网络中隐藏层有多少, 其最终结果都是输入X的线性拟合。这表明没有引入非线性激活函数的神经网络和直接使用线性模型的最终效果相同。那么,也就是说神经网络中的隐含层不起作用。因此,要使神经网络能够发挥其作用,其激活函数必须是非线性函数。