在深度学习领域,Transformer模型无疑是一项重要的突破,其应用广泛且效果显著。然而,最初的Transformer开山论文却在实现过程中遭遇了一系列令人困惑的问题。
Transformer模型的基本架构由编码器和解码器组成,其中的自注意力机制(self-attention)被认为是其核心创新之一。然而,在论文的源代码中,自注意力机制的实现与论文中描述的不一致,导致了一系列的困惑和错误。
我们首先来看一段论文中描述的自注意力机制的伪代码:
for i in range(num_heads):
Q = linear_transform(Q)
K = linear_transform(K)
V = linear_transform(V)
attention_scores = dot_product(Q, K)
attention_scores = attention_scores / sqrt(d_k)
attention_scores = softmax(attention_scores)
output = dot_product(attention_scores, V)
output = linear_transform(output)
然而,令人困惑的是,论文中的图示与上述代码并不一致。图示中显示的是将Q、K和V分别进行线性变换之后,再进行注意力计算的过程,而代码中的实现却是先