您当前的位置:千讯科技网资讯正文

小版BERT也能出奇迹最火的预训练语言库探索小巧之路

2019-09-07 18:08:22  阅读:3920 作者:责任编辑NO。蔡彩根0465

选自Medium

作者:Victor Sanh

机器之心编译

参加:魔王

曩昔一段时刻,大模型层出不穷。在咱们纷繁感叹「大力出奇观」的时分,作为调用预练习言语模型最盛行的库,HuggingFace 尝试用更少的参数量、更少的练习资源完结平等的功能,所以常识蒸馏版 BERT——DistilBERT 应运而生!

近来,HuggingFace 发布了 NLP transformer 模型——DistilBERT,该模型与 BERT 的架构相似,不过它仅运用了 6600 万参数(差异于 BERT_base 的 1.1 亿参数),却在 GLUE 基准上完结了后者 95% 的功能。

在曩昔 18 个月中,根据大规划言语模型的搬迁学习明显提升了自然言语处理使命的 SOTA 成果。这些预练习言语模型一般根据 Vaswani 等人提出的 Transformer 架构,这些模型的规划越来越大,练习数据集的规划也越来越大。最近英伟达提出的预练习言语模型具有 83 亿参数:是 BERT-large 参数量的 24 倍、GPT-2 参数量的 5 倍。而 Facebook AI 最近提出的 RoBERTa 模型在 160GB 文本上练习得到。

社区中的一些人质疑练习越来越大 Transformer 的必要性,尤其是考虑到练习的资金本钱和环境本钱时。该图展现了部分近期大模型及其参数量。

Hugging Face 直接体会到这些模型的盛行度,由于其预练习言语库(包括这些模型中的大部分)在近几个月的装置量超越 40 万次。

NLP 库地址:https://github.com/huggingface/pytorch-transformers

可是,虽然这些模型被更大的 NLP 社区承受,一个重要且有挑战性的问题呈现了。怎么将这些庞然大物投入到生产中?如安在低推迟束缚下运用这些大模型?咱们需求用(贵重的)GPU 服务器履行大规划服务吗?

为了构建更尊重隐私的体系,Hugging Face 注意到在边际设备上运转机器学习体系的需求在不断增加,而不是调用云 API,将隐私数据发往服务器。在智能手机等设备上运转的模型需求是轻量级、呼应快和动力运用率高的!

终究但相同重要的一点,Hugging Face 越来越忧虑这些大模型所需的指数级核算本钱增加。

有许多技能能够处理前述问题。最常见的东西是量化(运用更小精度迫临全精度模型)和权重剪枝(移除网络中的部分衔接)。想了解更多,能够检查这篇关于 BERT 量化的精彩博客:https://blog.rasa.com/compressing-bert-for-faster-prediction-2/。

Hugging Face 的研讨者决议把要点放在常识蒸馏(distillation)上。蒸馏即,将较大模型(教师模型)紧缩成较小模型(学生模型)的办法。

常识蒸馏:搬迁泛化才能

常识蒸馏是一种模型紧缩办法,又名师生学习(teacher-student learning)。它练习一个小模型,使之仿制大模型(或模型集成)的行为。常识蒸馏由 Bucila 等人提出,几年后被 Hinton 等人推行(拜见论文《Distilling the Knowledge in a Neural Network》)。Hugging Face 研讨者运用的是 Hinton 等人的办法。

在监督学习中,分类模型一般用于猜测类别,它运用对数似然信号最大化类别概率。在许多事例中,高功能模型猜测的输出散布中,正确的类别具有高概率,而其他类别的概率则挨近于零。

例如,desk chair(办公椅)或许会被误分类为 armchair(扶手椅),但一般不会被误以为是 mushroom(蘑菇)。这种不确认性被称为「暗常识」。

了解蒸馏的另一种办法是,它阻挠模型对猜测成果过于自信(相似于标签滑润)。

以下是一个实践示例。在言语建模进程中,咱们通过查询词汇散布,能够轻松发现这种不确认性。下图展现了 Bert 对电影《卡萨布兰卡》中某句闻名台词的 top 20 补全成果:

BERT_base 对被遮盖 token 的 top 20 补全成果。该言语模型确认了两个概率较高的 token(day 和 life)。

怎么仿制暗常识?

在师生练习中,咱们练习学生网络来模仿教师网络的完好输出散布(它的常识)。

咱们使学生网络和教师网络具有相同的输出散布,从而使学生网络完结相同的泛化。

咱们不对硬方针类别(正确类别的 one-hot 编码)运用穿插熵来进行练习,而是对软方针类别(教师网络的概率)履行穿插熵,从而将教师网络的常识搬迁到学生网络。这样练习丢失函数就变成了:

其间 t 标明教师网络的 logit 值,s 标明学生网络的 logit 值。该丢失函数具有更丰厚的练习信号,由于软方针类别比单个硬方针类别供给更多束缚。

为了进一步提醒类别散布的多样性,Hinton 等人提出了 softmax-temperature:

其间T 标明温度参数,当 T 0 时,散布挨近于 one-hot 方针向量,当 T +∞ 时,则得到均匀散布。在练习进程中对教师网络和学生网络运用相同的温度参数,进而为每一个练习样本供给更多信号。在揣度时,T 被设置为 1,康复规范的 Softmax 函数。

PyTorch 着手实践:紧缩 BERT

Hugging Face 研讨者想运用常识蒸馏紧缩大型言语模型。关于蒸馏,研讨者运用 KL 散度作为丢失函数,由于最优化进程与穿插熵是等价的:

在核算 q(学生网络的散布)的梯度时,得到了相同的梯度。这答应研讨者运用 PyTorch 完结履行更快速的核算:

