神经网络反向传播中动量项的直觉是什么?

机器算法验证 机器学习 神经网络 梯度下降
2022-03-28 03:10:11

我正在使用本讲座 pdf推导神经网络

我被困在等式(21)

记号注意事项:

  1. 层的激活函数jyj
  2. 层的权重之和jxj
  3. 最终标签是t

我想弄清楚在哪里

ηΔwkj(n1)

来自最终等式(21)

Δwkj(n)=αδjyk+ηΔwkj(n1)

作者提到它是一个动量术语,没有真正详细说明它。

我认为计算如下Δwkj

Δwkj=αEwkj

对于最终输出层之前的 1 层:

Δwkj=α((tjyj))yj(1yj)yk

对于所有其他层:

Δwkj=α(δiwji)yj(1yj)yk

那么什么是动量项呢?

有人可以帮我吗 ?

2个回答

由于您要求直觉,因此一般的想法是:假设您正在使用随机梯度下降 (SGD) 来遍历损失函数的表面。进一步想象那个表面看起来像一座山,并且你从顶部附近开始。表面有许多小峭壁和嘴唇,但显然是向下通往山谷。当您使用 SGD 穿越表面时,导数的大小和符号经常变化,因此您下山的方向和速度会有很大的波动。如果您包含动量项,那么您的方向现在不仅取决于每个新停止点的梯度来确定您的运动,还取决于您在上次更新中运动的大小和方向。而且由于您上次更新移动的数量和方向也取决于之前的更新,您可以看到每个移动都取决于先前移动的整个历史。很快你就从山下奔向山谷。

请注意,您距离更新越远,确定当前更新的重要性就越低,因为如果您在时间扩展动量项,那么从时间开始更新的贡献是: 其中是动量,是时间ttk

αk+1Δωtk
α[0,1]Δωtktk

首先,假设我们刚刚开始训练,这样:

n=0
ωkj(0)=αδjyk
因为这是第一步如果我们进一步训练
n=1
然后:
ωkj(1)=αδjyk+ηωkj(0)
还有一个
n=2
ωkj(2)=αδjyk+ηωkj(1)
并替代:
ωkj(2)=αδj2yk2+η(αδj1yk1+ηωkj(0))

你可以看到,如果我们继续这个趋势,即使是一个时间步长

n=200
仍然会受到时间步 0 的第一个权重梯度的轻微影响(但非常非常轻微)。这是动量的概念:具有过去速度记忆的速度。这个概念与物理学直接相关。

如果我将一个块向前推 10m/s(将其视为我的第一个时间步),然后我以 -20m/s 的速度推它(我的第二个时间步);然后通过动量,这将是:

新速度 = -20m/s + u (100m/s) 其中u是摩擦力(或者在我们的例子中是eta)。所以如果摩擦力是 0.1,我的最终速度实际上是 -20 + (0.1)(100) = -10。我接近-20,但我并不完全在那里。如果我再次以 -20m/s 的速度推动块,我的结果是:-10 + (0.1)(-20) = -12,我更接近我希望达到的速度。

在神经网络的概念中,这意味着如果我沿着梯度下降并寻找最小值,我不想在每个时间步大幅改变方向,因为某些方向可能会导致谷值或局部最小值。因此,我想朝着我的大部分体重梯度推动我的方向前进。改变这个方向通常需要大量的权重梯度来对抗我当前的梯度“流”。