深度学习(Deep Learning)读书思考八:循环神经网络三(RNN应用)
2016-11-20 11:30
941 查看
概述
通过前两小节的介绍,可以清楚的了解RNN模型的网络结构以及LSTM。本小节主要介绍RNN其他变形以及应用,包括1.GRU单元
2.序列到序列(Seq2Seq)模型
3.注意力(Attention)模型
4.RNN在NLP中的应用
5.总结
GRU单元
GRU通过引入重置门和遗忘门来解决长期依赖问题,相对于LSTM有更少参数并且在某些问题上,效果好于LSTM。重置门rt=σ(Wrx+Urht−1)如果重置门关闭,会忽略掉历史状态,即将历史不相干的信息不会影响未来的输出。
遗忘门zt=σ(Wzx+Uzht−1)遗忘门能够控制历史信息对当前输出的影响,如果遗忘门接近1,此时会把历史信息传递下去
节点状态h^t=tanh(Wx+rtoUht−1)
输出 ht=ztoht−1+(1−zt)oh^t
Seq2Seq模型
序列到序列模型可以解决很多不定长输入到输出的变换问题,等价于编码和解码模型,即编码阶段将不定长输入编码成定长向量;解码阶段对输出进行解码。1.其中序列ABC是输入序列,WXYZ是输出序列,EOS是结束符号
2.模型分为两个阶段1)encode阶段,该阶段将输入序列编码成一个定长维度的向量2)decode阶段,根据编码后向量预测输出向量。
3.编码过程,可以使用标准的RNN模型,例如htyt=f(Whxxt+Whhht−1)=Whyht
4.解码过程,也可以使用一个标准的RNN模型进行解码,例如RNN-LMp(y1,y2...yM|x1,x2...xN)=∏t=1MP(yt|c,y1,y2...yt−1)其中v为编码后的定长向量。
注意力模型
注意力模型类似于序列到序列模型,不同的是在解码阶段:序列到序列模型将输入同等看待,而注意力机制会模拟人类大脑运作机制,在预测不同输出是会将部分输入作为此次预测的输入。注意力通用框架
定义解码阶段条件概率模型如下p(yi|y1,y2...yi,x)=g(yi−1,si,ci)其中yi−1可以理解为本次输入的上下文;si=f(si−1,yi−1,ci)该时间序列状态;
c_i不同于传统的解码过程,传统解码过程每一步的解码对应于相同的c(编码的后定长向量),注意力机制对于不同的时间序列输出对应不同编码向量。
c_i计算过程就是注意力机制关键步骤,计算过程如下:
ci=∑Txjαijhj,其中c_i表示解码阶段的第i个时间序列;h_j为对输入编码后的结果,传统的编码过程只保留最后一个时刻作为编码的输出,这里对所有编码输出分别加权得到每一个c_i
加权系数αij计算如下:αij=exp(eij)∑Txk−1exp(eik)eij=a(si−1,hj),相当于额外加了一个网络层计算加权系数,需要注意的是eij的计算仅仅依赖于上一输出状态和输入hj
3.这里注意力机制相当于对编码过程中的输出进行了一个软加权,上述过程也称之为对齐模型。
注意力机制实例
介绍一个2015年注意力机制应用机器翻译的模型,该模型编码阶段使用双向RNN模型,解码采用注意力机制模型,模型架构如下:输入序列表示为:x=(x1,x2...xTx);输出序列表示为:x=(x1,x2...xTx)
编码阶段采用BIRNN,并且采用GRU单元,则h⃗ i={(1−z⃗ i) o h⃗ i−1+z⃗ ih⃗ i,i>00, i=0其中h⃗ iz⃗ ir⃗ i=tanh(W⃗ Exi+U⃗ [r⃗ ioh⃗ i−1])=σ(W⃗ zExi+U⃗ zh⃗ i−1)=σ(W⃗ rExi+U⃗ rh⃗ i−1)不同的是和原版GRU计算输出值略有不同,不影响最后结果。由于采用的是双向RNN,编码单元最终的输出为hi=[h⃗ i;h←i]其中E为词向量矩阵
解码阶段采用RNN并且采用注意力机制进行对齐,计算过程如下:si=(1−zi) o si−1+zis^i其中s^iziri=tanh(WExi+U[riosi−1]+Cci)=σ(WzExi+Uzsi−1Czci)=σ(WrExi+Urhi−1+Crci)
注意力机制,下面主要集中介绍c_i的计算过程,首先c_i是输入表示的加权平均,即ciαijeij=∑jTxαijhj=exp(eij)∑Txk−1exp(eik)=vTatanh(Wasi−1+Uahj)
输出层采用maxout网络,这里不再赘述。
另外 这里是软对齐模型,此外还有硬对齐以及混合对齐等。
RNN其他应用
理论上只要问题可以建模成序列到序列的映射均可以采用RNN进行求解,例如:1. 命名实体识别问题NER
2. 词级别的情感分析
3. 问答系统
4. 机器翻译
5. 图片添加注释
6. 文本摘要
总结
通过该小结学习需要了解Seq2Seq模型以及能够解决问题;了解注意力机制模型等。相关文章推荐
- 深度学习(Deep Learning)读书思考七:循环神经网络二(LSTM)
- 深度学习框架TensorFlow学习与应用(七)——循环神经网络(RNN)应用于MNIST数据集分类
- 深度学习(Deep Learning)读书思考六:循环神经网络一(RNN)
- 深度学习_循环神经网络RNN与LSTM
- 【深度学习】RNN(循环神经网络)
- [置顶] 【深度学习】RNN循环神经网络Python简单实现
- 深度学习-note-RNN(循环神经网络)
- 深度学习笔记七:循环神经网络RNN(基本理论)
- 王小草【深度学习】笔记第六弹--循环神经网络RNN和LSTM
- July深度学习之RNN循环神经网络
- 深度学习(08)_RNN-LSTM循环神经网络-03-Tensorflow进阶实现
- 深度学习:循环神经网络RNN
- 深度学习(08)_RNN-LSTM循环神经网络-03-Tensorflow进阶实现
- MXNet动手学深度学习笔记:循环神经网络RNN实现
- 深度学习之循环神经网络RNN概述,双向LSTM实现字符识别
- 深度学习——循环神经网络/递归神经网络(RNN)及其改进的长短时记忆网络(LSTM)
- 深度学习——循环神经网络RNN(一)_反向传播算法
- 深度学习:循环神经网络RNN的变体
- 深度学习笔记四循环神经网络RNN
- 【深度学习】RNN(循环神经网络)之LSTM(长短时记忆)