1 什么是激活函数
激活函数就是一类x到y的映射
目的:是为了引入非线性元素,解决线性模型不能解决的问题。
意义:一个没有激活函数的神经网络将只不过是一个线性回归模型(Linear regression Model)。它并不能表达复杂的数据分布。
激活函数一般要满足的性质:
非线性:因为如果是线性激活函数,不管多少隐藏层,输出都是输入的线性组合。
可微性:因为当优化方法是基于梯度的时候,要对激活函数求偏导。
单调性:当激活函数是单调的时候,单层网络能够保证是凸函数。
输出值范围:当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著。当激活函数输出值为无限的时候,模型的训练会更加高效,不过在这种情况下,一般需要更小的learning rate。
2 神经网络中为什么要使用激活函数?
因为有些数据集并不是线性可分的。比如下面两幅图,左边是线性不可分,右边是线性可分。如果不用一个激活函数来处理,那这个神经网络什么时候也不能把左边这幅图的两种颜色的数据分开。
3 相关概念
饱和:当一个激活函数h(x)满足
limn→±∞ h ′(x)=0 我们称之为饱和了,n趋近于正无穷时为
硬饱和和软饱和:对任意的xx,如果存在常数cc,当x>cx>c时恒有 h′(x)=0h′(x)=0则称其为右硬饱和,当x
4 常用的激活函数
4.1 Sigmoid函数
sigmoid函数在浅层神经网络(三层)中使用比较多。
公式:
f(x)=11+e−x图像:
优点:
1、输出范围有限(0,1),在数据传递过程中不容易发散。所以可以作为输出层,输出表示概率。
缺点:
1、饱和导致容易产生梯度消失。sigmoid 神经元在值为 0 或 1 的时候接近饱和,这些区域,梯度几乎为 0。因此在反向传播时,这个局部梯度会与整个代价函数关于该单元输出的梯度相乘,结果也会接近为 0 。
这样,几乎就没有信号通过神经元传到权重再到数据了,因此这时梯度就对模型的更新没有任何贡献。导致信息丢失。
除此之外,为了防止饱和,必须对于权重矩阵的初始化特别留意。比如,如果初始化权重过大,那么大多数神经元将会饱和,导致网络就几乎不学习。
2、其输出并不是以0为中心的,这个特性会导致后面网络层的输入也不是0为中心的,进而影响梯度下降的运作。因为如果输入都是正数的话,那么关于梯度在反向传播过程中,要么全是正数,要么全是负数,这将会导致梯度下降权重更新时出现z字型下降。
4.2 tanh(双曲正切)函数
公式:
t