- # why - 事实性问题上会瞎说,产生幻觉。 - # what - 早期经过[[SFT 监督微调]]后的模型,如果遇到现实世界未出现过的问题,LLM 不会回答“我不知道”,而是仍然会生成内容,并且专业又自信,但内容本身并不存在。这是因为在监督微调的训练中,人类标注员总是自信而正确的回答问题。并没有告诉模型可以说“我不知道”。 - 在LLM 的内部,也许模型是知道的,当有一个它不知道的问题出现时,模型内的神经元可能被“激活”了,但是这个神经元和表达(预测下一个词)没有连接在一起,因为生成不允许说”我不知道“。 - # how - **如何改进** - 我们如何知道 LLM 何时知道?何时不知道? - 使用模型询问来发现模型的知识,并在模型不知道的情况下,以编程方式使用基于知识的拒绝来扩充其训练数据集。这个解决办法最早出现在 Llama3 论文中,叫做 Factuality(*[The Llama 3 Herd of Models](https://scontent-sea1-1.xx.fbcdn.net/v/t39.2365-6/468347782_9231729823505907_4580471254289036098_n.pdf?_nc_cat=110&ccb=1-7&_nc_sid=3c67a6&_nc_ohc=MV3ga1PekW0Q7kNvwHp3j-A&_nc_oc=Adn9leNMnGEyXva-Mf-Fr3wShp0AO3TQNq79DZNfwDllUo4t16cz1QEML9mh_k3Q2Wk&_nc_zt=14&_nc_ht=scontent-sea1-1.xx&_nc_gid=pFUyW6Um1Q0BhMqFreaoFA&oh=00_AfEnqNJp_iRRqJ6_LMRG6kO_cJ9CijLGnRWCZM4-4nG0RQ&oe=68067E80)2024*) - 先询问模型知道什么,不知道什么,找到模型的知识边界 - 然后加入模型不知道的知识的数据,然后给出回答“我不知道” - 用 LLM 生成 Q&A,然后给测试模型来回答 - 对于回答错误的答案,训练它正确答案是”我不知道“ - 这就是解释了为什么新模型,如 GPT-4o、4.5会回答不知道 - use tool,上网搜索。 - [[SearchGPT]] - ![](https://image.harryrou.wiki/2025-04-22-CleanShot%202025-04-22%20at%2020.11.33%402x.png) - 当模型看到`<SEARCH_END>`的 token 时,将不会生成下一个词,而是暂停,然后打开 bing.com,把问题复制进去,然后把搜素结果放进[[context length 上下文长度|上下文窗口]]`[...]`,上下文窗口就像是模型的工作记忆。它可以用刚刚搜到的信息来回答你的问题。 - **继续自主学习**:模型会根据上千份数据来自我训练,能够很好地知道何时使用工具,何时不使用。 - # how good - [诚实面对“不知道”](https://mp.weixin.qq.com/s/VueVt0LAhia9pLIoEUOh3Q) - [[meta promot 尽可能使用上下文窗口]] - [[2025世界读书日:今天是世界读书日]] - # Ref. - [[Deep Dive into LLMs like ChatGPT]]