拆 Transformer 系列二:Multi- Head Attention 机制详解

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

在「拆 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发轫于NLP(自然语言处理),并跨界应用到CV(计算机视觉)领域。目前已成为深度学习的新范式,影响力和应用前景巨大。 本课程对Transformer的原理和TensorFlow 2代码进行精讲,来帮助大家掌握其详细原理和具体实现。 原理精讲部分包括:注意力机制和自注意力机制Transformer的架构概述、Encoder的多头注意力(Multi-Head Attention)、Encoder的位置编码(Positional Encoding)、残差链接(Residual Connection)、层规范化(Layer Normalization)、FFN(Feed Forward Network)、Transformer的训练及性能、Transformer的机器翻译工作流程。  代码精讲部分使用Jupyter Notebook对Transformer的TensorFlow 2实现代码进行逐行解读,包括:安装TensorFlow、Transformer的数据集加载与预处理代码解读、Transformer的位置编码与多头注意力代码解读、TransformerTransformer类代码解读、Transformer的优化器与损失函数代码解读、Transformer的训练代码解读、Transformer的推理与权重保存代码解读。相关课程: 《Transformer原理与代码精讲(PyTorch)》https://edu.youkuaiyun.com/course/detail/36697《Transformer原理与代码精讲(TensorFlow)》https://edu.youkuaiyun.com/course/detail/36699《ViT(Vision Transformer)原理与代码精讲》https://edu.youkuaiyun.com/course/detail/36719《DETR原理与代码精讲》https://edu.youkuaiyun.com/course/detail/36768《Swin Transformer实战目标检测:训练自己的数据集》https://edu.youkuaiyun.com/course/detail/36585《Swin Transformer实战实例分割:训练自己的数据集》https://edu.youkuaiyun.com/course/detail/36586《Swin Transformer原理与代码精讲》 https://download.youkuaiyun.com/course/detail/37045
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值