龙空技术网

机器学习:长短期记忆(LSTM)中的反向传播

林小婵的店 874

前言:

而今小伙伴们对“lstm反向传播的算法”都比较注重,咱们都需要剖析一些“lstm反向传播的算法”的相关文章。那么小编在网上汇集了一些关于“lstm反向传播的算法””的相关知识,希望朋友们能喜欢,同学们一起来学习一下吧!

由于LSTM是循环神经网络(RNN)的一个版本,让我先简单谈谈RNN。

因此循环神经网络(RNN)用于没有固定输入结构的问题。例如,如果我们想将单词从一种语言翻译成另一种语言,我们的输入可能是任何单词,因此我们不能使用卷积神经网络(CNN),NN,因为我们不知道该单词包含多少个字母。

循环神经网络(RNN)允许该单词的每个字母用于获得隐藏值,该隐藏值再次用于与下一个字母一起馈送下一步骤。所有隐藏值也可能导致损失,或者仅使用最后一个值。这取决于某些问题。

循环神经网络(RNN)的直观图表是:

RNN图

其中数据由X表示,隐藏值由H表示,损失由L表示。注意,每个输入包含一个Xt和先前的隐藏值Ht,然后输入经历相同的过程以获得下一个隐藏值H(t + 1)。更确切地说,

vanilla RNN的核心

RNN训练的难度是梯度消失/梯度爆炸。LSTM是一种减少此问题的方法。新图表是:

LSTM图

每一步都有一个新的输入和输出,称为状态,用C表示。

每个步骤的更详细的图表是:

One step of LSTM

更确切地说,

LSTM的核心

G,F,O代表gate, information, forget, output,,∗代表着piece-wise element 的乘积。我们只是想知道如何求导。所以我画了反向传播流的路径:

Back propagation one step

为了轻松计算导数,我们需要绘制更详细的图表:

A full back propagation one step

我们在其中添加了一些中间节点Ag,Ai,Af,Ao,并且forward process与另外一个步骤不同:

Full kernel of LSTM

通过反向传播图用一些数学方法我们得到了所有导数的精确公式:

其中Δt是总损失中部分的导数,它

仅由Ht在一步而不是通过任何其他中间变量直接贡献。

例如,如果我们的最终损失是每一步的损失总和:

then

这个过程似乎有点长,但基本上只是遵循图的所有路径。通过将小矩阵放在一起,我们可以拥有更美观的版本。但到目前为止这已经足够了。

通过在每一步重复使用权重,RNN与NN不同,并且损失

不仅仅取决于最后一步/层的输出,而且可能取决于

使得权重的导数需要求和的所有步骤。

为了说明,我绘制了另一个包含权重的图表:

LSTM with weights

其中W是所有权重。通过上面的图表,我们看到最终导数dW_final是由所有隐藏值Ht的所有路径贡献的,实际上我们已经在上面计算过的每个步骤中得到了导数dW。

标签: #lstm反向传播的算法