本讲目录
第 14 讲 · 使用技巧与坑
前几讲的技巧散在各个场景里,这一讲做系统盘点:先给一份"怎么问得好"的技巧清单,再给一份"它会怎么坑你"的病理图鉴——每个坑都给出成因(连回上篇的原理)与对策。目标是把两样东西变成你的肌肉记忆:好的提问习惯和verify 反射。
学习层:把“自信”拆成概率、误差与拒答
具体谜题:一个 0.95 的分数,真的代表“100 次里约 95 次正确”吗?
先把问题从聊天框拿出来:固定一个二分类器,它给出 logit 和标签。若把 logit 除以温度 \(T\),预测类别会不会改变?若只保留置信度高于阈值的样本,错误率一定会下降吗?最后问一个更重要的边界:这个玩具分类器的校准概率,和 LLM 用“当然”“毫无疑问”一类语气自报的确定感,是不是同一个量?
先做预测,再打开实验
先写下四个答案:① \(T>1\) 会压平概率,但不改变 logit 的正负,因此在固定数据上不改变 argmax/accuracy;② NLL、Brier 和 ECE 可能改变,而且 ECE 还会随分桶数改变;③ 分布内错误若集中在低 score,拒答可能降低保留集风险;④ shift 中若错误也拿到高 score,拒答会丢掉低分正确样本,风险甚至上升。再猜:把分布内验证集拟合出的 \(T\) 搬到 shift,是否仍然可靠?
最小模型:logit、概率、分桶与拒答
本实验只使用一个固定的二分类器。对 logit \(z\) 和标签 \(y\in\{0,1\}\),温度缩放为 \(p=\sigma(z/T)\),预测为 \(1[z\ge0]\),置信度为 \(\max(p,1-p)\)。因此 \(T>0\) 不会改变 argmax;它只改变概率距离 0.5 有多远。
Accuracy 只看类别;NLL 看真实标签被分配到的概率;Brier 是 \(\mathrm{mean}(p-y)^2\)。Reliability diagram 把置信度分成 \(B\) 个等宽桶,横轴是桶内平均 confidence,纵轴是桶内实际 accuracy;完美校准是对角线。\(\mathrm{ECE}=\sum_b(n_b/n)|\mathrm{acc}_b-\mathrm{conf}_b|\),所以 ECE 明确依赖分桶规则与样本量,并非脱离评估集的模型常数。
操作:一次只改变一个旋钮
- 先点“原始分数”,读分布内测试集的 accuracy、NLL、Brier、10 桶 ECE 与 coverage=100% 的 selective risk。
- 再点“验证集拟合 T”。\(T\) 是在固定 validation logits/labels 上用网格最小化 NLL 得到的;比较前后概率指标,确认 accuracy 没有因温度改变。
- 把数据切到“shift 陷阱”,保留验证集拟合的 \(T\),再调拒答阈值或 coverage 快捷按钮。观察 NLL/Brier 与风险相对 \(T=1\) 是否仍然改善。
- 把 ECE 分桶改为 5、10、20。若读数变化,说明你测到的是“该数据集、该分桶协议下的摘要”,不能把某一个 ECE 数字当成无条件真值。
拒答后的 selective risk 只在 accepted 样本上计算;coverage 是 accepted/n。拒答不是把错误变正确,而是用少服务一些样本换取保留集的风险变化。
误区边界:这个实验能说明什么,不能说明什么?
- 它演示的是固定玩具分类器的经验证概率;LLM 的自信语气是生成风格,不是经过同一数据协议验证的事件概率。即使一个分类器校准良好,也不能推出 LLM 的自报置信度可靠。
- 温度缩放通常只修正概率尺度,不能修复错误的排序、特征失效或标签错误;在验证分布外重新评估,原来拟合的 \(T\) 可能失效。
- 拒答依赖 score 能把更可能错的样本排在前面。shift 中的高置信度错误会让阈值拒掉低分正确样本;coverage 降低不等于 risk 必然降低。
- 小样本 reliability diagram 会有方差;ECE 还依赖桶数、边界和空桶处理。它是诊断摘要,不是跨数据集的安全证明。
- 多模型交叉可以提供另一条审查线索,但模型错误可能相关、共享训练数据或同一错误前提,不构成独立保证。
迁移问题:把“概率”接到真实决策前,先补齐协议
若把实验换成垃圾邮件拦截、内容审核、医疗分诊或 API 风险路由:你的 validation/calibration 集是否代表线上人群?标签延迟和类别基率是否变化?错误的代价是否对称?你要优化的是整体风险、拒答后的风险,还是某个群体的召回约束?请先写清数据、时间切分、分桶规则、阈值和人工复核路径,再谈“模型有多自信”。高风险场景的风险分级只能帮助安排验证资源,不能替代相应的领域审查、法规要求和人工责任。
交互实验:confidence-calibration
无 JavaScript 时的静态读法:固定 validation logits 为 [3.5,3.2,3.0,2.8,2.6,-3.5,-3.2,-3.0,-2.8,-2.6,1.7,-1.7,1.5,-1.5,1.3,-1.3]、labels 为 [1,1,1,1,1,0,0,0,0,0,1,0,0,1,0,1];分布内测试 logits 为 [4,3.8,3.6,3.4,3.2,3,-4,-3.8,-3.6,-3.4,-3.2,-3,2.8,2.6,2.4,-2.8,-2.6,-2.4,1.7,-1.7,1.5,-1.5,1.3,-1.3],labels 为 [1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,1,0,1]。shift 测试把大量正确样本放在 \(z=\pm1.2\),并让部分 \(z=\pm2\) 是错误标签;这是为了让高 score 错误可见。
默认“原始分数”在分布内为 accuracy=75.0%、NLL≈0.4597、Brier≈0.1685、10 桶 ECE≈23.7%、coverage=100%、selective risk=25.0%。固定 validation 的网格拟合给出 \(T=1.44\);在 shift 上,\(T=1\) 的 NLL≈0.4663、Brier≈0.1424,而套用 \(T=1.44\) 后 NLL≈0.4863、Brier≈0.1518,accuracy 仍为 83.3%。这些数字只属于本页固定玩具数据。
1. 技巧清单:把 AI 用出上限
- 说清任务四件套:做什么 + 给谁看 + 什么格式 + 什么标准。对比:"帮我写个自我介绍" vs "为博士申请套磁邮件写 150 字自我介绍,收件人是做随机优化的教授,突出我的应用数学背景,语气专业不谄媚"——后者通常更容易得到可用输出,原理见第 08 讲(收窄目标分布);
- 料给足(上下文工程的日常版):改代码给完整报错栈,改文章给上下文段落,问建议给你的约束条件(预算/时间/水平)。它通常不会自动知道你没有提供、也无法从上下文推出的约束;
- 给例子:格式要求给一个代表性例子,常比一长段抽象描述更容易约束输出(few-shot,第 08 讲);例子本身也要检查是否把错误模式教给了它;
- 难题让它先想:要求"先列出分析步骤再回答",或在任务适配时换推理模型(第 10 讲);显式步骤仍是待验证的输出,不是正确性证明;
- 迭代而不是重开:第一版不满意,说"哪里不对、往哪个方向改",在约束仍清楚时通常比换个措辞重问更容易收敛——但注意坑 3 的例外;
- 大任务拆步:"帮我写完整个系统"不如"先设计数据结构→我确认→再写模块 A"(编排思想的手动版,第 08 讲);
- 让它问你:"开始前,把你需要澄清的问题一次问完"——复杂任务前置对齐,省掉三轮返工;
- 多模型交叉:重要判断可问两个不同家族的模型,把分歧当作人工核验线索;模型可能共享数据、错误前提或失效模式,这不是独立保证,也不是证据本身。
2. 病理图鉴:六个坑的成因与对策
坑 1 · 幻觉:一本正经地胡说八道
症状:编造文献(第 13 讲红线)、编造不存在的库函数与 API 参数、编造历史细节与数据。成因(第 07/08 讲):训练目标是"像语料的文本"而非"真话",知识盲区里"最像答案的答案"可能就是编造。高发区识别:越具体、越冷门、越可校验的事实越需要警惕(论文卷号、函数签名、统计数字、人物生平);观点类、方法论类也不应免检。对策:可校验的事实一律外部核验;要求"给出处,不确定就说不确定";用 RAG/联网模式把答案约束到检索结果,再核对原始来源;代码类幻觉可通过运行和边界测试暴露一部分,但测试通过不等于语义正确。
坑 2 · 谄媚:你说什么都"您说得对"
症状:你提出质疑,它立刻改口;你的方案有隐患,它夸你想得周全。成因:某些对齐设置会奖励合作、礼貌和被人类偏好的回答,因此可能产生迎合;这不是每个模型、每个任务或每次输出都必然发生。对策:要批评时明确授权("严格挑错,不用照顾情绪");不要泄露你的倾向(问"方案 A 和 B 各有什么问题"而不是"我觉得 A 好,对吧?");重要决策让它"先独立给结论,再看我的想法"。
坑 3 · 上下文腐烂:越聊越笨
症状:长对话后开始自相矛盾、忘记早先的设定、被自己之前的错误答案带偏。成因(第 06/08 讲):注意力在超长上下文上稀释(lost in the middle),且错误输出留在上下文里成为后续生成的"既定事实"。对策:一个任务一个会话;跑偏两轮以上果断新开,带一段自己写的摘要迁移;关键结论及时沉淀到你自己的笔记(外部记忆),别指望对话框。
坑 4 · 自信的语气 ≠ 校准概率,更不等于正确
症状:错误答案与正确答案使用完全相同的笃定措辞。成因:语气是从语料学来的文风,与内容可靠度没有可直接换算关系;模型对自己的不确定性也没有由你的任务数据验证过的可靠自我报告。分类器上的 calibrated probability 是“在特定数据分布、标签协议、分桶评估下,置信度与频率如何对应”的统计量,不是 LLM 说话时的音量旋钮。对策:把"它说得很肯定"从证据清单里删掉;重要结论要求可验证的中间步骤、原始来源或测试结果。需要概率/拒答时,先用代表性校准集验证 score 的排序与覆盖—风险曲线;不要把这个玩具实验的数字套到 LLM 语气上。
坑 5 · 知识截止与静默过时
症状:推荐已废弃的库版本、不知道最新事件、按旧政策给建议。成因:模型的训练资料、检索连接和服务配置都有时间边界(第 08 讲)。对策:时效敏感问题(版本、价格、政策、新闻)强制联网/检索,或自己核对当前日期、版本与官方来源;“你的知识截止到什么时候”只能当提醒,模型对截止时间的回答本身也不可靠,不能替代当前来源。
坑 6 · 隐私与注入:数据往哪去、指令从哪来
症状一(隐私):把公司机密/病历/未发表数据贴进对话。消费级产品、账号类型、地区、设置和产品条款都可能影响数据如何保存或用于改进,且政策会变化;不要凭旧经验推断当前默认值。纪律:敏感数据脱敏后再问;提交前查看当前产品设置与隐私政策,确认组织批准的通道;真正的机密走符合组织要求的本地/受控部署(第 11 讲)。 症状二(提示词注入,第 09 讲):让智能体读网页/邮件/PDF 时,内容里埋藏的恶意指令劫持它的行为。纪律:智能体的权限最小化;"读陌生内容"与"持有敏感权限"不同时授予;危险操作保留人工确认。
3. Verify 文化:一张清单
把验证做成流程而不是美德。AI 输出进入你的工作成果之前,过一遍:
| 输出类型 | 验证动作 |
|---|---|
| 事实/数字/日期 | 独立来源核对(搜索引擎/官方文档/原始论文) |
| 参考文献 | 逐条查 DOI / Google Scholar 确认存在 |
| 代码 | 跑通 + 边界用例测试 + 读懂关键逻辑 |
| 数学推导 | 数值抽查 / 独立重推 / 反例搜索(第 13 讲) |
| 翻译/润色 | 逐句对照,术语抽查回译 |
| 决策建议 | 第二个模型只作另一条审查线索 + 自己列出它没考虑的约束 + 按领域要求复核 |
成本看似高,实则遵循风险分级:低风险闲聊可以少验证,写进论文/报给老板/部署上线的,按表增加验证强度。风险分级只是安排验证资源,不能替代医疗、法律、金融、安全等场景的领域审查、法规要求和人工责任。一个实用心法:AI 负责生成,你负责为真实性签字——签字权从来没有外包出去。
4. 收束:正确的心智模型
把各讲的认识拼成一句话的心智模型:
在给定训练资料、服务配置与上下文窗口内,LLM 可以是一位知识面很广、生成很快、偶尔自信地虚构,也可能为了保持合作语气而迎合的顾问;它并不等于读过整个互联网,且这些能力和边界会随模型、产品与任务而变。
对应的相处之道:让它出初稿、出点子、陪你推演(用足它在当前任务上的速度与覆盖);用清单防它的虚构,用外部记忆补它的上下文限制,用明确授权减少迎合;需要承担责任的最终判断仍由人和相应领域流程完成。
动手:翻出你最近一次重要的 AI 使用记录,对照第 2 节的六个坑自查踩了哪几个;然后把第 3 节的验证清单抄进你的笔记工具,用一周。
方法论到此完备。接下来三讲是垂直实战:写代码与数据分析、文生图、PPT 与文档——把前面的所有原则落到具体工作流上。