专栏名称: PaperWeekly
PaperWeekly是一个分享知识和交流学问的学术组织,关注的领域是自然语言处理的各个方向。我们热爱知识,分享知识,希望通过我们大家的努力为自然语言处理的发展做出一点点贡献。我们每周会分享一期特定话题的论文笔记和本周值得读的相关论文。
目录
相关文章推荐
募格学术  ·  大调整!省部共建高校,撤销5个学院! ·  2 天前  
弗雷赛斯  ·  规范的回复审稿人——标准的Response ... ·  4 天前  
传媒学术网  ·  【出版】Convergence:2024年第4期 ·  5 天前  
51好读  ›  专栏  ›  PaperWeekly

ACL 2024 | 文本表示新SOTA!微软用大模型及其生成数据优化Text Embedding

PaperWeekly  · 公众号  · 科研  · 2024-09-13 22:14

正文

©作者 | json和Jason

论文链接:

https://arxiv.org/pdf/2401.00368

技术报告:

https://arxiv.org/pdf/2402.05672



背景

首先作者强调了 embedding 即文本表示的重要性:embedding 对于文本匹配 /qa 以及搜广推都应用很广,最近 rag 也很多依赖于 embedding 来检索。

然后简单介绍了文本表示的做法,最简单就是词向量做平均,后续有 sentence bert 等工作,最近有 E5 和 BGE 这些更复杂的做法,先设计一些预训练策略然后做一些高质量数据的微调。但是,这些工作也还是存在问题的:

  • 问题1:模型依赖于各种复杂的训练策略和多轮流程,需要做很多工程的工作来处理各种数据集;
  • 问题2:模型受到任务和语言的数据集等限制,很多模型可能只支持英语或者中文(毕竟微软面向全球,所以对多语言的支持非常看重);
  • 问题3:目前 emb 模型大多基于 bert 类模型,没有结合大模型,也没有采用突破长度限制的方法。



本文工作

那为了解决这些问题,本文就提出来了相关改进方式

  • 使用了一个专用的大模型,让 LLM 为 93 种语言的各种 embedding task 生成了大量数据
  • 具体来说,设计了一个 two-step prompting strategy 让大模型自己 brainstorm 一些任务,并根据生成的任务去自己再生成数据,生成的数据使用不同的 prompt 模版来增强多样性;
  • 使用类似 Mistral-7B 的大模型而不是 bert 类的模型,因为有更多网上数据并且经过了对比学习等等,并且可以支持更长的上下文

训练后的 Mistral-7B 模型不需要任何现有标注的数据集,即可达到 SOTA 水平,如果再加入额外标注的数据集,可以超过 SOTA 约 2%。但是这整个看下来总有点左脚踩右脚上天的味道,利用大模型生成的数据来做训练,效果真的好吗?跟蒸馏大模型有啥区别?


相关工作

3.1 文本表示

早期的 LSI 和 word2vec,后来 bert,再后来各种更复杂的策略(比如先预训练对比学习再小数据集微调,Contriever/E5/BGE)

本文的一大贡献就是绕回最开始,只需要做一次预训练,不需要那么复杂的策略也能取得很好的结果

3.2 生成数据

作者列举了很多信息检索领域的利用生成数据的工作,包括 Doc2query,InPars 和 Promptagator。它们通过给无标签的 document 来生产假的 query 来进行拓展以训练模型。GPL 给 query-doc 对生成标签,Query2doc 利用大模型来给 doc 生成 query。

本文的一大贡献就是不依赖于具体的 query/doc 语料,而是基于各种不同任务,所以数据更多样。

另外作者也给出了很多知识蒸馏的工作,毕竟蒸馏其实也就是用训练好的模型来生成数据打标签,包括 DINO / Unnatural Instructions / Orca / Phi 等工作。这块好像 Phi 工作影响比较大?以后有时间也读一读

3.3 大模型

大模型能力很强,但是它难以处理高时效性的问题,同时利用私有数据做微调适配的成本也很高。所以大家都在研究 RAG,来增强大模型对于实时信息和私有数据源的利用能力。RepLLaMA 利用了一个双向编码器(类似 bert)来做检索微调Llama,还有一些 SGPT/GTR 等工作也是想把 scaling law 用到文本表示 emb 优化中,但是它们的效果还打不赢基于双向编码器架构的 E5/BGE 等模型。

所以本文的目标,就是利用大模型及其生成的数据来达到文本表示的新 SOTA


方法

终于来到了激动人心的方法部分,不过也就一页纸。

4.1 数据生成

首先,作者提出既然是要让大模型做各种任务,并且生成各种数据,那么第一步肯定是要对任务做一个大致的分类。首先作者把任务分了两类:

  • Asymmetric Tasks 非对称任务:两边文本相关,但是语义不一定完全一致,可能是存在一些隐含的关系。例如:搜索引擎 query-doc 两边信息肯定不一样,但是是相关的
  • Symmetric Tasks 对称任务:两边文本语义也很对称/类似。例如:多语言文本匹配,买词检索(我理解应该是类似 query/keyword 改写这种?)