运用教师网络 BERT 的监督信号,研讨者练习得到较小的言语模型——DistilBERT。(研讨者运用的是 Bert 的英语 bert-base-uncased 版别)。

依照 Hinton 等人的办法,练习丢失是蒸馏丢失和遮盖言语建模丢失的线性组合。学生模型是 BERT 的较小版别,研讨者移除了 token 类型的嵌入和 pooler(用于下一句分类使命),保留了 BERT 的其他架构,不过网络层数只要原版的 1/2。

补白 1:为什么不削减躲藏层巨细呢?将它从 768 削减到 512 即可将参数总量削减约 1/2。可是,在现代结构中,大部分运算是通过高度优化的,张量终究一维(躲藏维度)的改变对 Transformer 架构中运用的大部分运算影响较小。在研讨者的试验中,比较躲藏层巨细,层数才是揣度阶段的决议性要素。

研讨者的前期试验标明,在该事例中,穿插熵丢失会带来更好的功能。因而,他们假定在言语建模设置中,输出空间(词汇)要比下流使命输出空间的维度大得多。而在 L2 丢失中,logit 或许会彼此抵消。

练习子网络不仅仅关乎架构,它还需求找出子网络收敛的适宜初始化(例如彩票假定论文《The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks》)。因而,研讨者根据教师网络 Bert 对学生网络 DistilBERT 进行初始化,将层数折半,对学生网络运用与教师网络相同的躲藏层巨细。

研讨者还运用 RoBERTa 论文中的一些练习 trick,这篇论文证明 Bert 的练习办法对终究功能有着重要影响。遵从 RoBERTa 的练习办法,研讨者运用梯度累积以十分大的批次(每个批次多达 4000 个样本)练习 DistilBERT,练习运用了动态遮挡(dynamic masking),并移除了下一句猜测方针。

该练习设置自动承受资源方面的束缚。研讨者在 8 块 16GB V100 GPU 上练习 DistilBERT,练习时长挨近三天半,练习数据为 Toronto Book Corpus 和英文维基百科(与原版 BERT 的练习数据相同)。

DistilBert 的部分代码来自于 Facebook XLM 的代码,部分代码来自 Google AI BERT 的 Hugging Face PyTorch 版别。这些代码可在 Hugging Face 的 NLP 库中获取,该库还包括多个 DistilBert 练习版别和微调版别,及其复现代码。

模型功能:DistilBERT 测验

研讨者在 GLUE 基准的开发集上比照了 DistilBERT 和两个基线模型的功能,基线模型分别是 BERT base(DistilBERT 的教师模型)和来自纽约大学的强壮非 transformer 基线模型:ELMo + BiLSTMs。研讨者运用纽约大学发布的 ELMo 基线 jiant 库和 BERT 基线模型的 PyTorch-Transformers 版别。

如下表所示,DistilBERT 在参数量分别是基线模型的 1/2 和 1/3 的情况下,功能可与后者比美。在 9 项使命中,DistilBERT 的功能一般等同于或优于 ELMo 基线(在 QNLI 使命上的准确率超出后者 14 个百分点)。令人惊奇的是,DistilBERT 的功能堪比 BERT:在参数量比 BERT 少 40% 的情况下,准确率达到了后者的 95%。

在 GLUE 基准开发集上的模型比照成果。ELMo 的功能成果来自原论文,BERT 和 DistilBERT 的功能成果是运用不同种子进行 5 次运转后的中位数。

至于揣度功能,DistilBERT 的揣度速度比 BERT 快 60%,规划也比后者小;DistilBERT 的揣度速度比 ELMo+BiLSTM 快 120%,规划也比后者小许多。

为了进一步查询 DistilBERT 的加快/规划权衡(speed-up/size trade-off),研讨者比照了每个模型的参数量和在 STS-B 开发集上运用一块 CPU、批巨细为 1 的情况下完结一个完好 pass 的揣度时刻,如上表所示。

下流使命:蒸馏和搬迁学习

研讨者进一步研讨了在高效揣度束缚下,DistilBERT 在下流使命上的运用。研讨者对紧凑的预练习言语模型 DistilBERT 进行微调,用于分类使命。这是结合蒸馏预练习和搬迁学习的绝妙办法!

研讨者运用 IMDB 谈论情感分类数据集,该数据集包括 5 万条英文谈论(被标示为活跃或消沉):其间 2.5 万条作为练习数据,别的一半作为测验数据(均类别均衡)。研讨者运用一块 12GB K80 GPU 进行练习。

首要,在数据集上练习 bert-base-uncased。该模型达到了 99.98% 的准确率(3 次运转的平均值),简直完美!

然后运用相同的超参数练习 DistilBERT。该模型达到了 99.53% 的准确率(3 次运转的平均值),在推迟下降 60%、规划削减 40% 的情况下,DistilBERT 的功能仅比原版 BERT 低 0.5%!

少便是多:小模型也能出奇观

Hugging Face 对 DistilBERT 的潜力十分看好。DistilBERT 仅仅个开端,它也提出了许多问题:运用常识蒸馏技能,咱们能够把大模型紧缩到什么程度?这些技能可用于进一步探究和洞悉大模型中存储的常识吗?在紧缩进程中丢失了言语学/语义学的哪些方面?……

现在,HuggingFace 的这项研讨现已开源,并进行常识同享。他们以为这是每个人参加 NLP 发展,并收成最新发展果实的最快和最公正的途径。

GitHub 地址:https://github.com/huggingface

Medium 页面:http:///huggingface

本文为机器之心编译,转载请联络本大众号取得授权。

------------------------------------------------

“如果发现本网站发布的资讯影响到您的版权,可以联系本站!同时欢迎来本站投稿!