在「拆 Transformer 系列一:Encoder-Decoder 模型架构详解」中有简单介绍 Attention,Self-Attention 以及 Multi-Head Attention,都只是在直观上介绍 Attention 的作用,如何能够像人的视觉注意力机制那样,记住关键信息,并且也介绍了 Self-Attention 机制如何能通过对自身注意力加权来学习句子内部结构以及一些语法特征。
现在,我还要打算继续详细讲解 Attention,主要讲解 Transformer 中的 Multi-Head Attention 如何实现?通过图解加说明来讲解。
Self-Attention
上一节我们讲到,Self-Attention 的 Query=Key=Value,即 Q,K,V 三个矩阵都来自同一个输入,而 Attention 计算过程如何呢?

Attention 机制实质上就是一个寻址过程,通过给定一个任和务相关的查询 Query 向量 Q,通过计算与 Key 的注意力分布并附加在 Value 上,从而计算 Attention Value,这个过程实际上是 Attention 缓解神经网络复杂度的体现,不需要将所有的 N 个输入都输入到神经网络进行计算,而是选择一些与任务相关的信息输入神经网络,与 RNN 中的门控机制思想类似。
Attention 机制计算过程大致可以分成三步:
① 信息输入:将 Q,K,V 输入模型
- 用 X = [ x 1 , x 2 , . . . x n ] X=[x_1,x_2,...x_n] X=[x1,x2,...xn] 表示输入权重向量
② 计算注意力分布 α:通过计算 Q 和 K 进行点积计算相关度,并通过 softmax 计算分数
- 另 Q = K = V = X Q=K=V=X Q=K=V=X,通过 softmax 计算注意力权重, α i = s o f t m a x ( s ( k i , q ) ) = s o f t m a x ( s ( x i , q ) ) α_i=softmax(s(k_i,q))=softmax(s(x_i, q)) αi=softmax(s(ki,q))=softmax(s(xi,q))
- 我们将 α i α_i αi 称之为注意力概率分布, s ( x i , q ) s(x_i, q) s(xi,q) 为注意力打分机制,常见的有如下几种:
- 加性模型: s ( x i , q ) = v T t a n h ( W x i + U q ) s(x_i,q)=v^Ttanh(Wx_i+Uq) s(xi,q)=vTtanh(Wxi+Uq)
- 点积模型: s ( x i , q ) = x i T q s(x_i,q)=x_i^Tq s(xi,q)=xiTq
- 缩放点积模型: s ( x i , q ) = x i T q / d k s(x_i,q)={x_i^Tq}/\sqrt{d_k} s(xi,q)=xiTq/dk
- 双线性模型: s ( x i , q ) = x i T W q s(x_i,q)=x_i^TWq s(xi,q)=xiTWq
③ 信息加权平均:注意力分布 α i α_i αi 来解释在上下文查询 q i q_i qi

本文深入解析Transformer模型中的Attention机制,包括Self-Attention和Multi-Head Attention的计算流程,揭示其如何捕捉长距离依赖,学习句子结构及语法特征。
最低0.47元/天 解锁文章
1258

被折叠的 条评论
为什么被折叠?



