为什么非零中心激活函数在反向传播中会成为问题?


26

在这里阅读以下内容:

  • 乙状结肠输出不是零中心的。这是不希望的,因为神经网络中处理的后续层中的神经元(即将对此进行详细介绍)将接收到非零中心的数据。这对梯度下降期间的动力学有影响,因为如果进入神经元的数据始终为正(例如, 元素,在),则权重的梯度 将在反向传播期间变为全部为正,或全部为负(取决于整个表达式的梯度 x>0f=wTx+bwf)。这可能会在权重的梯度更新中引入不希望的之字形动力学。但是,请注意,一旦将这些梯度添加到一批数据中,权重的最终更新就可以具有可变的符号,从而在某种程度上缓解了此问题。因此,这是一个不便,但是与上面的饱和激活问题相比,后果不那么严重。

为什么让所有(在元素上)都导致全正或全负梯度?x>0w



2
观看CS231n视频时,我也有完全相同的问题。
地铁比赛

Answers:


28

f=wixi+b
dfdwi=xi
dLdwi=dLdfdfdwi=dLdfxi

因为,所以梯度始终与具有相同的符号(全部为正或全部为负)。xi>0dLdwidLdf

更新
说有两个参数和,如果两个维度的梯度始终是相同的符号,则意味着我们只能在参数空间中向东北或西南方向粗略移动。w1w2

如果我们的目标恰好在东北,那么我们只能以曲折的方式到达那里,就像在狭窄的空间中平行停车一样。(原谅我的画)

在此处输入图片说明

因此,对于基于梯度的优化,全正或全负激活函数(relu,Sigmoid)可能很困难。为了解决这个问题,我们可以像批量/图层归一化一样将数据预先归零。

我还能想到的另一种解决方案是为每个输入添加一个偏置项,以便该层变为 则梯度为 ,符号不完全取决于。

f=wi(xi+bi).
dLdwi=dLdf(xibi)
xi


如果我错了,请纠正我,但是不应该将dL / df的值转换为x即xT,因为在这里我们将使用Jacobin的思想。
chinmay

@chinmay抱歉,您的回复很晚,我认为是的结果,因此dL / df的值不取决于x,通常是一个标量,和是一维向量,所以dL / df也应该是标量,对吗?fwTx+bLwx
dontloo '18

是的,这是我的错字。我的意思是df / dw ....但我认为它更多地取决于向量x,以及它是行向量还是列向量
chinmay,2016年

@dontloo很抱歉收到这么晚的答复,但是梯度与具有相同符号的问题是什么?为什么这是一件坏事?dL/df
floyd

1
@floyd您好我只是增加了一些更新您的问题
dontloo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.