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

attention 的mask 的简单实现

  • Causal Mask(上三角):挡住未来位置,自回归生成必须遵守时序;
  • Padding Mask:挡住PAD 占位符,过滤无效填充位;
  • 合并规则:
     final_mask = causal_mask | pad_mask 
    只要其中一个掩码标记为 True(需要遮挡),该位置就统一填充 -1e9
  • import torch# 1. 模拟批次输入,0=PAD
    input_ids = torch.tensor([[1,2,3,0,0], [4,5,0,0,0]])
    batch, seq_len = input_ids.shape# ----------------------
    # 第一步:生成 Padding Mask
    # ----------------------
    pad_mask = (input_ids == 0)          # [B, L]
    # 扩维到 [B, L, L],适配注意力分数矩阵 [B, L, L]
    pad_mask = pad_mask.unsqueeze(1).repeat(1, seq_len, 1)  # [2,5,5]# ----------------------
    # 第二步:生成 Causal 前瞻掩码(上三角)
    # ----------------------
    # [L, L] 上三角,diagonal=1 表示主对角线右侧全部遮挡
    causal_mask = torch.triu(torch.ones(seq_len, seq_len), diagonal=1).bool()  # [5,5]# ----------------------
    # 第三步:合并掩码 逻辑或
    # ----------------------
    # 利用广播:[B,L,L] | [L,L] → [B,L,L]
    full_mask = pad_mask | causal_mask# ----------------------
    # 第四步:作用到注意力分数
    # ----------------------
    attn_score = torch.randn(batch, seq_len, seq_len)  # 模拟注意力分数 [B,L,L]
    attn_score = attn_score.masked_fill(full_mask, -1e9)
    attn_weight = torch.softmax(attn_score, dim=-1)print(attn_weight)
    

      

    三、逐位置解释遮挡逻辑

     
    以序列单条样本 [1,2,3,0,0](后两位是 PAD)为例:
     
    1. 未来位置(j > i):被 causal_mask 挡住;
    2. PAD 位置(原序列为 0):被 pad_mask 挡住;
    3. 既是未来又是 PAD:依然遮挡(或逻辑天然覆盖);
    4. 只有前文有效 token:正常计算注意力。
     

     

    四、分模块使用总结

     
    1. Transformer Encoder / BERT 类双向模型
       
      只需要 Padding Mask,不用 Causal Mask,因为允许双向互看。
       
    2. Transformer Decoder / GPT/LLaMA 类自回归模型
       
      必须两个掩码混合使用,流程固定:
       
      生成 Causal Mask → 生成 Padding Mask → 逻辑或合并 → 作用于注意力分数。
       
     

     

    五、补充:适配多头注意力的小改动

     
    如果是多头注意力(形状 [B, heads, L, L]),只需提前把两个掩码都扩出 head 维度再合并:

  

n_heads = 8
# Padding Mask 扩维 [B, heads, L, L]
pad_mask = pad_mask.unsqueeze(1).repeat(1, n_heads, 1, 1)
# Causal Mask 扩维 [1, heads, L, L] 广播使用
causal_mask = causal_mask.unsqueeze(0).unsqueeze(0)
# 合并
full_mask = pad_mask | causal_mask

  

http://www.rkmt.cn/news/1440161.html

相关文章:

  • ChatGPT核心原理、高阶应用与提示词实战指南
  • 变更管理在软考中级系统集成项目管理工程师考试中占多少分 - 众智商学院官方
  • 【Gemini推送通知优化实战指南】:20年专家亲授5大性能瓶颈与98%送达率提升方案
  • 2026沃尔玛购物卡回收避坑|别再低价贱卖!4大平台实测,差距太大了 - 资讯快报
  • 长沙二手手表回收攻略,实地走访多家门店,教你选对靠谱渠道 - 合扬奢侈品交易中心
  • 抖音视频如何保存到相册:全场景操作方法与保存失败原因解决方案 - 科技热点发布
  • Web应用技术第二次作业
  • GetQzonehistory专业实践:掌握高效QQ空间说说备份与数据归档技巧
  • 留学生无实习经验求职指南:结构性困境与系统化破局
  • go swagger转html
  • 烟威地区废旧设备拆除回收:合规服务助力工业设备更新处置 - 人间发现
  • 欧盟AI法案深度解析:风险分级监管、合规挑战与企业应对策略
  • 告别重复检测!DINO的对比去噪训练,如何让模型学会‘精准排雷’?
  • ppt里面有时候输入法无法输入中文,只能输入英文,采用切换按键也不行——只有关闭ppt重新打开才可以解决问题,这是什么原因?
  • CFD几何建模软件
  • 手把手调试:在QEMU+KVM虚拟化环境中验证SWIOTLB的工作机制与触发条件
  • go精华gitee.com/gowebframe3/webframe
  • YOLO26野生动物识别检测系统(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)
  • IOTA 学习笔记(五):对象模型是理解 IOTA 的关键
  • 2026真空热压炉、碳化炉、熔炼炉五大厂家推荐 - 资讯速览
  • TranslucentTB启动失败?5步修复Microsoft.UI.Xaml框架缺失问题
  • 2026年 果蔬深加工前处理设备/饮料杀菌及实罐杀菌设备/脱水蔬菜前处理设备实力制造商:智能高效与锁鲜工艺解析 - 品牌企业推荐师(官方)
  • 2026年 果蔬深加工设备/饮料杀菌实罐杀菌设备/脱水蔬菜前处理设备十大品牌推荐:高效节能与卫生安全的行业标杆之选 - 品牌企业推荐师(官方)
  • 终极指南:AlwaysOnTop - 3分钟解决Windows多窗口遮挡难题
  • ThinkPHP后端如何优雅地给uni-app用户发推送?一个云函数搞定全流程
  • 2026执行律师实力推荐:疑难执行领域权威测评,专业执行律师团队推荐 - 资讯快报
  • 手把手教你学Simulink——无刷直流电机(BLDC)霍尔传感器(Hall Sensor)信号处理电路仿真
  • IOTA 学习笔记(六):Move 语言入门
  • 武汉闲置黄金上门回收攻略|余生黄金回收靠谱变现技巧 - 余生黄金回收
  • 告别密码烦恼!在RuoYi-Vue中快速对接公司统一认证平台(JWT单点登录集成指南)