机器学习笔记-激活函数关于零点对称问题

前言

  激活函数值域关于零对称的问题在激活函数那篇文章中未详细介绍,在那里说到,当激活函数的值域不关于0点对称,会导致梯度下降的速度下降,关于这一点,过去我只是将其记下,却并未理解背后的原因。此篇谈谈背后的原因。
要探讨为什么Sigmoid函数会影响学习效率这个问题,需要找到影响梯度的因素。

权重更新

  深度学习一般的学习方法是反向传播,简单来说,就是通过链式法则,求解全局损失函数 L L L对某一参数 w w w的偏导数,而后乘以学习率,向梯度的反方向更新参数 w w w,更新公式可以表示为:
w < − w − η ⋅ ∂ L ∂ w w<-w-\eta\cdot\frac{\partial L}{\partial w} w<wηwL
学习率参数是全局设置的参数,不会影响学习的符号问题,参数的核心步骤就是计算 ∂ L ∂ w \frac{\partial L}{\partial w} wL,对于某一个神经元来说,其输入与输出的关系是:
f ( x , w , b ) = f ( z ) = f ( ∑ i w i x i + b ) f(x,w,b)=f(z)=f(\sum\limits_{i}{w_ix_i}+b) f(x,w,b)=f(z)=f(iwixi+b)
因此对于参数 w i w_i wi来说:
∂ L ∂ w i = ∂ L ∂ f ∂ f ∂ z ∂ z ∂ w i = x i ⋅ ∂ L ∂ f ∂ f ∂ z \frac{\partial L}{\partial w_i}=\frac{\partial L}{\partial f}\frac{\partial f}{\partial z}\frac{\partial z}{\partial w_i} = x_i\cdot \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} wiL=fLzfwiz=xifLzf
因此参数的更新是:
w i < − w i − η x i ⋅ ∂ L ∂ f ∂ f ∂ z w_i<-w_i-\eta x_i\cdot\frac{\partial L}{\partial f}\frac{\partial f}{\partial z} wi<wiηxifLzf

上述的参数更新方式,这个 w i w_i wi指的是某两层之间的权重,例如下面的图像:在这里插入图片描述
其中我们的目的是借助误差更新W1和W2的参数值,而参数W1和W2分别对应于X1与X2。
于是有:

w 1 = w 1 − η x 1 ⋅ ∂ L ∂ f ∂ f ∂ z w 2 = w 2 − η x 2 ⋅ ∂ L ∂ f ∂ f ∂ z w_1=w_1-\eta x_1\cdot\frac{\partial L}{\partial f}\frac{\partial f}{\partial z} \\ w_2=w_2-\eta x_2\cdot\frac{\partial L}{\partial f}\frac{\partial f}{\partial z} w1=w1ηx1fLzfw2=w2ηx2fLzf
其中 ∂ L ∂ f ∂ f ∂ z \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} fLzf可以理解为梯度项,在计算梯度时,对于w1和w2,它们的 ∂ L ∂ f ∂ f ∂ z \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} fLzf应该是相等的,也即 w i w_i wi的更新与 ∂ L ∂ f ∂ f ∂ z \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} fLzf是无关的,于是,仅剩下一个 x i x_i xi影响方向,当 x i x_i xi的值为正时, w I w_I wI更新方向就是正方向,当 x i x_i xi的方向为负时, w i w_i wi更新方向就是负方向,
  下标1,2表示第1,2个神经元,而 ∂ L ∂ f ∂ f ∂ z \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} fLzf表示梯度计算量,它们是根据所有样本点计算得到的,对于这两个神经元, ∂ L ∂ f ∂ f ∂ z \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} fLzf的值就是一样的,唯一不同的就是 x i x_i xi不同,而 x 1 x_1 x1 x 2 x_2 x2又是上一层的输出,上一层是经过Sigmoid函数进行变换的,所有的 x i x_i xi都是正数(这是因为Sigmoid函数的输出都是大于0的)。
  到此,我们找到更新参数都是同方向的原因了。

为什么所有的 x i x_i xi都是正数就会影响更新效率呢?
  要解决这一点,我们需要理解反向传播的原理,向着梯度下降的方向改变权重,那么在学习过程中就肯定存在梯度方向不同的情况,例如有的 w i w_i wi梯度方向是下降,有的 w j w_j wj梯度方向是上升,这样不断迭代就会影响效率。优点像梯度下降法里面的锯齿状迭代,假设在一次迭代过程中 w 1 w_1 w1需要向着正方向更新, w 2 w_2 w2则需要向着负方向进行更新,但是反向传播的权重更新都是同一方向的,假设计算得到的梯度都是朝着正向更新的,那么参数 w 1 w_1 w1在更新过程中就会更收益,而参数 w 2 w_2 w2在更新时就会朝着反方向更新,这必定会造成一定的误差。这一代更新后得到新的参数 w 1 ′ w_1' w1 w 2 ′ w_2' w2,后续再用 w 1 ′ w_1' w1 w 2 ′ w_2' w2来计算误梯度时,可能计算的更新方式就是负方向了,这个时候参数 w 2 w_2 w2就更收益,而参数 w 1 w_1 w1就向放方向更新,这样不断地迭代,虽然说误差会在不断减小,但是减小的速度肯定会受到一定的影响,虽然最后也会收敛到一个好的解,但是过程是“曲折”的。
  此外,在更新输入层到第一层隐含层的权重时,按理来说,这一层的权重可以有不同方向的迭代,因为输入值不一定是同方向的。
基于Sigmoid函数改进的Tanh函数就能很好的解决这个问题,Tanh函数图像如下:

在这里插入图片描述
Tanh函数的值域是-1到1,是基于0点对称的,所以在更新参数时能进行有效更新,并不会造成所有参数发生同方向更新。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值