🥰 Thank you,李宏毅老师!🥰

本文最后更新于 2026年8月20日 凌晨

以下内容来自于 NTU 李宏毅 2026 Spring 的课程 [传送门] 主要是 Lec 02 Reasoning 的延伸。

背景来自 XHS 理力小李学长(如有问题,请在下方评论区留言,侵删)


图片
所谓 self-correction 能力:LLM 在没有人类介入的情况下,能够发觉自己是错的并自我更正

如何让模型具有自我修正的能力?

  1. 修改 inference 过程
  2. 修改 harness(workflow)
  3. 修改 model 的参数(Reasoning)

修改 Inference 过程

图片
LLM 的生成过程示意图
  • 可能的思路:LLM 在生成过程中会产生一些 representation 和 logit
    1. 能否从这里看出模型可能要输出 error?
    2. 能否根据 Error Detection 的结果进行 Error Correction?

Error Detection + Error Correction

图片 图片
检测错误与修正错误是有可能自动进行的
  • 从 representation 直接判断正误是有可能的(2023)
    1. 收集正确回答和错误回答的 representation
    2. 用以上数据训练一个二元分类器 Error Detection,用于分辨答案到底是对是错
  • 把错误答案修改正确是有可能的(2024)
    1. 假设已经收集到一堆答对的 representation、答错的 representation 以及答错的状态
    2. 对 True 状态的 representation 做平均,对 False 状态的 representation 做平均,二者相减得到一个“True 与 False 之间的差距”(黄色向量)
    3. 将黄色向量加到错误问题的 representation 上,模型会输出正确答案
  • 缺点:过于麻烦,需要收集额外资料才能指导修正!

Contrastive Decoding 系列

图片 图片
error detection + error correction:无需收集额外资料
  • 主要思路:对每一个 token 按下面方式操作
    • 假设模型在正常情况下会输出蓝紫色向量,此时我们不知道这是对是错
      • 可以提取一个 representation
    • 对模型的输入进行某些修改,让模型输出错误的回答
      • 于是可以提取答错情况下的 representation
    • 正常状态 representation - false representation = 黄色向量
      • 注:这一步通常会在前面乘上一个参数 α (<1)\alpha \ (<1)
    • 黄色向量 + 正常 representation,这就有可能让回答远离错误答案
      • 这实质上也可以视作是 (1+α)(1 + \alpha) 正常 α- \alpha 错误
  • 优点:没有改变模型参数,只在 inference 阶段进行修改
  • 缺点:需要多做额外的 inference 操作
图片 图片
常见的做法:用得到的 logit 当作 representation
  • 上图右侧:用聪明模型和笨模型一起回答,默认笨模型说错误答案。
    • 因为两个模型架构就不一样,所以无法直接使用 layer 中的 representation 做运算。
    • 但是二者都会输出 logit!因此可以直接用 logit 做运算。
图片 图片
DoLa 方法
  • Logit lens:用最后一层 LLM head 分别接到中间的每一个 Layer,由此得到一串 输出
  • 想法:
    • 中间的 Layer 比较有可能会输出错误的答案
    • 让靠后的 Layer 减去靠前的 Layer 就能得到正确的答案
  • 优点:因为没有引入额外的模型,在只增加很少的计算量的情况下(本身前面的 Layer 就要做计算),有不错的效果
图片 图片
在视觉上的应用
给模型一个降智咒语,让模型说出一些错误的答案
  • 比如:你是一个很笨的模型,你给的都是错误的答案。
    • 这样就能得到错误的答案,让错误答案和正确答案相减……和前面类似
图片 图片
CAD 最早应用于 RAG 上
  • 想法:
    • 在做 RAG 的时候,LLM 有时候会认为自己完全不需要 RAG
      • 此时将直接输出的结果作为 false 样本
      • 用 RAG 输出的结果作为 正常样本
      • 然后类似之前的方法,得到绿色 output
图片
在影像上也可以使用 CAD 技术
  • 对于黑色香蕉,LLM 可能会先入为主说是黄色
  • 为了去除这一点,可以给图片加上很大噪声,然后再次提问 LLM,将得到的答案作为错误答案。
图片 图片
左图:加噪声是有效的
右图:尽量用特别让 LLM 误会的图片作为“噪声”输入,将图片切块打乱比单纯加噪声效果更好
图片
这样的技术还可以用在语音上

MTI

之前的方法相当于是用更多的算力资源来换取比较好的表现,是否存在一种不那么需要算力且具有 Contrastive Decoding 优势的方法?

图片 图片
在该 CD 的地方再 CD
  • 前提假设:模型在做 decode 的时候,可能只有某几个 token 是特别关键的,但是其他路径可能差不多
    • 只对几个特别重要的 token 做 contrastive decoding
    • 如何衡量是否特别?
      • 几个输出的 logit 都比较平均
  • 但这并没有减少多少计算量!
    • 为了得到错误答案,我需要将错误的 sequence 全部跑过
图片 图片
可以利用跨对话的 KV cache 的特性
  • 如果想要利用 KV cache 的特性,我们必须保证输入的头几个 token 是一致的,所以此时我们选择在尾部扰乱
    • 在正常输出后面加上 “output error”,这样前面的全部可以 cache hit
图片 图片
实验说明上述方法确实有效;用“output error”效果相对好
contrastive 过程也可以放到 latent space/attetion weights 上
  • ω=1\omega = 1:没有使用 Contrastive Decoding
  • ω\omega 越大:表示距离坏输出越远

小结

