关于Sigmoid数据输出不是zero-centered的理解

讲到Sigmoid函数时,有一个缺点是Sigmoid函数的输出不是零中心的,那么为什么我们更需要一个零中心的激活函数呢?
在上cs231n的时候,对老师关于这部分内容的讲解云里雾里,在查阅一些资料后,放上自己的理解:
在这里插入图片描述
在这里插入图片描述
假设我们现在有两个函数,分别是一个线性加权函数和一个激活函数,我们知道在一个神经网络中这样的函数将会一层层重叠,例如 ( f -> L ) * n。对于sigmoid函数来说,它的输出始终为正数(非zero-centered),那下一层f的输入将全部为正数
在这里插入图片描述
现在假设我们的w是二维的,即包括(w1,w2),利用链式法则我们可以计算出w的梯度:
在这里插入图片描述
其中,f关于w的导数是x(在当前例子中f是线性函数),l关于f的导数取决于上游梯度,也就是正数或者负数。现在我们的x恒为正数,那么l关于w的导数的符号就是全为正或者全为负。(这里有一些小疑惑,在课程note中写到w的梯度具体依整个表达式f而定,那么默认l关于f的导数就是正数了吗(sigmoid)?而在课上老师又说w的梯度依上游梯度而定。具体问题我想先放一放,因为无论哪种解释这里w的导数总是固定符号的)

这就导致了w总是关于同一方向变化,我们可以用正数去增加w中所有的值,或者用负数去减少w中所有的值。

那么问题来了,若我们现在理想的过程是w1不断增加,w2不断减少,那么收敛的过程将会非常缓慢,如图所示,梯度下降权重更新时出现z字型的下降。
在这里插入图片描述
望大家指正:)

猜你喜欢

转载自blog.csdn.net/weixin_43835911/article/details/89294613