关于人工智能:恒源云GPUSHARE超越预训练-NLP-的模型来喽

4次阅读

共计 4013 个字符,预计需要花费 11 分钟才能阅读完成。

文章起源 | 恒源云社区

原文地址 | 从零训练一个超过预训练的 NLP 模型

原文作者 | Mathor


欢送欢送,热烈欢迎👏
社区大佬回归啦~
我又能够欢快的搬运文章了!

都让开,我要开始搬运啦。注释开始:
\
本文基于 Arxiv 上的一篇论文 NLP From Scratch Without Large-Scale Pretraining: A Simple and Efficient Framework,清华的几位研究者提出一种工作驱动的语言模型 TLM(Task-driven Language Modeling)。不须要大规模的预训练,从零训练一个大模型也能获得 SOTA 的成果,源码在 yaoxingcheng/TLM

INTRODUCTION

作者首先指出,从零开始对 RoBERTa-Large 进行预训练,须要 \(4.36\times 10^{21} \) FLOPs (Floating Point Operations Per second),大概相当于 1000 张领有 32G 显存的 V100 显卡运行一天,而训练 GPT- 3 的要求是 RoBERTa-Large 的 50 倍。个别的组织基本不可能有这么大的算力,咱们顶多是拿别预训练好的模型在本人的上游工作上微调,整个过程称为 Pretraining-Finetuning

TLM: TASK-DRIVEN LANGUAGE MODELING

论文中,作者提出一种代替 Pretraining-Finetuning 这种传统范式的办法,目标是效率更高、算力要求更低的同时简直不损失性能。具体来说,TLM 次要基于两个要害的想法:首先,人类把握一项工作只须要世界上的一小部分常识(例如学生即使是为考试做筹备,也只须要查看世界上所有书籍中某一本里的几个章节);其次,在有监督的标记数据上进行训练,比在无标记数据上优化语言模型更无效

基于上述动机,TLM 应用工作数据作为 Query,检索个别语料库中的一个小子集。随后,用检索到的数据和工作数据独特优化 监督工作和语言建模工作(MLM)

