109
社区成员
发帖
与我相关
我的任务
分享2017年,谷歌的一篇题为《Attention Is All You Need》的论文,如同投下了一颗“技术核弹”。七年过去了,从BERT、GPT到今天的GPT-4、Llama、Sora,Transformer架构不仅一统NLP江湖,更成为AI大模型时代的基石。今天,让我们重读这篇经典,探寻其历久弥新的核心奥秘。
在Transformer之前,循环神经网络(RNN)及其变体LSTM是处理序列数据(如文本)的主流。但它们有一个根本性缺陷:长程依赖问题。
问题本质:RNN像一条传送带,信息一步步向前传递。当序列很长时,最初的单词信息在传递到末尾时,早已被“稀释”或遗忘。这导致模型难以把握文章整体的结构和远距离的指代关系。
早期解药:在RNN中引入注意力机制(Bahdanau Attention, 2014),让解码器在生成每个词时,都能“回望”编码器所有输入词的隐藏状态,并给予不同的关注权重。这已经取得了巨大成功。
然而,一个颠覆性的想法被提出:既然注意力机制如此有效,我们能否抛弃RNN的结构,完全依赖注意力来构建模型?
Transformer的核心创新,就在于 “Scaled Dot-Product Attention”,即自注意力。它让序列中的每个词,都能与序列中的所有词(包括自己)直接交互。
1. 形象化理解:信息检索系统
把每个词想象成一本资料卡片,包含其本身的信息(词向量)。
当处理“句子”这个资料库时,自注意力机制会做三件事:
制作查询(Query, Q):针对当前要处理的词(如“它”),提出一个问题:“我需要什么样的上下文信息?”
制作钥匙(Key, K):为资料库里的每个词(包括“它”)制作一把“钥匙”,概括该词能提供什么信息。
提供值(Value, V):每个词对应的详细信息内容。
然后,用当前词的 Q 去和所有词的 K 计算匹配度(点积),得到一个“注意力分数”。这个分数决定了在理解当前词时,应该从每个词的 V 中提取多少信息。
最后,将这些加权后的 V 信息汇总,就得到了当前词在新的上下文感知下的全新表示。
2. 公式与图解的精髓
公式:Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V
QK^T:计算匹配度。词与词的相关性越高,得分越高。
/ sqrt(d_k):缩放因子。防止维度d_k较大时点积结果过大,导致softmax梯度消失。
softmax:将得分归一化为概率分布,即“注意力权重”。
权重 * V:加权求和,得到融合了全局信息的输出。
通过这一过程,“它”这个词,就能直接关联到前文所指代的“苹果公司”,无论它们之间相隔多远。
Transformer并非只有一个注意力层,其精妙的架构设计是成功的保障:
多头注意力:并行运行多个独立的“自注意力头”,让模型同时关注来自不同表示子空间的信息(例如一个头关注语法,一个头关注指代,一个头关注情感)。
位置编码:自注意力本身没有位置概念。因此需要加入位置编码,为每个词注入其在序列中的顺序信息。
残差连接与层归一化:这是训练深层网络的关键,确保信息流动顺畅,缓解梯度消失。
前馈神经网络:对每个位置的表示进行独立的、非线性的变换,增强模型表达能力。
无与伦比的并行性:不同于RNN的序列依赖,Transformer的自注意力层可以同时对序列中所有位置进行计算,完美适配GPU的大规模并行计算,这是其能够处理海量数据、扩展至万亿参数的关键。
强大的长程建模能力:一步到位的全局交互,彻底解决了长程依赖问题。
卓越的可扩展性:模型性能随着数据量、参数量的增加呈现出明显的缩放定律,为“更大即更好”的大模型路线图提供了坚实的架构基础。
通用的建模范式:它不假设任何特定的数据模态。无论是文本(GPT)、图像(ViT)、音频还是视频,只要将数据转化为序列形式,Transformer就能处理,实现了架构的统一。
当然,它并非完美:
计算复杂度高:自注意力的计算量与序列长度的平方成正比(O(n²)),处理超长文本(如一本书)时开销巨大。
因果性建模的挑战:GPT等解码器模型使用的“掩码自注意力”,确保了生成只能关注过去的信息,但也限制了其理解双向上下文的能力。
未来,研究者们正在探索:
高效的注意力变体(如线性注意力、稀疏注意力)以降低计算成本。
混合架构(如引入状态空间模型SSM)来弥补纯注意力机制的不足。