UGR:推荐里的偏好优化,开始把 uncertainty blindness 与 confidence interface 单独做成一层
背景
补完 FlexRec、DiffuReason 和 RecPilot 之后,站里已经开始把推荐里的 uncertainty 拆得比较细:
- 有的路线把 uncertainty 当成
critic update weight - 有的路线把 uncertainty 写成
latent reasoning noise - 有的路线把风险控制后移到最终输出和用户交互层
但这张图里还有一个默认前提:
偏好优化本身大体还是“对了奖励、错了惩罚”的二元过程
也就是说,即便我们已经在讨论 GRPO、difficulty、beam search 和 risk-aware serving,很多方法还是默认:
- 所有错误都按同一种方式惩罚
- 所有样本都按差不多的节奏学习
- 模型内部有多犹豫,不需要变成显式接口
这一轮我没有继续沿 reasoning verifier 或 objective switching 扩同类条目,而是直接用 arXiv 摘要页、arXiv HTML、GitHub API 和公开仓库目录做定向核验,锁定了一个此前还没进 Story Lab 的入口:
核完之后,我更倾向于把它记成:
推荐里的 preference optimization,开始把 uncertainty blindness 与 confidence interface 单独做成一层
核心判断
UGR 的关键,不是“推荐里也做 uncertainty”,而是指出二元偏好优化本身会失明
这篇 paper 最值得单独写出来的,不是它也用了 GRPO,也不是它又加了一套 risk-aware 分数。
它真正点破的是一个更靠里的系统问题:
现有 generative recommendation preference optimization,默认只看 outcome correctness
论文直接把这个问题命名成:
uncertainty blindness
也就是三件事同时被忽略:
- 模型自己对当前生成结果到底有多确定
- 不同样本的学习难度并不一样
- 模型没有把 confidence 外显成后续系统能消费的信号
这和站里已经补过的几条线不一样。
FlexRec 里的 uncertainty,更像:
critic reliability weighting
DiffuReason 里的 uncertainty,更像:
latent reasoning refinement
而 UGR 补出来的是更基础的一层:
preference optimization loop itself is uncertainty-blind
也就是说,它不是在问“推理怎么更稳”“目标怎么切换”,而是在问:
如果训练目标把 confident hallucination 和 tentative exploration 当成同一类错误,推荐 RL 还能不能稳定学
这逼着 Story Lab 再补一列 uncertainty treatment / confidence interface
补完这篇 paper 之后,我觉得现有方法表又少了一列。
之前我们已经在补:
objective-switch regime / need interfacereasoning uncertainty model / refinement regimeinteraction interface / final output carrier
但 UGR 说明,这几列还不够。
因为下面这些 uncertainty,并不是同一个东西:
FlexRec那种 critic 对 reward 的置信度DiffuReason那种 latent reasoning hypothesis 的噪声UGR这种 preference optimization 对 confident error / easy sample / hard sample 的区分UGR又额外长出来的显式 confidence output,用来做re-ranking / rejection / truncation
所以 Story Lab 后续至少应该再补一列:
uncertainty treatment / confidence interface
至少先区分:
ignored uncertaintycritic-weighted uncertaintyprobabilistic latent refinementexplicit confidence channel
否则 UGR 这种路线,很容易被误写成又一个泛化的 GRPO 小改版。
它真正改的不是一项 loss 权重,而是 reward、optimization dynamics 和 output interface 三层一起改
UGR 的方法设计很完整,不像只是“把 uncertainty 乘进 reward”这么简单。
论文给了三层机制:
uncertainty-weighted reward
它不再把所有错误按同一力度惩罚,而是对高置信错项下更重手,对低置信探索保留空间。
difficulty-aware optimization dynamics
它不让 easy sample 持续主导梯度,而是显式下调 trivial pattern 的更新权重,避免过早收缩到简单样本。
explicit confidence alignment
它不把 confidence 只留在模型内部,而是要求模型把置信判断变成额外可读、可比较、可用于 downstream risk control 的信号。
这意味着它不是在单纯修 reward 公式,而是在重写:
训练信号怎么来
哪些样本该被重点学
训练后有哪些额外接口能暴露给服务层
论文正文写的是 [C_HIGH] / [C_LOW] 这类 confidence token。
但继续核公开仓后,我发现实现层还有一个值得记的细节:
- 训练代码实际加的是
<conf_neg> / <conf_pos> - 还会用
wrong / correct这两个 anchor word 做smart initialization - 查询方式也不是独立 head,而是给生成结果后面再拼一个
Confidence scores:前缀做轻量 forward
这说明 UGR 的公开实现虽然已经不只是 paper-only,但论文和代码之间已经有轻微漂移。
所以更准确的判断不是“开源得很完整”,而是:
公开到 data prep + SFT + RL + eval scripts,但文档很薄,且实现细节与论文表述存在轻微漂移
这篇 paper 最硬的证据,不是它赢了 baseline,而是普通 GRPO 居然会输给 SFT
我觉得 UGR 最值得记住的一点,不在 Table 1,而在 Table 2。
因为这张 ablation table 直接告诉我们:
推荐里的标准 preference optimization,真的可能把模型训坏
在 Office 上:
Only SFT的HR@5是0.1374+ GRPO (0/1 Reward)反而掉到0.1283UGR (Full)才升到0.1407
在 Industrial 上:
Only SFT的NG@10是0.1010+ GRPO (0/1 Reward)掉到0.0931UGR (Full)才回到0.1033
这件事很重要,因为它不是一个小波动。
它直接说明,在推荐这种高稀疏、低命中、beam candidate 质量又高度不均匀的环境里:
粗糙的 binary reward,不一定比不做 RL 更安全
这和站里很多路线形成了一个新对照。
以前我们更常写的是:
RL 能不能比 SFT 更强GRPO 该压在 token、rank 还是 query 上
而 UGR 补出来的是另一句更底层的话:
如果不先解决 uncertainty blindness,RL 甚至可能比 SFT 更差
它的上线价值,也不只是训练更稳,而是多了一条显式 confidence interface
如果 UGR 只证明训练更稳,它还不一定需要单独成 story。
但它后半部分把 confidence 明确写成了 downstream consumer,这就不一样了。
Table 3 直接给出 Confidence-based Re-ranking 的增益:
UGR (Original Rank)在Office上NDCG@10 = 0.1231UGR + Conf. Re-rank升到0.1245
幅度不算夸张,但四个指标都稳步上涨:
NDCG@1从0.0904到0.0933NDCG@3从0.1102到0.1121NDCG@5从0.1169到0.1185NDCG@10从0.1231到0.1245
而 Figure 4 更关键。
论文没有把 confidence 只留在 ranking 调分上,而是继续验证了两种 risk-aware application:
User-level Rejection
对低置信请求直接拒答,NDCG@10 随阈值提升而单调上升。
Item-level Truncation
对尾部低置信 item 动态截断,precision 会明显改善。
这意味着 UGR 的最终交付物不只是:
更准一点的推荐列表
它还多交付了一条新接口:
系统知道什么时候该少说、截断,甚至不该硬给推荐
这一点对 Story Lab 很重要,因为它把推荐里的 risk-aware serving 又往前推了一层。
从项目视角看,后续至少还该补一列:
risk-aware consumer
至少先区分:
re-rankinguser-level rejectionitem-level truncation
否则 confidence 很容易又被写回普通 calibration 或输出解释。
它当前公开边界强于 paper-first,但还不是低门槛复现栈
这条线的开放边界比纯论文路线强很多。
通过 GitHub API 和目录核验,我确认当前公开仓已经有:
data/train/SFTtrain/RLeval/run_train_SFT.sh / run_train_RL.sh / run_eval.sh
README 也把最小 workflow 明确写出来了:
Amazon18 raw data -> preprocess -> text embedding -> RQ-VAE -> SFT -> RL -> eval
同时,代码层还补出了几个关键实现边界:
- backbone 是
Qwen3-8B - item 表示用
4-layer SIDs - 训练分
SFT -> RL两阶段 - RL 默认
num_generations = 16 - 训练与评测脚本都按
8张A100展开
但它离“低门槛复现”还有明显距离:
readme.md只有基础步骤,没有完整结果复现说明- 大量参数仍要求手填本地模型与 checkpoint 路径
- 论文 token 设计和代码 token 设计存在轻微漂移
所以更准确的公开边界应该写成:
paper + repo with data-prep-and-training-scripts / thin docs
而不是 paper-only,也不是 turnkey reproduction。
中文传播层目前仍然很弱,稳定结果大多还是自动摘要页
这一轮我也继续补做了:
Uncertainty-aware Generative Recommendation 中文Uncertainty-aware Generative Recommendation 推荐site:xiaohongshu.com UGR 推荐xhslink UGR 推荐
结果和最近几条 2026 新线比较像:
- 稳定一手入口仍然只有 arXiv 原文和 GitHub 仓
- 中文侧能搜到的主要是
Moonlight、ChatPaper这类自动摘要页 - 还没有看到足够稳定的高价值中文机制稿
- 也没有拿到可复用的稳定
xhslink
所以截至 2026-03-22,这条线的事实判断仍应以:
arXiv 摘要 / HTML / 公开仓目录 / GitHub API
为准。
证据与来源
Uncertainty-aware Generative Recommendation:论文摘要主入口;可直接核到提交日期2026-02-12、uncertainty blindness、三层机制与总判断。UGRarXiv HTML:正文关键入口;Table 1-3、4.3-4.5、AppendixC-D可直接核 ordinaryGRPO低于SFT、confidence re-rank、risk-aware rejection / truncation 与candidate collapse。cxfann/UGR:官方仓库入口;当前已公开data / train / eval目录和SFT -> RL -> eval脚本。UGRPDF:便于稳定复核Qwen3-8B、4-layer SIDs、8张A100、G=16、LoRA 配置与附录实验细节。
下一步
- 把
UGR并入统一方法表,新增uncertainty treatment / confidence interface一列,避免把critic uncertainty、latent reasoning uncertainty和explicit confidence channel继续混写。 - 把它和
FlexRec / DiffuReason / MiniOneRec / ReRe压到同一张偏好优化观察表里,比较各自到底在改reward weighting、difficulty schedule、latent refinement还是serving confidence interface。 - 继续跟踪这条线会不会补出更完整文档、结果 checkpoint、中文高价值机制稿或稳定
xhslink;如果公开边界变化,再回头修正来源池。