论文分享|Arxiv2024‘复旦|如何让LLM说不?

解决大模型幻觉个人认为有两种方式,第一种方式是让大模型尽量回答正确,相关的方法有知识编辑、继续训练、检索增强生成等。另一种方式是让模型知道自己会不会,这里分享复旦的一篇工作,提出了一种让大模型学会说不的方法。

论文题目:Can AI Assistants Know What They Don’t Know?

来源:Arxiv2024/复旦

方向:LLM幻觉

开源地址:https://github.com/OpenMOSS/Say-I-Dont-Know

摘要

最近,LLM在对话,解数学题,写代码,使用工具等各种任务上取得了出色的效果。尽管LLM处理了密集的世界知识,但他们在面对知识密集型任务比如开放域问答时仍然会出现事实错误,这些不诚实的回复可能会在实际应用中造成重大风险。我们认为,让LLM拒绝回答它不知道的问题,是减少幻觉和使助手诚实的关键方法。

因此,在本文中,我们提出了这样一个问题:“人工智能助手能知道他们不会的内容,并通过自然语言来表达它们吗?”为了回答这个问题,我们基于现有的开放领域问答数据集,为LLM构建了一个特定于模型的“I don’t know”(Idk)数据集,其中包含了它的已知和未知问题。然后将LLM与其相应的Idk数据集对齐,观察助手对齐后是否能拒绝回答它未知的问题。实验结果表明,在与Idk数据集进行对齐后,LLM可以拒绝回答大部分未知问题。对于他们试图回答的问题,准确度明显高于对齐之前。

介绍

LLM的知识象限,分为四部分,知道自己会(IK-IK),知道自己不会(IK-IDK),不知道自己不会(IDK-IDK),不知道自己会(IDK-IK)。LLM的目标是尽可能让IK-IK最多,同时要将IDK-IK和IDK-IDK转换为IK-IK和IK-IDK

img

本文使用TrivalQA构建了 “I don’t know” Idk数据集包含模型已知和未知的问题。使用多次回答的平均准确率来评估一个问题LLM到底会不会,使用一个准确率阈值Ik阈值来判断是否为未知问题。

本文使用LLaMA2-7B-Chat作为基座模型,实验探究了最有效的让模型说不的方法,包含提示,监督微调(SFT),偏好感知优化(preference-aware optimization)。综合各个象限,表现最好的是DPO方法

img

方法

Idk数据集构建

基于TrivalQA,使用精确匹配(EM)评估回答内容是否准确。对于Ik阈值以下的未知问题,使用拒绝模板作为答案:

This question is beyond the scope of my knowledge, and I am not sure what the answer is. 

Ik阈值的意义:高阈值代表较为保守的回复策略,低阈值代表比较激进的回复策略。本文为每个问题选取10个回复,Ik阈值定为1.0。

img

Idk提示

这种方法需要模型有比较强的指令遵循能力,同时不需要额外训练。使用下列模板:

Answer the following question, and if you don't know the answer, only reply with "I don't know": <Question> 

Idk监督微调

使用Idk数据集,交叉熵损失,全量微调

偏好感知优化

Direct Preference Optimization (DPO):首先使用一半的Idk数据训练一个SFT模型作为预热模型,并收集另一半数据的回复。对于已知问题,将正确回复作为好回复,将拒绝模板作为坏回复。对于未知问题,则将自己的错误回复作为坏回复,将拒绝模板作为好回复,如图3。由于单独使用DPO可能导致模型无法正确回答拒绝模板,因此本文还使用了SFT损失作为补充。

Best-of-n Sampling (BoN):使用与DPO相同方式构造偏好数据,使用DPO中的预热模型初始化奖励模型,再使用pairwise损失训练奖励模型,推理时使用奖励模型在10个回复中选取分数最高的作为最终回复。

Proximal Policy Optimization (PPO):使用BoN中的奖励模型作为监督信号

Hindsight Instruction Relabeling (HIR):使用以下模板根据不同Ik阈值构建不同指令数据,从而进行微调,这种方式的优势在于不用重新训练就可以得到不同激进程度的回复策略

Your current knowledge expression confidence level is <X>, please answer the user's question: <Question>

实验

主实验

TrivalQA 构建域内数据,NQ 和ALCUNA 构建域外(OOD)数据。

除了Idk-BoN,其他方法均使用贪婪解码。对于Idk-BoN,将温度设置为1.0,top_p设置为0.9,并随机选取10个回复,将分数最高的作为最终回复。

使用以下三个指标进行评估:

  • IK-IK Rate:所有问题中IK-IK回复的占比
  • IK-IDK Rate:所有问题中IK-IDK回复的占比
  • Truthful Rate:前两者的和

img

对于域内问题,Idk-DPO,Idk-BoN的效果比较好。域外问题,IDK-HIR效果最好。DPO方法可能会让模型倾向于回答更多的问题,即过于自信。TrivalQA上训练的模型可以较好的泛化到NQ以及ALCUNA上。

消融实验

LLaMA2 70B>13B>7B,更大的模型能更好地知道他们会还是不会。同时,因为不同模型训练数据差异,对于知识的掌握程度不一致,使用模型不相关数据进行训练(使用LLaMA构建的数据训练Baichuan,Mistral)会带来较差的效果

img

Ik阈值越高,越多问题会被标注为未知,越少问题会被标注为已知,且相应的模型也会越诚实可靠。反之,则模型会也有用,但加大了错误风险

img

结论

  • 和Idk数据集对齐后,LLaMA-2-7B可以较好地知道自己到底会不会某个问题,同时在测试集上达到78.96%的准确率,同时在域外数据也展示了不错的效果
  • SFT方法让模型变得过分保守,同时错误地拒绝一些已知问题。偏好感知优化方法则可以减轻这个问题,提升总体比例的同时能够准确回答更多问题。
  • Ik阈值越高,LLM更诚实,Ik阈值越低,LLM更有用(Trade-Off,类似ChatGPT训练中的RLHF中平衡PPO损失和交叉熵损失)
  • 更大的模型会更容易知道自己会不会

大家好,我是NLP研究者BrownSearch,如果你觉得本文对你有帮助的话,不妨点赞收藏支持我的创作,您的正反馈是我持续更新的动力!如果想了解更多LLM/检索的知识,记得关注我!

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 14:54:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 14:54:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 14:54:03       58 阅读
  4. Python语言-面向对象

    2024-07-16 14:54:03       69 阅读

热门阅读

  1. 树莓派使用蓝牙设置wifi网络

    2024-07-16 14:54:03       18 阅读
  2. Spring Boot项目中,对接口请求参数打印日志

    2024-07-16 14:54:03       23 阅读
  3. 第二十一条:为传诸后世而设计接口

    2024-07-16 14:54:03       20 阅读
  4. 墨烯的C语言技术栈-C语言基础-015

    2024-07-16 14:54:03       19 阅读
  5. JWT令牌认证介绍及安全风险

    2024-07-16 14:54:03       21 阅读
  6. 导航专业入门,高考/考研假期预习指南

    2024-07-16 14:54:03       21 阅读
  7. Zookeeper + Kafka 消息队列群集部署

    2024-07-16 14:54:03       22 阅读