当前位置: 首页 > news >正文

深度学习|表示学习|多头注意力在计算时常见的张量维度变换总结|28

如是我闻: 以下是多头注意力(Multi-Headed Attention)在计算时常见的张量维度变换总结,帮助理解从输入到输出是如何一步步处理的。为了方便,令:

  • B B B 表示 batch size(批量大小)
  • S S S 表示 sequence length(序列长度)
  • m m m 表示 num_heads(注意力头数)
  • h h h 表示 head_size(每个头的维度)
  • d m o d e l = m × h d_{\mathrm{model}} = m \times h dmodel=m×h 表示模型隐层维度

  1. 输入(queries、keys、values)
    形状 = ( B ,   S ,   d m o d e l ) . \text{形状} = (B,\, S,\, d_{\mathrm{model}}). 形状=(B,S,dmodel).
    在「自注意力」(self-attention)场景下,三者通常是同一个张量;在「交叉注意力」(cross-attention)场景下, queries \texttt{queries} queries keys,   values \texttt{keys, values} keys, values 可能来自不同子网络。

  2. 线性映射( W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV

    • queries \texttt{queries} queries 做线性变换得到 (Q):形状仍为 ( B , S , d m o d e l ) (B, S, d_{\mathrm{model}}) (B,S,dmodel)
    • keys \texttt{keys} keys 做线性变换得到 K K K:形状同上
    • values \texttt{values} values 做线性变换得到 V V V:形状同上
  3. 拆分 heads(split heads)

    • ( B , S , d m o d e l ) (B, S, d_{\mathrm{model}}) (B,S,dmodel) reshape + transpose 成 ( B , m , S , h ) (B, m, S, h) (B,m,S,h)
    • 这样每个 batch、每个序列位置上就可以拆出 m m m 个“头”,每个头维度为 h h h
    • 拆分后:
      Q , K , V   → split   ( B ,   m ,   S ,   h ) . Q, K, V ~\xrightarrow{\text{split}}~ (B,\, m,\, S,\, h). Q,K,V split  (B,m,S,h).
  4. 计算注意力分数(scores)

    • 使用 scaled dot-product:
      scores = Q × K T h 形状 = ( B ,   m ,   S ,   S ) . \text{scores} = \frac{Q \times K^T}{\sqrt{h}} \quad\text{形状} = (B,\, m,\, S,\, S). scores=h Q×KT形状=(B,m,S,S).
    • 此时会应用「下三角 mask」(causal mask)以保证自回归:只关注「过去和当前」位置,屏蔽「未来」位置。
    • scores \text{scores} scores s o f t m a x \mathrm{softmax} softmax 得到注意力权重 a t t n _ w e i g h t s \mathrm{attn\_weights} attn_weights
  5. 加权求和(attended values)
    attended_values = a t t n _ w e i g h t s × V , 形状 = ( B ,   m ,   S ,   h ) . \text{attended\_values} = \mathrm{attn\_weights} \times V, \quad \text{形状} = (B,\, m,\, S,\, h). attended_values=attn_weights×V,形状=(B,m,S,h).
    这样就得到每个 head 对原值向量的加权结果。

  6. 合并 heads(merge heads)

    • ( B , m , S , h ) (B, m, S, h) (B,m,S,h) 还原到 ( B , S , m × h ) (B, S, m \times h) (B,S,m×h),即 ( B , S , d m o d e l ) (B, S, d_{\mathrm{model}}) (B,S,dmodel)
    • 合并之后,相当于将所有 head 的信息拼接到最后一个维度上。
  7. 可选的最终线性映射 W O \mathbf{W}_O WO

    • 多数实现会继续用一个线性层 W O \mathbf{W}_O WO(同样是 ( d m o d e l , d m o d e l ) (d_{\mathrm{model}}, d_{\mathrm{model}}) (dmodel,dmodel))把拼接后的多头输出再次投影,形状保持 ( B , S , d m o d e l ) (B, S, d_{\mathrm{model}}) (B,S,dmodel)

通过以上步骤,多头注意力便可将序列的上下文信息捕获到不同的 head(不同的子空间),再合并形成新的隐层表示。

cao!


文章转载自:

http://7YhZkNnH.jbshh.cn
http://0hcf0kGC.jbshh.cn
http://WwJrVbjD.jbshh.cn
http://rST4w3XW.jbshh.cn
http://DkbrvOcZ.jbshh.cn
http://USeq8Iqd.jbshh.cn
http://wfYMHSCd.jbshh.cn
http://Qn6y5ap4.jbshh.cn
http://eUK5PC9C.jbshh.cn
http://2vjDXG6V.jbshh.cn
http://LR1VQ8YN.jbshh.cn
http://LVFDCpQX.jbshh.cn
http://Xm24cbq3.jbshh.cn
http://vs7m8kLf.jbshh.cn
http://0Wg7sxHt.jbshh.cn
http://E09B2aNx.jbshh.cn
http://2jmMfxh8.jbshh.cn
http://plWDob6a.jbshh.cn
http://L7xrKn1Q.jbshh.cn
http://HpS236Fa.jbshh.cn
http://7ik6rhCC.jbshh.cn
http://ziNP2XgO.jbshh.cn
http://7Ar407Pk.jbshh.cn
http://OW6t8yij.jbshh.cn
http://GmpAjD01.jbshh.cn
http://7ruNJPJJ.jbshh.cn
http://xdrkwYwK.jbshh.cn
http://UoXwTPf0.jbshh.cn
http://gEzwBbni.jbshh.cn
http://yhKOhTOh.jbshh.cn
http://www.dtcms.com/a/89642.html

相关文章:

  • C盘急救实录:从爆红到畅快
  • 量子计算模拟中的测量与噪声建模:基于 3 量子比特系统分析
  • AI-Sphere-Butler之Ubuntu服务器如何部署Nginx代理,并将HTTP升级成HTTPS,用于移动设备访问
  • 余弦退火算法与学习率预热
  • Apache HttpClient使用
  • 内核编程十二:打印task_struct中的数据
  • 高性能C#定时删除图片,包含定时触发、分批删除、异步处理和资源监控
  • JavaScript基础-常用的鼠标事件
  • 卷积神经网络的原理、实现及变体
  • c语言基础编程入门练习题(三)
  • 工欲善其事必先利其器————idea插件
  • 11_JavaScript_字符串方法+数学方法
  • react中防止数据多大并需要二次加工处理进行单线程转多线程webworker优化处理(不借助react-webworker)
  • Python Sanic面试题及参考答案
  • 东软鸿蒙C++开发面经
  • 网络华为HCIA+HCIP 防火墙
  • VLAN综合实验实验报告
  • git的进阶使用
  • Spring Boot JSON序列化深度管控:忽略指定字段+Jackson扩展策略破解双向实体循环引用问题
  • Linux -- 进程间通信(IPC)-- 进程间通信、管道、system V 共享内存、system V 消息队列、责任链模式 、system V 信号量
  • AI与数据的双向奔“赋”
  • 超融合服务器与普通服务器的具体区别
  • 226.翻转二叉树
  • ubuntu20.04 修改输入法设置后 界面卡死终端乱码 解决方法
  • 23中设计模式-迭代器(Iterator)设计模式
  • Netty源码—Pipeline和Handler(二)
  • Day39 | 724. 寻找数组的中心下标、34. 在排序数组中查找元素的第一个和最后一个位置、922. 按奇偶排序数组 II、35. 搜索插入位置
  • 如何用腾讯云建站做好一个多语言的建筑工程网站?海外用户访问量提升3倍!分享我的经验
  • 加新题了,MySQL 8.0 OCP 认证考试 题库更新
  • 通信系统的性能指标