各种预训练模型的适用范围

BERT及其优化模型在绝大部分NLP任务中表现都很优秀, 使用业务标注数据进行fine-tune后, 在业务上容易获得较好的表现.

回顾BERT的预训练过程, 使用的输入形式为:

[CLS] S1 [SEP] S2 [SEP]

预训练使用的任务为:

  • NSP等简单的二分类任务: 使用[CLS]token的表征, 经过投影变换(Projection)再接输出层进行分类. 这使得[CLS]token包含了S1, S2两句话的信息

  • Masked LM: 对被Masked的token进行预测, 使得每个token的表征向量融合了很多上下文信息

因此, 只要下游任务的输入训练目标能够与预训练的形式类似, 理论上都可以取得较好的效果.

但有一些工业界常见的任务, 使用原始的BERT及其类似的优化方案, 产生的结果不能满足需求, 下面从根本上分析这些任务无法适应原始BERT的原因, 以及列举一些可以解决的方案.

生成任务

问题根本原因

原生BERT本身, 只用了Transformer结构的Encoder部分. 而观察它的预训练输入和任务, 可以发现BERT的本质是一个双向语言模型, 因为对于某一个token进行表征, 它可以看到前后所有的token的. 在生成时, 使用到的token信息都是这个token之前的, 符合单向自回归语言模型. 因此生成任务与BERT之间在模型特性上存在着巨大的GAP. 这种双向性使得BERT难以应用于生成任务.

BERT的预训练过程也是充分利用双向信息训练MLM任务, 与生成的任务目标差别很大.

直接使用BERT做生成很难取得好的效果. 原生的BERT只适合做只需要Encoder部分编码表征的任务, 如文本分类, 序列标注等.

改进BERT

相似匹配

任务形式

最后更新于