参考博客:http://www.cnblogs.com/pinard/p/6509630.html
1、反向传播算法(Backpropagation)
深层神经网络(Deep Neural Network,DNN)由输入层、多个隐藏层和输出层组成,任务分为分类和回归两大类别。如果我们使用深层神经网络做了一个预测任务,预测输出为 y ~ \tilde{y} y~,真实的为y,这时候就需要定义一个损失函数来评价预测任务的性能,接着进行损失函数的迭代优化使其达到最小值,并得到此时的权重矩阵和偏置值。在神经网络中一般利用梯度下降法(Gradient Descent)迭代求解损失函数的最小值。在深层神经网络中使用梯度下降法迭代优化损失函数使其达到最小值的算法就称为反向传播算法(Back Propagation,BP)。
假设深层网络第L层的输出为 a L a_{L} aL:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ a^{L} &= \sig…
定义损失函数 J ( w , b , x , y ) J(w,b,x,y) J(w,b,x,y)为:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ J(w,b,x,y) &= …
注解: a L a_{L} aL为预测输出, y y y为实际值,二者具有相同的维度。 ∥ ⋅ ∥ 2 \parallel \cdot \parallel_{2} ∥⋅∥2 代表二范数。
对损失函数运用梯度下降法迭代求最小值,分别求解对于权重矩阵 W L W^{L} WL和偏置 b L b^{L} bL的梯度。
损失函数对权重矩阵的梯度:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \frac{\partial…
损失函数对偏置的梯度:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \frac{\partial…
其中公式中的符号$ \bigodot$ 代表Hadamard积,即维度相同的两个矩阵中位置相同的对应数相乘后的矩阵。
损失函数对于权重矩阵和偏置的梯度含有共同项$\frac{\partial J(w,b,x,y)}{\partial a^{L}} \cdot \frac{\partial a^{L}}{\partial z^{L}} , 令 其 等 于 ,令其等于 ,令其等于\delta^{L}$。
可以求得$ \delta^{L}$为
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \delta^{L} &…
知道L层的$ \delta^{L}$就可以利用数学归纳法递归的求出L-1,L_2……各层的梯度。
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \delta^{l} &…
又知:
z l = W l ⋅ a l − 1 + b l z^{l} = W^{l} \cdot a^{l-1} + b^{l} zl=Wl⋅al−1+bl
所以第$ l 层 的 梯 度 层的梯度 层的梯度W{l}、b{l}$可以表示为 :
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \frac{\partial…
数学归纳法求:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \delta^{l} &…
又知:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ z^{l+1} &= W^{…
所以可得:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \frac{\partial…
可得:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \delta^{l} &…
求得了$ \delta^{l}$ 的递推关系之后,就可以依次求得各层的梯度 W l 和 b l W^{l}和b^{l} Wl和bl了。
2、 随时间的反向传播过程(Back Propagation Through Time)
循环神经网络的特点是利用上下文做出对当前时刻的预测,RNN的循环也正是随时间进行的,采用梯度下降法对循环神经网络的损失函数进行迭代优化求其最小值时也是随时间进行的,所以这个也被称为随时间的反向传播(Back Propagation Through Time,BPTT),区别于深层神经网络中的反向传播(BP)。
为了更易被读者理解推导过程,如上图所示,我们进行以下定义:
U:输入层的权重矩阵
W:隐藏层的权重矩阵
V:输出层的权重矩阵
t时刻的输入为 x ( t ) x^{(t)} x(t):同理 x ( t + 1 ) x^{(t+1)} x(t+1)为t+1时刻的输入信息。
t时刻的隐藏层状态为 h ( t ) h^{(t)} h(t):由 x ( t ) x^{(t)} x(t)和 h ( t − 1 ) h^{(t-1)} h(t−1)共同决定。
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ h^{t} &=\sigm…
t时刻的输出为 o ( t ) o^{(t)} o(t):只由t时刻的隐藏状态 h ( t ) h^{(t)} h(t)决定。
o t = V ⋅ h ( t ) + c o^{t} = V \cdot h^{(t)} +c ot=V⋅h(t)+c
真实的值为 y t y^{t} yt,预测的值为 y ^ \hat{y} y^。
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \hat{y} &= \si…
t 时刻的损失函数为 L t L^{t} Lt,评价预测的性能也就是量化预测值与真实值之间的差,本篇假设损失函数为交叉熵
L ( t ) = y ( t ) l o g ( y ( t ) ^ ) + ( 1 − y ( t ) ) l o g ( 1 − y ( t ) ^ ) L^{(t)} = y^{(t)} log( \hat{y^{(t)}} ) + ( 1 - y^{(t)}) log(1- \hat{y^{(t)}} ) L(t)=y(t)log(y(t)^)+(1−y(t))log(1−y(t)^)
最终的损失函数为各个时刻损失函数的加和,即
L = ∑ t = 1 τ L ( t ) L = \sum_{t=1}^{\tau} L^{(t)} L=t=1∑τL(t)
注解:
(1) U,V,W为线性共享参数,在循环神经网络的不同时刻不同位置,这三个权重矩阵的值是一样的,这也正是RNN的循环所在。
(2) 假设损失函数为交叉熵,也就是等价于对数损失函数,隐藏层激活函数为tanh函数,输出层激活函数为softmax函数。
因为我们假设的输出层激活函数为softmax函数,所以得到以下公式:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \frac{\partial…
假设隐藏层的函数为tanh函数,可得
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \frac{\partial…
损失函数对于c的梯度:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \frac{\partial…
损失函数对于V的梯度:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \frac{\partial…
损失函数对于W, U, b的梯度:
随时间的反向传播算法中,循环神经网络的梯度损失由当前时间步t的梯度和下一时刻t+1的梯度损失两部分决定。
定义损失函数对于隐藏状态 h ( t ) h^{(t)} h(t)的梯度为:
δ ( t ) = ∂ L ( U , V , W , b , c ) ∂ h ( t ) \delta ^{(t)} = \frac{\partial{L(U,V, W,b, c)}}{\partial{h^{(t)}}} δ(t)=∂h(t)∂L(U,V,W,b,c)
类似于前文所说的深层神经网络中的反向传播算法,可以由 δ ( t + 1 ) \delta ^{(t+1)} δ(t+1)递推出 δ ( t ) \delta ^{(t)} δ(t),公式如下:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \delta ^{(t)} …
注意:
对于$\delta ^{(\tau)} $因为没有下一时刻的信息了,所以
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \delta ^{(\tau…
在递推出了以上公式后,计算损失函数对于W,U,b的梯度就比较简单了。
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \frac{\partial…
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \frac{\partial…
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲ \frac{\partial…