cnn与rnn区别:
cnn需要固定长度的输入、输出,rnn的输入和输出可以是不定长、不等长的
cnn只有one to one ,rnn有onetoone,onetomany(图像生成文字),manytoone(分类),manytomany(最常用的RNN)
n to m(机器翻译,文本摘要,语音识别),n to n(图像每一帧分类)
h1 = f(U*X+W*h+b),y = softmax(V*h1+c),其中U,W,V是共享的,即每一步都是相同的
rnn处理序列数据
encoder-decoder缺点
编码,解码唯一的联系是上下文变量c
编码需要将序列压缩成一个定常变量c
先输入的信息经过经过激活函数,会被稀释掉
为了弥补encoder-decoder的缺陷提粗了attention机制
每个c都会选择与当前输出最相关的上下文信息
c1 = h(1)*a(11)+h(2)*a(12)+h(3)*a(13)+h(4)*a(14),其中h(i)表示encoder中的隐含状态,a(i j)表示第j阶段的编码h(j)对当前 i 阶段decoder的重要程度。
a(i j)的计算和解码decoder时第 i-1阶段的隐含状态h‘,编码encoder时第j阶段的隐含状态相关
a(11) = h‘(0)与h(1)经过变换得到
a(12) = h‘(0)与h(2)经过变换得到
a(13) = h‘(0)与h(3)经过变换得到
a(14) = h‘(0)与h(4)经过变换得到
a(11),a(12),a(13),a(14)再经过exp(a(11))/exp(a(11)+a(12)+a(13)+a(14)),保证和为1.
attention的优点
不要求编码器将所有信息编码成一个定长上下文向量
每一次输出都充分利用输入携带的信息,根据关注焦点不一样,语义向量Ci不一样
缺点
解码阶段需要计算每个输入输出的attention组合,50个单词的输入输出就需要计算2500词的attention