Skip to content

大模型的幻觉问题篇

来自:AiGC面试宝典

宁静致远 2023年09月29日 13:34

一、什么是大模型幻觉问题?

1.1 大模型幻觉问题定义

  • 定义:当模型生成的文本不遵循原文(Faithfulness)或者不符合事实(Factualness),我们就可以认为模型出现了幻觉的问题。

📝通俗解释:想象一下,你让AI总结一篇文章,但它却编造了一些文章里根本没有的内容,或者把事实搞错了。这就是"幻觉"——AI在"胡编乱造",而不是忠实地回答问题。

1.2 何为 Faithfulness and Factualness?

  • Faithfulness:是否遵循input content(是否忠于输入内容)
  • Factualness:是否符合世界知识(是否符合客观事实)

📝通俗解释:Faithfulness像是"听不听话"——AI是否按照你给的信息来回答;Factualness像是"说得对不对"——AI说的是不是符合真实世界的事实。比如问你给的文档内容,AI乱说就是Faithfulness问题;问"首都在哪里",AI答错了就是Factualness问题。

1.3 针对不同任务,幻觉的定义有何差异?

1. 数据源(source)不一致问题

  • eg:摘要的数据源是document,data-to-text的数据源是data table,对话的数据源是对话历史,而开放域对话的数据源可以是世界知识。

📝通俗解释:不同任务的数据来源不同。摘要任务要忠于原文文档;表格生成要忠于表格数据;普通对话要忠于聊天历史;开放域对话则要符合客观事实。

2. 容忍幻觉的程度不一致问题

  • 在摘要、data-to-text任务中,非常看重response的Faithfulness,因此这些任务对幻觉的容忍程度很低。
  • 而像开放域对话任务中,只需要response符合事实即可,容忍程度较高。

📝通俗解释:像是写新闻摘要,一点都不能瞎编;但和朋友聊天时,稍微夸张一点可能没关系。

1.4 传统任务中的模型幻觉 vs LLMs中模型幻觉

  • 在传统任务里,幻觉大都是指的是Faithfulness:

    • Intrinsic Hallucination(内在幻觉/信息冲突):LM在生成回复时,与输入信息产生了冲突,例如摘要问题里,abstract和document的信息不一致。
    • Extrinsic Hallucination(外在幻觉/无中生有):LM在生成回复时,输出一些并没有体现在输入中的额外信息,比如邮箱地址、电话号码、住址,并且难以验证其真假。

      📝通俗解释:内在幻觉是"自相矛盾"——比如前一句说"今天下雨",后一句说"天气晴朗";外在幻觉是"无中生有"——比如文章没提过某人的邮箱,但AI却给出了联系方式。

  • 而面向LLMs,我们通常考虑的幻觉则是Factualness:

    • 因为我们应用LLM的形式是open-domain Chat,而不是局限于特定任务,所以数据源可以看做任意的世界知识。LLMs如果生成了不在input source里的额外信息,但是符合事实的,这种情况也可能是对我们有帮助的。

📝通俗解释:传统任务像是在"照本宣科",不能偏离给定内容;LLM像是"百科全书",可以自由发挥,但必须保证说的是真话。


二、为什么会出现大模型幻觉问题?

2.1 从数据角度进行分析

在数据构建过程中,由于以下问题,导致模型幻觉的发生:

  1. 训练数据可信度问题:由于大模型的训练数据都是通过众包/爬虫检索方式收集得到的,这种数据构建方式的优点是量比较大,但是缺点是包含大量虚假信息。这种虚假信息直接导致的问题就是使模型出现错误认知。

    📝通俗解释:就像孩子从小在错误的信息里长大,自然会形成错误的认知。AI也是如此,如果训练数据里有很多谣言和假信息,AI就会学到这些错误知识。

  2. 重复数据问题:过多的重复信息也可能导致模型的知识记忆出现bias,从而导致幻觉。

📝通俗解释:就像反复听同一个谎言,听多了就信了。数据重复太多会让AI过度相信某些错误信息。

引用至 [3] Deduplicating training data makes language models better

2.2 从模型角度进行分析

不止是数据角度问题,大模型幻觉问题出现的原因还表现在模型角度。

  • 模型结构:如果是较弱的backbone(比如RNN)可能导致比较严重的幻觉问题,但在LLMs时代应该不太可能存在这一问题。

  • 解码算法:研究表明,如果使用不确定性较高的采样算法(e.g., top-p)会诱导LMs出现更严重的幻觉问题。甚至可以故意在解码算法中加入一些随机性,进一步让LMs胡编乱造(可以用该方法生成一些negative samples)。

📝通俗解释:解码算法就像AI"抽奖"决定下一个词用什么。如果抽奖时"手气太好"(随机性太高),就容易抽到一些不合适的词,导致乱说话。

引用至 [4] Factuality enhanced language models for open-ended text generation

  • 暴露偏差训练和测试阶段不匹配的exposure bias问题可能导致LLMs出现幻觉,特别是生成long-form response的时候。

📝通俗解释:就像学生平时只练习做过题目的题型,考试遇到新题型就容易出错。AI训练时看到的和实际使用时不一样,就会"发挥失常"。

