LangChain补充0:LLM幻觉
https://luxiangdong.com/2023/12/01/halluc/
https://blog.csdn.net/FrenzyTechAI/article/details/132695264
一:LLM的缺点
(一)3个缺点分析
主要包括以下3个缺点,幻觉问题(大模型的底层原理是基于概率,所以它有时候会一本正经胡说八道)、新鲜度问题(模型训练有时效性,对新的知识无能为力)、数据安全(内部/机密数据不能传输到大模型)
解决方案:
其中“新鲜度问题”已经基本上被解决了,像GPT-4 Turbo这样的最新大模型已经有类似RAG(Retrieval Augmented Generation,检索增强生成)这样的技术,可以借助外挂快速吸收最新知识(世界知识)。剩下的两个问题,“数据安全”最好的解决方案当然是本地化,敏感数据不上公网才是最安全的。次之的解决方案是使用可信度更高的大模型厂商,他们肯定都有基本的职业操守。剩下最棘手的就是大模型的“幻觉问题”了
(二)幻觉产生的原因
-
模型本身的输出是一个token一个token往外吐的,下一个token和前文是有关联的,根据概率选取下一个token。这个概率在模型训练过程中存在的
-
由于RLHF(Reinforcement Learning fromHuman Feedback,人类反馈强化学习)的存在,故意引导导致模型立场不坚定,导致知识被污染
-
其他原因:缺乏推理能力、世界知识不足、自动化训练、过度自信、拟人化
(三)如何消除幻觉
1.前置Agent+Prompt
大语言模型的幻觉通常源于用户相对模糊或过于宽泛的prompt。
比如langchain、AutoGPT的架构中,其中最主要的Agent,是拆解了用户的提问,使用一种对LLM更有耐心的方式来提问,最终的落脚点其实都在prompt上。
- 拆解提问:将复杂的任务分解成更简单的组件可以提高LLM的理解能力和准确性。这种方法使模型更容易管理复杂的问题,允许它一次只关注一个方面,并以结构化的方式构建最终的解决方案。它还减少了模型的认知负荷,最大限度地减少了由于过于复杂而产生错误的机会。
- Prompt的特异描述:Prompt的特异性大大减少了产生幻觉的机会。通过制作清晰直接的prompt,用户可以将LLM引导到预期的主题或任务,减少不相关回答或偏离主题的回答的机会。可以先让大模型对这个提问进行解读,并给出重新梳理之后的新提问,保证这个提问的prompt具有更强的特异性
- 给一个示例:提供期望输出的示例可以指导大模型理解我们的期望并最大限度地减少错误。
2.RAG:一种实时利用外部资源的方法
RAG允许LLM在文本生成之前接收相关信息,从而通过将其响应集中在相关的现有数据上来减少幻觉。RAG本质上为LLM提供了一个安全网,确保它的输出不仅依赖于它的训练,而且还依赖于更最新、更相关或刚刚超出训练模型所用数据领域的其他数据。
3.领域适配和微调
用大量领域特定数据对大语言模型进行微调,可以比较有效地减少在特定领域内生成文本的幻觉。
微调涉及在专门为目标领域、行业或任务设计的精心设计的较小数据集上训练LLM。这个过程改进了模型产生更精确响应的能力,减少了模型产生无根据信息的倾向。
微调允许更集中的学习体验,其中模型暴露于直接与它将执行的特定任务相关的高质量相关数据。这种有针对性的方法不仅提高了模型的准确性,而且还提高了它的召回效率,因为模型变得更善于识别和处理与任务相关的信息。此外,随着新数据的出现,微调可以不断调整和优化,使模型在快速发展的领域保持最新和相关。