深度学习(06)_循环神经网络RNN和LSTM_01

Posted 莫失莫忘Lawlite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习(06)_循环神经网络RNN和LSTM_01相关的知识,希望对你有一定的参考价值。

循环神经网络RNN和LSTM_01

一、介绍

1、什么是RNN

  • 传统的神经网络是层与层之间是全连接的,但是每层之间的神经元是没有连接的(其实是假设各个数据之间是独立的
    • 这种结构不善于处理序列化的问题。比如要预测句子中的下一个单词是什么,这往往与前面的单词有很大的关联,因为句子里面的单词并不是独立的。
  • RNN 的结构说明当前的的输出与前面的输出也有关,即隐层之间的节点不再是无连接的,而是有连接的
    • 基本的结构如图,可以看到有个循环的结构,将其展开就是右边的结构

2、运算说明

  • 如上图,输入单元(inputs units): x0,x1,,xt,xt+1, ,
    • 输出单元(output units)为: o0,o1,,ot,ot+1, ,
    • 隐藏单元(hidden units)输出集: s0,s1,,ost,st+1,
  • 时间 t 隐层单元的输出为: st=f(Uxt+Wst1)
    • f就是激励函数,一般是sigmoid,tanh, relu
    • 计算 s0 时,即第一个的隐藏层状态,需要用到 s1 ,但是其并不存在,在实现中一般置为0向量
    • (如果将上面的竖着立起来,其实很像传统的神经网络,哈哈)
  • 时间 t 的输出为: ot=Softmax(Vst)
    • 可以认为隐藏层状态 st 网络的记忆单元. st 包含了前面所有步的隐藏层状态。而输出层的输出 ot 只与当前步的 st 有关。
    • (在实践中,为了降低网络的复杂度,往往 st 只包含前面若干步而不是所有步的隐藏层状态)
  • RNNs中,每输入一步,每一层都共享参数U,V,W,(因为是将循环的部分展开,天然应该相等)
  • RNNs的关键之处在于隐藏层,隐藏层能够捕捉序列的信息。

3、应用方面

  • 循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用。目前使用最广泛最成功的模型便是LSTMs(Long Short-Term Memory,长短时记忆模型)模型

(1) 语言模型和文本生成

(2) 机器翻译

(3) 语音识别

(4) 图像描述生成

  • 根据图像,生成一段描述图像的话
  • 需要和CNN结合使用

二、结构

1、One to One

  • 即一个输入对应一个输出,就是上面的图

2、Many to One

  • 即多个输入对应一个输出,比如情感分析,一段话中很多次,判断这段话的情感
  • 其中 x1,x2,,xt 表示句子中的t个词,o代表最终输出的情感标签
  • 前向计算就是: f(x)=Vst=V(Uxt+Wst1)=V(Uxt+W(Uxt1+Wst2))

3、One to Many

  • 前向计算类似,不再给出

4、Many to Many

  • 前向计算类似,不再给出

5、双向RNN(Bidirectional RNN)