引用至 [5] On exposure bias, hallucination and domain shift in neural machine translation

  • 参数知识LMs在预训练阶段记忆的错误的知识,将会严重导致幻觉问题。

📝通俗解释:AI记错了"知识",就像人记错了知识点。比如AI记错了某个历史事件的日期,生成时就自然会出错。

引用至 [6] Entity-based knowledge conflicts in question answering


三、如何评估大模型幻觉问题?

现有的传统幻觉评估指标和人类结果的相关性往往较低,同时大都是task-specific的 [7]。

📝通俗解释:现有的评估方法往往不能很好地反映人类对"真假"的判断,而且很多方法只能针对特定任务,不够通用。

3.1 Reference-based(基于参考的评估)

Reference-based的指标有两类:

  1. 基于Source Information和Target Reference:利用一些统计学指标,比如ROUGE、BLEU来评估输出结果和Source/Target信息的重叠度

    📝通俗解释:比较AI输出的内容与"标准答案"或原文的重合程度,看相似度有多高。

  2. 基于Source Information:由于NLG任务里,Target输出往往是多种多样的,因此许多工作只基于Source信息进行幻觉的评估。比如Knowledge F1。

📝通俗解释:只看你给的材料里有没有相关内容,不care具体回答的形式。

基于Reference的评价指标,基本上只能评价Faithfulness,而无法评价Factualness,因此通常不适用于LLMs

📝通俗解释:这些方法只能检查"听不听话",不能检查"说得对不对",所以不太适合评估通用聊天AI。

3.2 Reference-Free(无参考的评估)

3.2.1 基于IE(信息抽取)

  • 介绍将知识限定于可以用三元组形式表示的关系和事件,基于额外的IE模型进行抽取,接着使用额外模型进行验证。
  • 缺点
    • 可能存在IE模型的错误传播问题(IE模型本身也可能出错)。
    • 知识被限定在三元组形式(很多知识无法用三元组表示)。

📝通俗解释:先把"谁做了什么"这样的关系抽出来,然后验证AI说的是否符合。但这种方法只能处理"主谓宾"这种简单结构,复杂知识处理不了。

3.2.2 基于QA(问答)

  • 介绍
    1. 第一步先基于LM生成的回复,使用一个QG(question generation)模型生成一系列QA pairs;
    2. 第二步给定Source Information,让QA模型对上一步生成的Question进行回复
    3. 第三步则是通过对比第一步的answers和第二步的answers,计算匹配指标,衡量模型的幻觉问题
  • 缺点
    • 可能存在错误传播问题。
    • 难以评估Factualness,因为上述第二步里面,Source Information不可能包含全部的世界知识,因此对于一些问题难以生成可靠的回复。

📝通俗解释:让AI自己出题自己答,再和原文对照。但原文里没有的知识,AI答对了也会被误判为错。

引用至 [8] FEQA: A question answering evaluation framework for faithfulness assessment in abstractive summarization

3.2.3 基于NLI(自然语言推理)

  • 介绍:基于NLI的方法通过NLI模型评估是否Source Information可以蕴含Generated Text,从而评估是否出现了幻觉现象
  • 缺点
    1. Off-the-shelf NLI模型用于核查事实效果不是很好。

      📝通俗解释:通用的推理模型在检查事实方面表现一般。

      引用至 [9] Evaluating groundedness in dialogue systems: The BEGIN benchmark.

    2. 无法评估需要世界知识的幻觉问题:仅能依赖于Source进行核查

    3. 都是sentence-level的,无法支撑更细粒度的幻觉检查

      📝通俗解释:只能检查整句话,无法定位到具体哪个词有问题。

      引用至 [10] Evaluating factuality in generation with dependency-level entailment.

    4. 幻觉问题和蕴含问题实际并不等价:

      • 例子:Putin is president. → Putin is U.S. president(可以蕴含,但是是幻觉)

📝通俗解释:NLI判断的是"这句话能否从原文推出来",但有时候推出来不代表是对的。比如"普京是总统"可以推出"普京是美国总统"(语法上合理),但事实是错的。

3.2.4 基于Factualness Classification Metric(事实性分类指标)

  • 介绍:标注/构造一批和幻觉/事实有关的数据,训练检测模型,利用该模型评估新生成文本的幻觉/事实问题。

📝通俗解释:像训练一个"谣言探测器",专门判断AI说的话是真是假。

引用至 [11] Knowledge-powered conversational agents

3.2.5 人工评估

  • 介绍:目前为止最靠谱的,此外还可以依靠LLM打分(比如利用GPT4,但是GPT4也存在着严重的幻觉问题,即使经过retrieval-augment,检索回来的信息也有可能是错误的)。

📝通俗解释:目前最可靠的方法还是让人来检查。但用AI来评估AI也有问题——因为AI本身也会犯错。


四、如何缓解大模型幻觉问题?

4.1 基于数据的工作

