
零基础认识大语言模型(LLM)工作原理目录 - GuZhenYin - 博客园
我们在使用大模型的时候,可能见过下面的情况(特别是早期的大模型):
我们不自觉的就会有个疑问:为什么模型不能“只说它确定的事”?
通读了前面7章内容,其实我们应该就能明白:因为它的训练目标,从来不是“事实正确”,而是“概率最优续写”。
LLM 其实完全不知道“真相”,只知道“哪种说法更像人类文本”。
也就是说:
人类 | 大模型 |
|---|---|
判断真假 | 判断概率 |
事实验证 | 文本延续 |
外部世界 | 语料分布 |
所以模型本质其实是在做“像事实的生成” 而不是 “真实判断”
输入:
爱因斯坦提出了____模型会输出:
但如果你问:
爱因斯坦在2024年发表了____论文模型仍然可能“补全”:
因为模型在做“这句话通常怎么写”的补全
而不是结合上下文判断真实性后在作答(当然,最近的模型通过深度思考和游览器查询补充上下文后,已经很少出现类似问题了)
这里我们拆成三个层次。
模型训练目标是:[P(next_token | context)]
没有任何一项是:truth constraint(真实性约束)
所以关键点就在于,概率高并不等于事实正确.
我们人类语言中:
这些编造的信息,本身也都是合法文本
模型的参数来自于大量互联网资料训练,所以很难区分,“真实描述” 和 “合理虚构”的差异
模型没有:
所以它只能:在内部概率空间“自洽地生成”剩下的内容
其实我们可以这样理解:模型不是“查资料回答”,而是“闭卷写作文”。
在闭卷考试里:
结果就是:写得很像,但不一定对
这是很多人困惑的点。
前面我们一直在讲,模型输出的是:最可能的 token
所以还是那句话,最可能不等于最真实
在大模型的训练语料中包含大量的学术论文、教科书、技术文档,这些文献资料通常都是 强断言语气.
所以模型学到了这些资料中的一个关键语气“正确答案等于自信表达”
在我们现实中,如果遇到了不知道或者不清楚的事情我们正常会说:
但训练数据里:这种表达比例远低于“确定性表达” (因为获取的大量互联网资料,都不是提问,而是文章)
所以导致的结果就是,模型更倾向“给答案”,而不是“拒答”
我们可以把模型的幻觉简单的分类成以下三点.
编造不存在的信息:
推理过程看似合理,但是结论错误.(比如之前很火的,50米加油站,是开车去 还是走过去的问题.)
这是最危险的一类:
为了解决模型幻觉和参数很难实时更新的问题.
后面出现了RAG等相关技术,来缓解模型的幻觉输出.
但是为什么RAG能减少模型的幻觉呢?
我们先了解一下RAG到底做了些什么.
用户问题
↓
检索外部知识库
↓
把资料塞进 Context
↓
LLM 生成答案因为模型现在可以对照RAG资料,并且基于证据生成回复(实际上,我们可以理解RAG把模型需要的上下文补全了很多,所以预测的token也就准了许多)
因为RAG只能补全模型对话的上下文,但是在上下文不够清晰的情况下, 模型仍然可能产生“编造 + 资料混合”的情况
也就是说有证据时更准,但仍可能误读证据.
但是,一定要记住,RAG只能缓解幻觉,并不能完全解决幻觉.
很多人误以为:
RAG = 解决幻觉
❌ 错
正确理解:
RAG = 降低幻觉概率,不改变生成机制
比如:
原因:
这些工具提供“外部真实反馈”
对比:
方式 | 是否有事实约束 |
|---|---|
纯 LLM | ❌ |
RAG | ⚠️部分 |
Tool + Execution | ✔ |
我们需要明确这个核心。
因为说到底模型本质是:概率生成模型
而不是:事实数据库
所以幻觉不是错误,是生成机制的副作用
因为模型学到的是人类语言本身的“高压缩结构”
就算错误信息也可能语法正确、逻辑通顺、表达专业
所以错误的内容它也可以“长得像真理”
如果只用一句话总结的话,我们可以认为幻觉的本质是:模型在没有外部世界约束的情况下,用概率去生成“最像答案的文本”,而不是“真实答案”。
我们解决了四个核心问题:
因为目标是“像文本”,而不是“真”
因为训练数据偏向确定性表达
因为提供了外部证据,补充完善了上下文, 能让token预测更加准确,但是不改变生成机制
不能,只能降低概率