BERT 可以用于句子生成任务吗?

人工智能 神经网络 深度学习 自然语言处理 伯特 文本生成
2021-11-12 19:56:12

我是 NLP 的新手。我对句子生成任务感兴趣。就我而言,一种最先进的方法是CharRNN,它使用 RNN 生成单词序列。

但是,BERT几周前就问世了,而且非常强大。因此,我想知道这个任务是否也可以在 BERT 的帮助下完成?我是这个领域的新手,感谢您的任何建议!

3个回答

对于新手来说,NO。

句子生成需要从语言模型中采样,该模型给出了给定先前上下文的下一个单词的概率分布。但由于 BERT 的双向特性,它无法做到这一点。


对于高级研究人员,是的。

您可以从所有 [MASK] 标记的句子开始,并以任意顺序(而不是常见的从左到右链分解)一个一个生成单词。虽然文本生成质量很难控制。

这是技术报告BERT has a Mouth, And It Must Speak: BERT as a Markov Random Field Language Model,它的勘误表源代码


总之:

  • 如果你想在 BERT 解码领域做一些研究,还有很大的探索空间
  • 如果您想生成高质量的文本,我个人建议您检查GPT-2

Stephen Mayhew 的这个实验表明 BERT 在顺序文本生成方面很糟糕:

http://mayhewsw.github.io/2019/01/16/can-bert-generate-text/

although he had already eaten a large meal, he was still very hungry

和以前一样,我掩饰“饥饿”,看看 BERT 会预测什么。如果它可以在没有任何正确上下文的情况下正确预测它,那么我们可能处于良好的生成状态。

这失败了。BERT 预测“much”是硬道理。也许这是因为 BERT 认为没有句号意味着句子应该继续。也许它只是习惯于完成句子而感到困惑。我不确定。

有人可能会争辩说,我们应该在“很多”之后继续预测。也许它会产生一些有意义的东西。对此我想说:首先,这本来是一个死的赠品,任何人都会预测“饿了”。其次,我试过了,它一直在预测愚蠢的东西。在“much”之后,下一个标记是“,”。

所以,至少使用这些琐碎的方法,BERT 是无法生成文本的。

不会。句子生成与语言建模直接相关(给定句子中的前一个词,下一个词是什么)。由于 BERT 的双向性,BERT 不能用作语言模型。如果它不能用作语言模型,我看不出如何使用 BERT 生成句子。