4.1.1 构建高质量数据集

  1. 人工标注

    • 训练数据:LLM上不可行,只适用于task-specific的幻觉问题。
    • 评测数据:构建细粒度的幻觉评估benchmark用于分析幻觉的严重程度和原因。

    📝通俗解释:让人来标注正确的数据,但这种方法太贵,只能用来做测试集,不能用来训练大模型。

    引用至 [12] GO FIGURE: A meta evaluation of factuality in summarization引用至 [13] Q2: Evaluating factual consistency in knowledge-grounded dialogues via question generation and question answering

  2. 自动筛选

    • 利用模型筛选出可能导致幻觉的数据并剔除
    • 预训练时给更faithful的数据加权(wiki vs. fake news),或者不使用可靠来源的数据(比如只选用经过人工审查的数据源,如wiki或者教科书,预训练)。

📝通俗解释:用AI来过滤脏数据,或者在训练时给可靠数据更高的权重。比如维基百科比谣言网站更可信,就多用维基百科。

引用至 [14] Vectara:让你的LLM应用告别幻觉!

4.2 模型层面的工作

4.2.1 模型结构

  • 模型结构层面的工作往往focus在设计更能充分编码利用source information的方法,比如融入一些人类偏置,如GNN网络。
  • 在解码时减少模型的生成随机性,因为diversity和Faithfulness往往是一个trade-off的关系,减少diversity/randomness可以变相提升Faithfulness/Factuality。

📝通俗解释:让AI更"保守"一点生成内容,减少随机发挥。想象一下,AI太有创意容易跑偏,稍微约束一下会更有帮助。

引用至 [15] Factuality enhanced language models for open-ended text generation

  • 检索增强被证明可以显著减少幻觉问题,e.g., LLaMA-index。

📝通俗解释:就像考试时允许查资料,不靠死记硬背。AI生成时先去"查一下"正确的信息再回答。

引用至 [16] Check your facts and try again: Improving large language models with external knowledge and automated feedback.

4.2.2 训练方式

  • 可控文本生成:将幻觉的程度作为一个可控的属性,利用可控文本生成技术进行控制。

📝通俗解释:像设置"安全模式",告诉AI"你必须严格忠于原文"或"可以稍微自由发挥"。

引用至 [17] Increasing faithfulness in knowledgegrounded dialogue with controllable features引用至 [18] A controllable model of grounded response generation

  • 提前规划骨架,再生成:sketch to content

📝通俗解释:先写大纲再填内容,就像考试时先列提纲再写作文,不容易跑题。

引用至 [19] Data-to-text generation with content selection and planning

  • 强化学习:假设是基于word的MLE训练目标,只优化唯一的reference,可能导致暴露偏差问题。现有工作将减轻幻觉的指标作为强化学习的reward函数,从而减轻幻觉现象。

📝通俗解释:用"奖励机制"来训练AI。如果AI说得准,就给奖励;说得离谱,就扣分。这样AI就会越来越靠谱。

引用至 [20] Slot-consistent NLG for task-oriented dialogue systems with iterative rectification network引用至 [21] Improving factual consistency between a response and persona facts

  • 多任务学习:通过设计合适的额外任务,可以达到减轻幻觉的效果。

📝通俗解释:让AI同时学习"回答问题"和"检查自己答案对不对",像培养AI的"自我检查"能力。

  • 后处理:设计一个小模型专门用于fix幻觉错误。

📝通俗解释:AI生成后再过一遍"安检",把明显的错误纠正过来。

引用至 [22] Improving faithfulness in abstractive summarization with contrast candidate generation and selection


五、可能的后续方向

5.1 更细粒度的幻觉评估

  1. token/phrase level instead of sentence level

    📝通俗解释:不仅判断整句话对不对,还要精确到哪个词有问题。

  2. 更精细的幻觉分类体系

    • Intrinsic(内在幻觉)
    • Extrinsic(外在幻觉)
    • 其他类别:
      1. 按幻觉产生的原因分类(调用知识出错,还是缺少相应知识)
      2. 主观/客观幻觉
      3. 幻觉可能和时间(temporal)有关

📝通俗解释:建立更详细的"幻觉类型学",像医院分科一样,不同幻觉用不同方法治。

5.2 知识的定义和诱导

  1. 怎么知道模型是否具备某一类知识,只是没有调用好?

    📝通俗解释:AI可能"知道"答案但"想不起来",怎么让AI想起来是问题。

  2. 知识的定义

    • 传统工作大都将wikipedia视作知识库,但它仅仅是世界知识的很小一部分。
    • 如果将整个互联网当做世界知识,又不可避免的会有虚假信息的问题。

📝通俗解释:什么是"知识"很难定义。维基百科不够全,全网又太杂。

5.3 幻觉消除

  1. 检索增强:互联网/外挂知识库(LLaMA Index)

    📝通俗解释:让AI"查资料"再回答。

  2. 强化学习(RLHF)

    📝通俗解释:用人类反馈来训练AI更靠谱。

  3. 知识诱导/注入

    📝通俗解释:把知识"灌输"给AI。

  4. 直接修改LLM中错误记忆的知识:Model Editing工作,如ROME,MEMIT等

    📝通俗解释:直接"纠正"AI的错误记忆,像给人做记忆修改手术。


知识星球

基于 MIT 许可发布