方法 怎么拿到错误结果 改哪里
Contrastive Decoding (CD) 小模型 output
Decoding by Contrasting Layers (DoLa) 浅层用 logit lens 生成的结果 output
Layer Contrastive Decoding (LayerCD) 用浅层的 Image encoder layer (图像) output
Instruction Contrastive Decoding (ICD) 降智咒语 output
Context-aware Decoding (CAD) 拿掉 Context (e.g., RAG 中的 Retrieved documents) output
Visual Contrastive Decoding (VCD) 图像加噪声、打乱 Patch、盖住重要部分 output
Audio-aware Decoding (AAD) 移除声音 output
Minimal Test-Time Intervention (MTI) 降智咒语,目标:减少算力消耗 output
Visual Information Steering with Token-logit Augmentation (VISTA) 移除图像 hidden representation
Attention-space Contrastive Guidance (ACG) 计算 Attention 时不考虑图像 attention

修改 workflow(Harness)

  • 对于一个标准的 harness,通常会有 Generation - Verification 的步骤。对于改善 Generation - Verification 步骤,有以下两个直觉:
    • 批判比生成容易
    • 生成的过程无法回头,即使有错也无法修正。
      • 随机插入的 reflection instruction 会给模型修正答案的机会
图片 图片
实验:模型的自我反思到底效果如何
  • 左图实验说明:
    • internal:采用直接说“自我反省”
    • external:采用外部 feedback 的方式
  • 右图:
    • 对 Claude Sonnet 4,自我反思并没有带来多大的提升
    • 对 Gemini 2.5 pro
      • 自我反思带来的进步非常少
      • 给模型提供一部分 feedback(最浅色线),就能带来很大进步
      • 给模型完整的 checklist、告诉模型会检查哪些东西(第二条),会带来更大的进步
      • 给模型提供全部 feedback(橙色),能带来最大的进步。
图片
模型也有可能把正确的回答改错
图片 图片
从指标上来衡量模型的自我反思能力
  • 设定指标
    • CL:模型对自己的信心
    • CS:模型的反思能力
  • 结果
    • 模型对自己的信心普遍比较强
    • 模型对答案的纠正能力较为一般
    • CL 和 CS 之间是有些 trade-off 的
图片 图片
让 LLM 自我反思的指令也很重要
  • 如果插入了肯定模型的指令,它就会对自己有信心;
  • 反之,如果插入了质疑模型的指令,它就会倾向于修改答案。
图片 图片
反思过程需要额外的算力消耗,如果将其分到其他部分是否会更划算?
图片
Majority Vote 在中小预算下更有性价比
  • 实验结果:
    • 以 FLOPs 为横坐标,达到 55% 的正确率,Majority Vote 的算力开销只有 Verification 的 1/8

参数更新(Reasoning)

图片 图片
自我修正能力不见得与模型的知识水平相关
图片 图片
自我修正 = 错误检测 + 错误修正,分开来学效果较好
图片
  • 之前做法:二阶段训练
    • 先教模型检测错误
      • 收集数据在接收输入后得到的答案
        • 若见到错误答案,则输出 [REFINE]
        • 若见到正确答案,则输出 [END]
    • 再教模型修正错误
      • 接收到 [REFINE] 后,模型输出修正后的答案
        • 我们手上已有正确答案,因此可以进行训练
  • 上面做法的问题:
    • 模型被 fine-tuning 后,已经不再是原来的模型,它会犯的错已经和原来不一样了!
    • 模型只见过 input+output(绿),没见过 input+output(红),所以直接教模型自我修正可能会有问题
  • 解决方法:让整个 pipeline 综合到一起进行训练!
图片 图片
RLVR 在训练时不在意中间的 Reasoning 过程,只在意最后的 reward
但经过训练后,模型自然产生了系统的 Reasoning 过程(Propose + Verification + Refine)
图片 图片
思考的代价:LLM 解任务的 token 和人类解题消耗的 time 呈一定的正比关系
如果模型想一步答对,那么变化会指数级增长,对训练资料的需求就相对较多;如果让模型拆分步骤回答,则只会线性增长,对训练资料的需求就相对较少

RL 到底带来了什么?

图片 图片
目前有人主张:Reflection 和 Reasoning 是模型本具的能力,RL 的作用是提高走正确路径的概率
图片 图片
左图:横轴为 sample 的次数;纵轴为正确率(pass@k)
右图:(从浅到深)没做RL、做了RL、改变sampling算法(Training-Free)
  • 从左图可以看出,RL 并没有提升模型的极限能力
图片 图片
另一派主张 RL 可以让模型学到本来不具备的新思路
图片
改用 CoT-Pass@k 作为指标,发现 RL 是会提升模型能力的
  • 实验思想:之前用 Pass@k 作为指标衡量存在漏洞!
    • 会不会是因为答案只能从若干个数中选取,所以 base model 多蒙几次就一定能蒙到?
  • 实验做法:改用 CoT-Pass@k 作为指标,不仅检查答案,还检查思考过程,如果全对才算对。
  • 缺点:对 CoT 过程正确性的评判是自动化的(让另一个 LLM 来评判对错),因此可能不准确。
图片
领域现状
  • 模型在 RL 的不同训练阶段可以学到不同的东西
    • 在训练初期,RL 侧重于提升模型输出正确路径的概率
    • 在训练后期,RL 侧重于提升模型的能力
      • 领域内热点:怎样给 reward signal 能让模型更好地学到新的能力

AI Agent Lec 05
http://dbqdss.github.io/2026/08/19/个人学习笔记/AI Notes/Agent/AI Agent 入门/AI Agent-Lec05/
作者
失去理想的獾
发布于
2026年8月19日
许可协议