趋近智
Transformer架构中的最终解码器层对序列进行处理,它会整合来自输入序列的信息(通过交叉注意力)和之前生成的输出标记(通过遮蔽自注意力)。这个过程会产生一系列高维表示向量。对于输出序列中的每个位置,解码器堆栈会生成一个维度为 dmodel 的向量。尽管这些向量编码了丰富的上下文信息,但它们不能直接解读为目标词汇表上的概率分布。这种分布对于机器翻译或文本生成等任务是必不可少的。
Transformer解码器架构的最后一步涉及将这些输出向量转换为可用的概率。这通常通过两个连续操作来实现:一个最终线性变换,然后是一个softmax激活函数。
顶部解码器层的输出是一个形状为 (batch_size, target_sequence_length, dmodel) 的张量。最终线性层的作用是将每个位置上的这个 dmodel 维表示向量投影到一个维度与目标词汇表大小相等的向量上,我们将这个大小记作 V。
这是一个标准的、不带激活函数(或有时视为具有恒等激活函数)的全连接线性层。如果我们将最终解码器层的输出表示为 Hdec∈Rbatch_size×target_sequence_length×dmodel,将线性层的权重矩阵表示为 Wout∈Rdmodel×V,将其偏置表示为 bout∈RV,则该操作可以描述为:
Logits=HdecWout+bout在这里,矩阵乘法独立地应用于 target_sequence_length 维度上每个位置的 dmodel 维向量。得到的 Logits 张量形状为 (batch_size, target_sequence_length, V)。序列中特定位置 t 处大小为 V 的每个向量都包含目标词汇表中每个可能标记的原始、未归一化分数(logits)。分数越高,表示该位置上该标记的可能性越大。
实现备注: 一种常见的方法,尤其是在源和目标词汇表共享(或紧密关联)的模型中,是在输入嵌入层和这个最终线性层之间共享权重。输入嵌入层将词汇表索引(实际上是独热向量)投影到 dmodel 维度,而最终线性层将 dmodel 维度投影回词汇表分数。与输入嵌入矩阵(可能转置)共享权重矩阵 Wout 可以大幅减少模型参数的数量,特别是对于大型词汇表,并且已被经验证实效果良好。
线性层生成的 logits 是实值分数,不构成概率分布。为了将这些分数转换为概率,softmax 函数独立地应用于目标序列中每个位置的 logit 向量。
对于序列中的特定位置 t,令 zt∈RV 为 logit 向量。softmax 函数计算词汇表中第 i 个标记的概率 pi(其中 i 的范围从 1 到 V),如下所示:
pi=Softmax(zt)i=∑j=1Vezt,jezt,i此操作为每个位置 t 产生一个概率向量 pt∈RV,其中:
因此,整个Transformer解码器堆栈的输出是一个形状为 (batch_size, target_sequence_length, V) 的张量,其中沿最后一个维度的每个向量都表示目标词汇表上的概率分布。
这个最终线性层和softmax函数连接了Transformer学习到的复杂内部表示与语言生成任务的离散、概率性质。它们提供了所需的机制,将模型的理解转换为词汇表上的明确预测。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造