注意力机制与Transformer

本文是在DataWhale的开展下的BaseLLM课程的学习笔记, 课程项目链接是:

https://github.com/datawhalechina/base-llm

本文主要是关于BaseLLM的第四章节注意力机制与Transformer这部分;

1.对于注意力机制而言,需要提前了解的是Seq2Seq(Sequence-to-Sequence)序列到序列的架构

Seq2Seq在2014年提出的,当时基于RNN和LSTM已经将一对一、多对多(严格对齐)、多对一任务处理的比较出色了,但是对于多对多(非严格对齐)的任务RNN和LSTM难以胜任,从而Seq2Seq应运而生。

Seq2Seq的原理是基于Autoencoder的。对于Autoencoder(自动编码器)存在Encoder-Decoder两部分,编码器将输入数据压缩为高阶特征向量,解码器则将这些高阶特征向量重构为与输入相似的输出,从而实现数据的重构。

Seq2Seq相较于Autoencoder而言,存在不同,因为Autoencoder希望尽量得到的输出结果和输入相似,从而去噪、降维、升维的任务,无法处理变长序列的问题,而Seq2Seq能够做到,Autoencoder是一次就生成,而Seq2Seq是逐次生成。

复制代码
传统Autoencoder: 文件 → 压缩包 → 原文件(必须完全一样)
Seq2Seq:         英文小说 → 语义摘要 → 中文小说(内容等价,形式不同)
                 ↑_________________________|
                        跨语言语义传递

2.为什么Seq2Seq能做到处理变长序列?

虽然Seq2Seq的原理基本和Autoencoder相似,但是Seq2Seq不同在于Encoder将输入序列压缩为一个向量C,而Decoder将得到的上下文向量进行解码最终输出和Encoder得到的输入序列长度不同的输出序列。 这是对于Seq2Seq整体信息流动路径的简短介绍,以下是关于每个阶段的详细介绍:

2.1Encoder信息压缩与抽象

Encoder:

复制代码
# 以LSTM Encoder为例
h_t, c_t = LSTM(x_t, h_{t-1}, c_{t-1})

# 信息流动细节:
x_t (输入token) 
→ Embedding Layer (256维词向量) 
→ LSTM Cell (遗忘门/输入门/输出门) 
→ h_t (隐藏状态,256维) 
→ c_t (细胞状态,256维)

Encoder关键的信息流向特征:

  • **单向信息流:**t时刻状态仅依赖t-1时刻,无法看到未来信息
  • **渐进式压缩:**每步将新token信息与历史状态融合,信息密度逐步提升
  • **梯度瓶颈:**反向传播时,梯度需跨越整个序列,易出现梯度消失/爆炸

2.2Decoder信息解压与生成

Decoder

复制代码
# Decoder每步生成过程
s_t = LSTM(y_{t-1}, s_{t-1}, Context Vector)
y_t = softmax(W * s_t)  # 预测下一个token概率分布

双路输入:上一时刻输出(y_{t-1}) + 解码器状态(s_{t-1}) + 上下文信息

自回归特性:当前预测依赖于自身历史预测,误差会累积

2.3Context Vector

这个Context Vector就是encoder和decoder关联的重点,信息流动的临界点:

  • 维度固定:无论输入序列多长,Context Vector维度恒定(如512维)
  • 信息密度最大化:需将整个输入序列语义压缩到固定维度向量
  • 单点故障风险:若h_T信息不足,整个模型性能崩溃

3.Seq2Seq的训练

Seq2Seq引入了教师机制,在教师强制模式下,解码器在计算第 t 步的输出时,它的输入不再是上一时刻的预测值 ,而是直接使用数据集中真实的标签值 ,构造方式就是我们前面描述的"解码器输入"序列。通过这种方式,解码器的每个时间步都能接收到正确的历史信息,避免了误差累积,能够显著提升收敛稳定性与速度。

相关推荐
火山引擎开发者社区13 小时前
火山引擎发布《企业级 ArkClaw 安全白皮书》
人工智能
阿里云大数据AI技术14 小时前
Hologres AI Function 文本分类实战:从提示词设计到 KV-Cache 调优,全程 SQL 搞定
人工智能·sql
code_pgf15 小时前
AI-Agent记忆机制分析
大数据·人工智能
阿拉斯攀登16 小时前
安全与可控性:输出校验、权限控制
人工智能·chatgpt·agent·memory·claude·知识库·向量数据库
冬奇Lab16 小时前
每日一个开源项目(第152篇):SAG - 用 SQL JOIN 代替 PageRank 做多跳 RAG 检索
人工智能·开源
冬奇Lab16 小时前
Workflow 系列(09):主流框架对比——Prompt-based、LangGraph、Temporal、n8n 如何选
人工智能·工作流引擎
程序员老猫17 小时前
vide coding 个人产品,那就从博客开始吧
人工智能·程序员·全栈
geo搜搜果数据17 小时前
实测5大AI平台品牌排名:复现GEO监测流程
人工智能·langchain·搜搜果