训练资料不足不用愁Google开源先进自然语言处理预训练技术BERT

人工智能2021-02-26 20:03:48
最佳答案

Google对外开源了用于自然语言预训练的新技术BERT(Bidirectional Encoder Representations from Transformers),让使用者可以在云端TPU或是GPU上,快速地训练问答系统以及其他类型的模型。这个BERT版本建构在TensorFlow之上,专案除了有原始码之外,也包含了许多预先训练的语言表示模型。

自然语言处理面临的挑战之一便是缺乏训练资料,Google提到,由于自然语言训练是一个综合许多不同任务的多样化领域,而大多数任务特定资料集就仅包含数千或是数十万标籤训练範例,但是基于现代深度学习技术的自然语言,资料集的规模需要达数百万或是数十亿的标籤训练资料範例,才能获得真正良好的结果。

但事实上,要取得这么大量的训练资料并不容易,因此才发展出了预训练技术,来缩小需求与实际资料量的空缺差距。预训练使用网路上大量未标记的文字来训练通用语言表示模型,而预训练的模型可以接着使用情感分析或是问答等小型特定资料集,进行预训练模型微调,这样的方法比一开始就使用这些特定领域的资料集进行训练,可以明显提升模型準确度。

预训练分为上下文(Contextual)或无上下文,其中上下文又可进一步分为单向或双向的。像是word2vec或GloVe等无上下文模型,为每个字彙产生单词嵌入表示,Google举例,「银行」这个词对「帐户」和「河岸」,具有相同的无上下文表示,而上下文模型所产生的单词表示将会基于句子中的其他词,以「我存取银行帐户」句子来说,单向的上下文模型,以基于「我存取过」而非「帐户」来表示「银行」。

BERT採用预训练上下文表示方法,其中也包括使用了半监督式序列学习、生成式预训练、ELMo和ULMFit技术,不像过去其他模型,BERT是第一个深度双向、无监督的语言表示,仅使用纯文字资料资料库进行预训练。以上面提到的例子来说,BERT双向上下文模型,则会以句子中单词前后的文字,包括「我存取过」和「帐户」来表示「银行」。Google从深度神经网路的最底层开始,使其具有双向特性。

双向上下文模型非常强大,但之前之所以没有系统使用双向模型,是因为其训练并不简单,单向模型只要预测单次在句子中的前一个单词,就能进行有效的训练,但光只是每个单词的前一个或是下一个单词这样的简易条件,是无法训练出双向模型的,因为这将让该单词在多层模型中,间接的把自己列入参考。Google採用直觉的方法,以遮罩盖住一些输入的词,并对每个词双向地预测遮盖的词。虽然这个方法已经存在很久了,但是BERT是第一个成功将其实作于训练深度神经网路的技术。

Google为了测试BERT的效能,与其他先进的自然语言处理系统相比。BERT几乎不需要针对特定任务进行神经网路基础架构调整,就能实现所有的结果。在史丹佛问答资料集SQuAD v1.1,BERT获得新高分,精準度达93.2%,超过之前最高分的91.6%和人类分数91.2%。

而Google开源的BERT的预训练新技术,使用者可以在云端TPU以约30分钟,或是使用单个GPU花费数小时,就能训练出先进的问答系统。Google提到,由于云端TPU的技术,让他们可以更快速的进行实验以及调整模型,而这对于超越现有的预训练技术至关重要。

Google这次开源的专案,包含了建构在TensorFlow上的程式码以及其他的语言表示模型,除了让自然语言处理研究人员不需要重头开始撰写程式码外,其中包含的模型,可以让使用者以数小时或是更短的时间内,对各种自然语言任务进行微调。不过,目前发布的BERT模型仅限英语,在将来还会发布多种语言预训练模型。

免责声明:本文由用户上传,如有侵权请联系删除!