由变压器模型的不同部分共享的权重

数据挖掘 机器学习 神经网络 深度学习 nlp 变压器
2022-02-22 23:20:45

在此处输入图像描述

转换器的哪些部分共享权重,例如,所有编码器共享相同的权重还是所有解码器共享相同的权重?

1个回答

更新的答案

Transformer 模型有两部分:编码器和解码器。

编码器和解码器都由一系列注意力层组成。每一层都由多头注意力块、位置前馈层、归一化和残差连接的组合组成。

编码器和解码器的注意力层略有不同:编码器只有自注意力块,而解码器将自注意力与编码器注意力块交替使用。此外,自我注意块被屏蔽以确保因果预测(即令牌 N 的预测仅取决于先前的 N - 1 个令牌,而不取决于未来的令牌)。

在注意力层的块中,没有共享参数。

除此之外,还有其他我们没有提到的可训练元素:源和目标嵌入以及最终 softmax 之前解码器中的线性投影。

源嵌入和目标嵌入可以共享或不共享这是一个设计决定。如果令牌词汇表是共享的,它们通常是共享的,当您使用具有相同脚本的语言(即拉丁字母)时,通常会发生这种情况。如果您的源语言和目标语言是例如英语和中文,它们具有不同的书写系统,那么您的标记词汇表可能不会被共享,那么嵌入也不会被共享。

然后,softmax之前的线性投影可以与输出嵌入矩阵共享这也是一个设计决定。经常分享它们。

最后,源语言和目标语言共享位置嵌入(可以是可训练的或预先计算的)


旧答案(错误地解决了多编码器/解码器转换器)

一般来说,参数在多编码器/多解码器转换器架构中不共享,因为每个编码器/解码器都有自己的参数。这是因为共享参数违背了拥有多个编码器/解码器的目的:如果您有两个共享参数的编码器,它们实际上是同一个编码器。

当然,这不是规则,在某些情况下共享部分或全部编码器/解码器参数可能是有意义的。一个示例可能是这样一种场景,其中以某种语言(或两种非常相似的语言,如方言)的两个句子作为输入被接收。如果其中一个编码器中的数据量不足,则在两个编码器之间共享参数可能是有益的。

背景:多编码器和/或多解码器变压器通常不用于“简单”序列到序列任务,如机器翻译。在某些特殊情况下,这种架构已用于不同目的,例如:

  • 自动后期编辑 (APE)包括拥有一个主要的机器翻译系统,该系统的输出通过一个辅助翻译系统来改进,该系统可以纠正来自主要系统的错误。辅助系统通常接收原始源语句和来自主系统的翻译作为输入,并生成固定翻译作为输出。这种场景的一个选项是使用双编码器单解码器转换器,其中编码器的输出都被馈送到解码器,要么将它们连接起来(示例),要么将它们注入不同的注意力块(示例)。在这种情况下,通常根本没有参数共享。

  • 多模态翻译:在这种情况下,我们接收到不同的数据模态(例如语音和文本),因此我们需要特定于模态的架构,因此通常没有参数共享。

请注意,在这里我了解编码器和/或解码器的多样性发生在训练和推理时。在其他情况下,这种多重性只发生在训练时(如在多任务学习中),但在推理时,每种情况只选择一个编码器和解码器,例如:

  • 多语言翻译:虽然许多多语言 MT 系统对所有支持的语言都有一个模型(通常提供标识源/目标语言的特殊标记),但可能有特定于语言的编码器或解码器。你可以在像thisthis的作品中看到这种架构的例子在这种情况下,每个编码器/解码器都有自己的参数,并且没有共享。