1. 首页 > 百货

知其然知其所以然 模型也能

1. 引言部分

今天要给大家分享一篇很有意思的论文。这篇论文主要解决的是什么问题呢?就是如何让大语言模型在专业领域,比如医疗、科学领域表现得更好。

你们有没有想过,虽然现在的ChatGPT、Claude这些大模型很厉害,但在专业领域它们的表现还是不够好,对吧?比如说,当我们问它一个关于"支气管扩张"的专业问题时,它可能就答不太准确了。这是为什么呢?

主要原因是这样的 - 这些专业领域有很多特殊的知识和术语,普通模型可能理解得不够深入。就像我们普通人看医学论文一样,没有专业背景的话,很多术语都看不懂,是不是?

那么现在有一个很好的技术叫RAG(检索增强生成),这个技术的原理其实很像我们人类查资料的过程。比如当我们要回答一个问题时,会先去查找相关的资料,然后再基于这些资料来回答,对不对?RAG就是让模型也这样做 - 先检索相关文档,再基于这些文档来回答问题。

但是呢,这里又出现了一个新的问题。就算用了RAG技术,在专业领域的表现还是不够理想。这是为什么呢?因为模型可能不太懂得如何正确使用检索到的专业文献。就像一个医学院新生,即使给他一堆医学文献,他也不一定能准确理解和应用这些知识,对吧?那现在已经有哪些解决方案呢?主要有这么几种:

但这些方法都有什么问题呢?

这就是为什么我们需要一个更好的解决方案。那作者是怎么解决的呢?他们提出了一个叫SimRAG的方法。这个方法最有趣的地方是它让模型同时学会了两个能力:一个是回答问题,一个是提出问题。

你们觉得为什么要让模型同时具备这两种能力呢?这就像我们学习一样,不仅要会答题,还要会出题,对吧。只有真正理解了知识,才能提出好的问题。这两个能力相辅相成,可以帮助模型更好地理解专业知识。

2. 相关工作

在讲具体方法之前,我们先来了解一下相关的研究工作。这就像我们做研究之前,要先知道前人都做了什么。首先是RAG技术。它是怎么工作的呢?就像我们写论文要先查文献一样,RAG也是先去找相关的资料,然后再基于这些资料来回答问题。近期有很多研究者在改进这个技术,比如说:

第二个重要的技术叫自训练。这个概念听起来可能有点陌生,但其实很好理解。它就像是“教学相长”的过程 - 模型一边学习,一边用学到的知识来教自己。具体怎么做呢?

但这个过程也有个问题,就像我们自学时可能会学到一些错误的知识一样,模型生成的训练数据也可能有错误。所以研究者们想了很多办法来解决这个问题:

第三个是领域特定的大语言模型。现在已经有很多专门针对特定领域的模型了,比如医疗领域的、法律领域的。他们是怎么训练这些模型的呢?主要有两种方式:

但这些方法都有什么问题呢?

现在大家应该能明白为什么需要一个新的解决方案了吧。就是因为现有的这些方法都不够完美。

3. SimRAG的具体方法

接下来要讲的是本文最核心的部分了 - SimRAG具体是怎么工作的。这个方法很巧妙,分为两个主要阶段。

3.1 第一阶段:基础训练

第一阶段是做什么呢?就是先教会模型一些基本功。这就像我们学习任何新东西一样,要先掌握基础知识,对吧。具体来说,要让模型学习三类知识:

OpenAssistant的数据

Dolly的数据

SODA的数据

这些数据都是帮助模型理解人类指令的。

Squad数据集,这是关于阅读理解的

DROP数据集,这需要一些推理能力

NQ(自然问题)数据集,这些都是真实用户的提问

这就像给学生做各种类型的习题,帮助他们提高解题能力。

教模型怎么从文档中找到可能的答案

教模型怎么根据文档和答案来提出好问题

就像教会学生不仅要会做题,还要会出题一样。

3.2 第二阶段:自我提升

这个阶段是最有意思的部分。模型要用第一阶段学到的能力来提升自己,具体怎么做呢?首先是答案生成。模型会读一段专业文献,然后找出里面可能成为答案的内容。比如读到这样一段医学文献:

For its survival, the body needs to ensure a continuous delivery of energy despite highly variable supplies of nutrients from the external environment.

模型就会找出重要的概念,比如"continuous delivery of energy"这样的关键信息。然后是问题生成。基于找到的答案,模型会生成相应的问题。而且,模型会生成不同类型的问题:

这样做的好处是什么呢?就像我们复习时用不同类型的题目来测试自己,可以全面地掌握知识。最后还有个重要的步骤 - 质量控制。不是所有生成的问题都会被用来训练,而是要经过筛选:

4. 实验结果分析

好,现在到了最激动人心的部分了 - 我们来看看这个方法到底效果如何。

4.1 实验设置

首先,作者选择了三个非常重要的领域来测试:

PubMedQA:这是关于医学研究的问答

BioASQ:这是生物医学领域的问题

MedQA:这个更专业,是医学执照考试的题目

还有其他几个数据集

就像是让模型去参加不同类型的医学考试一样。

ARC:这是中学级别的科学题目

SciQ:这包含了物理、化学、生物等各种科学问题

MMLU-sci:这个更全面,包含了14个科学学科

相当于是从基础到高等的科学知识都测试了一遍。

用了最新的CS-Bench数据集

包含了编程、算法等各种计算机科学的问题

这就像是给模型来了次计算机系的期末考试。那模型用什么"教材"来学习呢?

4.2 比较对象

作者找了好几类模型来比较,就像举办一场比赛一样:

医疗领域有PMC-llama、MEDITRON

科学领域有SciTulu

4.3 实验结果

在医疗领域:

在科学领域:

在计算机科学领域:

虽然分数看起来不是很高,但要知道CS-Bench的题目是很难的,这个成绩已经很不错了。

4.4 深入分析

作者还做了一些很有意思的分析:

多选题表现最好,因为选项可以提供线索

开放性问题稍微差一点,这很正常,因为需要自由发挥嘛

判断题介于两者之间

生成的问题很自然,答案也很准确,不是简单的复制粘贴。

5. 局限性和未来展望

当然,这个方法也不是完美的,还有一些可以改进的地方:

就像我们复习,多复习几遍效果会更好

未来可以尝试迭代式的生成方式

生成和过滤数据需要不少时间

但好在这些都是训练时的开销,用的时候不会变慢

比如说用70B的模型可能效果会更好

但这样就需要更多计算资源了

这种自我提升的思路其实在很多领域都能用。比如说,我们学习新知识的时候,也可以先掌握基础,然后自己出题来检验,这样不是很像SimRAG的思路吗?

原文:《》

本文转载自​​,作者:

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://jmbhsh.com/baihuo725/32872.html

联系我们

QQ号:***

微信号:***

工作日:9:30-18:30,节假日休息