Masked Attention 在 LLM 训练中的作用与原理

大语言模型(LLM)训练过程中,Masked Attention(掩码注意力) 是一个关键机制,它决定了 模型如何在训练时只利用过去的信息,而不会看到未来的 token。这篇文章将帮助你理解 Masked Attention 的作用、实现方式,以及为什么它能确保当前 token 只依赖于过去的 token,而不会泄露未来的信息。

1. Masked Attention 在 LLM 训练中的作用

在 LLM 训练时,我们通常使用 自回归(Autoregressive) 方式来让模型学习文本的生成。例如,给定输入序列:

"The cat is very"

模型需要预测下一个 token:

"cute"

但是,为了保证模型的生成方式符合自然语言流向,每个 token 只能看到它之前的 token,不能看到未来的 token

Masked Attention 的作用就是:

  • 屏蔽未来的 token,使当前 token 只能关注之前的 token
  • 保证训练阶段的注意力机制符合推理时的因果(causal)生成方式
  • 防止信息泄露,让模型学会自回归生成文本

如果没有 Masked Attention,模型在训练时可以“偷看”未来的 token,导致它学到的规律无法泛化到推理阶段,从而影响文本生成的效果。

举例说明

假设输入是 "The cat is cute",模型按 token 级别计算注意力:

(1) 没有 Mask(BERT 方式)
TokenThecatiscute
The
cat
is
cute

每个 token 都能看到整个句子,适用于 BERT 这种双向模型。

(2) 有 Mask(GPT 方式)
TokenThecatiscute
The
cat
is
cute

每个 token 只能看到它自己及之前的 token,保证训练和推理时的生成顺序一致。

2. Masked Attention 的工作原理

 在标准的 自注意力(Self-Attention) 机制中,注意力分数是这样计算的:

A = \text{softmax} \left( \frac{Q K^T}{\sqrt{d_k}} \right)

其中:

  • Q, K, V  是 Query(查询)、Key(键)和 Value(值)矩阵

  • Q K^T 计算所有 token 之间的相似度

  • 如果不做 Masking,每个 token 都能看到所有的 token

而在 Masked Attention 中,我们会使用一个 上三角掩码(Upper Triangular Mask),使得未来的 token 不能影响当前 token:

S' = \frac{Q K^T}{\sqrt{d_k}} + \text{mask}

Mask 是一个 上三角矩阵,其中:

  • 未来 token 的位置填充 -\infty,确保 softmax 之后它们的注意力权重为 0

  • 只允许关注当前 token 及之前的 token

例如,假设有 4 个 token:

\begin{bmatrix} s_{1,1} & -\infty & -\infty & -\infty \\ s_{2,1} & s_{2,2} & -\infty & -\infty \\ s_{3,1} & s_{3,2} & s_{3,3} & -\infty \\ s_{4,1} & s_{4,2} & s_{4,3} & s_{4,4} \end{bmatrix}

经过 softmax 之后:

A = \begin{bmatrix} 1 & 0 & 0 & 0 \\ \text{non-zero} & \text{non-zero} & 0 & 0 \\ \text{non-zero} & \text{non-zero} & \text{non-zero} & 0 \\ \text{non-zero} & \text{non-zero} & \text{non-zero} & \text{non-zero} \end{bmatrix}

最终,每个 token 只会关注它自己和它之前的 token,完全忽略未来的 token!

3. Masked Attention 计算下三角部分的值时,如何保证未来信息不会泄露?

换句话说,我们需要证明 Masked Attention 计算出的下三角部分的值(即历史 token 之间的注意力分数)不会受到未来 token 的影响

1. 问题重述

Masked Attention 的核心计算是:

\text{Attention}(Q, K, V) = \text{softmax}(\frac{Q K^T}{\sqrt{d_k}} + \text{mask}) V

其中:

  • Q, K, V 是整个序列的矩阵。

  • QK^T计算的是所有 token 之间的注意力分数。

  • Mask 确保 softmax 后未来 token 的注意力分数变为 0。

这个问题可以分解成两个关键点:

  1. 未来 token 是否影响了下三角部分的 Q 或 K?

  2. 即使未来 token 参与了 Q, K 计算,为什么它们不会影响下三角的注意力分数?

2. 未来 token 是否影响了 Q 或 K?

我们先看 Transformer 计算 Q, K, V 的方式:

Q = X W_Q, \quad K = X W_K, \quad V = X W_V

这里:

  • X 是整个输入序列的表示。

  • W_Q, W_K, W_V是相同的投影矩阵,作用于所有 token。

由于 每个 token 的 Q, K, V 只取决于它自己,并不会在计算时使用未来 token 的信息,所以:

  • 计算第 i 个 token 的 Q_i, K_i, V_i时,并没有用到 X_{i+1}, X_{i+2}, \dots,所以未来 token 并不会影响当前 token 的 Q, K, V

结论 1未来 token 不会影响当前 token 的 Q 和 K。

3. Masked Attention 如何确保下三角部分不包含未来信息?

即使 Q, K 没有未来信息,我们仍然要证明 计算出的注意力分数不会受到未来信息影响

我们来看注意力计算:

\frac{Q K^T}{\sqrt{d_k}}

这是一个 所有 token 之间的相似度矩阵,即:

S = \begin{bmatrix} Q_1 \cdot K_1^T & Q_1 \cdot K_2^T & Q_1 \cdot K_3^T & Q_1 \cdot K_4^T \\ Q_2 \cdot K_1^T & Q_2 \cdot K_2^T & Q_2 \cdot K_3^T & Q_2 \cdot K_4^T \\ Q_3 \cdot K_1^T & Q_3 \cdot K_2^T & Q_3 \cdot K_3^T & Q_3 \cdot K_4^T \\ Q_4 \cdot K_1^T & Q_4 \cdot K_2^T & Q_4 \cdot K_3^T & Q_4 \cdot K_4^T \end{bmatrix}

然后,我们应用 因果 Mask(Causal Mask)

S' = S + \text{mask}

Mask 让右上角(未来 token 相关的部分)变成 -\infty

\begin{bmatrix} S_{1,1} & -\infty & -\infty & -\infty \\ S_{2,1} & S_{2,2} & -\infty & -\infty \\ S_{3,1} & S_{3,2} & S_{3,3} & -\infty \\ S_{4,1} & S_{4,2} & S_{4,3} & S_{4,4} \end{bmatrix}

然后计算 softmax:

A = \text{softmax}(S')

由于 e^{-\infty} = 0,所有未来 token 相关的注意力分数都变成 0

A = \begin{bmatrix} 1 & 0 & 0 & 0 \\ \text{non-zero} & \text{non-zero} & 0 & 0 \\ \text{non-zero} & \text{non-zero} & \text{non-zero} & 0 \\ \text{non-zero} & \text{non-zero} & \text{non-zero} & \text{non-zero} \end{bmatrix}

最后,我们计算:

\text{Output} = A V

由于未来 token 的注意力权重是 0,它们的 V 在计算中被忽略。因此,下三角部分(历史 token 之间的注意力)完全不受未来 token 影响。

结论 2未来 token 的信息不会影响下三角部分的 Attention 计算。

4. 为什么 Masked Attention 能防止未来信息泄露?

你可能会问:

即使有 Mask,计算 Attention 之前,我们不是还是用到了整个序列的 Q, K, V 吗?未来 token 的 Q, K, V 不是已经算出来了吗?

的确,每个 token 的 Q, K, V 是独立计算的,但 Masked Attention 确保了:

  1. 计算 Q, K, V 时,每个 token 只依赖于它自己的输入

    • Q_i, K_i, V_i只来自 token i,不会用到未来的信息

    • 未来的 token 并不会影响当前 token 的 Q, K, V

  2. Masked Softmax 阻止了未来 token 的影响

    • 虽然 Q, K, V 都计算了,但 Masking 让未来 token 的注意力分数变为 0,确保计算出的 Attention 结果不包含未来信息。

最终,当前 token 只能看到过去的信息,未来的信息被完全屏蔽!

5. 训练时使用 Masked Attention 的必要性

Masked Attention 的一个关键作用是 让训练阶段和推理阶段保持一致

  • 训练时:模型学习如何根据 历史 token 预测 下一个 token,确保生成文本时符合自然语言流向。

  • 推理时:模型生成每个 token 后,仍然只能访问过去的 token,而不会看到未来的 token。

如果 训练时没有 Masked Attention,模型会学习到“作弊”策略,直接利用未来信息进行预测。但在推理时,模型无法“偷看”未来的信息,导致生成质量急剧下降。

6. 结论

Masked Attention 是 LLM 训练的核心机制之一,其作用在于:

  • 确保当前 token 只能访问过去的 token,不会泄露未来信息
  • 让训练阶段与推理阶段保持一致,避免模型在推理时“失效”
  • 利用因果 Mask 让 Transformer 具备自回归能力,学会按序生成文本

Masked Attention 本质上是 Transformer 训练过程中对信息流动的严格约束,它确保了 LLM 能够正确学习自回归生成任务,是大模型高质量文本生成的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43824.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Arduino、ESP32驱动GUVA-S12SD UV紫外线传感器(光照传感器篇)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 UV紫外线传感器是一个测试紫外线总量的最佳传感器,它不需要使用波长滤波器,只对紫外线敏感。 Arduino UV紫外线传感器,直接输出对应紫外线指数(UV INDEX)的线性电压,输出电压范围大约0~1100mV(对应UV INDEX值…

基于微波光子信道的图像传输系统matlab仿真,调制方式采用OFDM+QPSK,LDPC编译码以及LS信道估计

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 OFDMQPSK原理 2.2 微波光子信道简介 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 仿真操作步骤可参考程序配套的操作视…

【黑马点评】Redis解决集群的session共享问题

由于不同的tomcat服务器之间的session是不共享的,当请求如果在不同tomcat服务器之间切换就会导致数据丢失的问题。 使用redis可以解决session数据共享的问题 redis是tomcat以外的存储,存在redis中的数据,任何一台tomcat都能看得见&#xff0…

淘宝客户端动态化页面搭建

在手机淘宝等高频更新的业务场景中,UI页面的动态化和快速交付成为技术团队面临的重要挑战。本文围绕“客户端动态化页面搭建”这一主题,深入探讨了如何通过抽象框架设计解决高动态化页面的快速构建问题。文章详细介绍了框架的核心模块(如Data…

无人机,雷达定点飞行时,位置发散,位置很飘,原因分析

参考: 无人车传感器 IMU与GPS数据融合进行定位机制_gps imu 组合定位原始数-CSDN博客 我的无人机使用雷达定位,位置模式很飘 雷达的更新频率也是10HZ, 而px飞控的频率是100HZ,没有对两者之间的频率差异做出处理 所以才导致无人…

Postman 版本信息速查:快速定位版本号

保持 Postman 更新至最新版本是非常重要的,因为这能让我们享受到最新的功能,同时也保证了软件的安全性。所以,如何快速查看你的 Postman 版本信息呢? 如何查看 Postman 的版本信息教程

Object结构

Object结构 参考博客

数据分析概述

数据分析:用适当的分析方法和挖掘方法对收集来的数据进行研究总结,提取有用的信息,形成结论并支持决策的过程。 一.数据分析的分类 1.业务描述性分析。以数据为分析对象,以探索数据内的有用信息为主要途径,以解决业务…

ubuntu下终端打不开的排查思路和解决方法

问题现象描述:ubuntu开机后系统桌面显示正常,其他图形化的app也都能打开无异常,唯独只有terminal终端打不开,无论是鼠标点击终端软件,还是ctrlaltt,还是altF2后输入gnome-terminal后按回车,这三…

第一天 Linux驱动程序简介

目录 一、驱动的作用 二、裸机驱动 VS linux驱动 1、裸机驱动 2、linux驱动 三、linux驱动位于哪里? 四、应用编程 VS 内核编程 1、共同点 2、不同点 五、linux驱动分类 1、字符设备 2、块设备 3、网络设备 六、Linux驱动学习难点与误区 1、学习难点 …

探索抓包利器ProxyPin,实现手机APP请求抓包,支持https请求

以下是ProxyPin的简单介绍: - ProxyPin是一个开源免费HTTP(S)流量捕获神器,支持 Windows、Mac、Android、IOS、Linux 全平台系统- 可以使用它来拦截、检查并重写HTTP(S)流量,支持捕获各种应用的网络请求。ProxyPin基于Flutter开发&#xff0…

Windows中安装git工具

下载好git安装包 点击next 选择安装目录 根据需要去勾选 点击next 点击next PATH环境选择第二个【Git...software】即可,再点击【Next】。 第一种配置是“仅从Git Bash使用Git”。这是最安全的选择,因为您的PATH根本不会被修改。您只能使用 Git Bash 的…

Banner区域

div下 justify-content:space-between 左侧测导航left 在这里插入图片描述 在这里插入图片描述

STM32 IIC通信

目录 IIC简介硬件电路连接I2C时序基本单元IIC完整数据帧MPU6050封装硬件IIC内部电路 IIC简介 IIC(Inter-Integrated Circuit)是 IIC Bus 简称,中文叫集成电路总线。它是一种串行通信总线,使用多主从架构,由飞利浦公司…

蓝桥杯嵌入式学习笔记

用博客来记录一下参加蓝桥杯嵌入式第十六届省赛的学习经历 工具环境准备cubemx配置外部高速时钟使能设置串口时钟配置项目配置 keil配置烧录方式注意代码规范头文件配置 模块ledcubemx配置keil代码实现点亮一只灯实现具体操作的灯,以及点亮还是熄灭 按键cubemx配置k…

体育比分网站开发避坑指南:如何选择靠谱的数据服务商?(10年行业经验总结,避免踩坑!)

作为一家专业的体育比分数据服务商,我们接触过大量客户,发现很多人在开发体育比分网站或接入数据API时,由于选择不靠谱的服务商,导致项目延期、数据延迟、售后无响应、隐性收费等问题,最终影响运营效果,甚至…

VLAN综合实验二

一.实验拓扑: 二.实验需求: 1.内网Ip地址使用172.16.0.0/分配 2.sw1和SW2之间互为备份 3.VRRP/STP/VLAN/Eth-trunk均使用 4.所有Pc均通过DHCP获取IP地址 5.ISP只能配置IP地址 6.所有…

ABAP FPM

1.效果 2.查询条件的feed class SE11创建feed class数据的结构 ZCL_FPM_FIFO_SEARCH GET_DEFINITION方法代码 METHOD if_fpm_guibb_search~get_definition.eo_field_catalog_attr ? cl_abap_structdescr>describe_by_name( ZSS_FIFO_DATA ).ENDMETHOD. PROCESS_EVENT代码…

某大麦手机端-抢票

引言 仅供学习研究,欢迎交流 抢票难,难于上青天!无论是演唱会、话剧还是体育赛事,大麦网的票总是秒光。作为一名技术爱好者,你是否想过用技术手段提高抢票成功率?本文将为你揭秘大麦手机端抢票的核心技术…

【免费】2007-2019年各省地方财政文化体育与传媒支出数据

2007-2019年各省地方财政文化体育与传媒支出数据 1、时间:2007-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政文化体育与传媒支出 4、范围:31省 5、指标说明:地方财政在文化、…