深度学习应用:自然语言处理

循环神经网络 #

image

  1. 一对一模型:我们之前的模型,比如全连接神经网络,就是一对一的结构。我们给它一个输入,它能得到一个输出,而且不同输入间被视作了独立的关系,分别进行学习或者识别等任务。而现在我们要关注的,是后四幅图,也就是时序的模型。
  2. 一对多模型:根据模型的一个输出,可以用来预测一个序列。比如对于一个图像,输出一串字幕来描述它。
  3. 多对一模型:根据一个序列输入,从而预测一个值。比如根据用户在一家饭店的留言,判断用户对这家饭店的评价。那么,输入是一段话是一个序列输入,输出是 0 至 5 之间的一个数作为打分。
  4. 多对多有延迟:根据模型的序列输入,我们根据已有的输入,有延迟地输出一个序列。常见的任务比如翻译的学习任务,英文翻译成中文。模型需要等英文输入到一定程度后,才能翻译成中文,这样输入输出都为一个序列。
  5. 多对多无延迟:根据模型的序列输入,根据输入同步输出一个序列。常见的比如做天气预报,需要实时根据测得的温度、湿度等做出下雨概率的预测。但是,每一次预测其实也要考虑之前的一些序列输入,而不仅由这一时刻的输入所决定。

简单循环神经网络 #

相比于传统的前馈式神经网络,循环神经网络将不同时序的同一层前后连了起来,权值上就会通过引入另一个权值,来决定上一时刻的输出如何作为输入,并影响到下一时刻的输出。于是就有了这样一个简单的基本结构:

image

LSTM 长短期记忆模型 #

image

GRU 门控循环单元 #

image

双向 RNN #

image

深度 RNN #

image

神经机器翻译和对话系统 #

image

图中, \( X_{i} \) 表示输入序列, \( y_{i} \) 表示输出序列, \( C \) 表示输入序列经过编码后的输出状态。从上图中,我们可以看到,该模型主要由编码器和解码器组成,当我们输入序列 \( X_{i} \) 时,经过循环神经网络编码得到一个状态向量 \( C \) ,而解码器也是一个循环神经网络,其通过编码器得到的状态 \( C \) 来进行解码,从而得到一组输出序列。

image

comments powered by Disqus