有人可以向我解释反向传播算法吗?

问题描述:

我最近完成了Coursera吴教授的机器学习过程中,虽然我喜欢的整个过程中,我从来没有真正设法了解训练神经网络的BP算法。有人可以向我解释反向传播算法吗?

我和了解它是问题,他永远只能讲授了全连接的前馈网络的矢量化实现它。我的线性代数是生锈的,我认为如果有人能教给我通用算法,会更容易理解。也许是以节点为导向的方式。

我会尝试和短语的问题简单,但我可能是误解如何backprop的作品,因此,如果这没有意义,忽略它:

对于任何给定的节点N,给定输入权重/值,输出权重/值以及N输出到的所有节点的误差/成本,我如何计算N的“成本”并使用它来更新输入权重?

+0

这是一个相当广泛的问题。你可能在http://dsp.stackexchange.com有更好的运气。 – mtrw

+6

你可以在http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html –

+1

找到一个很好的解释,附图片,这是一个很好的解释!虽然我不确定我是否理解差分位。 df(e)/ de是指相对于整个加权总和(e)的导数还是仅仅是连接谁输入我们试图更新的重量?所以说节点有一个线性激活函数,df(e)/ de总是等于1(f(e)= e - > df(e)/ de = 1)?或者它会始终等于我们正在更新的权重(f(e)= w1x1 + w2x2 - > df(e)/ dx1 = w1) –

让我们考虑一个反向传播(BP)网络的一个节点。它有多个输入,并产生一个输出值。我们希望对训练使用纠错,所以它也会根据节点的误差估计更新权重。

每个节点都有一个偏差值,θ。你可以把它看作是一个内部的,不变的1.0值输入的权重。

活化是的加权输入和偏置值的总和。让我们将我们感兴趣的节点称为j,前一层中节点的值为i,后一层中节点的值为k。我们的节点j的激活则是:

Ĵ(邻×瓦特 IJ)+θĴ

即, j的激活值是来自节点i的输出与对应的权重链接节点i和j的输出的乘积加上偏差值的总和。

我们的节点j的输出是激活的传递函数:

öĴ = F(净Ĵ

f是常用的S形函数。

F(净Ĵ)= 1 /(1 + E -net Ĵ

的S形函数具有易于以指定一阶导数:

F'(净Ĵ)= F(净Ĵ)×(1。0 - F(净Ĵ))

我们使用哪种传递函数,我们需要知道如何计算它的一阶导数。 BP通过连锁规则通过梯度下降进行工作,所以这很重要。上面的等式将与不同的传递函数不同。到目前为止,我们知道如何获得输入值,计算激活,计算输出并计算激活的一阶导数。现在我们需要处理错误和重量调整。

用于BP中的节点误差估计值被称为δ。节点的δ与节点激活的一阶导数和它接收的误差项成正比。接收到的误差项有两个公式,一个用于输出节点,另一个用于隐藏节点。

一般地,

δ= F '(净)×(接收错误)

对于输出节点,

δ输出 = F'(净)×(t - o)

其中t是该输出节点的期望值,o是该输出节点的实际输出值。

对于我们隐藏的节点j,它是这样的:

δĴ = F'(净Ĵ)×Σķ(δķ×瓦特 JK

我们节点j的δ,δ j,是我们的一阶导数的乘积给定激活时间的sfer函数下一层(更接近输出)的增量的总和乘以连接权重的值。有了这个,我们可以计算出如何调整前一层节点(接近输入)的权重。

DW IJ = L×○×δĴ

DW这里表示 “重量变化”,所以什么方程说的是,从在重量变化节点i到我们的节点j等于学习参数L(通常网络中所有节点的相同值),节点i的输出值和节点j的δ(误差项)的乘积。

调整偏差值与调整权重类似。

Ĵ = L×F(θĴ)×δĴ

Dθ这里表示 “在θ变化”。我们必须将传递函数应用于偏差值θ j以获得类似于节点输出的项。否则,它看起来就像另一个等式。

我应该注意到,计算重量变化应该在整个网络范围内进行,然后在计算完所有变化后应用变更。

+0

是否有可能解释为什么最后一层的目标函数的导数是观测值和预测值之间的差异?假设我们使用sigmoid函数来获取输入并将其转换为非线性值... – user2543622

+0

我的意思是我查看逻辑回归的目标函数的导数,并且我明白导数等于(预测之间的差异)* x_varaiable ..那么为什么在神经网络的情况下,我们摆脱了x_变量,只保留(预测之间的区别)部分? – user2543622

+0

@ user2543622,目标函数的导数实际上是这个目标函数的梯度,它是MSE(通常使用的目标函数)的导数向量。 –

对于任何给定的节点N,给定了输入的权重/值,输出 权重/值和所有节点的错误/成本该N个输出到, 如何计算的“成本” N并使用它来更新输入 权重?

您从未对单个神经元的中间成本函数感兴趣。相反,您对最终产出的成本感兴趣;总是。然后用它来将背层神经元所需的变化率一直传播到前面。