RNN,LTSM和GRU原理

(一)tensorflow入门笔记

(二)RNN,LSTM和GRU原理

(三)attention机制与tensorflow中attention的封装

(四)seq2seq实例详解


RNN

RNN主要用来处理当样本是一定时间序列的情况,例如一段语音,一串文本等等。这类任务如果用CNN处理,很难反映出其时间上的特征

原理
Borrow from Dark_Scope

Figure 1. RNN Structure

时间为t时,输入为x(t),隐藏层为h(t),输出为y(t),图中w1,w2,w3为共享的权重。

向前传播
当前时刻隐藏层h(t)由前一时刻隐藏层h(t-1)和当前输入x(t)决定:

z 1 ( t ) = w 1 x ( t ) + w 2 h ( t 1 ) + c 1

h ( t ) = σ 1 ( z 1 ( t ) )

σ1为激活函数,一般为tanh(),c1为bias

当前时刻的输出y(t)由当前时刻隐藏层h(t)决定:

z 2 ( t ) = w 3 h ( t ) + c 2

y ^ ( t ) = σ 2 ( z 2 ( t ) )

σ2为激活函数,一般为sigmoid(),c2为bias


反向传播
我们需要用梯度下降算法来优化参数,所以先要根据链式法则计算损失函数L(t)对每个参数的导数。

从后向前,先看对w3和c2的导数:

L w 3 = t = 1 T L z 2 z 2 w 3 = t = 1 T ( y ^ ( t ) y ( t ) ) h ( t ) T

L c 2 = t = 1 T L z 2 z 2 c 2 = t = 1 T y ^ ( t ) y ( t )

再来看对w1,w2和c1的导数:

有了损失函数损失函数L(t)对每个参数的导数后,用梯度下降算法,每步更新每个参数为

w u p d a t e = w l r L w

lr是学习率


Reference:
图片懒得做了,borrow from @Dark_Scope
https://blog.csdn.net/Dark_Scope/article/details/47056361

猜你喜欢

转载自blog.csdn.net/thormas1996/article/details/80995414