深度学习(Deep Learning)读书思考八:循环神经网络三(RNN应用)

概述

通过前两小节的介绍,可以清楚的了解RNN模型的网络结构以及LSTM。本小节主要介绍RNN其他变形以及应用,包括

1.GRU单元
2.序列到序列(Seq2Seq)模型
3.注意力(Attention)模型
4.RNN在NLP中的应用
5.总结

GRU单元

GRU通过引入重置门和遗忘门来解决长期依赖问题,相对于LSTM有更少参数并且在某些问题上,效果好于LSTM。
这里写图片描述

  1. 重置门
    rt=σ(Wrx+Urht1)
    如果重置门关闭,会忽略掉历史状态,即将历史不相干的信息不会影响未来的输出。
  2. 遗忘门
    zt=σ(Wzx+Uzht1)
    遗忘门能够控制历史信息对当前输出的影响,如果遗忘门接近1,此时会把历史信息传递下去
  3. 节点状态
    h^t=tanh(Wx+rtoUht1)
  4. 输出
    ht=ztoht1+(1zt)oh^t

Seq2Seq模型

序列到序列模型可以解决很多不定长输入到输出的变换问题,等价于编码和解码模型,即编码阶段将不定长输入编码成定长向量;解码阶段对输出进行解码。

这里写图片描述

1.其中序列ABC是输入序列,WXYZ是输出序列,EOS是结束符号
2.模型分为两个阶段1)encode阶段,该阶段将输入序列编码成一个定长维度的向量2)decode阶段,根据编码后向量预测输出向量。
3.编码过程,可以使用标准的RNN模型,例如

htyt=f(Whxxt+Whhht1)=Whyht

4.解码过程,也可以使用一个标准的RNN模型进行解码,例如RNN-LM
p(y1,y2...yM|x1,x2...xN)=t=1MP(yt|c,y1,y2...yt1)
其中v为编码后的定长向量。

注意力模型

注意力模型类似于序列到序列模型,不同的是在解码阶段:序列到序列模型将输入同等看待,而注意力机制会模拟人类大脑运作机制,在预测不同输出是会将部分输入作为此次预测的输入。

注意力通用框架

定义解码阶段条件概率模型如下

p(yi|y1,y2...yi,x)=g(yi1,si,ci)
其中 yi1 可以理解为本次输入的上下文;
si=f(si1,yi1,ci) 该时间序列状态;
c_i不同于传统的解码过程,传统解码过程每一步的解码对应于相同的c(编码的后定长向量),注意力机制对于不同的时间序列输出对应不同编码向量。

c_i计算过程就是注意力机制关键步骤,计算过程如下:

  1. ci=Txjαijhj ,其中c_i表示解码阶段的第i个时间序列;h_j为对输入编码后的结果,传统的编码过程只保留最后一个时刻作为编码的输出,这里对所有编码输出分别加权得到每一个c_i
  2. 加权系数 αij 计算如下:
    αij=exp(eij)Txk1exp(eik)eij=a(si1,hj)
    ,相当于额外加了一个网络层计算加权系数,需要注意的是 eijhj
    3.这里注意力机制相当于对编码过程中的输出进行了一个软加权,上述过程也称之为对齐模型。

注意力机制实例

介绍一个2015年注意力机制应用机器翻译的模型,该模型编码阶段使用双向RNN模型,解码采用注意力机制模型,模型架构如下:
这里写图片描述

  1. 输入序列表示为: x=(x1,x2...xTx) ;输出序列表示为: x=(x1,x2...xTx)
  2. 编码阶段采用BIRNN,并且采用GRU单元,则
    h⃗ i={(1z⃗ i) o h⃗ i1+z⃗ ih⃗ i,i>00, i=0
    其中
    h⃗ iz⃗ ir⃗ i=tanh(W⃗ Exi+U⃗ [r⃗ ioh⃗ i1])=σ(W⃗ zExi+U⃗ zh⃗ i1)=σ(W⃗ rExi+U⃗ rh⃗ i1)
    不同的是和原版GRU计算输出值略有不同,不影响最后结果。由于采用的是双向RNN,编码单元最终的输出为
    hi=[h⃗ i;hi]
    其中E为词向量矩阵
  3. 解码阶段采用RNN并且采用注意力机制进行对齐,计算过程如下:
    si=(1zi) o si1+zis^i
    其中
    s^iziri=tanh(WExi+U[riosi1]+Cci)=σ(WzExi+Uzsi1Czci)=σ(WrExi+Urhi1+Crci)
  4. 注意力机制,下面主要集中介绍c_i的计算过程,首先c_i是输入表示的加权平均,即
    ciαijeij=jTxαijhj=exp(eij)Txk1exp(eik)=vTatanh(Wasi1+Uahj)
  5. 输出层采用maxout网络,这里不再赘述。
  6. 另外 这里是软对齐模型,此外还有硬对齐以及混合对齐等。

RNN其他应用

理论上只要问题可以建模成序列到序列的映射均可以采用RNN进行求解,例如:
1. 命名实体识别问题NER
2. 词级别的情感分析
3. 问答系统
4. 机器翻译
5. 图片添加注释
6. 文本摘要

总结

通过该小结学习需要了解Seq2Seq模型以及能够解决问题;了解注意力机制模型等。

猜你喜欢

转载自blog.csdn.net/fangqingan_java/article/details/53232415