大模型的挑战和趋势(二)避免「幻觉」
模型的「幻觉」指的是模型的输出与用户的输入相悖,或与模型之前的输出相悖,或与事实情况相悖。
其中第三种最为致命,因为前两种用户相对容易察觉,但第三种如果用户也并不了解这个事实,要么用户进行更多的验证,要么模型蒙混过关而给用户造成潜在的威胁。
模型的「幻觉」问题非常致命,它是造成大模型在很多任务上实际应用非常困难的最重要的原因,可能没有之一。因为它导致用户和应用层在使用模型之后还必须二次确认。模型不能保证给出的答案就是正确的话,用户还不如直接使用现有的方式解决问题。我安利朋友使用 ChatGPT,有两次安利失败都是因为模型给出了实际上错误的答案(有一次即使附加了搜索也仍然是错误的)。
为什么模型会产生幻觉呢?
arxiv.org这篇论文中总结了一些原因:
1.因为模型在训练时并没有学过这些知识,或者它学的本来就是错的。
2.大模型会过度自信。有研究让大模型评价自己的回答的可信程度,发现它对自己答案的信心和它给出的答案事实上正确或错误没有相关性,大模型会高估自己给出正确答案的能力。有句话怎么说来着?它那么普通又那么自信😎。
3.大模型在微调阶段被鼓励完成对话,因此有时候它会在不知道答案的时候刻意撒谎来让对话完成。尤其是在强化学习阶段,由于对齐人类偏好只是排序大模型给出的答案,并没有一个标准答案,这种方式会鼓励大模型进一步地释放幻觉。大模型可能会阿谀奉承,说一些它觉得用户会喜欢听但事实上错误的答案。
4.现在的生成式策略是基于前面的字词预测后面的字词。这样的策略会导致大模型在前面生成时,可能已经知道自己犯错了,但它还是会沿着错误的回答继续生成(死要面子)。
PS:我怎么感觉模型撒谎和人撒谎的原因都是一样一样的。
大模型本质上还是个语言模型,解决某个场景具体任务的能力可能并没有那么强,用户既要大模型能够持续对话,又要大模型给出高质量的答案。既要又要(像极了老板),但大模型本身没这个能力,即便PUA它,它也做不到,做不到的情况下它要么武断拒绝,要么只能瞎编。它可以很好地理解语言、理解社会文化、理解认知心理,可以泛化一些基本的推理能力,但它并不是专业的商业分析师,也不是专业的物理学家。在现在的架构下,幻觉问题可能并没有彻底解决的办法 。目前有一些办法可以减轻大模型的幻觉问题,包括
1.从数据上入手,保证数据的质量更高,事实性的错误更少,从源头解决问题。
2.优化解码策略,要求模型在表达的时候更精准。就像 New bing 一样,可以选择三种方式,精准的或是平衡的或是更具想象力的,如果选择了更精准的选项,模型就会在推理的时候抑制自己的幻觉
3.在微调的过程中,教会模型在面对自己不知道的问题时坦然说不知道,而不是一味地激励模型给出形式上看起来更完整的答案。比如说在微调过程中刻意问模型一些它一定不知道的问题,然后引导它输出我不知道、我不会、我不懂这样的答案。也就是说在微调的过程教会模型谦虚,让它认识到自己能力的不足。
4.给模型加一些外挂,比如检索增强、工具增强、多智能体等,来帮助模型给出它不知道的知识。这部分我之后会单独讲,因为这些不仅能减少模型的幻觉问题,也可以增强模型其他方面的能力。
5.特定的提示词可以让模型减少幻觉,比如在问题最后补充上:如果你不知道答案就直说,不必分享错误的答案。
6.可以考虑给模型带上测谎仪,有些研究认为模型其实是知道自己撒谎的,可以在模型的结构中加一些判断层来检查模型是否撒谎,撒谎时就给出警告。
PS:解决方案也是一样一样的。
随着多模态的发展,模型需要对文字、图片、声音、视频综合理解,幻觉问题会更加复杂。
模型的幻觉问题能否改善,我觉得是能够有更多的基于大模型的应用产生以及是否会产生超级 AI 应用的最关键的因素。现在由于模型的幻觉问题,导致模型在很多应用上无法大规模地落地。