RNN的前向传播/后向传播和LSTM

一、RNN介绍

RNN和DNN,CNN不同,它能处理序列问题。常见的序列有:一段段连续的语音,一段段连续的手写文字,一条句子等等。这些序列长短不一,又比较难拆分成一个个独立的样本来训练。那么RNN又是怎么来处理这类问题的呢?RNN就是假设我们的样本是基于序列的。比如给定一个从索引0到T的序列,对于这个序列中任意索引号t,它对应的输入都是样本x中的第t个元素x(t)。而模型在序列索引号t位置的隐藏状态h(t)则是由x(t)和在t−1位置的隐藏状态h(t−1)共同决定的。而模型在t时刻的输出o(t),就是由h(t)通过非线性转换得到的。

 

二、RNN网络模型

上图中左边是RNN模型没有按时间展开的图,如果按时间序列展开,则是上图中的右边部分。其中U、V、W表示权重矩阵。

 

三、RNN前向传播算法

循环网络的前向传播算法非常简单,对于t时刻:

其中ϕ(.)为激活函数,一般来说会选择tanh函数,b为偏置。则 t 时刻的输出:

最终模型的预测输出为:

其中σ为激活函数,激活函数通常选择softmax函数。

 

四、RNN反向传播算法 BPTT(back-propagation through time)

BPTT算法是常用的训练RNN的方法,其实本质还是BP算法,只不过RNN处理时间序列数据,所以要基于时间反向传播,故叫随时间反向传播。BPTT的中心思想和BP算法相同,沿着需要优化的参数的负梯度方向不断寻找更优的点直至收敛。当然这里的BPTT和DNN中的BP算法也有很大的不同点,即这里所有的 U, W, V 在序列的各个位置是共享的,反向传播时我们更新的是相同的参数。

对于RNN,由于我们在序列的每个位置都有损失函数,因此最终的损失L为:

因此可以得到U,V,W的偏导,其中V的偏导:

在反向传播时,在某一序列位置 t 的梯度损失由当前文职的输出对应的梯度损失和序列索引位置 t + 1 时的梯度损失两部分共同决定的。对于W在某一序列位置 t 的梯度损失需要反向传播一步步的计算。

以t=3时刻为例求U、W的偏导:

利用BPTT算法训练网络时容易出现梯度消失的问题,当序列很长的时候问题尤其严重,因此上面的RNN模型一般不能直接应用。而较为广泛使用的是RNN的一个特例LSTM。

 

五、LSTM

Long Short Term 网络,一般就叫做 LSTM ,是一种 RNN 特殊的类型,可以学习长期依赖信息。LSTM 通过刻意的设计来避免长期依赖问题。所有 RNN 都具有一种重复神经网络模块的链式的形式。在标准的 RNN 中,这个重复的模块只有一个非常简单的结构,如一个 tanh 层。LSTM 同样是这样的结构,但是重复的模块的结构更加复杂。不同于单一神经网络层,整体上除了 h 在随时间流动,细胞状态 c 也在随时间流动。细胞状态 c 就代表着长期记忆,而状态 h 代表了短期记忆。

从上图中可以看出,在每个序列索引位置 t 时刻向前传播的除了和RNN一样的隐藏状态 ht ,还多了另一个隐藏状态,如图中上面的长横线。这个隐藏状态我们一般称为细胞状态(Cell State),记为 Ct 。细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。

LSTM在在每个序列索引位置t的门一般包括遗忘门,输入门和输出门三种。

1、遗忘门

遗忘门顾名思义,是控制是否遗忘的,在LSTM中即以一定的概率控制是否遗忘上一层的隐藏细胞状态。遗忘门子结构如图所示:

ht-1 表示历史信息,xt 表示当前流入细胞中新的信息。xt 在这里的作用是为了根据当前输入的新的信息来决定要忘记哪些历史信息。

2、输入门

输入门负责处理当前序列位置的输入,确定什么样的新信息被存放在细胞状态中。这里包含两个部分。第一,sigmoid 层称 “输入门层” 决定什么值我们将要更新。然后一个 tanh 层创建一个新的候选值向量 C̃ tC~t ,会被加入到状态中。它的子结构如图:

在获得了输入门和遗忘门系数之后就可以更新当前的细胞状态,Ct-1 更新为 Ct 。如图:

3、输出门

在得到了新的隐藏细胞状态 Ct ,我们就得开始去输出结果,输出门的子结构如下:

从图中可以看出,隐藏状态 ht 的更新由两部分组成,输出门依然是由历史信息 ht-1 和新的信息 xt 来决定的。 

输入门、遗忘门、输出门所对应的函数都是 sigmoid 函数,因为 Sigmoid 函数的输出值范围为0-1,相当于控制门的百分比过滤,因此输出的结果是[0, 1],当为0时,门完全关闭,当为1时,门完全打开。输入们控制这当前输入值有多少信息流入到当前的计算中,遗忘门控制着历史信息中有多少信息流入到当前计算中,输出们控制着输出值中有多少信息流入到隐层中。

 

六、LSTM前向传播算法

 LSTM模型有两个隐藏状态 ht , Ct ,模型参数几乎是RNN的4倍,因为现在多了 Wf, Uf, bf, Wa, Ua, ba, Wi, Ui, bi, Wo, Uo, bo 这些参数。前向传播过程在每个序列索引位置的过程为:

 

感谢大佬深入浅出的讲解,感觉豁然开朗,原文地址:https://www.cnblogs.com/jiangxinyang/p/9362922.html

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值