0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

能遵循instruction的句向量模型

深度学习自然语言处理 来源:NLP日志 2023-06-13 14:56 次阅读

1 简介

句向量技术是将连续的文本转化为固定长度的稠密向量,将句子映射到同一个向量空间中,从而应用到各种下游任务,例如分类,聚类,排序,检索,句子相似度判别,总结等任务,一种优异的句向量技术可以明显提升诸多下游任务的性能。关于如何利用语言模型输出文本的句向量,在21年底的时候写过一篇基于Bert的句向量文章,里面介绍了诸多种基于encoder-only的Bert相关方法Bert系列之句向量生成。

但是之前的句向量技术,泛化能力相对有限,当迁移到新任务或者新领域后,总需要进一步的训练才能保证效果。最近发现了一种新的句向量技术,在输入中加入跟任务跟领域相关的instruction,来指导语言模型生成适配下游任务的句向量,而不需要进行额外的训练,在MTEB榜单的表现可以媲美openai最新的text-embedding-ada-002模型。为了更好地理解Instructor,在这里梳理了Instructor的一个技术演化过程,从Sentence-T5到GTR,再到Instructor,这几种模型都在MTEB榜单上有不错的表现,有兴趣的读者可以自行查询。

2 Sentence-T5‍‍‍‍‍‍‍‍‍

Encoder-decoder结构的T5虽然在seq2seq的任务中表现优异,但是如何从T5中获取合适的句向量依旧未知。于是就有研究尝试了几种从T5中获取句向量的方式,具体如图所示,

a)Encoder-only first,利用T5 最后一层encoder第一个token的特征输出作为句向量。不同于Bert,T5模型没有CLS 的token。所以拿第一个token的输出来当句向量看起来就不靠谱。

b)Encoder-only mean,利用T5最后一层encoder所有token的特征输出平均值作为句向量。

c)Encoder-Decoder first,利用T5最后一层decoder的第一个token的输出作为句向量。为了获得这个token的输出,需要将input文本输入encoder,还需要将代表start的token喂给decoder。

7f71eee4-09b5-11ee-962d-dac502259ad0.jpg

图2: T5模型结构跟3种句向量变体

利用的前面提及的几种句向量变种可以获得固定长度的句子表征,在加上一个全连接层跟Normalization层就可以得到归一化的句向量。训练采用的是双塔模型结构,但是左右两边共用同一个模型跟参数

7f8734ac-09b5-11ee-962d-dac502259ad0.jpg

图3: dual encoder结构

训练方法采用的是常见的对比学习,同一个batch内,希望同个instance(sentence1, sentence2)的两个相关句子之间的距离足够接近(分子部分),不同instance里的不相关句子之间的距离足够疏远。如果同个instance还有强不相关的sentence,也希望不相关的句子之间距离足够疏远。同时了,为了研究增加额外训练数据的影响,采用了两阶段的训练方式,第一个阶段现在通用领域的问答数据训练(Community QA),第二阶段才在人工标注的数据(NLI)训练。

7fa74cf6-09b5-11ee-962d-dac502259ad0.jpg

图4: 损失函数

部分实验结论

a)T5 Encoder-only mean的效果明显优于BERT系列,大部分数据集上也优于其余两种T5句向量变体,在更多数据上finetune能给模型带来巨大的提升,从而解决模型T5的句向量坍塌问题。(作者猜测encoder-decoder结构里,encoder更倾向于生成通用性的表征,更具泛化能力,而decoder更聚焦于针对下游任务优化。

b)在大部分任务上,增加T5模型的规模可以进一步提升性能。

c)除此之外,还发现了实验中训练过程使用了巨大的batch size,第一阶段的batch size是2048,第二阶段的batch size是512,远超simcse实验中的最佳参数配置64。

7fb04874-09b5-11ee-962d-dac502259ad0.jpg

图5: Sentence T5实验效果对比

3 GTR‍‍‍‍‍‍‍‍

还是sentence T5的那批人,发现T5的encoder-only mean产生的句向量效果还不错后,就继续在这上面做进一步研究,进一步探索这种句向量模型在检索任务上的迁移能力。模型没变,训练数据把第二阶段换成了另外的检索相关的数据集,MS Macro(Bing的搜索数据)跟Natural Questions(常用于检索的问答数据集)。

训练方法虽然还是用的对比学习,但是具体计算过程跟simcse有所差异,由于每一个instance都包含(query, pos, neg),pos跟neg分别是query对应的相关文档positive跟强不相关文档hard negative,对应的对比学习的损失由两部分,

a)同一个instance里的query跟pos是正样本,query跟同个batch里的所有neg之间都是负样本。

b)同一个instance里的pos跟query是正样本,pos跟同个batch里其他instance的query之间都是负样本。

