RNN,LTSM和GRU原理

本文详细介绍了RNN、LSTM和GRU的原理,包括它们在处理序列数据时的角色、结构及计算过程,并探讨了LSTM与GRU在参数数量和性能上的差异与相似之处,指出它们如何缓解梯度消失问题。
摘要由CSDN通过智能技术生成

(一)tensorflow入门笔记

(二)RNN,LSTM和GRU原理

(三)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)决定:

${z1(t) = w1 * x(t) + w2 * h(t-1) + c1}$
${h(t) = σ1(z1(t))}$

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

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

${z2(t) = w3 * h(t) + c2}$
${\hat{y}(t) = σ2(z2(t))}$

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


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

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

${\frac{\partial L}{\partial w3} = \sum_{t=1}^{T} \frac{\partial L}{\partial z2} \frac{\partial z2}{\partial w3} = \sum_{t=1}^{T} (\hat{y}(t) - y(t))*h(t)^{T}}$
${\frac{\partial L}{\partial c2} = \sum_{t=1}^{T} \frac{\partial L}{\partial z2} \frac{\partial z2}{\partial c2} = \sum_{t=1}^{T} \hat{y}(t) - y(t)}$

再来看对w1,w2和c1的导数,与前一时刻的隐藏层状态有关:

\begin{align} \frac{\partial L}{\partial h(t)}&= \frac{\partial L}{\partial z2(t)} \frac{\partial z2(t)}{\partial h(t)} + \frac{\partial L}{\partial h(t+1)} \frac{\partial h(t+1)}{\partial h(t)} \\ &= V^T(\hat{y}(t) - y(t))+W^T \frac{\partial L}{\partial h(t+1)} diag(1−(h(t+1))^2) \end{align}

通过递推可以得到 ∂ L ∂ h ( t ) {\frac{\partial L}{\partial h(t)}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值