微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

743次阅读
没有评论

今天是2023年10月3日,星期二,北京,天气晴,我们来看看领域微调的有趣工作。

大模型如何用于特定领域,已经是大模型的下半场,而现有的领域做法大致可分为三种。

一种是在特定领域和通用语料库的混合数据上从头开始训练模型,虽然这种方法能直观地创建特定领域的LLM,但大量的数据要求引起了极大的关注。

一种是利用监督数据集对语言模型进行微调,这种方法更具成本效益。然而,微调LLM能否很好地掌握领域知识并普遍应用于所有特定领域的任务,仍然存在不确定性。

一种是用检索到的领域知识提示通用语言模型,也就是常说的外挂,这可以被视为LLM的一种应用,而不是对LLM本身的直接增强。 

而除此之外在特定领域语料库上继续进行预训练,也称为领域自适应预训练,已被证明能有效地使各种自然语言理解模型适应特定领域,这种方法能使语言模型在结合特定领域知识的同时利用通用能力,从而以更低的成本完成下游特定领域的任务。

最近的工作《Adapting Large Language Models via Reading Comprehension》通过对特定领域语料的继续训练来微调大模型,提出了一种将大规模特定领域原始语料库转化为阅读理解文本的简单方法,使模型能够从原始文本中获取领域知识,并通过理解任务提高提示能力,在不同领域的实验证实了该方法的有效性和可推广性。

本文对该工作进行介绍,供大家一起参考,其中关于如何基于文本设计和构造阅读理解几个任务和知识探测的方法,值得借鉴。

一、怎么评估大模型是否学会领域知识

鉴于继续预训练在适应自然语言理解模型方面的效果和效率已得到证实,该工作开始探索这种方法是否对大规模生成模型仍然有效。

该工作继续分别在生物医学、金融和法律等特定领域的原始语料库上训练通用LLaMA,并进行提示和微调评估,以及领域知识探测,以评估模型在每个领域中的性能。

1、知识探测(knowledge prob)的实现逻辑

提示、微调比较好懂,我们来看看知识探测(knowledge prob)的实现逻辑:

知识探测的目的在于,确认语言模型是否在继续预训练过程中获得了领域知识,以确定对特定领域文本的持续训练是否能增强模型的特定领域知识。

具体的,该工作采用了一种类似于LAMA的方法来探测领域知识,LAMA利用”填空”来匹配BERT的屏蔽语言建模任务,该工作创建了”预测下一个单词/句子”测试,以与生成式语言模型的随意语言建模任务保持一致。

例如:

对于生物医学领域,使用MedM-CQA数据集(包含大量高质量的多项选择题,涵盖不同的医疗保健主题和21个医学科目)。

为了使测试格式与随意语言建模相一致,清除了指令跟随格式的数据样本。这些样本包括以”What”、”Who”和”When”等疑问词开头,或以”:”、”?”和”-“结尾的样本。

评估方法与”zeroshot提示”类似:将原始数据输入模型,不引入任何任务描述或上下文,然后比较每个选项的标记可能性,从而得出模型预测结果。该评估针对21名医学受试者逐一进行,并报告所有受试者的平均得分。

对于法律领域,采用LEDGAR数据集(为合同条款分类而设计的,包含100个不同法律主题的广泛样本,每个标签代表给定合同条款的主要主题)。该数据集最初的结构是100个分类任务,将其简化为四选一的问题格式,以适应知识探究的需要。对于每个数据样本,保留标签类别,并随机选择另外三个类别来创建四个候选选项。

与生物医学知识探查类似,使用模板“{CONTRACT} The topic is”将数据输入模型,然后比较每个选项的每个标记似然,得出模型预测结果,评估针对100个法律主题中的每个主题单独进行,并报告所有主题的平均得分。

2、知识探测(knowledge prob)的验证结果

我们来看2组数据,表6列出了生物医学和法律领域的知识探测结果,可以看出,在特定领域的原始/阅读理解文本上进行继续预训练确实为大型语言模型注入了新的领域知识。

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

表1对比了通用语言模型(GeneralLLM)和在特定领域原始语料库上经过继续预训练的语言模型(DAPT),分别在提示、微调和知识探测设置下各领域任务得分的平均值。

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

可以得到如下结论:

首先,如表1所示,在应用微调时,经过领域自适应预训练后,所有三个领域的成绩都有明显改善,表明继续预训练丰富了LLM的特定领域知识

其二,prompt提示性能出现了相反的趋势,在经过领域自适应预训练后,大多数领域的提示性能都出现了明显的下降,这说明虽然领域自适应预训练增强了LLM的领域知识,促进了微调性能的提高,但同时也极大地削弱了它在提示方面的能力,导致了所观察到的提示性能下降。 

再往前回溯,特定领域提示性能的下降可归因于提示能力的降低,这种下降可能源于特定领域内预训练语料的多样性有限,这限制了从原始文本中得出的输入输出模式。因此,提高提示能力对于有效利用在持续预训练过程中获得的领域知识至关重要。

二、再看大模型应用领域的三种范式

将大型语言模型应用于特定领域的最新研究成果包括医学、金融和法律,可分为三种主要方法:从头开始训练、指令微调和检索增强提示。

1、从头开始训练

从头开始训练特定领域的语言模型是实现领域专业化的一种直观方法。

BloombergGPT是金融领域大型语言模型的早期范例,它是在金融和通用语料混合的基础上进行训练,这种方法大大提高了金融任务的性能,同时又不影响一般LLM基准的性能。

然而,有研究指出,“从头开始训练”会带来昂贵的计算和数据需求,因此需要低成本的领域适应方法,如持续预训练或微调。

2、指令微调

在特定领域任务(尤其是涉及问题解答指令的任务)上对大型语言模型进行微调,是提高其在特定领域性能的一种经济有效的方法。

然而,由于有监督微调数据的可用性有限,使用少量数据进行微调的模型可能难以获得足够的领域知识。

因此,创建大规模、有监督的指令微调数据集成为一项重大挑战。以前的方法采用ChatGPT和GPT-4等高性能LLM来生成这些问答对,但利用这些闭源模型进行推理的成本可能是一个问题【并且会有一种偏置】

在这种情况下,利用大规模的领域语料库进行持续的预训练是获取领域知识的一个很有前途的解决方案。

3、检索增强提示

检索增强通过在不修改模型参数的情况下整合外部特定领域信息来增强LLM。LLM可从文档、特定领域知识图谱或具有参数化领域知识的神经网络等来源获取领域背景,这使LLMs能够更好地回答特定领域的问题,并缓解幻觉等问题。

在这种情况下,将外部知识无缝集成到LLM中至关重要,现有的方法通常是将检索到的知识连接到LLM的输入层或中间层。然而,由于潜在的不完整性或矛盾,允许LLMs选择接受或拒绝检索到的信息非常重要,对LLM进行训练,使其结合领域知识,有助于做出这种明智的接受或拒绝决定【这也就是我们常说的拒答】。

三、如何将文本转化为阅读理解任务

该工作不再继续在特定领域的原始语料库上训练大型语言模型,而是将原始语料库转换成阅读理解文本,并利用转换后的数据微调模型。

在阅读理解中,每篇原始文本之后都有一系列与其内容相关的任务。该工作将原始文本的模型训练阶段视为”阅读”阶段,而随后的任务训练则视为”理解”阶段。

这些理解任务采用问题解答的形式,旨在丰富模型对输入问题的提示能力。这一设计的灵感来自人类的学习,即通过阅读后的练习来提高根据所学知识回答问题的能力。此外,该工作还在训练数据中添加通用指令,以便从输入-输出格式的多样性中获益,从而进一步提高提示能力。

如图2所示,该工作使用了”Answer questions based on the article:”这样的短语来将每个原始文本与后面的任务连接起来,将每个任务模板解析为多个变体,以增强任务的多样性。

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

所以,整个工作的核心就是如何创建阅读理解文本,其分成了摘要(summarizattion)、词到文本(word2text)、自然语言推断(natural language inference)、尝试推理(commonsense reasoning)、转述检测(paragraph detection)以及文本补全(text completion)几个理解任务,对应的定义、挖掘模版以及输出输出模式如表2所示:

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

其中,mining pattern最为重要,靠的是从原始文本中提取满足特定触发词模版的句子,也就是使用正则表达式来挖掘任务示例,在正则表达式中填入相应的动词{VERBAL},并找出与正则表达式相匹配的句子。

也就是:{VERBAL}被一个包含所有动词的捕获组所替代,捕获组之间用交替运算符|分隔。例如,动词集Therefore,Thus,Hence被扩展为(Heso|Thus|Hence)。

每一类任务都设定了触发词,如表3所示:

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

随后,表9中列出的关键词被替换为相应的正则表达式。结果是一个正则表达式,其中包含用于提取句子的捕获组。

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

下面是一个具体的完整例子:

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

我们再来看看每一个都是怎么做的:

1、摘要任务

摘要提示模型生成所提供文章的简明摘要,使其能够提取文章的主旨。为了创建任务输入,该工作使用了类似于”什么是摘要?”这样的查询来提示模型使用文本标题作为基本事实来总结文章。该工作还将任务反过来,要求模型根据给定的标题撰写一篇文章。

其中问题在于用于摘要任务的标题收集,在生物医学领域使用PubMedAbstracts,在金融领域使用FinGPT代码库,在法律领域的FreeLawOpinions语料库中,单个原始文本没有明确的标题。

相反,每个文本中的某些部分有标题。因此,首先将每个原始文本分成若干部分,并从这些部分中收集尽可能多的标题。随后,将一个章节而不是整个原始文本视为创建一个阅读理解文本的基础。

2、从单词到文本(Word-to-Text)任务

Word-to-Text通过促使模型生成包含特定单词的句子,增强模型对特定领域词汇的掌握。

为了识别特定领域词汇,该工作使用SentencePiece工具从目标领域语料库中构建词汇,然后将该领域词汇与通用语言模型的词汇进行比较,将领域词汇中出现但通用词汇中没有的词视为特定领域词。

关键词的获取十分有趣,对于原始文本中的每个句子,该工作都会计算特定领域关键词的数量。

拥有三个以上特定领域关键词的句子将被选中,用于完成词到文本任务。该工作将句子中的特定领域关键词作为输入,要求模型生成包含这些{DOMAIN}关键词的句子。该工作还将任务反过来,将句子作为输入,要求模型找出与句子相关的关键词。

在这里,该工作将{DOMAIN}替换为生物医学、金融或法律等域名,从而指出目标域。此外,该工作还要求语言模型使用表2中的挖掘模式和输入-输出模板来定义概念。

3、自然语言推理任务

自然语言推理涉及两个句子之间的关系,通常是在给出第一个句子的情况下,询问第二个句子是真的、假的还是可能是真的。

该工作使用表2中基于regex的模式来搜索原始文本中的”前提-假设-关系”三元组。

例如,如果两个句子之间是由”因此”这个动词连接起来的,该工作就把它们之间的关系归类为”必然”;如果是由”此外”连接起来的,该工作就把它们归类为”中性”。

此外,该工作还通过将分类任务转换为生成任务来增强多样性。例如,当两个句子之间的关系是”蕴涵”时,该工作会使用{SENT1}这样的模板。

4、常识推理任务

常识推理评估在考虑常识的同时进行物理或科学推理的能力。

该工作使用表2中基于regex的模式来识别句子中的因果逻辑。

然后,该工作使用诸如{SENT1}的原因是什么?{SENT2}。

5、转述检测任务

转述检测要求模型确定两个句子在语义上是否相同。为了收集此类任务数据,该工作使用表2中基于regex的模式来搜索”句子1-句子2-标签”数据三元组。然而,该工作根据经验发现,这些挖掘模式无法持续识别语义完全等同的两个句子。例如,由类似的动词连接的句子可能不具有相似的含义。

因此,该工作将分类任务重新设置为生成任务,以减少对标签准确性的依赖。该工作不再询问两个句子是否相似,而是使用输入输出模板来提示模型生成一个支持或违背给定句子含义的句子,如您能生成一个违背{SENT1}含义的句子吗?当提取的标签为”不同”时,{SENT2}。

6、文本补全任务

除了生成式语言模型中固有的随意语言建模任务外,该工作还在句子之间插入诸如”您将如何完成这篇文章?”的问题,以提示语言模型生成后续部分。

文本补全任务的优势在于它不需要任何特定的挖掘模式,因此可以应用于任何原始文本。

虽然该工作设计了多种挖掘模式、输入输出模板和任务反转来提高提示能力,但它们可能无法完全解决现实世界场景中无限多样的任务。

有鉴于此,该工作将阅读理解文本与一般指令混合使用,以涵盖更广泛的输入输出类型。

四、实验设置与模型效果

1、实验设置

首先是领域自适应预训练。PubMedAbstracts和FreeLawOpinionsfromthePile分别用作生物医学和法律领域的预训练语料库。在金融领域,使用FinGPT代码库收集了2022年5月至2023年5月2的金融新闻,涉及7,000多支股票。

预训练代码基于TorchScale,继续在每个领域训练LLaMA-7B,并探索将阅读理解文本与一般说明混合的不同比例;

生物医学、金融和法律的最佳比例分别为1:1、1:2和1:1。

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

在创建阅读理解文本上,利用表2中的挖掘模式,在每个任务类型中搜索子类别。为防止任务主导,将每个原始文本中每个子类别的任务示例数量限制为两个,对于每个挖掘出的示例,都会从各种解析或任务反转模板中随机抽样,生成输入-输出示例。

为了构建阅读理解文本的结构,使用nn来连接理解任务,并将它们与原始文本联系起来。平均而言,每篇阅读理解文本会收集两个输入-输出示例。

在特定领域任务方面:

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

对于生物医学,对PubMedQA、ChemProt、MQP、RCT和USMLE进行评估。在金融方面,对BloombergGPT、ConvFinQA、FPB、FiQASA、Headline和NER五项公开任务进行评估,采用与BloombergGPT类似的提示设置。

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

在法律方面,对来自LexGLUE基准的SCOTUS、CaseHOLD和UNFAIR-ToS进行了评估。

2、实验结果

表4列出了模型(AdaptLLM)与通用语言模型(GeneralLLM)以及在原始语料库上进行过领域自适应预训练的模型(DAPT)的提示结果对比。

在三个不同领域的各种任务中,在DAPT中使用原始文本会对性能产生不利影响,但AdaptLLM中对原始文本的重新格式化和包含的一般指令设法抵消了这种影响,从而取得了比一般语言模型更好的结果。

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

此外,该工作还将AdaptLLM与各领域其他公开发表的模型/结果进行了如下比较。

在生物领域中,将AdaptLLM与MedAlpaca-7B/13B进行了比较,后者在医疗问题解答指令上对LLaMA-7B/13B进行了微调。

结论是,AdaptLLM-7B的表现优于MedAlpaca-7B,平均得分接近MedAlpaca-13B。虽然在某些特定领域的任务中,有监督的指令帮助MedAlpaca-7B优于通用LLM-7B(LLaMA-7B),但这种优势并不一致。这可能是因为指令没有为所有任务充分注入领域知识,或者特定领域指令在处理各种输入输出场景时存在困难。

在金融领域中,与BloombergGPT报告的结果进行了比较,后者是一个在金融和通用语料混合基础上从头开始训练的模型。虽然GeneralLLM-7B的得分低于BloombergGPT-50B,但AdaptLLM-7B的性能却与BloombergGPT模型的50B相媲美。这凸显了该方法与从头开始训练相比的计算和数据效率

在法律领域中,与LexGPT-6B进行了比较,后者在PileofLaw语料库上对GPT-J-6B进行了vanilla领域自适应预训练。与一般模型GPT-J-6B相比,LexGPT-6B显示出负面的提示结果,这表明继续在特定领域的原始文本上进行预训练会导致更差的提示效果。另一方面,该方法在提示性能上取得了积极的结果,突出了理解任务和一般指令的有效性。

3、对训练数据的消融实验

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

表5列出了不同训练数据和数据混合物的消融结果,其中:RawText指原始语料库,Read.Compre.指阅读理解文本,Gen.Ins.指通用指令,Raw.+Gen.+Gen.Ins.对应不同的数据混合数据,指标数据为每个领域中提示评估任务得分的平均值。

结论也很有意思:与只使用阅读理解文本相比,加入通用指令可进一步提高提示能力,从而获得更好的任务结果,与只使用通用指令相比,阅读理解文本提供了领域知识,从而提高了特定领域任务的成绩。

4、不同理解任务的效果

通过对每种理解任务进行消融实验,可以发现词到文本和自然语言推理在特定领域任务中表现出最高的有效性。

微软新作之构造阅读理解微调数据提升大模型性能:兼论如何检测大模型是否学会领域知识及效果评估

总结

将原始文本转换为阅读理解的训练样本,很有趣。

本文主要介绍了《Adapting Large Language Models via Reading Comprehension》这一工作,该工作重通过对特定领域语料的继续训练来微调大型语言模型,提出了一种将大规模特定领域原始语料库转化为阅读理解文本的简单方法,使模型能够从原始文本中获取领域知识,并通过理解任务提高提示能力。在不同领域的实验证实了该方法的有效性和可推广性。

该项目的模型、代码和数据将发布在https://github.com/microsoft/LMOps,感兴趣的可以去复现。

当然,其中的方法是针对英文的,整个代码的核心实际上是正则表达式的集中构造pattern,这个放到中文上去,还需要多花点心思。

参考文献

1、https://doi.org/10.48550/arXiv.2309.09530

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。

​       

 

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)
Generated by Feedzy