Weekly AI 2024-12-17 Transformer
这是第一篇Weekly AI,主要是帮助我更快更好的整理对现有AI体系的理解,也希望能帮到看到这篇文章的你~
本周主要研究了 Transformer 架构。
Transformer 基础架构
Transformer 是一个基于注意力机制的编码器-解码器架构:
编码器的输出是输入的连续向量表示(continuous vector representation)。
解码器获取该连续向量,并逐步生成输出,同时参考前一个输出。
Inputs 部分详解
Inputs Embedding
将输入的每个单词转换成向量
每个 token 被映射到高维向量空间(通常 768 维)
向量通过反向传播不断优化,捕获词的语义信息
Position Embedding
inputs embedding + positional encoding => positional input embeddings
使用三角函数实现位置编码:
除以√dk 为了控制梯度,防止 softmax 进入饱和区
softmax 确保所有注意力权重和为 1
RNN (循环神经网络, Recurrent Neural Network) 是什么?
RNN 模拟人阅读句子时的过程:
记住之前读过的内容
用之前的内容来理解当前的词
更新记忆
RNN 的基本原理
h_t
:当前时刻的隐藏状态(新记忆)h_{t-1}
:上一时刻的隐藏状态(旧记忆)x_t
:当前输入W_h, W_x, W_y
:权重矩阵b_h, b_y
:偏置项tanh
:激活函数
记忆更新与输出生成:
RNN 的工作举例
句子 "我喜欢猫":
第1步: 输入"我"
记忆:记住"我"
输出:这是一个人称代词
第2步: 输入"喜欢"
记忆:与"我"的上下文关联
输出:正面情感
第3步: 输入"猫"
记忆:理解"我喜欢猫"
输出:完成一个喜爱表达
RNN 的主要问题
长期依赖问题:句子越长,前面的信息越容易丢失
序列处理速度问题:必须按顺序处理,无法并行
生活中的比喻
RNN 就像透过小孔读长卷轴:
一次只能看到一个字
靠记忆理解整体含义
读到最后时开头可能已模糊
注意力机制和 RNN 的本质区别
计算并行性:
RNN:必须一个接一个处理
注意力机制:可同时处理所有输入
长距离依赖:
RNN:信息传递链条式,距离越远越模糊
注意力机制:任意词之间直接建立联系,无需多步传递
实际例子:"我昨天在商场买了一个蓝色的书包":
RNN:读到"书包"时,"我"的信息可能已变得模糊。
注意力机制:可以直接关联"书包"与"买"、"蓝色"与"书包",并且并行完成。
多头注意力机制 (Multi-head Attention)
单头注意力:一个人看问题,一种理解
多头注意力:多个人同时看问题,多种视角合并成更全面的理解
类比看电影:
有人关注剧情发展
有人关注人物对话
有人关注场景细节
最后合并,形成整体理解。
自注意力 (Self-Attention)
普通注意力:两个不同序列之间的关系 自注意力:序列内部元素之间的关系
例子:"我昨天买了一个蓝色的书包":
自注意力分析句子内部所有词之间的关联。
在编码器中,自注意力可看整个句子;在解码器中,自注意力只能看已生成的内容。
BERT (Bidirectional Encoder Representations from Transformers)
BERT 的核心创新在于其预训练策略和双向特性。
架构:
使用 Transformer 编码器部分(双向)
BERT-base:12层编码器,768隐藏维度,12头注意力
BERT-large:24层编码器,1024隐藏维度,16头注意力
预训练任务:
Masked Language Model (MLM):随机遮盖15%输入token,模型需预测遮盖词
Next Sentence Prediction (NSP):预测两个句子是否相邻,理解句间关系
输入表示:
Token Embeddings
Segment Embeddings
Position Embeddings 三者相加得到最终输入
GPT (Generative Pre-trained Transformer)
GPT 系列是生成式 AI 的重要进展:
架构特点:
使用 Transformer 解码器部分
单向注意力(只看左侧内容)
逐 token 生成文本
演变历程:
GPT-1:初步证明大规模语言模型预训练有效性
GPT-2:扩展模型规模(1.5B参数),改进文本生成质量
GPT-3:175B参数,few-shot 学习能力,多任务处理
预训练策略:
自回归语言建模(预测下一个token)
使用因果掩码确保单向注意力
BERT vs GPT: Transformer的两个分支
BERT 基础回顾
双向的:同时看到句子前后文
预训练目标:MLM + NSP
BERT 和 GPT 的关系与区别
共同点:
基于 Transformer
预训练-微调范式
大规模语言建模
区别:
架构选择:BERT(编码器,双向) vs GPT(解码器,单向)
预训练任务:BERT(MLM+NSP) vs GPT(自回归建模)
应用场景:
BERT擅长理解任务
GPT擅长文本生成
BERT 独特优势及与 GPT 的比较
在理解任务上 BERT 更高效。在纯理解任务中,BERT 相比 GPT 更轻量和高效,而 GPT 则通过大型模型和多阶段推理来弥补单向性限制。
BERT 在代码语义分析场景的优势
双向上下文,更快理解函数整体语义
对小段代码(如函数体补全)特别有效
ChatGPT vs BERT 的处理流程对比
BERT:一步到位理解,资源消耗小
ChatGPT:多步骤处理(理解-生成-验证),需要更多资源
More About BERT
BERT 在轻量级代码生成中的应用
适用于短块代码生成
模型小、内存低、推理快
示例:
BERT 在 FIM (Fill In the Middle) 场景的优势
双向理解能力,让补全更符合上下文
在需要快速响应和资源受限的环境中表现优异
示例:
BERT 能通过同时查看 prefix 和 suffix 做出更合理的中间补全。
市场现状与解决方案对比
市场主流:GPT类模型(Copilot, CodeWhisperer, InCoder, TabNine)
它们大多基于自回归模型,而非纯 BERT 方案
BERT 主要在理解层面表现出色,生成长序列时不如自回归模型流畅和连贯
What is input/output embedding
Embedding:
是一个将对象(如词、token)映射到向量空间的过程
向量包含深层语义信息,表示输入之间的关系和相似性
Last updated
Was this helpful?