(一)tensorflow入门笔记
(二)RNN,LSTM和GRU原理
(三)attention机制与tensorflow中attention的封装
(四)seq2seq实例详解
RNN
RNN主要用来处理当样本是一定时间序列的情况,例如一段语音,一串文本等等。这类任务如果用CNN处理,很难反映出其时间上的特征
原理
时间为t时,输入为x(t),隐藏层为h(t),输出为y(t),图中w1,w2,w3为共享的权重。
向前传播:
当前时刻隐藏层h(t)由前一时刻隐藏层h(t-1)和当前输入x(t)决定:
σ1为激活函数,一般为tanh(),c1为bias
当前时刻的输出y(t)由当前时刻隐藏层h(t)决定:
σ2为激活函数,一般为sigmoid(),c2为bias
反向传播:
我们需要用梯度下降算法来优化参数,所以先要根据链式法则计算损失函数L(t)对每个参数的导数。
从后向前,先看对w3和c2的导数:
再来看对w1,w2和c1的导数:
有了损失函数损失函数L(t)对每个参数的导数后,用梯度下降算法,每步更新每个参数为
lr是学习率
Reference:
图片懒得做了,borrow from @Dark_Scope
https://blog.csdn.net/Dark_Scope/article/details/47056361