Transformer 由编码器(Encoder)和解码器(Decoder)堆叠而成,每个层包含:
关键特性:完全基于注意力机制,摒弃了循环和卷积结构,实现并行化处理序列数据。
自注意力通过 Query-Key-Value(QKV) 三元组计算元素间依赖关系:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q, K, V) = softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dkQKT)V
将 QKV 投影到 h h h 个不同子空间(即“头”),独立计算注意力后拼接结果:
M u l t i H e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , … , h e a d h ) W O MultiHead(Q, K, V) = Concat(head_1, \dots, head_h) W_O MultiHead(Q,K,V)=Concat(head1,…,headh)WO
每个头的计算为:
h e a d i = A t t e n t i o n ( Q W i Q , K W i K , V W i V ) head_i = Attention(QW_i^Q, KW_i^K, VW_i^V) headi=Attention(QWiQ,KWiK,VWiV)
原始 Transformer 使用正弦函数生成位置编码:
P E ( p o s , 2 i ) = sin ( p o s 1000 0 2 i / d m o d e l ) PE(pos, 2i) = \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right) PE(pos,2i)=sin(100002i/dmodelpos)
P E ( p o s , 2 i + 1 ) = cos ( p o s 1000 0 2 i / d m o d e l ) PE(pos, 2i+1) = \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right) PE(pos,2i+1)=cos(100002i/dmodelpos)
性质:可表示相对位置(因 sin ( p o s + k ) \sin(pos+k) sin(pos+k) 可分解为 sin ( p o s ) \sin(pos) sin(pos) 和 cos ( p o s ) \cos(pos) cos(pos) 的线性组合)。
可学习的位置嵌入:直接训练位置向量,适用于固定长度序列。
核心思想:建模元素间相对距离,常见方法:
Shaw’s Relative PE:在注意力权重中引入相对位置偏置:
e i j = x i W Q ( x j W K + a i j K ) T / d k e_{ij} = x_i W_Q (x_j W_K + a_{ij}^K)^T / \sqrt{d_k} eij=xiWQ(xjWK+aijK)T/dk
其中 a i j K a_{ij}^K aijK 表示位置 i i i 和 j j j 的相对位置嵌入。
Transformer-XL 的 RPE:使用可训练的偏置项 b i − j b_{i-j} bi−j,仅依赖相对距离 i − j i-j i−j。
优势:更灵活地处理长距离依赖,在生成任务中表现优异。
标准自注意力复杂度为 O ( n 2 ) O(n^2) O(n2),无法处理长序列(如 n > 1 0 4 n > 10^4 n>104)。稀疏注意力通过限制注意力范围将复杂度降至 O ( n ) O(n) O(n) 或 O ( n log n ) O(n \log n) O(nlogn)。
局部窗口注意力(Local Window):每个元素仅关注相邻 w w w 个位置,复杂度 O ( n × w ) O(n \times w) O(n×w)。
轴向注意力(Axial Attention):沿序列的某个维度(如行或列)分别计算注意力,用于高维数据(如图像)。
膨胀注意力(Dilated Attention):类似空洞卷积,间隔采样元素扩大感受野。
块稀疏注意力(Block Sparse):将序列分块,仅计算块间或块内注意力。
随机采样注意力(Random Sampling):随机选择部分元素计算注意力,近似全局分布。
将标准 softmax 注意力转化为线性运算:
A t t e n t i o n ( Q , K , V ) = φ ( Q ) φ ( K ) T / d k V Attention(Q, K, V) = \varphi(Q) \varphi(K)^T / \sqrt{d_k} V Attention(Q,K,V)=φ(Q)φ(K)T/dkV
核函数:如多项式核或指数核,利用矩阵乘法的结合律:
( φ ( Q ) φ ( K ) T ) V = φ ( Q ) ( φ ( K ) T V ) (\varphi(Q) \varphi(K)^T)V = \varphi(Q)(\varphi(K)^T V) (φ(Q)φ(K)T)V=φ(Q)(φ(K)TV)
复杂度:从 O ( n 2 d ) O(n^2 d) O(n2d) 降至 O ( n d 2 ) O(n d^2) O(nd2)。
Linformer:将 Key 和 Value 投影到低维空间 k ≪ n k \ll n k≪n:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q ( E K ) T d k ) ( F V ) Attention(Q, K, V) = softmax\left(\frac{Q(EK)^T}{\sqrt{d_k}}\right) (FV) Attention(Q,K,V)=softmax(dkQ(EK)T)(FV)
Transformer 的成功源于其 并行性 和 动态权重分配能力,而稀疏化与线性化技术正推动其迈向更长的上下文窗口。未来方向将结合理论分析、硬件优化和任务特性,持续突破序列建模的极限。