Encoder-Decoder框架与Attention机制

Attention机制 – 潘登同学的深度学习笔记

文章目录

    • Attention机制 -- 潘登同学的深度学习笔记
  • Encoder-Decode框架
    • Encoder-Decode应用于聊天机器人
      • 数据预处理
      • 训练模型
      • 模型应用
  • Attention机制
    • 计算相似度矩阵的方式
      • 论文提出的方法
      • 更常用的方法
  • Self-Attention机制
    • Multi head
    • Attention与Self-Attention的区别
    • 在self-Attention下的一个Encoder

Encoder-Decode框架

要了解深度学习中的注意力模型,就不得不先谈 Encoder-Decoder 框架,因为目前大多数注意力模型附着在 Encoder-Decoder 框架下,当然,其实注意力模型可以看作一种通用的思想,本身并不依赖于特定框架,这点需要注意。

Encoder-Decoder 框架可以看作是一种深度学习领域的研究模式,应用场景异常广泛。下图是文本处理领域里常用的 Encoder-Decoder 框架最抽象的一种表示

Encoder-Decoder框架与Attention机制_第1张图片

文本处理领域的 Encoder-Decoder 框架可以这么直观地去理解:可以把它看作适合处理由一个句子(或篇章)生成另外一个句子(或篇章)的通用处理模型。对于句子对 < S o u r c e , T a r g e t > <Source,Target>,我们的目标是给定输入句子 Source,期待通过Encoder-Decoder 框架来生成目标句子 Target。Source 和 Target 可以是同一种语言,也可以是两种不同的语言。而 Source 和 Target 分别由各自的单词序列构成

S o u r c e = ( x 1 , x 2 , … , x m ) T a r g e t = ( y 1 , y 2 , … , y n ) Source = (x_1,x_2,\ldots,x_m) \\ Target = (y_1,y_2,\ldots,y_n) \\ Source=(x1,x2,,xm)Target=(y1,y2,,yn)
Encoder 顾名思义就是对输入句子 Source 进行编码,将输入句子通过非线性变换转化为中间语义表示 C
C = F ( x 1 , x 2 , … , x m ) C = F(x_1,x_2,\ldots,x_m) C=F(x1,x2,,xm)
对于解码器 Decoder 来说,其任务是根据句子 Source 的中间语义表示 C 和之前已经生成的历史信息 y 1 , y 2 , … , y i − 1 y_1,y_2,\ldots,y_{i-1} y1,y2,,yi1来生成i时刻要生成的单词
y i = G ( C , y 1 , y 2 , … , y i − 1 ) y_i = G(C,y_1,y_2,\ldots,y_{i-1}) yi=G(C,y1,y2,,yi1)

  • 每个 yi 都依次这么产生,那么看起来就是整个系统根据输入句子 Source 生成了目标句子 Target。如果 Source 是中文句子,Target 是英文句子,那么这就是解决机器翻译问题的 Encoder-Decoder 框架;
  • 如果 Source 是一篇文章,Target 是概括性的几句描述语句,那么这是文本摘要的 Encoder-Decoder 框架;
  • 如果 Source 是一句问句,Target 是一句回答,那么这时问答系统或者对话机器人的 Encoder-Decoder 框架。由此可见,在文本处理领域,Encoder-Decoder 的应用领域相当广泛。
  • Encoder-Decoder 框架不仅仅在文本领域广泛使用,在语音识别、图像处理等领域也经常使用。比如对于语音识别来说,上图所示的框架完全适用,区别无非是 Encoder 部分的输入是语音流,输出是对应的文本信息;

Encoder-Decoder框架与Attention机制_第2张图片

Encoder-Decode应用于聊天机器人

聊天机器人是一种many to many的网络拓扑结构,核心还是用Encoder-Decoder对不同长度的序列进行处理

数据预处理

训练模型

模型应用

Encoder-Decoder框架与Attention机制_第3张图片

Attention机制

注意力模型最近几年在深度学习各个领域被广泛使用,无论是图像处理、语音识别还是自然语言处理的各种不同类型的任务中,都很容易遇到注意力模型的身影。

觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息。这是人类利用有限的注意力资源从大量信息中快速筛选出高价值信息的手段,是人类在长期进化中形成的一种生存机制,人类视觉注意力机制极大地提高了视觉信息处理的效率与准确性。

Encoder-Decoder框架与Attention机制_第4张图片

简单的描述一下上图,Attention机制主要是在Decoder的地方加了一层Attention Layer,以往Decoder从Encoder中获取的信息只有Encoder最后的隐状态,包含的信息量不够,或者说在做翻译任务的时候,我们拿笼统的一句话去做翻译是效率比较低的,要关注不同语言相同语义的词语的位置信息,如中文: 你好吗? 英文: How are you? 的位置不同,的位置也不同,Attention机制就是解决这种问题的;

所以在每个Encoder隐状态 S i S_i Si向下一时刻传递的时候,会将 S i S_i Si与Encoder的每一时刻的隐状态 h 1 , … , h n h_1, \ldots, h_n h1,,hn计算相似度, 再将相似度进行softmax归一化操作,得到权重(使得权重之和为1), 再用权重与各个隐状态相乘相加得到 C i C_i Ci, 这个 C i C_i Ci就是Attention Layer的产物,最后将 S i , C i , S i − 1 ( 上 一 时 刻 的 输 出 , 这 一 时 刻 的 输 入 ) S_i,C_i,S_{i-1}(上一时刻的输出,这一时刻的输入) Si,Ci,Si1(,)进行拼接,再计算得到结果

注意 这里说的下标,与上图标注的有一些偏差,以上图来说,就是 S i , C i − 1 , S i − 1 S_i,C_{i-1},S_{i-1} Si,Ci1,Si1进行拼接;(具体要看S与C从几开始数,如果都是从0开始数的话,上图就是正确的,如果S从0开始数,C从1开始说,那么上文就是正确的,理解即可)

计算相似度矩阵的方式

论文提出的方法

S 0 S_0 S0去计算权重为例

Encoder-Decoder框架与Attention机制_第5张图片

其中 V T , W V^T,W VT,W都是要计算的矩阵,然后对每个计算出的 α i ~ \tilde{\alpha_i} αi~进行softmax变换,得到 α i \alpha_i αi

更常用的方法

Encoder-Decoder框架与Attention机制_第6张图片

其中 W K , W Q W_K,W_Q WK,WQ都是要计算的矩阵

Self-Attention机制

前面说的Attention机制是在Encoder与Decoder之间计算相似性的一种方式,关注的点在于两种不同序列的相关关系,而Self-Attention则是在Encoder或Decoder中,取代RNN或者LSTM层的一种机制,因为RNN不能很好的做到并行计算,总是会有序列依赖,导致计算只能串行

Encoder-Decoder框架与Attention机制_第7张图片

上图就是Self-Attention计算第一个时刻的上下文向量的过程,计算的 b i b_i bi都不依赖于序列信息,可以并行计算

Multi head

Self-Attention的作者认为一组 W q , W k , W v W^q,W^k,W^v Wq,Wk,Wv矩阵还不够爽,于是拿了 j j j W q , W k , W v W^q,W^k,W^v Wq,Wk,Wv,计算 b i , j b_{i,j} bi,j,最后将 j j j组b拼接起来,再乘上矩阵 W O W^O WO得到一个时刻的上下文向量 b i b_i bi

Encoder-Decoder框架与Attention机制_第8张图片

Encoder-Decoder框架与Attention机制_第9张图片

Attention与Self-Attention的区别

如下图所示,线越深表示两者关系越紧密,在英语中的area与在法语中的zone的意思是相同的,只是两种语言之间的语法有区别(我猜的…),所以Attention是用于解决Decoder应该侧重学习Encoder的哪些方面的问题

Encoder-Decoder框架与Attention机制_第10张图片

如下图所示,线越深表示两者关系越紧密,Self-attention的作用可以总结为指代消歧,能得出某一个序列内部词语的相关性,将一些指代不明的词转换成有意义的词语,或者能记住一些固定搭配…

Encoder-Decoder框架与Attention机制_第11张图片

Encoder-Decoder框架与Attention机制_第12张图片

在self-Attention下的一个Encoder

Encoder-Decoder框架与Attention机制_第13张图片

你可能感兴趣的