最近,BERT这篇文章刷爆了朋友圈,我也去拜读了一下。这是Google AI Language这个月放在arXiv上的文章,主要是通过pre-train和fine-tuning的方式,解决多个NLP任务。 文章网址为:https://arxiv.org/pdf/1810.04805.pdf。
文章具体的做法如下:对于NLP任务比如阅读理解,命名实体识别等,我们通常是设计一个模型,然后利用这个任务特有的数据对模型进行训练,从而得到比较好的实验结果。而BERT则是利用任务无关的数据,在Masked LM和Next Sentence Prediction两个任务上进行pre-train,然后再利用一个类似FFN层的子网络针对不同的具体任务进行fine-tuning,并且可以得到非常好的效果。
BERT也是使用google先前提出的Transformer作为预训练模型,在Masked LM的预训练中,他们随机选择语料中15%的token进行Masked处理,并利用Transformer进行训练去预测被Masked掉的单词。 因为在pre-train和fine-tuning过程中有mismatch(被masked掉的单词在fine-tuning中 is never seen),所以他们对于mask词,在训练的时候,有10%的情况是没有进行mask的,有10%的情况是随机替换成另一个词,有80%的情况是mask掉的。 对于Next Sentence Prediction任务,BERT也执行了差不多的操作。 同时BERT对于embedding 的输入也有了变化,他们引入了可训练的位置向量,具体的细节可以参见论文。
在我看来,BERT的pre-training方法其实和meta-learning的观点非常契合,都是首先训练一个无偏的预训练模型然后再通过的fine-tune即可在很多任务上获得成功。同时,BERT仅仅通过两个任务的预训练就可以在11个NLP任务上取得效果,这证明了一件事情,神经网络(Transformer)其实是可以学习到和任务无关的,但是对于自然语言来说更深层次的语义关系和语言表示的。那么BERT这种训练方式可不可以在NMT上也获得成功呢? 训练一个通用的语言无关的翻译模型,然后通过fine-tune的方式可以在各个语言对上都获得很好的翻译效果。
网友评论