BERT 模型中的双向性

数据挖掘 机器学习 深度学习 机器学习模型 变压器
2022-02-13 12:34:20

我正在阅读论文BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding,可以在这里找到。

在我看来,论文的关键是使用屏蔽输入来实现双向。

这是 Google AI 博客的摘录,其中指出:

“然而,不可能通过简单地将每个词的前一个词和下一个词作为条件来训练双向模型,因为这将允许被预测的词在多层模型中间接“看到自己”。为了解决这个问题,我们使用直接的技术来屏蔽输入中的一些单词,然后双向调节每个单词以预测被屏蔽的单词。”

有人可以帮我理解双向如何让单词看到自己以及掩蔽如何解决这个问题吗?

谢谢。

1个回答

举个例子:“我去了商店”。

假设您要预测“to”和“the”。通过双向性,您将预测:

p(to | I, went, the, shop): 这里没问题。

p(the | I, went, to, shop): 这里有一个问题,因为我们在预测“to”时已经看到了“the”这个词。模型预测“the”是微不足道的。


对于传销,如果我们举同样的例子:

p(to | I, went, [MASK], [MASK], shop)
p(the | I, went, [MASK], [MASK], shop)

没有更多的问题,因为这个词在其他预测中看不到自己。它更难预测,但无论如何只有 15% 的时间这个词被掩盖了。


编辑

在 MLM 中,BERT 会看到句子的所有单词,包括要预测自身的单词。这是因为 BERT 不仅会为 [MASK] 标记创建表示,还会为句子的其他标记创建表示(但在这种情况下,我们只对 [MASK] 感兴趣)。

注意:这也是因为 BERT 会创建所有令牌的表示,我们需要将 [MASK] 有时替换为原始令牌,有时替换为随机令牌。

您可以在此博客的“预训练”部分找到更多详细信息。