部分实验结论

a)随着模型规模的增加,在领域外的性能提升明显,换言之,更大的模型具有更强大的泛化能力。同时,也发现GTR对于数据的利用非常高效,在MS Macro数据集上只使用10%的数据也能达到很不错的效果。

7fd7c764-09b5-11ee-962d-dac502259ad0.jpg

图6: GTR在BEIR榜的表现

b)做完两阶段训练的GTR强于只做第一阶段或者第二阶段训练的模型,在领域内跟领域外的表现都比较一致,随着模型规模增加也有一定的提升,同时也说明了第二阶段的高质量数据对于模型的帮助。

7ffc5a20-09b5-11ee-962d-dac502259ad0.jpg

图7: 不同训练阶段的GTR效果对比(GTR- FT跟GTR- PT分别是只进行第二阶段跟第一阶段训练的模型)

c)随着模型规模的增加,召回的文档长度也有增加的趋势。

d)依旧巨大的batch size,两个阶段的训练batch size都是2048。

4 Instructor‍‍‍‍‍‍‍‍‍

目前的大模型,在给定instruction后会按照指令生成相应的内容,那么对于句向量模型而言,同样一句话,可以通过给定模型不同的instruction,让模型生成适合下游任务的句向量嘛?instructor就实现了这个设想。

800813ba-09b5-11ee-962d-dac502259ad0.jpg

图8: Instructor

Instructor采用了前面的GTR作为初始模型,训练方法也依旧保持,只是原本的模型接受文本作为输入,instructor同时接受instruction跟文本作为输入,从而生成符合指令的句向量

Instructor的训练数据是一个数据集集合MEDI,里面包含330个来自SuperNaturalInstructions的数据集跟30个现存的用于句向量训练的数据集。每个数据集都包括对应的instruction,数据集中的每个instance都是如下格式,

Instance = {“query”: [instruction_1, sentence_1],

“pos”:[instruction_2, sentence_2],

“neg”:[Instruction_2, sentence_3]}

如果是类似句子相似度的对称类任务,那就只有一个instruction,示例中的instruction_1跟instruction_2就是同一个,如果是类似检索的非对称任务,那么query跟doc都各有一个instruction,instruction_1跟instruction_2就是两个不同的instruction。Sentence_2表示是跟sentence_1相关的文本,而sentence_3则是不相关的文本。

通过这种数据集构造,可以保证每个instance都有自身的hard negative,以及同个batch内其他instance充当简单负样本。在训练过程过程,为了提高难度,会保证同个batch里所有instance都来自于同个数据集。

部分结论如下:

a)Instructor在三个榜单的平均表现最佳,在多个不同任务上的呈现出强大的通用能力。

b)加上instruction的模型训练,让模型在对称类任务跟非对称类任务上都取得明显提升。

c)训练数据加入了330来自SUPERNATURALINSTRUCTION数据集的多个instruction使得模型具备处理不同类型跟风格的instruction的能力,帮助模型更好的能泛化到新领域。同时,instruction的内容越详细丰富,instructor效果越好。

801113f2-09b5-11ee-962d-dac502259ad0.jpg

图9:三个榜单的模型表现比较

8034501a-09b5-11ee-962d-dac502259ad0.jpg

图10: instructor在新领域的表现

5 总结‍‍‍‍‍‍‍‍‍‍‍‍‍

instruction的引入,使得句向量模型能更好地迁移到新的任务跟领域,而不需要额外的训练。从Instructor的演化进程,不难看出从encoder-deocder模型中选择Encoder-only mean方法,生成的句向量效果明显优于Bert系列的方案,猜测这是由于其中的encoder更倾向于生成更通用的特征,而不是针对下游任务。同时也可以看到虽然还是沿用的对比学习方案,但是训练数据也逐渐从之前的(query,pos)pair对转换为(query, pos, neg)的三元组,通过设置较大的batch,既能保证训练难度,也能保证训练效率。

Instructor看起来还是蛮吸引人的,不由联想到语言模型的instruction tuning工作,有点异曲同工之意。本文提及的这三种方案是循序渐进的,虽然模型都已经开源,但遗憾的是都不支持中文。最近也看到一个中文的句向量开源方案,采用跟instructor类似的训练思路。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CLS
    CLS
    +关注

    关注

    0

    文章

    9

    浏览量

    9731
  • GTR
    GTR
    +关注

    关注

    1

    文章

    19

    浏览量

    11177

