Encoder-Decoder架构与注意力机制

Encoder-Decoder架构模型,如下图:

Encoder会利用整个原始句子生成一个语义向量,Decoder再利用这个向量翻译成其它语言的句子。这样可以把握整个句子的意思、句法结构、性别信息等等。

Encoder对X 进行非线性变换得到中间语义向量c :

c=G(x_{1},x_{2},...,x_{n})

Decoder根据语义c 和生成的历史单词(y_{1},y_{2},...,y_{i-1})生成第i个单词 y_i :

y_i=f(c,y_1,y_2,...,y_{i-1})

Encoder和Decoder具体使用什么模型,都可以自己选择。通常有CNN,RNN,BiRNN,GRU,LSTM, Deep LSTM。

当句子较长时,所有语义完全通过一个中间语义向量来表示,单词自身的信息已经消失,会丢失更多的细节信息。

Attention Model的架构如下:

生成每个单词y_i时,都有各自的语义向量C_i,不再是统一的C 。

y_i=f(C_i,y1,...,y_{i-1})

普通注意力机制

将编码器和解码器的隐含状态用来求解打分函数:

Local-based ,没有外部的关注对象,自己关注自己。

General, 有外部的关注对象,直接乘积,全连接层。

Concatenation-based, 有关注的对象,先concat或相加再过连接层。

注意力分数经过softmax层:

Soft Attention 是对所有的信息进行加权求和。Hard Attention是选择最大信息的那一个。若是使用软性注意力选择机制,求得编码器的隐含状态与归一化分数的加权平均:

串联得到带有注意力的解码器隐含状态:

通过注意力隐状态得到预测概率:

多头注意力

Multi-head Attention利用多个查询Q来并行地从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。

比如Attention Is All You Need

硬性注意力

硬性注意力是只关注到一个位置上。选取最高概率的输入信息,在注意力分布上随机采样。

缺点:loss与注意力分布之间的函数关系不可导,无法使用反向传播训练。一般使用软性注意力。

需要:硬性注意力需要强化学习来进行训练。

键值对注意力

输入信息:键值对(Key, Value)。 Key用来计算注意力分布\alpha_iValue用来生成选择的信息。

结构化注意力

如果输入信息,本身就有层次化的结构,词、句子、段落、篇章等不同粒度的层次。这时用层次化的注意力来进行更好的信息选择。

也可以使用一种图模型,来构建更加复杂的结构化注意力分布。

指针网络

指针网络pointer network是一种序列到序列的模型,用来指出相关信息的位置。也就是只做第一步。

输入: X_{1:n}=[x_1,...,x_n]

输出:c_{1:m}=c_1,c_2,...,c_mc_i∈[1,n] , 输出是序列的下标。

发布了93 篇原创文章 · 获赞 119 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_18310041/article/details/95623776