激活函数总结
时间:2018-05-06 05:38:14来源:杰瑞文章网点击:作文字数:400字
作文导读:本文主要在网上和书中整理,并加入自己理解,目的是方便自己学习和复习,有误之处请谅解,欢迎指出 激活函数一般为非线性函数,可以为神经网络提供非线性建模的能力。如果某个神经网络仅仅只有卷积和全连接层计算,不包含非线性函数,则该网络只是一种线性映射,难以解决非线性问题。例如下图感知机(单层和多层)
单层感知机
多层感知机
可以发现,没有激活函数输出的感知机仅仅是线性方程,无法表示非线性模型。这就需要非线性函数来帮助方程提供非线性表达,目前最常见的激活函数有Sigmoid、Tanh、Relu以及LRelu。1、Sigmoid Sigmoid函数是早期非常经典的激活函数,输出值在 [0,1] 之间,当输入值为非常大负数时,值为0,当输入值非常大正数时,值为1。Sigmoid非常经典,但是现在它以不太受欢迎,原因是它存在一个几个比较大的缺陷,后面做详细讨论。 其计算公式、函数图像以及导数图像如下:
Sigmoid公式
Sigmoid函数图像
导数图像
1、非0均值(不是 zero - centered): 通过函数曲线可以观察到Sigmoid函数以0.5为中心对称分布,输出值恒为正数,会降低梯度下降收敛的速度。举例证明。 假设某数据集样本包含两个特征x1,x2,正向传递感知机与激活函数公式如下图,其中w1,w2为权重,b为偏置,为Sigmoid函数:
增加损失函数,计算M个样本的损失,整体网络公式如下,L为损失函,y为标签值:
梯度下降公式:
讨论梯度下降方向问题:假设输入特征x均为正,为超参数,所以方向由对求导来确定,又根据求导链式法则。
由于使用Sigmoid函数作为激活函数,其输出均为正,导致全为正,所以两个特征的权重参数向着同一方向优化。假设一特征正相关,另一特征负相关,则优化路线出现Z字型,收敛缓慢。如图所示。
2、梯度爆炸、梯度消失: 根据Sigmoid函数的导数图像可以观察到,其取值范围再0-0.25之间。当我们初始化网络权重小于1时,随着网络层数的不断增加,反向传递求导的值小于0不断相乘,导致远处的梯度更新太小,即梯度消失。
同理,当初始权值参数过大时,导致的值大于1,大于1的值不断相乘,数值过大,即梯度爆炸。 3、计算量大: 指数运算,反向传播求误差梯度时,求导涉及除法。2、Tanh Tanh函数是Sigmoid函数的一种变种,取值范围为 [-1 , 1],它解决了Sigmoid函数的非0均值的问题,公式、图像以及导数图像如下图所示:
Tanh图像
Tanh导数图像
从导数图像看到,取值小于等于1,梯度消失和梯度爆炸的问题依然存在。从公式上看,依然存在指数运算,计算量大3、Relu 目前比较受欢迎的激活函数是Relu,公式简单,但是非常好用,公式如下所示,输入小于0时输出为0,大于0时输出为本身。
Relu函数
Relu图像
Relu导数图像
Relu解决的问题: 1、解决了梯度消失的问题 2、公式简单没有指数运算,计算快 3、x>0时,梯度为1,无梯度耗散问题,收敛速度快 存在的问题: 1、可能出现神经元死亡,权重无法更新:首先复习前向传播和反向传播。前向传播公式为:
前向传播
反向传播公式为:
反向传播
梯度更新:
梯度更新
如果梯度过大,且学习率设置较大,可能导致权值一次更新太多,对任意样本,其输出小于0。
这会产生什么后果(先记住小于0的条件,理解下面的解释)。举例下图网络结构:为了方便,仅针对红色连接神经元。
对于前向传播时:假设已死亡(即一次更新太多,小于零),对于任意样本,那么有激活函数输出始终小于0
对于反向传播时:根据反向传播公式
因小于0,则为0。所以小于0时有
推出
这就出问题了,对于权重矩阵 的第一行的参数,在整个训练集上,损失函数对它的导数始终为零,也就是说,遍历了整个训练集,它的参数都没有更新。因此就说该神经元死了。 神经元死亡一般解决方法: 1、使用LRelu激活函数,2、使用较小学习率
本文主要在网上和书中整理,并加入自己理解,目的是方便自己学习和复习,有误之处请谅解,欢迎指出 激活函数一般为非线性函数,可以为神经网络提供非线性建模的能力。如果某个神经网络仅仅只有卷积和全连接层计算,不包含非线性函数,则该网络只是一种线性映射,难以解决非线性问题。例如下图感知机(单层和多层)
单层感知机
多层感知机
可以发现,没有激活函数输出的感知机仅仅是线性方程,无法表示非线性模型。这就需要非线性函数来帮助方程提供非线性表达,目前最常见的激活函数有Sigmoid、Tanh、Relu以及LRelu。1、Sigmoid Sigmoid函数是早期非常经典的激活函数,输出值在 [0,1] 之间,当输入值为非常大负数时,值为0,当输入值非常大正数时,值为1。Sigmoid非常经典,但是现在它以不太受欢迎,原因是它存在一个几个比较大的缺陷,后面做详细讨论。 其计算公式、函数图像以及导数图像如下:
Sigmoid公式
Sigmoid函数图像
导数图像
1、非0均值(不是 zero - centered): 通过函数曲线可以观察到Sigmoid函数以0.5为中心对称分布,输出值恒为正数,会降低梯度下降收敛的速度。举例证明。 假设某数据集样本包含两个特征x1,x2,正向传递感知机与激活函数公式如下图,其中w1,w2为权重,b为偏置,为Sigmoid函数:
增加损失函数,计算M个样本的损失,整体网络公式如下,L为损失函,y为标签值:
梯度下降公式:
讨论梯度下降方向问题:假设输入特征x均为正,为超参数,所以方向由对求导来确定,又根据求导链式法则。
由于使用Sigmoid函数作为激活函数,其输出均为正,导致全为正,所以两个特征的权重参数向着同一方向优化。假设一特征正相关,另一特征负相关,则优化路线出现Z字型,收敛缓慢。如图所示。
2、梯度爆炸、梯度消失: 根据Sigmoid函数的导数图像可以观察到,其取值范围再0-0.25之间。当我们初始化网络权重小于1时,随着网络层数的不断增加,反向传递求导的值小于0不断相乘,导致远处的梯度更新太小,即梯度消失。
同理,当初始权值参数过大时,导致的值大于1,大于1的值不断相乘,数值过大,即梯度爆炸。 3、计算量大: 指数运算,反向传播求误差梯度时,求导涉及除法。2、Tanh Tanh函数是Sigmoid函数的一种变种,取值范围为 [-1 , 1],它解决了Sigmoid函数的非0均值的问题,公式、图像以及导数图像如下图所示:
Tanh图像
Tanh导数图像
从导数图像看到,取值小于等于1,梯度消失和梯度爆炸的问题依然存在。从公式上看,依然存在指数运算,计算量大3、Relu 目前比较受欢迎的激活函数是Relu,公式简单,但是非常好用,公式如下所示,输入小于0时输出为0,大于0时输出为本身。
Relu函数
Relu图像
Relu导数图像
Relu解决的问题: 1、解决了梯度消失的问题 2、公式简单没有指数运算,计算快 3、x>0时,梯度为1,无梯度耗散问题,收敛速度快 存在的问题: 1、可能出现神经元死亡,权重无法更新:首先复习前向传播和反向传播。前向传播公式为:
前向传播
反向传播公式为:
反向传播
梯度更新:
梯度更新
如果梯度过大,且学习率设置较大,可能导致权值一次更新太多,对任意样本,其输出小于0。
这会产生什么后果(先记住小于0的条件,理解下面的解释)。举例下图网络结构:为了方便,仅针对红色连接神经元。
对于前向传播时:假设已死亡(即一次更新太多,小于零),对于任意样本,那么有激活函数输出始终小于0
对于反向传播时:根据反向传播公式
因小于0,则为0。所以小于0时有
推出
这就出问题了,对于权重矩阵 的第一行的参数,在整个训练集上,损失函数对它的导数始终为零,也就是说,遍历了整个训练集,它的参数都没有更新。因此就说该神经元死了。 神经元死亡一般解决方法: 1、使用LRelu激活函数,2、使用较小学习率

激活函数总结一文由杰瑞文章网免费提供,本站为公益性作文网站,此作文为网上收集或网友提供,版权归原作者所有,如果侵犯了您的权益,请及时与我们联系,我们会立即删除!
杰瑞文章网友情提示:请不要直接抄作文用来交作业。你可以学习、借鉴、期待你写出更好的作文。
说说你对这篇作文的看法吧