然后对于 Asymmetric Tasks,作者又按照两边长度对比分为了:short-long match,long-short match,short-short match,and long-long match。然后让大模型对每个组 brainstorm a list of tasks,并结合任务定义给出一个具体的例子:

这个图看着大,但是其实很简单,颇有一种赛博朋克的幽默感。第一步,作者给出一个任务组的大致范围和约束,然后让大模型自己去想一系列检索的任务,包括科研论文检索/财报检索/图书检索,总之各种任务都可以,随意 brainstorm。

然后第二步,再让大模型自己去对刚刚自己生成的任务定义,去编一个具体的例子,包括 query 和正样本以及负样本感觉作者啥也不用干,躺着等 LLM 自己把数据生成整理好就行,听起来非常的玄乎。。作者还解释了一下,分成两个 step 不是为了叠 buff,而是这样生成多样性会好一点(嗯。。这样也让读者觉得不像是单纯的写一段 prompt,看起来比较有技术含量)。

然后对于 Symmetric Task,作者就没搞 brainstorm 这套了,而是直接定义 prompt 去生成数据。也能理解,因为这种任务看起来确实不多也很直观,所以也没必要折腾了,简单一点。

接下来作者提到了一个挺有趣的细节,为了增强输出数据的多样性,作者引入了一些随机变量到 Prompt 模板中,例如 {query_length} 可以从 “{less than 5 words,5-10 words,at least 10 words}” 中随机,这样生成的数据肯定风格/长度都会有所区别。另外语言也可以变,可以让模型生成不同 {language} 的任务和结果。当然,重复数据和不符合格式的异常数据作者也全部剔除了。

4.2 训练

对于 query 侧,输入就是 Instruct: {task_definition} \n Query: {query} ,任务定义就是之前 LLM 生成的,或者是已有任务的描述。

对于 doc 侧,作者说输入就是文档本身,不加任何 prefix prompt。这样的一个好处就是可以做索引缓存。

具体在获取 emb 时,作者还是采取单塔方式,在 query-doc 中间加上一个 token,然后取 LLM 的最后一层的 的 emb 作为整个 query-doc 对的表示。这种做法不是太了解,不太懂 LLM 做文本表示是不是都是这么做的?而不是说取整个句子的平均,也不是放到第一个或者最后一个?为什么 EOS 放中间就可以表示整个文本?

模型损失函数也是标准的 InfoNCE loss,计算 in-batch 和难负样本的损失。

另外,计算相似度的 cosine similarity 作者也加了一个温度超参,设置为 0.02,也不是很懂。可能是平滑一下吧。


实验结果和讨论

这块就不具体讲了,有兴趣可以看原文,讲些我觉得有趣或者重要的。

数据中语言和任务分布:

实验结果当然是变着花样大赢特赢

这个 mE5 模型看着效果也不错,也是他们的工作,下次有时间看看具体做法

作者强调了 XLM 这些预训练模型需要做对比预训练,效果才能更好。但是 LLM 则不需要。

超参方面,LLM 越好效果当然越好,然后作者认为提示文本非常重要,可以让模型更好的了解适应任务。作者也说他们支持不需要微调模型,仅仅调整 instruction 就可以适应一些特定任务。


感受

读完这篇文章一个很明显的感觉就是,大模型现在真的太强了,颇有一种倒反天罡的感觉。以前大家都是先做文本表示,搞一些 LSI / 词袋模型 / word2vec / bert 这些去做理解,先把文本表示好理解好了再去做其他的生成等任务。但是现在反过来了,文本表示很难直接学得很好,反而文本生成做得很好,所以反倒需要根据文本生成的结果去学习文本表示

往深层次思考,可能也反映了现在大模型能生成很好的结果,但是研究人员不明白它为什么能生成的这么好,只能猜他学到了一些概率的关联,而不能确定它是不是真的感知到了某种知识。就有点像视觉大模型和幻觉领域研究,大模型可能数不清图片里面有几个人,甚至数不清单词里面几个 r 字母。但是它可以理解图片理解文字,并且完成各项任务。

传统的“先表示,再综合建模,最后输出结果”的这种范式,在现在看来可能根本没必要分的这么开。本文的这种做法,可能是反过来通过学习大模型输出结果,来让模型学习到 LLM 中蕴含的隐知识,从而降维打击没用到 LLM 的 baselines。

另外,其实我也在想,既然 NLP 的文本表示可以这么做,那视觉领域呢?搞一个 Improving Image / Video Embeddings with MLVMs 是不是也很有前途?

先让大模型定义各种图像任务,然后生成一堆数据,再反过来提升图片表示能力,帮助一些还依赖于图片表示的任务?又或者 Code 领域?不过现在多模态大模型效果也未必有 NLP 那么好,而且这个成本开销非大厂也玩不起,也就图一乐了。

最后,我觉得这篇文章还有点意义就是可能让人真的敢从用 LLM 标样本,到用 LLM 生成更多样的样本。当然这种生成式的样本跟实际线上样本可能还是会有些不一致,但是确实可以在一些特定的缺乏足够样本的场景上试试。


更多阅读



#投 稿 通 道#

 让你的文字被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。


📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算


📬 投稿通道:

• 投稿邮箱:[email protected] 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧


·
·
·