1.什么是激活函数?
- 在生物神经网络中,神经元通过树突接收来自其他神经元的信号,其中树突的权重称为突触权值,将和接收的信号相乘。来自树突的信号在细胞体内不断累积,如果信号强度超过特定阈值,则神经元向轴突传递信息。如未超过,则信号被该神经元"杀死",无法进一步传播。
- 参考生物神经网络,在人工神经网络的神经元上构造函数,负责将有效的神经元输入映射到输出端;
2.为什么要用激活函数?
- 增加神经网络的非线性,使得其能够去学习并理解复杂的非线性函数;
- 不使用的后果:有限多的矩阵线性组合,最终的结果也仅能处理线性问题,无法去学习非线性函数;
3.激活函数的特点
- 非线性:这是使用它的主要原因;
- 可微性:在梯度下降时,需要对其求导来传播误差;
4.主要的激活函数介绍
4.1 sigmoid
表达式:
图形描述:sigmoid函数又称为Logistic激活函数,可以将数据压缩到(0,1)之间;
存在的问题:
① 当输入非常大或非常小时,此时神经元处于饱和状态;当使用梯度下降更新权值时,由于梯度趋向于0,所以梯度很难传播,出现"梯度消失"的现象,权值无法实现更新;
② sigmoid的输出不是以0为中心,而是0.5,这样在求权重w的梯度时,梯度总是正或负的;
③ 反复计算exp,开销很大;
4.2 tanh
表达式:
图形描述:将数据压缩在(-1,1)之间,等同于两个sigmoid函数叠加的效果;
优点:
a. 以原点为中心,避免出现梯度下降呈"Z"型;
b. 根据其导数可知,tanh在一定程度上减缓了梯度消失的问题;
问题:存在梯度消失和收敛速度慢的问题;
4.3 Relu--Rectified Linear Unit(规整化线性单元)
表达式:
图像:
优点:
a. 下降速度得以提升,在x>0时神经元不会出现饱和现象;
b. 简单的求导,运算速度快;
问题:
a.不以0为中心,出现"Z"型下降的趋势;
b. 当x<0时,神经元处于完全失活状态,梯度无法传播,权值无法更新;
4.4 Leaky-Relu
表达式:
其中,a很小;
图像:
优点:在一定程度上解决了Relu中神经元坏死的情况;
问题:结果乘以一个常数,导致其最终结果不连贯;
4.5 P-Relu
表达式:
初始值为0.25;
优点:将系数定义为变量,在梯度下降过程中更新该系数;
4.6 R-Relu
初始系数从高斯分布中随机选取,在之后的过程中不断修正;
4.7 Maxout
说明:Maxout可以认为在神经网络中加入一层激活函数层,包含一个参数k(k代表激活层神经元的个数,每一个神经元有一组值).相比ReLU,sigmoid等,其特殊之处在于增加了k个神经元,然后输出激活值最大的值:
表达式(K=2时):
优点:
a. 拟合能力强,可以拟合所有的凸函数
b. 具备Relu的线性,不饱和性,同时没有Relu神经元失活的情况;
问题:增加新的参数,随着网络深度的增加,参数求解问题会显得更加明显;
4.8 softmax
应用于多分类问题,每个值代表对应类别出现的概率
表达式:
参考: