北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT!

2019 年 10 月 2 日 AI科技评论


本文由AI研习社用户张正投稿,来稿见文末联系方式



作者 | 张正
单位 | 清华大学
编辑 | Camel

现存的预训练模型中没有一种可以完美的适用于所有任务,这也给预训练模型的选择带来困难。对于这个问题,论文提供了一种切实可行的解决方案,即UER(Universal Encoder Representations)。

论文标题:UER: An Open-Source Toolkit for Pre-training Models;

论文地址: https://arxiv.org/abs/1909.05658

自然语言处理(NaturalLanguage Processing, NLP)主要研究如何让计算机读懂人类的自然语言,该技术是人工智能非常重要的研究领域之一,也是人工智能最难解决的问题之一。幸运的是,得益于迁移学习技术的发展,自然语言处理在近些年也取得了快速的发展,并广泛应用于机器翻译、信息检索等领域。

何为迁移学习?在自然语言处理的背景下,迁移学习本质上是在一个源领域(Source Domain)数据集上预训练模型,然后对该模型进行调整,以在目标领域(Target Domain)数据集上执行自然语言处理功能。在这个过程中,用于训练模型的源领域与用于任务执行的目标领域往往存在不一致性,因此预训练的模型往往无法直接完成目标领域的自然语言处理任务,那为什么还要进行模型预训练呢?

首先,源领域与目标领域之间的差异性与一致性是并存的,经过大数据训练的模型参数往往在小数据集上也是通用可行的。
其次,在源领域预训练好的模型只需要经过微调,就可以应用于目标领域上,而无需重新训练,因此可以节省训练时间与计算量。
预训练模型有很多种,比如谷歌 BERT 模型、GPT 模型、ELMo 模型等,由于下游任务的多样性及运算能力的限制,现存的预训练模型中没有一种可以完美的适用于所有任务,这也给预训练模型的选择带来困难。对于这个问题,论文提供了一种切实可行的解决方案,即 UER(Universal Encoder Representations)。
通过构建一个整合的预训练工具箱,UER 包含了多个低耦合的模块,各模块中包含现有的主流模型,用户可以很方便的调用这些模型,也可以根据任务需求个性化设计自己的预训练模型。此外,UER 提供了基于不同语料库而训练的模型群,这些模型可帮助用户在下游数据集上取得良好的语言处理结果。

1. 研究背景

NLP 模型包含很多超参数,这些参数的确定过程通常比较复杂,而不同的参数值会对模型的性能产生很大的影响。一般文章很难记录超参数的选取细节及代码,这也为什么我们在重复 别人的工作时很难取得与原文作者相似的结果。 为此,很多系统提供了解决方案。
1)OpenNMT

OpenNMT(Open-source Neural Machine Translation)是一个开源的神经网络翻译机器,于 2016 年由哈佛 NLP 研究组与 SYSTRAN 公司联合开发。该系统具有高效、模块化、易扩展等优点,已经取得了较高的翻译精度。
2)fairseq

Fairseq 模型由 Facebook AI 实验室在 2017 年提出,主要用于机器翻译,其采用了以 CNN 为主的模型结构,具有翻译速度快、精度高的优势。 Fairseq 提供了英语到法语、英语到德语和英语到罗马尼亚语翻译的预训练模型。
3)NCRF++

NCRF++是一个基于 PyTorch 的开源神经序列标注工具包,可用于多种神经序列标注工具包的快速实现。
4)ngram2vec

N-Gram(有时也称为 N 元模型)是自然语言处理中一个非常重要的概念,通常在 NLP 中,人们基于一定的语料库,可以利用 N-Gram 来预计或者评估一个句子是否合理。另外一方面,N-Gram 的另外一个作用是用来评估两个字符串之间的差异程度。这是模糊匹配中常用的一种手段。
以上模型为目前最主流的 NLP 模型预训练工具,这些工具对 NLP 技术的发展具有深远影响。然而这些方法也存在自身的缺陷,比如它们往往只用于解决某个领域的具体问题,很难具有通用性。因此,提出一种可以融合各种模型并对其进行完善的工具箱具有较大的使用价值,本文提出的 UER 正是用于解决该问题。


2. UER 主要结构


如图所示:



