RNN与LSTM模型

RNN

简介

前馈神经网络的两个局限

  • 难以捕捉到数据之间长距离的依赖关系,即使CNN也只能捕捉到局部或短距离的关系
  • 当训练样本输入是连续序列且长短不一时,不好处理,如一段段连续的语音、连续的文本

为了解决上述局限,提出了循环神经网络RNN的结构如下,右侧是左侧的图按照时间序列展开的结果。

RNN可以做到学习数据间长距离的关系。比如在文本分类中,它模拟了人阅读一篇文章的顺序,从前到后阅读文章中的每一个单词,将前面阅读到的有用信息编码到状态变量中去,从而拥有了一定的记忆能力,可以更好地理解之后的文本。

从图上可以看到,RNN本质上还是一个全连接网络,区别在于全连接网络对一整个样本往前传递,前向传递一次,而RNN对一个样本按照时间序列一部分一部分地往前传递,前向传递多次

基本架构

上图为RNN的经典结构,网络的传递过程如下:

  • 输入:在文本处理中,一个样本是一个句子 x x x,划分为单词 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn),输入到隐层节点

  • 隐层:接收当前轮的单词 x i x_i xi 与上一轮的隐层输出 h i − 1 h_{i-1} hi1,计算 h i h_i hi,输出至下一轮的隐层和当前轮的输出节点
    (1) h i = W h i − 1 + U x i h_i=Wh_{i-1}+Ux_i\tag{1} hi=Whi1+Uxi(1)

  • 输出:接收当前轮隐层的输出 h i h_i hi,计算输出 o i o_i oi
    (2) o i = V h i o_i=Vh_i\tag{2} oi=Vhi(2)

可以看到:

  • 每一轮的权值是共享的
  • 每一轮的隐层都包含了前面所有轮的信息,即记忆能力

RNN的一些变体

  1. 经典的RNN的结构可以理解为多个输入神经元,单个输出神经元,如输入是一串文字,输出是类别。
  1. 有时需要单个输入神经元,多个输出神经元的情况,则可以是如下结构。
  1. 有时需要多个输入神经元、多个输出神经元的情况,如机器翻译,则需要两个RNN结构,又称为Seq2Seq。

根据输入输出的不同,RNN可以有多种变体,本质上任何涉及循环的函数都可以被认为是一个循环神经网络

RNN的BP:BPTT

RNN使用基于时间的反向传播(Back-Propagation Through Time)进行训练,本质上还是BP算法。

仍以该结构为例,需要更新的参数有 V 、 W 、 U ​ V、W、U​ VWU,损失函数为
(3) L = ∑ t = 1 T L ( t ) L = \sum_{t=1}^T L^{(t)}\tag{3} L=t=1TL(t)(3)
对于 V V V,每次只用到当前轮的信息,即
(4) ∂ L ∂ V = ∑ t = 1 T ∂ L ( t ) ∂ V = ∑ t = 1 T ∂ L ( t ) ∂ o ( t ) ∂ o ( t ) ∂ V \frac{\partial L}{\partial V}=\sum_{t=1}^T \frac{\partial L^{(t)}}{\partial V}=\sum_{t=1}^T \frac{\partial L^{(t)}}{\partial o^{(t)}}\frac{\partial o^{(t)}}{\partial V}\tag{4} VL=

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值