1

贫穷让我预训练

 11 months ago
source link: https://www.6aiq.com/article/1687667140065
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

导读本次分享介绍我们最近在NLP预训练的探索,并在下游任务的一些实践。主要又一种适用于低资源的预训练方式,以及在自然语言理解、自然语言生成、向量表示的零样本推理应用。

全文目录:

  1. 要不要预训练

  2. 如何预训练

分享嘉宾|薛昌熵 百度 NLP算法工程师

出品社区|DataFun


01/要不要预训练

image-9ccf4524b19848fb916be70047e0d83c.png-imageStyle

预训练的效果是直接的,需要的资源常常令人望而却步。如果有这样一种预训练方法,它需要算力、数据、人工的资源很少,低到单人单卡原始语料就可以启动。经过无监督的数据处理,完成一次迁移到自己领域的预训练之后,就能获得零样本的NLG、NLG和向量表示推理能力,其他向量表示的召回能力超过BM25,那么你有兴趣尝试吗?

image-c0774c5a707b434fa6a81cd9b1ae69d8.jpeg-imageStyle

要不要做一件事,需要衡量投入产出来决定。预训练是大事,需要一些前置条件和资源,也要又充足的预期收益才会实行。通常所需要的条件有:充足的语料库建设,通常来说质量比数量更难得,所以语料库的质量可以放松些,数量一定要管够;其次是具备相应的人才储备和人力预算,相较而言,小模型训练更容易,障碍更少,大模型遇到的问题会多些;最后才是算力资源,根据场景和人才搭配,丰俭由人,最好有一块大内存显卡。预训练带来的收益也很直观,迁移模型能直接带来效果提升,提升幅度跟预训练投入和领域差异直接相关,最终收益由模型提升和业务规模共同增益。

在我们的场景中,数据领域跟通用领域差异极大,甚至需要大幅度更替词表,业务规模也已经足够。如果不预训练的话,也会为每个下游任务专门微调模型。预训练的预期收益是确定的。我们的语料库质量上很烂,但是数量足够。算力资源很有限,配合相应的人才储备可弥补。此时预训练的条件都已经具备。

直接决定我们启动预训练的因素是需要维护的下游模型太多了,特别占用机器和人力资源,需要给每个任务都要准备一大堆数据训练出一个专属模型,模型治理的复杂度急剧增加。所以我们探索预训练,希望能构建统一的预训练任务,让各个下游模型都受益。我们做这件事的时候也不是一蹴而就的,需要维护的模型多也意味着模型经验多,结合之前多个项目经验,包括一些自监督学习、对比学习、多任务学习等模型,经过反复实验迭代融合成形的。

image-f8a217d0b8694d1c87c7433397ec6350.png-imageStyle

上图是传统的nlp流水线范式,基于已有的通用预训练模型,在可选的迁移预训练完成后,为每个下游任务收集数据集,微调训练,并且需要诸多人工和显卡维护多个下游模型和服务。

下图是我们提出的新范式,在迁移到我们领域继续预训练时候,使用联合语言建模任务和对比学习任务,使得产出模型具备零样本的NLU、NLG、向量表示能力,这些能力是模型化的,可以按需取用。如此需要维护的模型就少了,尤其是在项目启动时候可以直接用于调研,如果有需要再进一步微调,需要的数据量也大大降低。

02/如何预训练

image-f438c29a86f442cc8ac605ec4c87599f.png-imageStyle

这是我们的预训练模型架构,包括Transformer的编码器、解码器和向量表示头。

预训练的目标包括语言建模和对比表示,损失函数为Total Loss = LM Loss + α CL Loss,采用语言建模任务与对比表示任务联合训练,其中α表示权重系数。语言建模采用掩码模型,类似于T5,只解码掩码部分。对比表示任务类似于CLIP,在一个批次内,有一对相关训练正样本,其他未负样本,对于每一条样本对(i,I)中的i,有一个正样本I,其他样本为负样本,使用对称交叉熵损失,迫使正样本的表示相近,负样本的表示相远。采用T5方式解码可以缩短解码长度。一个非线性向量表示头加载编码器上方,一是向量表示场景中要求更快,二是两个所示函数作用远离,防止训练目标冲突。那么问题来了,完形填空的任务很常见,不需要样本,那相似性样本对是怎么来的呢?

image-b0e62673d83f49e38101dc83c3a13f64.png-imageStyle

当然,作为预训方法,样本对一定是无监督算法挖掘的。通常信息检索领域采用挖掘正样本基本方法是逆完形填空,在一篇文档中挖掘几个片段,假定他们相关。我们这里将文档拆分为句子,然后枚举句子对。我们采用最长公共子串来判定两个句子是否相关。如图取两个正负句对,最长公共子串长到一定程度判定为相似,否则不相似。阈值自取,比如长句子为三个汉字,英文字母要求多一些,短句子可以放松些。

  • 本文地址:贫穷让我预训练
  • 本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出