UER 主要由四个部分组成:副编码器(subencoder)、主编码器(encoder)、target 和微调(fine-tuning)。
每个部分又包含大量可执行模型,用户可以根据自己的需求调用相应模型,也可以根据需求自己设计相应模型。
此外,为了能够取得更好的预训练效果,在 UER 中还可以将不同模型进行组合使用。
1)副编码器
该部分主要用于学习 word 的底层特征。对于英文单词来说,底层特征主要指组成单词的各字母;对于中文来说,底层特征可以用字符的偏旁部首或者拼音来表示。
通过学习,模型可以获知 word 的内部结构。UER 采用 CNN 和 RNN 做为副编码器,并且使用平均池化或最大池化的策略来获得固定长度的词向量(word vector)。
2)主编码器
该部分主要用于学习词向量的主要特征。UER 可以直接执行基础的编码器,如 LSTM、GRU、CNN、GatedCNN、AttentionNN 等。也可以根据需求,实现不同编码器的组合,构建任意的网络结构。
近年来,Transformer 技术在文本特征提取任务上表现出优越的性能。因此 UER 的主编码器部分也整合了 Transformer 模块,为 BERT 等模型的执行提供便利。
3)Target
选用恰当的 target 是预训练成功的关键,虽然现有的 target 有很多种,但是它们都有各自的优缺点。UER 中包含有很多的 target,用户可以使用一种或多种 target,并赋予它们不同的权值。根据原理的不同,这些 target 可以分为有监督和无监督类型。
无监督 target 有很多种,例如 Language model(LM)、Masked LM(MLM)和 Autoencoder(AE)等 target 属于字符层面的 target,主要用于单词词义的预测;Next sentence prediction(NSP)模型主要用于判断两个句子之间是否具有连续性。
有监督 target 主要包括 Neural machine translation(NMT)和 Classification(CLS)两种。有监督 target 往往可以为模型提供源语料库中无法提供的额外信息。
4)微调
UER 开发了与 ULMFiT、GPT 和 BERT 相似的微调策略,用于下游任务的模型往往具有和预训练模型相似的结构与参数,因此预训练模型只需经过微调即可使用。
很多预训练任务包含两个阶段,即模型预训练与微调。但是,在 UER 中包含有 3 个阶段,分别为:在广义领域语料库上的预训练、在下游数据库上的预训练及在下游数据库的微调。这样做的好处是模型可以提前熟知下游数据库的数据分布,从而在微调环节取得更好的训练效果。

3. 结果验证

为了验证 UER 性能的好坏,作者基于不同的数据集设计了一系列实验。
在论文中,作者以基于 BERT 的英文和中文模型为例,对 UER 的模型再现性(即能够产生目标模型的能力)进行评估,并讨论了在选取不同 target 和编码器时,UER 性能的提升效果。
1)模型再现性
前文已经提到,UER 中已经内嵌了大量的模型,用户可以直接调用这些模型,无需自己编写模型代码。调用的方法也非常简单,用户只需要根据自己的需求,编写几行代码即可完成:

UER 中模型的调用方法演示
图中分别演示了执行不同模型时的模型调用方法,可以看到模型调用代码非常简单,即使对于第一次接触 UER 的用户来说也可以快速上手,这也是 UER 的特色之一。
在完成模型的调用之后,需要验证在 UER 中调用的模型与实际模型是否存在偏差,即验证 UER 中模型的准确性。论文中以 BERT 模型为例,分别对英文和中文的自然语言处理结果进行验证。
在英文验证部分,论文使用 GLUE 基准,并将 UER 取得的测试结果与 HuggingFace 的测试结果进行对比(表 1):

表1 在GLUE基准上HuggingFace的测试结果与UER的测试结果对比

在中文验证部分,论文使用百度 ERNIE 基准,并将 UER 取得的测试结果与 ERNIE 提供的测试结果进行对比(表 2):

表2 在ERNIE基准上ERNIE的测试结果与UER的测试结果对比

通过对比结果可以看出,UER 取得的测试结果与 HuggingFace 和 ERNIE 的测试结果相近,因此可以认为使用 UER 并不会影响模型训练效果。
2)target 和编码器对测试结果的影响
在选择不同的 target 和编码器时,模型的测试结果也是不同的。论文中,作者分别选择了不同的 target 和编码器,并记录采用 UER 的预训练模型在数据集上的测试结果。这里采用了豆瓣书评、亚马逊商品用户评价和 Chnsenticorp 三个中文情感分析数据集做为下游数据集。
首先,作者在 UER 中采用 BERT-base 的中文模型进行预训练,然后将预训练完成的模型在下游数据集上进行微调。为了进行对比,作者分别采用 MLM 和 CLS 做为 target,并记录测试结果(表3):

表3 采用不同target的预训练模型性能对比

通过比较不难发现,选用不同的 target 会对预训练模型的性能产生较大影响,当采用 CLS 作为 target 时模型可以取得最高的测试结果。
由于 BERT 对计算力要求较高,为了提高运算效率,作者在 UER 中采用 2 层的 LTSM 编码器来代替原始 12 层的 Transformer,并记录在编码器改变时预训练模型的测试结果(表 4):

表4 采用不同编码器的预训练模型性能对比

通过数据对比可以看出,选用 LSTM 编码器的预训练模型可以获得与 BERT 模型相近甚至更好的测试结果。 该试验证明了采用 UER 进行模型预训练时可以灵活选择不同的 target 和编码器,来取得更好的训练效果及更高的训练效率。

4. 总结

论文中提出了一种开源的 NLP 模型预训练工具箱,并详细介绍了其组成部分及使用方法。 借助于 UER,用户可以方便、高效地执行各类预训练模型,并根据需求对模型进行调整,从而取得模型性能及训练速度的提升。


投稿需知


投稿请联系:
邮箱:jiawei@leiphone.com
微信:jiawei1066

   数学与 AI「融通」 ,徐宗本院士进行超强“迁移学习”

   张钹院士:人工智能的魅力就是它永远在路上 | CCAI 2019

   Facebook 自然语言处理新突破:新模型能力赶超人类 & 超难 NLP 新基准

   巴赫涂鸦创作者 Anna Huang 现身上海,倾情讲解「音乐生成」两大算法



点击“阅读原文”加入 ICCV 顶会交流小组


登录查看更多
3

相关内容

Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
BERT进展2019四篇必读论文
专知会员服务
64+阅读 · 2020年1月2日
【ICLR2020】五篇Open代码的GNN论文
专知会员服务
47+阅读 · 2019年10月2日
最新BERT相关论文清单,BERT-related Papers
专知会员服务
52+阅读 · 2019年9月29日
一大批中文(BERT等)预训练模型等你认领!
PaperWeekly
14+阅读 · 2019年6月25日
GLUE排行榜上全面超越BERT的模型近日公布了!
机器之心
9+阅读 · 2019年2月13日
跨语言版BERT:Facebook提出跨语言预训练模型XLM
机器之心
4+阅读 · 2019年2月6日
详解谷歌最强NLP模型BERT(理论+实战)
AI100
11+阅读 · 2019年1月18日
通过预训练提升语言理解
开放知识图谱
4+阅读 · 2018年11月21日
Arxiv
15+阅读 · 2019年9月11日
Arxiv
11+阅读 · 2019年6月19日
How to Fine-Tune BERT for Text Classification?
Arxiv
13+阅读 · 2019年5月14日
Conditional BERT Contextual Augmentation
Arxiv
8+阅读 · 2018年12月17日
Arxiv
5+阅读 · 2018年6月4日
VIP会员
相关VIP内容
相关资讯
一大批中文(BERT等)预训练模型等你认领!
PaperWeekly
14+阅读 · 2019年6月25日
GLUE排行榜上全面超越BERT的模型近日公布了!
机器之心
9+阅读 · 2019年2月13日
跨语言版BERT:Facebook提出跨语言预训练模型XLM
机器之心
4+阅读 · 2019年2月6日
详解谷歌最强NLP模型BERT(理论+实战)
AI100
11+阅读 · 2019年1月18日
通过预训练提升语言理解
开放知识图谱
4+阅读 · 2018年11月21日
相关论文
Arxiv
15+阅读 · 2019年9月11日
Arxiv
11+阅读 · 2019年6月19日
How to Fine-Tune BERT for Text Classification?
Arxiv
13+阅读 · 2019年5月14日
Conditional BERT Contextual Augmentation
Arxiv
8+阅读 · 2018年12月17日
Arxiv
5+阅读 · 2018年6月4日
Top
微信扫码咨询专知VIP会员