原文标题:Instructor: 能遵循instruction的句向量模型

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    模型卷价格,向量数据库“卷”什么?

    被大模型“带飞”这一年,向量数据库才刚刚写下序言
    的头像 发表于 05-23 09:24 1862次阅读
    大<b class='flag-5'>模型</b>卷价格,<b class='flag-5'>向量</b>数据库“卷”什么?

    介绍支持向量机与决策树集成等模型的应用

    本文主要介绍支持向量机、k近邻、朴素贝叶斯分类 、决策树、决策树集成等模型的应用。讲解了支持向量机SVM线性与非线性模型的适用环境,并对核函数技巧作出深入的分析,对线性Linear核函
    发表于 09-01 06:57

    构建词向量模型相关资料分享

    向量模型与word2vec的实践当获取到足够多的语料之后, 需要语料中的主要语素"可计算", 而"向量"是最普遍和容易使用的可计算元素, 把词语等语素编码成
    发表于 09-17 07:17

    如何构建词向量模型

    如何构建词向量模型
    发表于 11-10 07:43

    智能N维向量的空间模型

    传统向量空间模型在计算复杂度、查询性能、智能性方面存在种种缺陷。在其基础上,提出了智能N 维向量空间模型,改进了文档特征向量生成的算法,使用
    发表于 03-25 17:04 36次下载

    什么是KNI/Instruction Issue/Instr

    什么是KNI/Instruction Issue/Instruction Coloring  KNI: (Katmai New Instructions,Katmai新指令集,即SSE) Latency(潜伏期)从字面上了解其含义是比
    发表于 02-04 11:50 455次阅读

    基于支持向量回归的交易模型的稳健性策略

    交易模型的稳健性,指的是该模型的利润率曲线的波动性较小,没有大起大落。针对一个基于支持向量回归(SVR)技术的算法交易模型的稳健性问题,提出了使用若干导出指标训练统一的交易
    发表于 12-05 15:30 0次下载
    基于支持<b class='flag-5'>向量</b>回归的交易<b class='flag-5'>模型</b>的稳健性策略

    支持向量机的故障预测模型

    算法优化支持向量机参数,解决了蚁群算法易陷入局部最优的问题;然后,根据最优参数建立拟合监测数据和未来健康度下降过程非线性映射关系的和声蚁群算法一支持向量机( HSACA-SVM)故障预测模型;最后,通过某装备电源系统监测
    发表于 12-29 11:24 0次下载

    基于支持向量回归机的三维回归模型

    ,有利于降低经验风险和减小置信范围,因此被众多预测模型所采用,例如将支持向量回归机( Support Vector Regression,SVR)用来预测短期的交通流;用于生态旅游经济的预测;用于预测提供给火电厂的煤炭质量等。在电力行业,SVR
    发表于 01-25 13:56 0次下载

    如何使用智能支持向量机的回归模型进行金融数据的预测

    针对金融数据的非线性、时变性、随机性、模糊性、不确定性等特点,提出一种崭新的智能支持向量回归模型,并且运用一种新型的遗传算法优选模型参数。实验结果表明,所提出的智能支持向量回归
    发表于 12-20 16:35 1次下载
    如何使用智能支持<b class='flag-5'>向量</b>机的回归<b class='flag-5'>模型</b>进行金融数据的预测

    基于支持向量机的压力传感器校正模型

    针对压力传感器输出特性受温度变化和电压波动影响的问题,提出了应用支持向量机对压力传感器输出特性进行非线性补偿的校正模型。校正模型利用支持向量机具有逼近任意非线性函数的特点,通过建立压力
    发表于 03-24 11:34 9次下载
    基于支持<b class='flag-5'>向量</b>机的压力传感器校正<b class='flag-5'>模型</b>

    一种缓解负采样偏差的对比学习表示框架DCLR

    近年来,预训练语言模型在各种 NLP 任务上取得了令人瞩目的表现。然而,一些研究发现,由预训练模型得出的原始表示相似度都很高,在向量空间中并不是均匀分布的,而是构成了一个狭窄的锥体,
    的头像 发表于 06-07 09:54 1924次阅读

    模型如何快速构建指令遵循数据集?

    构造instruction data非常耗时耗力,常受限于质量,多样性,创造性,阻碍了instruction-tuned模型的发展。
    的头像 发表于 06-27 16:52 3108次阅读
    大<b class='flag-5'>模型</b>如何快速构建指令<b class='flag-5'>遵循</b>数据集?

    模型如何快速构建指令遵循数据集

    一、概述 1 Motivation 构造instruction data非常耗时耗力,常受限于质量,多样性,创造性,阻碍了instruction-tuned模型的发展。 背景
    的头像 发表于 06-27 16:56 3075次阅读
    大<b class='flag-5'>模型</b>如何快速构建指令<b class='flag-5'>遵循</b>数据集

    科技云报到:大模型时代下,向量数据库的野望

    科技云报到:大模型时代下,向量数据库的野望
    的头像 发表于 10-14 17:18 313次阅读