8、激活函数
1、激活函数的意义:
权重和偏置对信号进行线性变换后
而激活函数对信号进行非线性变换,使得可以任意学习输入和输出之间的复杂变换
寻找使神经网络更快更好学习的激活函数仍然是活跃的研究方向。
2、神经网络如何学习
预测输出和期望输出之间的差距可以转化为一种度量,即损失函数,训练目标就是找到使训练集上的损失函数最小化的权重矩阵和偏置向量。
关于参数的偏导数即梯度用于更新权重。
3、激活函数类型
线性激活函数,分离线性可分的数据
非线性激活函数,分离非线性可分的数据
意义主要有两点:
非线性决策边界、
将神经网络的输出压缩进特定边界内
压缩到特定边界内那么可以持续进行多层的MLP和梯度更新,BP算法。
(1)sigmoid,又叫logistic激活函数
特点:转化到0-1区间
缺点1:趋近0、1时,梯度消失
缺点2:不以0为中心
缺点3:指数函数计算成本高昂
(2)tanh,又叫双曲正切激活函数
改进了期望不为0的缺点:
同时也存在梯度消失的问题
(3)relu,修正线性单元 max(0,x)
改进梯度消失问题:
优点1:快速收敛,梯度相对大
优点2:在正区域不会梯度消失
优点3:采用了阈值,计算相对简单
缺点1:不以0为中心
缺点2:在x<0时,前向传导保持非激活,在后向传播中杀死梯度,这样权重无法更新
(3)leaky-relu,max(0.1x,x),在负区域有0.1的正梯度
解决在负区域的梯度消失的问题:
但是使用该函数的结果不连贯???
(4)parametric relu,max(ax,x),a是超参,
扩展leaky-relu,不让x乘常数项,而是乘超参数,效果更好
(5)elu:指数线性单元,x>0,x;x<0,a(e(x)-1)
缺点:指数运算复杂
优点:负数部分微分时分线性,相对leaky\relu
(6)selu:扩展型指数线性单元激活函数
整体在elu的基础上乘以了一个超参
(7)gelu:高斯误差线性单元激活函数,transformer
(8)swich,论文说优于relu函数
x/(1+e-x)
4、代码使用
在keras模型中使用激活函数一般有两种方式,一种是作为某些层的activation参数指定,另一种是显式添加layers.Activation激活层。
参考资料:
1、一文概览深度学习中的激活函数(入门篇)
https://zhuanlan.zhihu.com/p/98472075
2、从ReLU到GELU,一文概览神经网络的激活函数
https://zhuanlan.zhihu.com/p/98863801
3、5-3,激活函数activation(有代码示例)
https://www.kesci.com/mw/project/5ea7ca22564b12002c09d4db