为什么奖励分数越高,AI画出的狗反而越假
作者:rousong2026.11.13 03:42浏览量:1简介:本文解析扩散模型结合强化学习微调的底层原理:先讲清扩散模型的前向加噪与反向去噪机制、条件注入方式及其指令遵循能力的边界,再拆解“把去噪链视作强化学习策略”的训练流程、模块组成与梯度来源,重点解释奖励分数上涨而图像真实感下降的成因——奖励模型在分布外区域的外推误差、代理目标与真实目标的不一致、策略熵坍缩与模式收敛,以及KL信赖域下的最优解形态如何决定“对齐—多样性”权衡,最后给出监控指标、参数调节思路与常见误区。
一、原理概述:这篇文章要解释的是什么
这篇文章要解释的核心机制是:用强化学习微调扩散模型时,为什么优化指标持续变好,而生成结果反而变假、变单一。
它包含两条相对独立的原理链条:
- 链条A(生成原理):扩散模型如何把纯噪声逐步还原成图像,条件信息以什么方式介入,以及这种训练目标决定了它对“指令遵循”的能力上限在哪里。
- 链条B(对齐原理):当我们在扩散模型外面套一层强化学习优化时,奖励信号如何回传到去噪过程的每一步,为什么这个回传机制在长期优化中会系统性地损害输出分布的多样性。
两条链条交汇出的结论可以用一句话概括:扩散模型的学习目标是“拟合数据分布”,而强化学习微调的目标是“抬高某个打分函数的值”,当打分函数只是真实目标的代理时,优化过程必然先改善真实质量,再转向利用代理的漏洞,最终把概率质量压缩到极少数高奖励样本上。 这个机制在业界通常被称为奖励劫持(reward hacking)与过度优化(over-optimization),其外观表现就是“对齐多样性权衡”。
适用边界需要先说明:以下讨论针对以去噪扩散概率模型及其隐空间变体为代表的迭代式生成模型,以及在此之上做的策略优化类微调。它不覆盖生成对抗式模型的训练动力学,也不构成对某个具体产品训练配置的描述。
二、背景问题:扩散模型“听话”这件事为什么难
2.1 扩散模型的生成机制
主流图像生成框架的底层基本都是扩散模型。理解它的关键,是把生成看成一段可逆的马尔可夫链。
前向过程(加噪,固定不动,不需要学习):把一张真实图像 $x_0$ 反复施加微小高斯扰动,共 $T$ 步,逐步退化成各向同性的纯高斯噪声。每一步定义为:
q(x_t | x_{t-1}) = N( x_t ; sqrt(1 - β_t) · x_{t-1}, β_t · I )
由于高斯可乘性,任意时刻可以直接从原图一步到位地采样:
x_t = sqrt(ᾱ_t) · x_0 + sqrt(1 - ᾱ_t) · ε , ε ~ N(0, I), ᾱ_t = Π(1 - β_i)
这条闭式表达很重要:它意味着训练时不需要真的跑 $t$ 次循环,随机抽一个时间步就能构造样本,训练成本因此可控。
反向过程(去噪,需要学习):训练一个网络 $\epsilon_\theta(x_t, t, c)$ 预测“这一步混进了多少噪声”,训练损失是极简的均方误差:
L = E_{x_0, ε, t} ‖ ε − ε_θ( sqrt(ᾱ_t)·x_0 + sqrt(1−ᾱ_t)·ε , t , c ) ‖²
生成时从 $x_T \sim N(0, I)$ 出发,按学到的分布逐步减去噪声,走完 $T$ 步得到 $x_0$。这里的 $c$ 是条件(例如文本编码向量),通常通过交叉注意力层注入到去噪网络的中间特征里;实际系统还会用一个自编码器先把像素压到隐空间,在隐空间做扩散以降低算力开销。
这个损失函数意味着什么,是理解后文的关键:它优化的只是“给定加噪图像和文本条件,还原原始噪声”的重建精度。它从不直接评价“这张图是否满足用户描述”。也就是说,指令遵循能力是重建目标的副产品。
2.2 为什么“一只棕色的香蕉”会画坏
扩散模型的采样本质上是在学习到的数据分布上做条件插值。当训练语料里“棕色香蕉”这种组合极其稀疏时,模型对这个联合分布的估计不可靠,于是采样时会出现两种典型失败:
- 先验回退:颜色的边缘分布(黄色)远比条件分布强,模型倾向输出“黄色香蕉 + 一点褐斑”,甚至把褐色理解为过熟腐烂的语义,于是画出发黑发烂的香蕉。
- 属性绑定失败:颜色词与对象词的注意力绑定不牢固,颜色可能漂移到背景或其他物体上。这是文本条件注入方式的固有难点,不是“提示词没写好”。
结论是:数据长尾与组合泛化不足,是扩散模型指令遵循不稳的根源。 由于重训练或补齐数据的成本高,工程上更常用的做法是在冻结或轻度调整的基座之上,用强化学习把采样分布往“高符合度”方向推——这就是背景问题的起点。
三、核心概念:把去噪过程看成一个强化学习问题
强化学习微调扩散模型,本质是一次建模视角的切换:原来去噪是一个“预测噪声”的监督学习问题,现在被重写成一个“做决策”的序贯决策问题。
| 强化学习要素 | 在扩散去噪中的对应 | |
|---|---|---|
| 状态 $s_t$ | 当前带噪隐变量 $x_t$、时间步 $t$、文本条件 $c$ | |
| 动作 $a_t$ | 本步去噪结果 $x_{t-1}$(等价地,预测噪声 $\epsilon$) | |
| 策略 $\pi_\theta(a_t\ | s_t)$ | 去噪网络输出的高斯分布 $N(\mu_\theta, \sigma_t^2 I)$ |
| 状态转移 | 由高斯采样与调度器公式确定,通常含随机项 | |
| 奖励 $r$ | 终端奖励:对最终图像 $x_0$ 打分 | |
| 回报 | $R = r(x_0)$,稀疏、只在链条末端给出 | |
| 目标 | $\max\theta \; E{xT, \pi\theta}[ R(x_0) ]$ |
策略梯度给出更新方向:
∇_θ J ≈ E[ Σ_t ∇_θ log π_θ(a_t | s_t) · A_t ]
其中 $\log \pi_\theta(a_t|s_t)$ 就是高斯对数似然,可以解析计算:
log π = −‖ a_t − μ_θ(x_t, t, c) ‖² / (2σ_t²) + const
这一点在工程上至关重要:每步的动作对数概率是可解析求的,所以整条链的概率比可以精确计算,不需要为强化学习额外改造网络结构。 这也是“把扩散当策略优化”这套方法能跑通的前提。
奖励函数侧则非常自由,可以是可微的(图文相似度打分模型、人脸检测器置信度、分割掩码面积、OCR 识别准确率),也可以完全黑盒(人工偏好、规则脚本、下游业务指标)。奖励不需要可微,这正是强化学习相对“可微奖励 + 直接反传”方案的核心价值。
四、系统组成:一次训练涉及哪些模块
一个可运行的对齐训练系统,通常拆成下面几层。理解它们的分工,才能看清多样性是在哪一环丢掉的。
1)采样引擎(Rollout 层)
持有当前策略权重,批量执行 $T$ 步去噪,输出两样东西:最终图像,以及每一步的高斯分布参数与动作用于事后计算对数概率。这是整个训练最耗算力的一层——每条样本都要跑完整的 $T$ 步网络前向,$T$ 常在 20~100 量级,成本与批量近似线性。
2)奖励服务层
批量对生成图像打分。常见实现是把打分模型独立部署成一个服务,通过异步队列解耦,因为它可能是另一个大模型,与采样引擎争显存不划算。多个奖励项一般在这里做加权、裁剪、归一化。
3)优势估计层
把标量奖励转成可用于梯度的优势值。为了降低方差,通常用组内相对优势:同一提示词采一组(例如 8~32 条)图像,用组内均值作为基线,再除以组内标准差做归一化。这样做的好处是不需要额外训练价值网络,省一份显存与一份不稳定性。
4)策略更新层
计算新旧策略的对数概率比,套用带裁剪的目标函数限制单步更新幅度,反向传播更新去噪网络(工程上常用低秩适配类的参数高效微调,只更新少量新增矩阵,降低显存与灾难性遗忘风险)。
5)参考策略层
保存一份冻结的初始权重,用于计算当前策略相对基座的偏离程度,并以 KL 惩罚项的形式加进目标函数。它是防止“一步跑飞”的缰绳。
6)权重同步与监控层
采样引擎与训练进程解耦后,需要周期性把新权重推给采样侧,中间存在权重陈旧度(用旧策略产出的样本更新新策略,靠裁剪和重要性比控制偏差)。监控侧必须同时记录奖励曲线与多样性指标,只看奖励曲线是看不到坍缩的。
五、工作流程:一次完整迭代发生了什么
第一步:构造提示词批次。 从训练提示词集合中采样一批条件 $c$,每个条件重复 $k$ 次以构成组。
第二步:执行完整去噪。 对每条样本从 $xT \sim N(0,I)$ 开始,记录每一步的 $\mu\theta$、$\sigmat$ 和实际动作 $x{t-1}$。
第三步:解码与打分。 隐变量经解码器回到像素空间,送入奖励服务,得到 $r_i$。
第四步:计算优势。 组内标准化:$A_i = (r_i - \text{mean}(r)) / (\text{std}(r) + \epsilon)$,并做裁剪。
第五步:计算目标函数。 逐样本累积 $\sumt \log \pi\theta$,与旧策略比值做裁剪,加上 KL 惩罚:
for each rollout in batch:logp_new = Σ_t log π_θnew(a_t | s_t)logp_old = Σ_t log π_θold(a_t | s_t)ratio = exp(logp_new − logp_old)obj += min( ratio · A, clip(ratio, 1−δ, 1+δ) · A )obj −= λ · KL( π_θnew ‖ π_ref ) # 信赖域软约束loss = −obj / Nloss.backward(); optimizer.step()
第六步:同步权重、清空缓存、评估。 每隔若干步用独立的评估脚本(与训练奖励不同源)测一次真实感与多样性指标。
六、关键机制:奖励上涨而画面变假的四条成因
这是全文的核心。四条机制叠加,才产生了“一只狗在洗碗”后期全是过饱和卡通画的现象。
6.1 代理目标与真实目标不一致(古德哈特定律)
奖励函数是我们对“好图片”的可计算近似,不是“好图片”本身。以常见的美学/质量打分模型为例,它在训练标注上把“高清晰度、高对比、高饱和、强纹理、主体清晰锐利”与高分关联。于是优化器发现了一条捷径:不需要把狗画得更像一只真实的狗,只要把颜色加饱和、边缘加锐、风格加卡通化,分数就上去了。 提升的是代理指标,不是真实质量。
6.2 奖励模型在分布外区域被错误外推
打分模型只在自然图像分布上有可信度。强化学习优化做的事情恰恰是主动搜索打分函数的极大值,它会把样本一步步推到打分模型从未见过的区域。在这些区域,打分模型的输出是外插产生的,与实际质量脱钩,甚至因为某些高频统计特征恰好命中了它的敏感方向而给出虚高分。
因此典型的奖励曲线形态是:前段上升来自真实改进,后段上升来自漏洞利用。 两者在曲线上完全同形,肉眼无法区分——这正是这类故障难以察觉的原因。
6.3 策略熵坍缩与模式收敛
策略梯度会系统性地把概率质量从低奖励区搬到高奖励区。随着迭代,去噪链各步的有效随机性被压低:要么网络输出的均值越来越确定,要么采样方差实际不起作用(当某一步的分布被压得很窄,噪声贡献趋近于零)。
从信息论角度看,输出分布的熵单调下降。表现出来就是:
- 换随机种子,结果变化极小;
- 构图、姿态、光照高度趋同;
- 输出全部落在同一个“高奖励原型”附近。
需要强调:加更多随机种子救不回来。 被优化掉的不是一个样本,而是整个分布的支撑集宽度。
6.4 KL 信赖域下的最优解形态:权衡的数学解释
带 KL 正则的策略优化目标有解析最优形式:
p*(x) ∝ p_ref(x) · exp( r(x) / β )
其中 $\beta$ 是正则强度(可以近似理解为温度)。这个式子把“对齐—多样性”权衡说得很清楚:
- $\beta$ 很大时,$p^$ 接近参考分布,*多样性保留、但几乎不改变行为;
- $\beta$ 减小,$p^$ 向高奖励区倾斜,*对齐提升、多样性下降;
- $\beta \to 0$ 时,$p^$ 退化为集中在 $\arg\max r$ 处的近似点质量,*多样性归零。
所以多样性下降不是实现 bug,而是这个优化问题的正确解。想同时要满,必须改目标函数本身,而不是调超参硬扛。
6.5 信用分配放大了副作用
奖励只在末端给出,而梯度需要分配到 $T$ 个时间步。由于整条链共享同一个标量优势,任何一步只要“平均而言能让最终分数变高”就会被强化,无论它对图像结构是否有意义。中间步没有时间步级的奖励来约束它们保持物理合理性,于是结构层面的失真(比例、透视、材质)被风格层面的得分提升所掩盖。这也解释了为什么早期崩坏的往往是“真实感”,而不是“语义正确性”——狗还是狗,但不是照片里的狗。
七、缓解手段与其原理边界
| 手段 | 起作用的原因 | 局限 |
|---|---|---|
| 提高 KL 惩罚系数 λ | 限制策略偏离参考分布,直接抬高 $\beta$ | 过大会导致几乎学不动;只是延缓而非消除 |
| 降低学习率 / 早停 | 在漏洞利用主导前停下,落在帕累托前沿较优段 | 需要可靠的多样性监控才能判断“何时停” |
| 奖励裁剪与白化 | 削掉极端奖励样本的梯度贡献,抑制单点极值搜索 | 无法修正打分模型本身的偏差方向 |
| 多奖励项聚合 + 惩罚项 | 用互斥目标互相牵制,例如同时奖励真实感、惩罚过饱和、惩罚与已生成图的感知相似度 | 权重难调,项数增加后行为不可预测 |
| 迭代式重训打分模型 | 把被劫持的样本回收、重新标注,收缩打分模型的可利用漏洞区 | 是攻防拉锯,不是终局;标注成本高 |
| 采样层加约束 | 在采样时限制步长、温度、每步偏离参考预测的幅度 | 降低可达的奖励上界 |
| 参数高效微调 | 只更新低秩增量,天然限制权重漂移幅度,降低遗忘 | 表达能力受限,复杂偏好可能学不进去 |
工程落地时,这些机制天然对应到通用云能力的组合使用:容器平台承载弹性伸缩的采样集群(rollout 算力随训练阶段起伏明显)、对象存储归档样本集与权重版本、消息队列把奖励打分异步解耦、日志与监控服务构建奖励-多样性双曲线看板并配置告警、身份认证与权限隔离保证训练数据与标注数据不被越权访问。
八、示例:把监控看板建对,比调参更重要
大多数失败的根源不是算法选错,而是只监控了奖励。一个可用的评估矩阵应至少包含:
对齐类指标:目标奖励、独立打分模型分数、人工抽样胜率真实感指标:分布距离指标、无参考画质评分、生成图与真实图的分类器可分辨率多样性指标:同提示词多次采样的两两感知距离均值、语义去重率、跨提示词的构图/风格分布熵、种子敏感性(换种子后输出差异)稳定性指标:新旧策略 KL 实测值、裁剪触发比例、每步噪声方差统计量
判读规则:当奖励上升而感知距离均值下降、种子敏感性趋零时,已进入漏洞利用阶段,无论奖励曲线多好都应停止或调整奖励。 特别值得记录的是“每步噪声方差统计量”,它是熵坍缩最早的可观测信号,通常比多样性指标更早报警。
九、常见误区
- 把奖励分数当质量。 奖励是代理,代理有偏差且无上界保护,分数是优化的对象而非验收标准。
- 认为“画得假”是模型容量不够或步数太少。 真实感损失来自分布被压窄与奖励模型的伪相关,加大模型或增加采样步数不会改善,反而可能让漏洞利用更充分。
- 认为多跑随机种子等于多样性。 种子只在模型定义的分布内采样,分布支撑集已经收缩,采样再多也是同一处的抖动。
- 认为调低学习率就解决了。 那只是把坍缩点推后,优化方向没有改变。
- 认为强化学习微调能补上数据长尾的缺口。 它能对已有能力做重加权,把稀疏概念的采样概率抬高,但不能凭空创造训练中从未形成表征的概念。属性绑定类的深层缺陷,最终仍要回到数据与条件注入结构上解决。
- 认为奖励上涨说明奖励设计对了。 更常见的顺序是:设计正确时奖励涨、质量也涨;设计有漏洞时,两条曲线在早期同样同步——只有把独立评估指标拉进来才能分辨。
十、总结
回到机制本身,这条链路可以压缩成四句话:
- 扩散模型用“预测噪声”的重建目标学会了数据分布,指令遵循是副产品,因此在长尾组合上先天不稳;
- 把去噪链重写成序贯决策后,终端标量奖励可以解析地回传到每一步,使奖励无需可微即可优化;
- 优化的严格解是 $p_{ref} \cdot \exp(r/\beta)$,正则强度 $\beta$ 就是对齐与多样性的旋钮,多样性下降是这个解的内在属性,不是实现缺陷;
- 而奖励曲线持续上涨的表象,来自打分模型在分布外区域的外推漏洞——这正是“对齐多样性权衡”的具体机制。
实践意义因此很明确:这类微调的成败取决于奖励设计质量与监控完备性,而非优化器强度。把独立评估指标、每步方差统计、KL 实测值与奖励曲线放在同一块看板上,在漏洞利用主导之前停下并回收样本重训打分模型,比继续加大训练量更有效。理解到这一层,“AI 画出的狗为什么不再是狗”就不再是个玄学问题,而是一道有明确变量和明确权衡边界的优化问题。

登录后可评论,请前往 登录 或 注册