形式化地形容,给定一个通用的语料库 \(\mathcal{D}={d_i}_i \),其中 \(d_i \)是一篇文档;给定一系列有监督数据 \(\mathcal{T}={(x_i, y_i}_i \),其中 \(x_i \)是一条文本数据,\(y_i\in \mathcal{Y} \)是标签。咱们的指标是训练一个模型 \(f \)去预计分类的条件概率 \(f(x)=\hat{p}(y\mid x) \)

作者提到,他们的办法是很容易扩大到所有 NLP 工作的,然而这里仅专一于分类工作

TLM 次要由两个重要步骤组成:

  1. 将有监督数据 (task data) 作为查问,将通用语料库中的数据检索进去
  2. 对 task data 进行 监督工作 ,对通用语料库中检索进去的数据进行 语言建模工作。将这两个工作联结起来独特作为优化指标,从而达到从零训练一个模型的目标

Retrieve From General Corpus

这部分次要讲述到底如何从通用语料库中检索 (Retrieve) 出数据。对于 task data 中的每个样本 \(x_i\in \mathcal{T} \),咱们利用 BM25 算法从语料库中检索出一系列文档 \(S_i = {\tilde{d}_ {i,1},\tilde{d}_{i,2},…} \)。汇合 \(S_i \)中保留的是与样本 \(x_i \)最靠近的 top-\(K \)个文档。对于每个 task data,咱们都能够找出一系列文档,最初将这些文档全副取并集 \(S = \cup_iS_i \)。很显著,检索出的数据 \(S \)仅是原始语料库 \(\mathcal{D} \)中的一小部分

BM25 算法是 2009 年提出的,因为年代太过长远,包含我也都是第一次据说,网上看了几篇博客之后发现其实并不简单,因而顺便总结在此。具体来说,BM25 是信息索引畛域用来计算 q 句子与文档 d 之间的类似度得分的经典算法,它的公式如下:

其中

依照变量呈现的程序从前往后:

  1. \(q_i \)是句子 \(q \)中的第 \(i \)个单词
  2. \(\text{tf}(q_i,d) \)是单词 \(q_i \)在文档 \(d \)中呈现的次数,即词频
  3. \(k _ 1 \) > \(0 \)是一个超参数。个别取 \(k_1=2 \)
  4. 0<\(b \)<1 是另一个超参数,它是决定应用文档长度这个信息的比例,当 \(b=1 \)时,文档长度这个信息就齐全被用于衡量词的权重;当 \(b=0 \)时,不应用文档长度这个信息。个别取 \(b=0.75 \)
  5. \(|d| \)是文档 \(d \)的的长度
  6. \(L_{\text{avg}} \)是所有文档的均匀长度
  7. \(N \)是所有文档的数量
  8. \(\text{df}(q_i) \)示意蕴含了 \(q_i \)这个单词的文档个数

这种检索算法是工作无关的(task free),因为它仅依赖于文本 \(x \),而不依赖于标签 \(y \)。此外,BM25 检索算法也并不依赖于特定畛域数据,个别的通用语料即可。根本的 BM25 算法就是如此,网上有很多对于 BM25 算法的变形,引入了更多超参数等,这里不过多赘述,有趣味的读者自行查问学习即可

实际上如果是我来做类似度匹配的话,可能会用到间断的向量示意,而后通过计算向量的余弦类似度这种惯例做法,不过作者也提到了,将一个文档或者一个句子精确的编码为同维度的向量是很艰难的,除非应用基于神经网络的办法,不论是根底的 Word2vec,还是基于 BERT 的模型。但这就违反了他们的初衷,他们心愿整个过程要尽可能的简略、效率高,而且应用一个预训练好的 BERT 模型来提取向量,仿佛有些舞弊的感觉,因为他们的原意就是不应用预训练模型

Joint Training

给定外部和内部数据,咱们应用如下损失函数从零训练一个语言模型 \(f \)

后面提到的 监督工作 即 \(\mathcal{L} _ {\text{task}(f(x),y)} \),例如分类工作的穿插熵损失;语言建模工作 即 \(L_{mlm}​ (x) \),也就是 masked language modeling loss

其中,\(\rho _1 \)和 \(\rho_2 \)是两个超参数,并且从论文前面的超参数设置来看,\(\rho_1,\rho_2 \)十分大,至多是三位数级别的。模型 \(f \)的网络架构与 BERT 雷同,应用 [CLS] 地位的输入进行分类。当然了,TLM 也实用于其余的模型架构以及非分类工作

如果只看下面的损失,实际上就是咱们常见的多任务,但接下来才是重点,作者在训练的时候分了两个阶段。第一阶段,咱们将 one batch 外部数据 (task data) 与 \(\rho_1 \) batch 内部数据交织进行小批量随机梯度降落,此时的工作是 MLM;第二阶段,\(\rho_1,\rho_2 \)均被设置为 0,很显著此时是在外部数据上做有监督工作

RESULT


从后果上来看这种办法几乎是太强了,和 BERT 以及 RoBERTa 打得有来有回,浮点计算量、数据量以及模型的参数量都比 BERT 或 RoBERTa 小很多,最要害的是他们是预训练过的,而 TLM 是从零开始训练的

论文外围的思维就是人类要进行某种工作之前并不需要学习整个世界的常识,而只须要学些与这个特定工作相干的常识即可。理性上来说的确是有情理的,那么实际上到底有没有用呢?上面的比照试验证实了这一点

其中,\(\mathcal{C}_{BERT} \)和 \(\mathcal{C}_ {RoBERTa} \)别离指的是 BERT 和 RoBERTa 当初预训练时所用的语料库,并且 \(\mathcal{C}_ {RoBERTa} \)的大小是 \(\mathcal{C}_{BERT} \)的十倍以上。作者别离采纳 Random 和 BM25 的形式从 \(\mathcal{C}_{BERT} \)和 \(\mathcal{C}_ {RoBERTa} \)中检索数据,后果发现应用 BM25 这种有针对性的检索办法要比随机检索的成果好很多,同时因为 \(\mathcal{C}_{\text{RoBERTa}} \)的数据量更大,所以检索到类似样本的可能性更大,因而它的成果在整个 BM25 中也是最好的。从上表咱们还能看出低资源工作更依赖内部数据。IMDB 是高资源工作,BM25 算法比 Random 的晋升大概只有 1 个点,而对于 SciERC 和 ChemProt 这种低资源工作,BM25 算法比 Random 的晋升大概有 3~4 个点

除此之外,top-\(K \)也是我特地关怀的一个参数,上面便是作者做的一系列对于参数 \(K \)的比照试验

这个后果再次印证了,对于高资源的数据集,例如 AGNews,实际上不须要特地多的内部资源,而对于低资源的数据集,须要很多的内部资源进行学习

BM25 算法检索进去的文档真的与原样本十分相干吗?作者列了一张表展现了一部分后果

后面我提到 \(\rho_1,\rho_2 \)十分大,那么到底该取多少呢?作者也做了相干的试验

首先是 \(\rho_1 \),这是管制内部数据进行 MLM 工作的超参数。作者发现对于高资源的数据集,例如 Helpfulness,\(\rho_1 \)不须要设置的特地大,而对于低资源的数据集,\(\rho_1 \)应该要设置的略微大一点。除此之外,如果移除外部数据,仅应用内部数据进行训练成果也不会太好,例如 \(\rho_1 \approx \infty \)

依据作者的钻研(上图所示),\(\rho_2 \)设为 20 到 1000 之间的成果都还不错

咱们晓得 TLM 的训练过程是两阶段的,为了钻研第二阶段(引入监督工作)对后果的影响,作者做了一个融化试验

结果表明移除第二阶段训练会使得后果大幅降落,尤其是对于低资源数据集(ACL-ARC)来说更是如此

集体总结

整篇论文的思维简略,成果不俗,试验充沛,目前只是挂在 Arxiv 上,不晓得投了哪篇顶会,可能是年末的 ACL 吧。对于我的启发的确很多,置信大家也是如此。看完论文后我去关注了下作者的 Github,起初发现原来作者是 SimCES 的二作,只能说很厉害了

正文完
 0