Transformer 是如何双向的 - 机器学习

数据挖掘 机器学习 变压器 伯特
2022-03-11 00:54:50

在数据科学论坛上提问,因为这个论坛似乎非常适合与数据科学相关的问题:https ://stackoverflow.com/questions/55158554/how-transformer-is-bidirectional-machine-learning/55158766?noredirect=1#comment97066160_55158766

我来自 Google BERT 上下文(来自 Transformers 的双向编码器表示)。我经历了架构和代码。人们说这本质上是双向的为了使其单向注意,需要应用一些掩码。

基本上,转换器将键、值和查询作为输入;使用编码器解码器架构;并注意这些键​​、查询和值。我的理解是我们需要明确地传递令牌,而不是让转换器自然地理解这一点。

有人可以解释一下是什么让变压器本质上是双向的

到目前为止收到的答案:
1.人们确认Transformer具有双向性质,而不是外部代码使其双向。
2. 我的疑问:我们正在将 QKV 嵌入传递给转换器,它使用 ScaledDotMatrix 注意力对其应用 N 层自我注意力。同样的事情也可以通过单向方法来完成。我可以知道我的理解中缺少什么部分。如果有人可以指出它是双向的代码,那将是一个很大的帮助。

1个回答

Transformer 模型的编码器部分本质上是双向的,而不是整个模型。

完整的 Transformer 模型有两部分:编码器和解码器。这种编码器-解码器模型用于序列到序列的任务,例如机器翻译。

但是,还有其他任务不需要完整模型,而只需要其中一个部分。例如,对于因果语言建模(例如 GPT-2),我们需要解码器。对于掩码语言建模(例如 BERT),我们需要编码器。

解码器的设计使得每个预测的令牌只能依赖于之前的令牌。这是通过 self-attention masking 实现的,这就是使解码器单向的原因。

编码器没有self-attention masking。因此被设计为没有任何依赖限制:在一个位置获得的令牌表示取决于输入中的所有令牌。这就是使 Transformer 编码器具有双向性的原因。