# 分享两篇大模型幻觉问题相关的论文


最近看了两篇关于大模型幻觉问题的论文，一篇叫做 [A Survey of Hallucination in “Large” Foundation Models](https://arxiv.org/abs/2309.05922)，是关于大型基础模型（Large Foundation Models, LFMs）的幻觉问题的一个综述。另外一篇是来自MetaAI的 [Chain-of-Verification Reduces Hallucination in Large Language Models](https://arxiv.org/pdf/2309.11495.pdf) ，讲得是一种减轻大语言模型幻觉问题的一个方法。

作为各种大模型如ChatGPT、Claude、StableDiffusion的重度用户，经常会遇到大模型各种胡说八道的情况，因此跟大家分享一下这两篇论文。本来早就该分享的，最近忙着家里的事情一致没空更新，现在临近假期总算空下来了，就在这几个偶尔会胡说八道的大模型的帮助下整理了一下这两篇论文的内容😄。注意哦，第一篇讲的是大型基座模型，也就是包括语言模型、图像模型、视频模型等各种模态的基座模型，第二篇只针对于大语言模型，对于其他模态是不适用的。

## A Survey of Hallucination in “Large” Foundation Models
### 什么是幻觉问题？
所谓大型基础模型就是类似于ChatGPT、StableDiffusion、LLaMA这种基座模型，很多模型都是基于这些模型为基座进行调优得到的。“幻觉”问题是指在基础模型中生成的内容不基于事实或准确信息的情况。这种情况可能会导致模型生成的文本包含虚构、误导或完全捏造的细节、事实或声明，而不是提供可靠和真实的信息。在LFMs中，幻觉问题尤为明显，因为这些模型具有更高的生成能力和更广泛的应用范围，因此更容易产生虚假或不准确的信息。此外，LFMs中的幻觉问题可能会对其可靠性和实用性产生负面影响，因此需要进行深入研究和解决。

在论文中，作者将LFMs中的幻觉现象分为四类：文本、图像、视频和音频。以下是每种幻觉现象的简要解释： 
1. **文本幻觉**：指模型生成的文本包含虚构、误导或完全捏造的细节、事实或声明，而不是提供可靠和真实的信息。 
2. **图像幻觉**：指模型生成的图像可能包含不合理的细节、形状或颜色，或者与原始图像不一致。 
3. **视频幻觉**：指模型生成的视频可能包含不合理的动作、场景或对象，或者与原始视频不一致。 
4. **音频幻觉**：指模型生成的音频可能包含不合理的声音、音调或节奏，或者与原始音频不一致。  

这些幻觉现象可能会在真实世界中带来一些问题。例如，在自然语言处理中，文本幻觉可能会导致误导性的信息传播，从而影响人们的决策和行为。在图像处理中，图像幻觉可能会导致误导性的图像传播，从而影响人们的判断和决策。在视频和音频处理中，幻觉问题可能会导致虚假的信息传播，从而影响人们的观点和行为。因此，解决这些幻觉问题对于确保LFMs的可靠性和实用性至关重要。

### 如何评估幻觉程度？
在论文中，作者提出了几种评估幻觉程度的标准，包括： 
1. **语言模型困惑度**（Perplexity）：用于评估模型生成的文本与真实文本之间的差异程度。 
2. **BLEU分数**：用于评估模型生成的文本与参考文本之间的相似程度。 
3. **ROUGE分数**：用于评估模型生成的文本与参考文本之间的相似程度。 
4. **人类评估**：通过人类评估者对模型生成的文本进行评估，以确定其质量和准确性。 这些标准是评估幻觉程度的重要工具，因为它们可以帮助研究人员确定模型生成的文本与真实文本之间的差异程度，以及模型生成的文本与参考文本之间的相似程度。

这些标准可以帮助研究人员确定模型的准确性和可靠性，以及模型在不同任务和数据集上的表现。此外，这些标准还可以帮助研究人员比较不同模型之间的性能，以确定哪种模型最适合特定的任务和数据集。因此，评估幻觉程度的标准对于确保LFMs的可靠性和实用性至关重要。

### 缓解LFMs中幻觉的策略
在论文中，作者提出了几种缓解LFMs中幻觉的策略，包括：
1. **数据增强**：通过增加训练数据的多样性来减少幻觉问题。 
2. **多任务学习**：通过同时学习多个任务来减少幻觉问题。 
3. **模型微调**：通过微调预训练模型来减少幻觉问题。 
4. **限制模型输出**：通过限制模型生成的文本、图像、视频或音频的范围来减少幻觉问题。 

这些策略在一定程度上可以缓解LFMs中的幻觉问题。例如，数据增强可以增加训练数据的多样性，从而使模型更好地理解不同类型的数据。多任务学习可以使模型同时学习多个任务，从而提高模型的泛化能力。模型微调可以使模型更好地适应特定任务和数据集。限制模型输出可以减少模型生成的虚假或不准确的信息。 
然而，这些策略也存在一些潜在的限制。例如，数据增强可能会导致过拟合问题，从而降低模型的泛化能力。多任务学习可能会导致任务之间的干扰，从而降低模型的性能。模型微调可能会导致模型过度拟合特定任务和数据集，从而降低模型的泛化能力。限制模型输出可能会导致模型生成的文本、图像、视频或音频过于简单或不够准确，从而降低模型的性能。 因此，研究人员需要根据特定的任务和数据集选择最适合的策略，并在实践中进行适当的调整和优化。

### 未来的研究方向
在论文的结论部分，作者提出了一些未来的研究方向，包括： 
1. **自动评估幻觉**：开发自动评估方法，以更准确地评估模型的幻觉程度。 
2. **多模态幻觉**：研究如何在多个模态（文本、图像、视频和音频）中缓解幻觉问题。 
3. **鲁棒性**：研究如何使模型更具鲁棒性，以应对不同类型的幻觉问题。 
4. **可解释性**：研究如何使模型的生成过程更具可解释性，以更好地理解模型的幻觉问题。 

这些方向都是非常有前途的。自动评估幻觉可以帮助研究人员更准确地评估模型的幻觉程度，从而更好地理解模型的性能和局限性。多模态幻觉可以帮助研究人员更好地理解不同模态之间的幻觉问题，并提出更有效的解决方案。鲁棒性可以帮助研究人员开发更具鲁棒性的模型，以应对不同类型的幻觉问题。可解释性可以帮助研究人员更好地理解模型的生成过程，并提出更有效的解决方案。 总之，这些未来的研究方向都非常有前途，可以帮助研究人员更好地理解和解决LFMs中的幻觉问题，从而提高模型的可靠性和实用性。

## Chain-of-Verification Reduces Hallucination in Large Language Models
这篇论文介绍了一种名为Chain-of-Verification(后面简称为 CoVe )的方法，用于减少大语言模型中的幻觉问题。该方法通过让模型检查其响应并纠正错误，从而提高响应的准确性和可靠性。论文还介绍了 CoVe 方法的实现细节，以及在不同任务和数据集上的实验结果。最后，论文探讨了 CoVe 方法对各种行业和应用中大型语言模型的开发和部署可能产生的影响。
### CoVe 的步骤
Chain-of-Verification (CoVe)方法通过以下步骤来解决大型语言模型中的幻觉问题： 
1. **生成初始响应**：模型首先针对给定的查询生成一个初始响应。
2. **计划验证问题**：模型然后生成一系列用于事实检查初始草稿的验证问题。
3. **回答验证问题**：这些问题独立地得到回答，以确保答案不受其他响应的偏见影响。
4. **生成最终经过验证的响应**：基于验证，生成一个最终、更准确的响应。

举个简单的栗子：假设我们有一个大型语言模型，用户问：“请列举一些在纽约出生的政治家。”

1. 首先生成初始响应：
``` txt
1. 希拉里·克林顿 - 前国务卿和前民主党总统候选人
2. 唐纳德·特朗普 - 前美国总统
3. 迈克尔·布隆伯格 - 前纽约市市长
```

2. 模型接着生成一系列用于事实检查的验证问题，例如：
``` txt
- 希拉里·克林顿在哪里出生？
- 唐纳德·特朗普在哪里出生？
- 迈克尔·布隆伯格在哪里出生？
```

3. 模型独立地回答这些问题：
``` txt
- 希拉里·克林顿出生在芝加哥。
- 唐纳德·特朗普出生在纽约。
- 迈克尔·布隆伯格出生在波士顿。
```

4. 根据验证结果，模型生成一个修正后的响应：
``` txt
1. 唐纳德·特朗普 - 前美国总统
```

通过这四个步骤，CoVe方法帮助模型纠正了其初始响应中的错误信息，从而减少了“幻觉”。

### 相关工作
论文中探讨了与大型语言模型（LLMs）中的“幻觉”问题相关的多个研究领域。这些相关工作主要可以分为三个大类：

1. **训练时修正方法（Training-time correction）**：这些方法试图通过在训练阶段调整模型权重来减少幻觉的生成。这包括使用强化学习、对比学习等方法。
2. **生成时修正（Generation-time correction）**：这些方法在生成阶段作出推理决策，以使模型更可靠。例如，通过考虑生成令牌的概率来检测幻觉。还有一些方法是通过多次抽样来检测幻觉，或者使用低置信度分数进行验证。
3. **使用外部工具进行修正（Tool-use）**：这些方法使用外部工具，如检索增强生成或事实检查工具，来减少幻觉。这些工具可以用于获取事实依据或进行链式思考验证。

论文还提到了一些专门用于提高逻辑和数学任务推理能力的相关工作，即使它们没有明确解决减少幻觉的问题

### 实验部分
针对CoVe（Chain-of-Verification）方法，作者进行了多项实验以衡量其在减少幻觉方面的有效性：
1. **任务类型**：实验覆盖了多种任务，从基于列表的问题（其中答案是一组实体）到长文本生成等。
2. **数据集**：使用了Wikidata API生成的自动问题作为一个测试基准。

实验结果如下：
1. **基于列表的问题（如Wikidata）**：实验结果显示，CoVe方法能有效地减少在这类任务中的幻觉。使用精度（precision）作为性能指标。
2. **长文本生成和闭卷MultiSpanQA**：CoVe方法同样在这些任务中表现出色，减少了生成的幻觉。
3. **不同变体的比较**：论文还探讨了CoVe方法的不同变体，包括联合生成（joint）、两步生成（2-Step）、因子分解（factored）和因子+修订（factor+revise）。这些变体在处理不同任务时有不同的性能表现。

总体而言，这些实验和结果进一步证明了CoVe方法在减少大型语言模型生成的幻觉方面的有效性。

### CoVe 方法的限制
虽然CoVe（Chain-of-Verification）方法旨在减少幻觉，但它**并不能完全消除生成的幻觉**。这意味着CoVe仍然可能为给定的查询生成不准确或误导性的信息，即使它相对于基线有所改进。此外，在实验中，作者仅解决了**以直接陈述形式出现的幻觉**。然而，幻觉还可能以其他形式出现，例如在不正确的推理步骤中，或作为观点的一部分等。同时，CoVe生成的响应带有验证信息，这些信息如果被用户查看，会增加其决策的解释性，但这也会增加**生成响应的复杂性和成本**。这些限制点突出了CoVe方法在实际应用中可能面临的一些挑战和局限性。


## 总结
总的来说，幻觉问题并不能算是大模型的bug，它其实是本身的特性，也许有朝一日可以解决这个问题，但至少在未来很久一段时间以内还是会存在的，因此对于大模型的回答我们需要酌情考虑是否采纳。

PS：写这篇博客的时候看到了一篇非常优秀的关于幻觉问题的[文章](https://zhuanlan.zhihu.com/p/642648601)，也推荐给大家。
