BERT 可以用于句子生成任务吗?
人工智能
神经网络
深度学习
自然语言处理
伯特
文本生成
2021-11-12 19:56:12
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 生成句子。