目录
18. WordPiece Model与Byte Pair Encoding
19. Transformer训练中的学习率与Dropout
20. BERT与Transformer attention屏蔽技巧
你最擅长说狠话,然后转身就流泪
—— 25.4.5
1. 为何使用多头注意力机制?
多头注意力机制使得模型能够并行处理信息的不同方面,每个头可以专注于输入序列的不同位置或特征,从而捕捉更丰富、更细腻的上下文依赖。单头注意力虽然也能捕捉序列间的关系,但其关注范围相对有限。多头机制提高了模型的表达能力,相当于模型可以“多视角”地审视输入数据,每个多头可以学习到不同类型的注意力模式,共同提升整体性能。
2. Q和K使用不同权重矩阵的原因
Q(查询)和K(键)使用不同的权重矩阵是因为这样能够增加模型的非线性表达能力,允许模型从不同角度(或维度)分别编码查询和键的信息。如果Q和K共享相同的权重矩阵,则它们会生成相同或高度相关的向量空间表示,限制了模型识别不同模式的能力。不同矩阵生成的Q和K进行点乘,可以更灵活地衡量不同部分输入之间的相关性。
3. 选择点乘而非加法的原因
点乘在计算复杂度上与加法相似,但在效果上,点乘能够更好地捕捉向量间的相似度,因为它考虑了元素级别的乘积,这在数学上等价于内积,可以衡量两个向量的“方向”一致性。而加法则更多反映的是两个向量的总“大小”。在注意力机制中,我们关心的是向量间关系的密切程度,因此点乘更适合。
4. Attention进行scaled的原因
除以 dk 是为了避免点积的结果因向量长度的增加而过分放大,导致softmax函数在计算概率分布时出现梯度消失或饱和问题。这有助于模型训练更加稳定,尤其是在维度较大的情况下。公式上, Attention(Q,K,V)=softmax(QKTdk)V ,其中, dk 是分母的缩放因子。
5. 对padding做mask操作
在计算attention score时,可以为padding位置的值设置为非常小的负数(如-1e9),这样经过softmax后,这些位置的权重接近0,即在计算上下文表示时忽略padding位置的影响。
6. 多头注意力降维原因
每个头进行降维是为了在不增加过多计算成本的前提下,允许模型探索更多的注意力子空间。多个低维头相比于单个高维头,可以在同样计算资源下学习更丰富的特征组合。
7. Transformer Encoder模块简介
Encoder由多个相同的层堆叠而成,每一层包括Self-Attention子层和一个前馈神经网络(FFN)子层,两侧均有残差连接和Layer Normalization。Self-Attention帮助捕获输入序列的长距离依赖,FFN引入非线性,增强模型表达能力。
8. 乘以embedding size的开方的意义
在输入词嵌入后乘以 dmodel 主要是为了初始化时调整词向量的尺度,使其初始分布更为合理,避免训练初期的爆炸或消失梯度问题,提高模型训练的稳定性。
9. 位置编码
位置编码是为了让Transformer能够理解序列中元素的位置信息,因为Transformer架构本身不包含循环或卷积结构,无法直接捕获位置信息。位置编码通过在词嵌入上添加特定模式的向量来实现,这些模式通常是正弦和余弦函数的组合,能区分不同位置的输入。
10. 其他位置编码技术
绝对位置编码:如上述,直接添加到词嵌入中。
相对位置编码:仅编码词对之间的相对距离,更灵活,常用于Transformer-XL等模型中。
** Rotary Positional Embedding**:提出于RoPE,旋转式位置编码,利用复数旋转矩阵动态调整词嵌入,保持位置信息的相对性,适合长序列任务。
11. Transformer中的残差结构及其意义
残差连接允许信息直接跳过复杂的子层(如Self-Attention和FFN),直接传递到下一层,减轻了梯度消失问题,加速了模型收敛,并且增加了模型深度,提高表达能力。
12. LayerNorm与BatchNorm
LayerNorm在Transformer中用于每个样本的每个特征维度上标准化,保证了不同层间输入的分布一致,适用于Transformer这种没有固定批量大小(尤其是解码器自注意力时)和顺序无关的场景。
LayerNorm一般置于每个子层的输入或输出端,有助于训练稳定性和速度。
BatchNorm基于整个batch的数据进行标准化,不适合Transformer这类序列到序列模型,因其依赖于固定长度的批次。
13. BatchNorm介绍
BatchNorm在训练时对每个mini-batch的数据进行标准化,减少内部协变量偏移,加速收敛,提高模型泛化能力。缺点包括增加了训练时间,对小批量数据效果不佳,且不适用于RNN等序列模型。
14. Transformer的前馈神经网络
Transformer的FFN通常包含两个线性变换层,中间夹着ReLU或GELU激活函数。这种结构引入非线性,增强了模型的表达能力。GELU相比ReLU,具有更好的非线性表达和光滑性,有助于模型学习更复杂的特征。
15. Encoder与Decoder的交互
Encoder和Decoder通过编码器-解码器注意力(Encoder-Decoder Attention)机制交互。在Decoder阶段,每个位置的单词不仅关注自身序列内的其他单词(自注意力),还关注Encoder的输出,从而在生成目标序列时考虑源序列的全局信息。
16. Decoder自注意力与Encoder的区别
Decoder的多头自注意力机制在训练时需要加入“未来遮挡”(sequence mask),确保在生成当前位置的输出时,模型只能看到过去的位置信息,不能看到未来的信息,符合自然语言的生成逻辑,避免信息泄露。
17. Transformer的并行化
Transformer模型设计上天然支持并行计算,特别是在自注意力和前馈网络层。由于其计算可以被拆分为独立的向量运算,非常适合GPU等并行计算硬件。Decoder端虽然在自注意力层受到序列依赖的限制,但除自注意力外的其它部分仍可并行化。
18. WordPiece Model与Byte Pair Encoding
WordPiece: 是一种文本分词方法,将文本切分成一系列有意义的子词单元。广泛应用于BERT等模型,有利于处理罕见词汇。
Byte Pair Encoding (BPE): 通过统计文本中最频繁出现的字符对来构建词汇表。随着迭代,新的符号是由最频繁出现的字符对组成。适用于多种语言,包括稀有语种。
19. Transformer训练中的学习率与Dropout
学习率:通常采用预热(warmup)策略,初期缓慢增加,之后按预定策略衰减,如线性衰减或余弦退火,以平衡初期的快速学习和后期的精细调整。
Dropout:在训练期间随机“丢弃”一部分神经元,防止模型过度拟合。通常设置在0.1至0.5之间,应用在全连接层和自注意力输出。测试时不需要使用Dropout,以得到确定性的输出。
20. BERT与Transformer attention屏蔽技巧
BERT在训练过程中使用了Masked Language Model任务,但它并未直接在注意力机制上进行屏蔽操作。这是因为BERT主要关注于如何从掩码输入中预测缺失的token,而Transformer的自注意力机制中加入的mask是用来确保解码器生成时只依赖于过去的上下文,这是两种不同的应用场景和目的。