我们采用相关性作为样本对,而不是语义等价性,是因为二者目标是冲突的。如上图所示,猫抓老鼠跟老鼠抓猫,语义相反却相关。我们的场景搜索为主,更加侧重相关性。而且相关性比语义等价性更广泛,语义等价更适合在相关性基础上继续微调。

有些句子筛选多次,有些句子没有被筛选。我们限制句子入选频次上限。对于落选句子,可以复制作为正样本,可以拼接到入选句子中,还可以用逆向完型填空作为正样本。

image-b5963aad7a7f4820bd24ada55a05e4ee.png-imageStyle

传统的掩码方式如SpanBert,采用几何分布采样掩码长度,短掩码概率高,长掩码概率低,适用于长句子。但我们的语料是支离破碎的,当面对一二十个字的短句子时,传统倾向掩码两个单字胜过遮蔽一个双字,这不符合我们期望。所以我们改进了这个分布,让他采样最优长度的概率最大,其他长度概率逐次降低,就像一个骆驼的驼峰,成为驼峰几何分布,在我们短句富集的场景中更加健壮。

03/实验效果

image-00dac32f646f42958ad2ef11c7221595.png-imageStyle

我们做了对照实验。包括GUR-FULL,用到了语言建模和向量对比表示;UR-LCS的样本对没有经过LCS筛选过滤;UR-CL没有对比表示学习,相当于传统的语言模型;GUR-LM只有向量对比表示学习,没有语言建模学习,相当于为下游任务专门微调;NLPC是百度场内的一个word2vec算子。

实验从一个T5-small开始继续预训练。训练语料包括维基百科、维基文库、CSL和我们的自有语料。我们的自有语料从物料库抓来的,质量很差,质量最佳的部分是物料库的标题。所以在其他文档中挖正样本时是近乎任意文本对筛选,而在我们语料库中是用标题匹配正文的每一个句子。GUR-LCS没有经过LCS选,如果不这样干的话,样本对太烂了,这么做的话,跟GUR-FULL差别就小多了。

image-895d7c3d0c9542dda24270bb03400f47.png-imageStyle

我们在几个检索任务中评测模型的向量表示效果。左图是几个模型在召回中的表现,我们发现经过向量表示学习的模型表现都是最好的,胜过BM25。我们还比较了排序目标,这回BM25扳回一局。这表明密集模型的泛化能力强,稀疏模型的确定性强,二者可以互补。实际上在信息检索领域的下游任务中,密集模型和稀疏模型经常搭配使用。

image-f7240c9d3a7348929515d59cd43fbfe6.jpeg-imageStyle

上图是在不同训练样本量的NLU评测任务,每个任务有几十到几百个类别,以ACC得分评估效果。GUR模型还将分类的标签转化为向量,来为每个句子找到最近的标签。上图从左到右依据训练样本量递增分别是零样本、小样本和充足微调评测。右图是经过充足微调之后的模型表现,表明了各个子任务的本身难度,也是零样本和小样本表现的天花板。可见GUR模型可以依靠向量表示就可以在一些分类任务中实现零样本推理。并且GUR模型的小样本能力表现最突出。

image-55395db797c14ecaa3c316b83b2ba81f.jpeg-imageStyle

这是在NLG的零样本表现。我们在做标题生成和query扩展中,挖掘优质流量的标题,将关键词保留,非关键词随机掩码,经过语言建模训练的模型表现都不错。这种自动prompt效果跟人工构造的目标效果差不多,多样性更广泛,能够满足大批量生产。经过语言建模任务的几个模型表现差不多,上图采用GUR模型样例。

04/结语

本文提出了一种新的预训练范式,上述对照实验表明了,联合训练不会造成目标冲突。GUR模型在继续预训练时,可以在保持语言建模能力的基础上,增加向量表示的能力。一次预训练,到处零原样本推理。适合业务部门低成本预训练。

image-e9e6c64d7af947a2a171f1c932cda452.jpeg-imageStyle

上述链接记载了我们的训练细节,参考文献详见论文引用,代码版本比论文新一点。希望能给AI民主化做一点微小贡献。大小模型有各自应用场景,GUR模型除了直接用于下游任务之外,还可以结合大模型使用。我们在流水线中先用小模型识别再用大模型指令任务,大模型也可以给小模型生产样本,GUR小模型可以给大模型提供向量检索。

论文中的模型为了探索多个实验选用的小模型,实践中若选用更大模型增益明显。我们的探索还很不够,需要有进一步工作,如果有意愿的话可以联系[email protected],期待能与大家共同进步。

image-4b1cf418a0314114be458350437eb2da.png-imageStyle

▌2023数据智能创新与实践大会

4大体系,专业解构数据智能

16个主题论坛,覆盖当下热点与趋势

70+演讲,兼具创新与最佳实践

1000+专业观众,内行人的技术盛会

欢迎大家点击下面链接报名:

DataFunCon2023(北京站):数据智能创新与实践大会


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK