我是芝士AI吃鱼,原创 NLP、LLM、超长文知识分享
热爱分享前沿技术知识,寻找志同道合小伙伴
公众号 :芝士AI吃鱼
知识星球:https://wx.zsxq.com/group/88888881284242
原文:《SimRAG: Self-Improving Retrieval-Augmented Generation for Adapting Large Language Models to Specialized Domains》
今天要给大家分享一篇很有意思的论文。这篇论文主要解决的是什么问题呢?就是如何让大语言模型在专业领域,比如医疗、科学领域表现得更好。
你们有没有想过,虽然现在的ChatGPT、Claude这些大模型很厉害,但在专业领域它们的表现还是不够好,对吧?比如说,当我们问它一个关于"支气管扩张"的专业问题时,它可能就答不太准确了。这是为什么呢?
主要原因是这样的 - 这些专业领域有很多特殊的知识和术语,普通模型可能理解得不够深入。就像我们普通人看医学论文一样,没有专业背景的话,很多术语都看不懂,是不是?
那么现在有一个很好的技术叫RAG(检索增强生成),这个技术的原理其实很像我们人类查资料的过程。比如当我们要回答一个问题时,会先去查找相关的资料,然后再基于这些资料来回答,对不对?RAG就是让模型也这样做 - 先检索相关文档,再基于这些文档来回答问题。
但是呢,这里又出现了一个新的问题。就算用了RAG技术,在专业领域的表现还是不够理想。这是为什么呢?因为模型可能不太懂得如何正确使用检索到的专业文献。就像一个医学院新生,即使给他一堆医学文献,他也不一定能准确理解和应用这些知识,对吧?那现在已经有哪些解决方案呢?主要有这么几种:
但这些方法都有什么问题呢?
这就是为什么我们需要一个更好的解决方案。那作者是怎么解决的呢?他们提出了一个叫SimRAG的方法。这个方法最有趣的地方是它让模型同时学会了两个能力:一个是回答问题,一个是提出问题。
你们觉得为什么要让模型同时具备这两种能力呢?这就像我们学习一样,不仅要会答题,还要会出题,对吧。只有真正理解了知识,才能提出好的问题。这两个能力相辅相成,可以帮助模型更好地理解专业知识。
在讲具体方法之前,我们先来了解一下相关的研究工作。这就像我们做研究之前,要先知道前人都做了什么。首先是RAG技术。它是怎么工作的呢?就像我们写论文要先查文献一样,RAG也是先去找相关的资料,然后再基于这些资料来回答问题。近期有很多研究者在改进这个技术,比如说:
第二个重要的技术叫自训练。这个概念听起来可能有点陌生,但其实很好理解。它就像是“教学相长”的过程 - 模型一边学习,一边用学到的知识来教自己。具体怎么做呢?
但这个过程也有个问题,就像我们自学时可能会学到一些错误的知识一样,模型生成的训练数据也可能有错误。所以研究者们想了很多办法来解决这个问题:
第三个是领域特定的大语言模型。现在已经有很多专门针对特定领域的模型了,比如医疗领域的、法律领域的。他们是怎么训练这些模型的呢?主要有两种方式:
但这些方法都有什么问题呢?
现在大家应该能明白为什么需要一个新的解决方案了吧。就是因为现有的这些方法都不够完美。
接下来要讲的是本文最核心的部分了 - SimRAG具体是怎么工作的。这个方法很巧妙,分为两个主要阶段。
第一阶段是做什么呢?就是先教会模型一些基本功。这就像我们学习任何新东西一样,要先掌握基础知识,对吧。具体来说,要让模型学习三类知识:
这些数据都是帮助模型理解人类指令的。
这就像给学生做各种类型的习题,帮助他们提高解题能力。
就像教会学生不仅要会做题,还要会出题一样。
这个阶段是最有意思的部分。模型要用第一阶段学到的能力来提升自己,具体怎么做呢?首先是答案生成。模型会读一段专业文献,然后找出里面可能成为答案的内容。比如读到这样一段医学文献:
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"这样的关键信息。然后是问题生成。基于找到的答案,模型会生成相应的问题。而且,模型会生成不同类型的问题:
这样做的好处是什么呢?就像我们复习时用不同类型的题目来测试自己,可以全面地掌握知识。最后还有个重要的步骤 - 质量控制。不是所有生成的问题都会被用来训练,而是要经过筛选:
好,现在到了最激动人心的部分了 - 我们来看看这个方法到底效果如何。
首先,作者选择了三个非常重要的领域来测试:
就像是让模型去参加不同类型的医学考试一样。
相当于是从基础到高等的科学知识都测试了一遍。
这就像是给模型来了次计算机系的期末考试。那模型用什么"教材"来学习呢?
作者找了好几类模型来比较,就像举办一场比赛一样:
在医疗领域:
在科学领域:
在计算机科学领域:
虽然分数看起来不是很高,但要知道CS-Bench的题目是很难的,这个成绩已经很不错了。
作者还做了一些很有意思的分析:
生成的问题很自然,答案也很准确,不是简单的复制粘贴。
当然,这个方法也不是完美的,还有一些可以改进的地方:
这种自我提升的思路其实在很多领域都能用。比如说,我们学习新知识的时候,也可以先掌握基础,然后自己出题来检验,这样不是很像SimRAG的思路吗?
原文作者:芝士AI吃鱼;如有侵权,请联系管理员删除。