文章目录
-
- [📚 核心结论(塔尖):注意力机制+Transformer架构+GPT语言模型,动态关注、并行计算、理解生成语言](#📚 核心结论(塔尖):注意力机制+Transformer架构+GPT语言模型,动态关注、并行计算、理解生成语言)
- 一、注意力机制:动态关注机制
-
- [1. Query-Key-Value框架:用查询去找相关的键,然后对值进行加权](#1. Query-Key-Value框架:用查询去找相关的键,然后对值进行加权)
- [2. 相似度计算和权重归一化:看查询和键有多相似,转换成权重](#2. 相似度计算和权重归一化:看查询和键有多相似,转换成权重)
- [3. 加权求和:按权重加起来,聚合关注的信息](#3. 加权求和:按权重加起来,聚合关注的信息)
- 二、自注意力机制:序列内部的全局连接
- 三、多头注意力:多视角关注
- 四、Transformer架构:并行且全局的序列模型
- 五、自回归语言模型:从预测到生成
- 六、GPT语言模型:大规模预训练的语言模型
- 七、方法选择:根据问题特点权衡
⏱️ 预计阅读时间 :40-50分钟
🎯 学习目标:学会怎么让模型动态关注输入并理解生成语言,怎么用注意力机制动态关注输入,怎么用Transformer并行计算,怎么用GPT理解和生成语言
📚 核心结论(塔尖):注意力机制+Transformer架构+GPT语言模型,动态关注、并行计算、理解生成语言
想象一下,你想设计一个能够动态关注输入、并行计算并理解生成自然语言的模型。传统模型(如RNN、CNN)使用固定的权重或结构,无法根据输入动态调整关注点;RNN需要顺序处理,无法并行;传统语言模型难以捕获长距离依赖。就像人看一幅画时会关注不同的部分,而不是平均地看所有部分;同时需要能够并行处理,而不是顺序处理;最终要能够理解和生成自然语言。
首先,怎么用注意力机制实现动态关注?通过Query-Key-Value框架,让模型能够根据输入动态调整关注点,而不是使用固定的权重。
其次,怎么用Transformer实现并行计算和全局依赖?通过自注意力、多头注意力和编码器-解码器架构,实现并行计算并捕获全局依赖关系。
最后,怎么用GPT实现语言理解和生成?通过自回归语言模型和大规模预训练,统一语言理解和生成任务。
那么,怎么用注意力机制实现动态关注?怎么用自注意力实现并行计算?怎么用Transformer架构捕获全局依赖?怎么用GPT实现语言理解和生成?这些正是本文要解决的核心。
注意力机制问题
动态关注/并行计算 注意力机制
动态关注
根据输入调整关注点 Transformer
并行全局
并行计算+全局依赖 GPT
语言理解生成
理解和生成语言 表达能力vs效率
能力强vs算得快
一、注意力机制:动态关注机制
注意力机制使模型能够动态地关注输入的不同部分,而不是使用固定的权重。就像用查询去找相关的键,然后根据相似度对值进行加权。
Query
查询
需要关注什么
想找什么 计算相似度
score = Q·K^T
看查询和键有多相似 Key
键
输入的不同部分
输入的内容 Softmax归一化
权重 = softmax(score)
转换成权重 加权求和
Output = Σ(权重·Value)
按权重加起来 Value
值
实际信息
实际的内容 注意力输出
动态关注结果
关注的结果
1. Query-Key-Value框架:用查询去找相关的键,然后对值进行加权
注意力机制通过计算查询(Query)和键(Key)之间的相似度,生成注意力权重,对值(Value)进行加权求和,使模型能够动态地关注输入的不同部分。Query-Key-Value框架查询表示需要关注什么,键表示输入的不同部分,值表示实际信息,就像用查询去找相关的键,然后对值进行加权。
2. 相似度计算和权重归一化:看查询和键有多相似,转换成权重
相似度计算 计算Query和Key之间的相似度,决定关注程度,就像看查询和键有多相似;权重归一化使用softmax将相似度转换为权重,就像转换成权重。
3. 加权求和:按权重加起来,聚合关注的信息
加权求和根据权重对Value进行加权求和,聚合关注的信息,就像按权重加起来。
注意力机制计算过程
动态关注 步骤1: 计算相似度
score_i = Q·K_i^T
看查询和键有多相似 步骤2: 归一化权重
α_i = softmax(score_i)
转换成权重 步骤3: 加权求和
Output = Σ(α_i·V_i)
按权重加起来 动态关注结果
根据输入调整关注点
关注相关的内容
二、自注意力机制:序列内部的全局连接
自注意力机制使模型能够捕获序列内部的依赖关系,不受距离限制,同时实现并行计算。就像一句话中,每个词都关注其他词。
序列: '我 爱 你':一句话 词1: '我'
Q₁, K₁, V₁
第一个词 词2: '爱'
Q₂, K₂, V₂
第二个词 词3: '你'
Q₃, K₃, V₃
第三个词 自注意力计算
每个词关注所有词
每个词都看其他词 输出1
关注'我'、'爱'、'你'
第一个词的输出 输出2
关注'我'、'爱'、'你'
第二个词的输出 输出3
关注'我'、'爱'、'你'
第三个词的输出
自注意力机制中,序列中的每个元素既是Query ,也是Key和Value,计算序列内部元素之间的注意力。序列内部 计算序列内部元素之间的注意力,就像每个词都关注其他词;长距离依赖 不受距离限制,能够捕获长距离依赖,就像能理解很远的关系;并行计算 可以并行计算所有位置的注意力,就像同时计算所有位置;全局信息每个位置都能访问所有位置的信息,就像每个词都能看到所有词。
自注意力特点
序列内部注意力 序列内部
Q=K=V=输入序列
每个词都是查询/键/值 长距离依赖
不受距离限制
能理解很远的关系 并行计算
同时计算所有位置 全局信息
每个词都能看到所有词 捕获序列依赖
理解前后关系 理解很远的关系 提高计算效率 全局理解
理解整个序列
三、多头注意力:多视角关注
多头注意力使模型能够从多个角度关注输入,捕获不同类型的关系(如语法、语义),提高模型的表达能力。就像从多个角度观察同一个序列。
输入序列
输入的内容 头1
关注语法关系
看语法 头2
关注语义关系
看语义 头3
关注位置关系
看位置 头h
关注其他关系
看其他方面 拼接
Concat(head₁,...,headₕ)
把多个头的结果拼接 线性变换
W·Concat
线性变换 多头注意力输出
多视角表示
从多个角度理解
多头注意力使用多个注意力头,每个头关注不同的方面,然后将结果拼接。
- 多个头:使用多个注意力头,每个头关注不同方面,就像从多个角度观察;
- 不同视角:不同头捕获不同类型的关系,就像看语法、语义、位置等;
- 结果拼接:将多个头的结果拼接,形成更丰富的表示,就像把多个角度的结果组合;
- 表达能力:提高模型的表达能力,就像理解得更全面。
四、Transformer架构:并行且全局的序列模型
Transformer同时解决了并行计算和全局依赖的问题,既提高了计算效率,又捕获了长距离依赖。就像能够同时看到整个序列,理解所有位置的关系。
输入序列
+位置编码
输入+位置信息 编码器层1
多头自注意力
+残差连接+层归一化
+前馈网络
理解输入 编码器层N
...
多层理解 编码器输出
特征表示
理解后的特征 解码器层1
掩码多头自注意力
+编码器-解码器注意力
+前馈网络
生成输出 解码器层N
...
多层生成 解码器输出
生成序列
生成的序列 输出序列
最终输出
Transformer架构完全基于注意力机制的序列模型,通过自注意力机制替代RNN的循环结构,实现并行计算;通过多头注意力和编码器-解码器架构捕获全局依赖关系。
- 自注意力序列内部的自注意力,实现全局连接和并行计算,就像每个词都关注所有词;
- 多头注意力多视角关注,捕获不同类型的关系,就像从多个角度理解;
- 编码器-解码器层次化处理,编码器提取特征,解码器生成序列,就像先理解再生成;
- 位置编码编码位置信息,保持序列顺序,就像标记位置;
- 残差连接和层归一化稳定训练,使深层网络能够有效训练,就像让训练更稳定。
Transformer组件
架构的组成部分 自注意力
全局连接
每个词关注所有词 多头注意力
多视角
从多个角度理解 位置编码
保持顺序
标记位置 残差连接
稳定训练
让训练更稳定 层归一化
加速收敛
加快训练 并行计算
捕获依赖
同时算+理解关系 丰富表示
多关系
理解得更全面 位置信息
序列理解
理解顺序 梯度流动
深层训练
能训练深层网络 训练稳定
性能提升
训练更稳定更好
五、自回归语言模型:从预测到生成
自回归语言模型能够学习语言的概率分布,既能够理解语言,又能够生成语言,统一了理解和生成任务。就像根据前面的词猜测下一个词。
输入: '我 爱'
前面的词 语言模型
P(下一个词|前面的词)
预测下一个词的概率 概率分布
P('你'|'我 爱')=0.8
P('他'|'我 爱')=0.1
P('她'|'我 爱')=0.1
每个词的概率 采样生成
选择'你'
选概率最高的 输出: '我 爱 你'
生成的词 继续生成下一个词...
继续生成
自回归语言模型通过预测下一个词的概率分布来学习语言模型,给定前面的词,预测下一个词。
- 条件概率给定前面的词,预测下一个词的概率,就像根据前面的词猜下一个词;
- 自回归逐个生成词,每个词依赖于前面的词,就像一个一个地生成;
- 概率分布学习语言的概率分布,就像学习每个词出现的概率;
- 生成能力 通过采样从概率分布中生成文本,就像从概率分布中选词生成。
自回归生成过程
逐个生成词 步骤1: 给定前缀
'我 爱'
前面的词 步骤2: 预测概率
P(下一个词|'我 爱')
预测下一个词的概率 步骤3: 采样生成
选择概率最高的词
选最可能的词 步骤4: 更新前缀
'我 爱 你'
加上新生成的词 重复步骤2-4
直到生成结束
继续生成直到结束
六、GPT语言模型:大规模预训练的语言模型
大规模预训练能够充分利用无标注数据,学习通用的语言表示,提高模型性能。就像先学习通用语言知识,再学习特定任务。
GPT语言模型基于Transformer架构的自回归语言模型,通过大规模无标注文本数据预训练,学习通用的语言表示,然后在下游任务上微调。
- Transformer架构=》理解语言:使用Transformer作为骨干网络,捕获长距离依赖,就像用Transformer理解语言;
- 大规模预训练=》学习通用知识在大规模无标注文本数据上预训练,学习通用表示,就像先学通用知识;
- 预训练-微调=》学特定知识先预训练,再在下游任务上微调,就像先学通用再学特定;
- 统一模型=》同时用于理解和生成同一个模型用于理解和生成,统一不同任务,就像一个模型做多种任务;
- 上下文学习:通过少量示例或提示,快速适应新任务,就像给几个例子就能学会。
七、方法选择:根据问题特点权衡
注意力机制问题
动态关注/并行计算 动态关注
根据输入调整 并行计算
同时计算 全局依赖
理解全局关系 语言理解生成
理解和生成语言 注意力机制
Query-Key-Value
动态关注 自注意力
并行计算
同时算所有位置 多头注意力
全局连接
从多个角度理解 GPT
大规模预训练
先学通用再学特定
从固定到动态:
- 固定权重(RNN、CNN,就像固定的关注)→ 注意力机制(动态权重,就像根据输入调整关注)→ 自注意力(序列内部动态关注,就像每个词都关注其他词)。
从循环到并行:
- RNN(顺序处理,就像一个一个处理)→ Transformer(并行计算,就像同时处理所有位置)。
从局部到全局:
- CNN(局部连接,就像只看局部)→ RNN(局部记忆,就像只记住最近的)→ Transformer(全局连接,就像看到全局)。
从单一到多头:
- 单头注意力(单一视角,就像从一个角度看)→ 多头注意力(多视角,就像从多个角度看)。
从预测到生成:
- 语言模型(预测下一个词,就像猜下一个词)→ 生成模型(生成完整文本,就像生成完整句子)。
从专用到通用:
- 专用模型(针对特定任务,就像只做一种任务)→ 通用模型(处理多种任务,就像一个模型做多种任务)。