ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

解密Prompt系列22. LLM Agent之RAG的反思:放弃了压缩还是智能么?

解密Prompt系列22. LLM Agent之RAG的反思:放弃了压缩还是智能么? 前言已经唠了三章的RAG是时候回头反思一下当前的RAG是解决幻觉的终点么我给不出直接的答案不过感觉当前把RAG当作传统搜索框架在大模型时代下的改良这个思路的天花板高度有限~反思来源于对RAG下模型回答的直观感受最初我们被ChatGPT的能力所震惊并不是它能背诵知识而是模型在知识压缩后表现出的“涌现能力”更具体到RAG所属的问答领域是模型能够精准的基于上文从压缩的参数中召回并整合相应的知识甚至进行知识外推的能力。通俗点说它有可能生成我在任何地方都检索不到的答案但RAG当前的多数使用方法采用只让模型基于检索到的内容进行回答的方案其实限制了模型自身对知识压缩形成的智能大模型似乎变成了文本抽取和总结润色的工具。体验上大模型直接回答的效果就像是学霸答题文采四溢而RAG有时倒像是学渣开卷考试答得小心翼翼一有不慎还会抄错答案…既要保证事实性又要保留模型智能则需要最大化的使用模型已经内化压缩到参数中的信息只在需要使用外部知识增强的时候再进行工具调用。看到过以下几种方案Detection通过前置判断决策模型何时需要使用外挂在模型可以自行回答的时候使用模型回答当模型不能回答的时候走RAG检索生成Realtime Data需要获取动态世界的信息部分场景可以通过意图进行决策相对好解决Incorrect or Incomplete模型不知道或者模型推理幻觉如何知道模型可能不知道是更难解决的问题Calibration通过后置处理让模型先生成再使用召回内容对模型回答进行修正校准和事实性检查两种方案勾兑一下高置信度判断模型可以自行完成直接回答中置信度先生成再校验低置信度直接走RAG检索生成或者通过意图和场景进行决策如何勾兑就不在这里说了这里我们聊聊基础的前置判断和后置处理分别有哪些方案~前置判断-Detection检测模型回答存在幻觉可以通过检索外部知识进行校验不过考虑生成式模型覆盖问题的广泛性Self-Contradictory论文中评估chatgpt生成的回答中38.5%的内容无法通过Wiki等外部知识进行校验。因此这里我们先介绍一种完全基于模型自身不依赖外部知识的幻觉判断方案自我矛盾。后介绍一种模型直接拒绝回答的方案和RLHF里面的事实性原则类似这里是基于SFT的模型自我拒绝方案不过个人对拒识类的方案持一定的保留意见但不妨碍学习新思路哈哈~~自我矛盾第一种发现模型幻觉的方案是基于模型多次回答的不一致性来判断模型是否在胡说八道。相似的概念在解密Prompt系列9. 模型复杂推理-思维链基础和进阶玩法里面聊Self-Consistency COT时就提到过该论文是使用多路COT推理来投票出一个最合理的推理路径从而提高思考的准确率。这里只不过改变了使用的形式通过模型多次回答的不一致来判断模型是否出现了幻觉。有以下几种生成模型多次回答并度量一致性的方案单模型推理SELFCHECKGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language ModelsSELF-CONTRADICTORY HALLUCINATIONS OF LLMS: EVALUATION, DETECTION AND MITIGATION对于如何度量模型随机生成的多个回答之间的不一致性Self-Check尝试了包括Bert相似度计算在内的5种方法其中效果最好的两种分别是传统NLI和基于大模型prompt的NLI从推理性价比上传统NLI有优势效果上LLM更好以下是使用不同相似度计算方案来衡量模型多次随机解码的不一致性并用该指标来计算模型回答是否符合事实性的AUC效果传统NLI推理任务是给定前提premise判断假设hypothesis是否成立或者矛盾。这里论文就是使用MNLI数据训练的Debarta-v3-Large来判断模型生成的回答r(hypothesis)是否和其他N个采样生成的回答(premise)相矛盾。论文分别尝试了句子级的判断和整个回答粒度的判断句子级别的效果显著更好。\[S_{NLI}(i) \frac{1}{N}\sum_{n1}^N P(contradict|r_i,S^n) \]而基于大模型prompt同样是NLI任务的思路只不过改成了自然语言指令以下context等同于以上的 \(S^n\), sentence就是 \(r_i\), 大模型推理返回的Yes/NO会被转化成0/1并计算均值。\[S_{prompt}(i) \frac{1}{N}\sum_{n1}^N x_i^n \,\, x \in {(0,1)} \]SELF-Contradictory的思路很相似方法更加复杂些感兴趣的朋友自己去看论文吧~多模型问答DeepMind LM vs LM: Detecting Factual Errors via Cross ExaminationImproving Factuality and Reasoning in Language Models through Multiagent Debate同样是自我矛盾的思路还可以通过多模型对话的方式来进行。LM VS LM采用了模型B多次反复提问模型A的方式来生成多个回答。类似的方式也用于问卷中问题的设计出题人会用不同的方式把一个问题问好几遍如果每次回答都不一样说明做题人对类似问题的回答是不确定的。如下图第一步模型A先生成回答(claim)。第二步模型B会针对cliam从多个角度生成提问并让模型A再次进行回答。第三步模型B会基于A的原始回答和对多个问题的回答来判断原始回答的正确性。以上B提问A回答的步骤如果B判断需要进行补充提问的话可能会重复多次。这里涉及到的三个任务都是通过大模型指令来进行的三个任务分别是模型B基于A的cliam进行提问模型B判断是否继续提问模型B基于A的所有回答判断claim是否正确。对应的具体prompt如下相比上面SELF-CHECK随机解码生成多个答案的方案从多角度进行提问个人感觉更有针对性但两种方法都会有遗漏和误伤。推理成本上SELF-CHECK更低LM vs LM更高。自我拒绝R-Tuning: Teaching Large Language Models to Refuse Unknown Questions除了通过不一致性判断模型出现幻觉另一种更干脆直接的方案是让模型在碰到自己不确定的问题时直接选择拒绝回答和RLHF中的事实性原则的是一个思路。但我对这类方案最大的疑惑是拒识能力的泛化性。究竟模型是学到了对于自身parametric knowledge置信度较低混淆度较高的问题进行拒绝回答还是模型背下来了对某些知识和上文语义空间进行拒绝回答。这个我也还没想明白哈哈哈~所以这里我们绕过这个问题聊一种中间策略毕竟西医好多疾病也没研究明白但病还得治不是。R-Tunning提出指令微调可能放大了模型的回答幻觉。因为指令微调的数据集中所有问题都有答案微调任务就是负责教会模型各种任务范式以及在不同的任务中如何召回预训练中学习的知识并回答问题。但我们忽略了SFT中很多任务涉及到的知识在模型预训练中可能是没接触过的但我们依旧选择让模型去进行回答。这种预训练和指令微调间的不一致性可能会进一步放大模型幻觉。R-Tunning给出的解决方案是在构建指令微调数据集时加入模型是否对改答案表示肯定的描述这样允许模型拒绝自己不确定的问题。分成2个步骤找到模型不确定的问题论文尝试了两种方案R-Tuning模型回答和标注答案不一致适用于有标准答案的QA问题R-Tuning-U模型回答自我矛盾这里论文计算模型回答包含的所有答案的熵值构建允许模型拒绝的指令数据集论文也尝试了以下两种prompt指令模板R-Tuning“Q:{Question},A:{Answer}.{Propmt}.”,其中prompt是Are you sure you accurately answered the question based on your internal knowledge:对于上面模型确定的问题加上I am sure不确定的问题加上I am not sureR-Tuning-R: 对于确定给的问题使用Q:{Question},A:{Answer}对于不确定的问题用I am not sure 的各种相似表达来直接替换Answer然后使用以上加入模型不确定性表达的数据集进行指令微调即可。在我们的使用场景中R-Tunning-R这种直接拒绝的方案更加合适毕竟我倾向于指令微调的核心并不是知识注入而是任务对齐所以模型只要学习到对于自己不确定的问题选择拒绝回答即可。在论文验证的MMLU等数据集上这种拒绝微调方案有一定的领域外的泛化效果不过这些数据集和我们的使用场景相差很大具体效果要等测试后才知道了。后处理Calibration Method和Detection相反Calibration把重心放在模型回答的后处理上。也就是先不做判断直接使用模型生成回答再调用工具对回答进行校验和修改。这里我们介绍谷歌和微软提出的几种方案。不同方案对于如何后处理和调用哪些工具进行后处理存在差异不过整体流程都和下图相似模型生成 - 召回相关知识 - 对生成结果进行校验和修复指令方案RARR: Researching and Revising What Language Models Say, Using Language ModelsCRITIC: LARGE LANGUAGE MODELS CAN SELFCORRECT WITH TOOL-INTERACTIVE CRITIQUING基础方案是RARR提出的Research-then-revise框架整个流程分为以下几个步骤Generation Stage先让LLM直接生成问题回答XResearch Stage用于收集可以校验回答的事实性证据。针对X使用Few-shot-prompt, 生成用来校验X的多个搜索问题每个问题分别进行谷歌搜索并召回Top5内容。这里论文没有使用搜索自带的snippet而是对网页内容进行分块每4个句子一块并使用T5-Encoder计算每个chunk和query的相似度保留top-J个内容块。这里会得到一个(Q1,chunk1)(Q1,chunk2),(Q2,chunk1),…的问题事实列表**Revise Stage获取所有检索到的事实之后进入校验阶段。**论文会遍历以上列表针对每一个问题分别先使用few-shot-cot判断每个事实和模型回答X之间是否是一致的agreement model如下。如果一致则遍历下一个如果不一致则使用few-shot-prompt让大模型基于事实问题对模型回答进行修改revision model如下。论文在修改回答时会先定位原始回答X中哪个span和事实不符再进行修改从而避免大幅修改原始回答评估部分后处理方案需要兼顾对模型原始回答的保留和事实性这里RARR提出了两个指标Attribution Score计算归因得分既给定所有事实修改后回答Y中每个句子和所有事实的最大NLI打分的平均值既整体回答能获得事实性支撑的平均概率Preservation score计算保留率由回答原始意图的保留概率 * 前后答案的未改变率编辑距离度量得到RARR最大的问题在于效率一部分是大模型的推理效率一方面是最后的Revise部分采用了串行修改这部分在后面的微调方案中会有改良另一篇论文CRITIC提出的verify-then-correct和RARR非常相似只不过在不同的任务上尝试使用了不同的外部工具进行校验。在开放问答上使用搜索在代码问题就用代码解释器并未涉及动态的工具选择只是在不同数据集上固定选用不同的工具这里就不展开说啦感兴趣的盆友自己去看论文吧~微调方案PURR: Efficiently Editing Language Model Hallucinations by Denoising Language Model CorruptionsCheck Your Facts and Try Again: Improving Large Language Models with External Knowledge and Automated FeedbackFusion-in-decoder: Leveraging Passage Retrieval with Generative Models for Open Domain Question AnsweringPURR针对RARR的效率问题进行了优化使用的是大模型能力通过数据蒸馏到小模型的方案也就是把上面最耗时的Revise部分使用T5-large模型来实现query生成的部分也用T5-large来实现并且把串行修改的方案优化为了所有事实进行一次性融合修改。论文的核心就在于如何使用大模型来构建用于事实性修改的T5模型。论文使用了corrput的方案也就是把正确的回答人为进行破坏构造幻觉再训练模型进行还原具体包含以下几个步骤生成正确的回答整理了来自各个领域和话题的6000个种子问题每个问题调用搜索引擎获取TopN网页并进行chunking分段使用和上面RARR相同的T5-Encoder计算每个段落和Q的相似度阈值以上的为positive evidence(\(E^\))这里限制最多4条其余阈值以下的为negative evidence\(E-\)。然后使用zero-shot-prompt来让大模型基于\(E\)生成多文档总结作为正确的回答Y。对回答添加噪声同样使用大模型基于2shot-cot-prompt来对以上获得的正确答案进行破坏指令要求大模型先生成修改方案再对回答进行魔改。魔改包括但不限于魔改实体魔改语义关系魔改语法等等这里论文使用了text-davinci-003指令和效果如下图训练T5微调使用\(E\)的事实和添加噪声的回答作为输入模型目标是把噪声回答修复成正确答案。这里如果\(E\)不足4条的会随机采样\(E^-\)这样可以提高模型对噪声事实的识别能力。值得说一下的是这里多个事实并非采用拼接的形式进行融合而是使用Fusion-in-decoder的形式在encoder层编码后进行拼接再进入Decoder。效果上PURR对比RARR对模型原始回答有更高的保有率Pres以及更高的平均归因率Attr。但整体上后处理相关的论文和实际应用中模型回答的错误的五花八门相比还是简化了太多。在实际应用中使用这类后处理的修复逻辑感觉还有很多需要踩的坑。最后感谢你们的阅读和喜欢我收藏了很多技术干货可以共享给喜欢我文章的朋友们如果你肯花时间沉下心去学习它们一定能帮到你。因为这个行业不同于其他行业知识体系实在是过于庞大知识更新也非常快。作为一个普通人无法全部学完所以我们在提升技术的时候首先需要明确一个目标然后制定好完整的计划同时找到好的学习方法这样才能更快的提升自己。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】一、全套AGI大模型学习路线AI大模型时代的学习之旅从基础到前沿掌握人工智能的核心技能二、640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。三、AI大模型经典PDF籍随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。四、AI大模型商业化落地方案五、面试资料我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表