腾讯混元大模型算法岗一面面经
- 轮次
- 一面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- Agent-RL 的奖励该如何设计?Outcome Reward、Process Reward、规则奖励分别适合什么场景?
- 长链路 Agent 任务仅有最终奖励时,信用分配为什么困难,有哪些常见解决方案?
- 讲讲 GRPO 主流的衍生改进算法以及各自核心思路。
- 什么场景适合使用 Multi-Agent?对比 Single-Agent,多智能体带来的收益和额外成本是什么?
- PRM 怎么参与 Agent 训练的信用分配?只是每一步打奖励,还是会转成 Advantage 参与训练更新?
- Agent 评测除任务成功率之外还有哪些关键指标?LLM-as-a-Judge 和 Golden Set 的优缺点是什么?
- 混元整体架构是什么样的,它的 Attention 与传统 Multi-Head Attention 有什么不同?
- DPO 训练时 chosen 和 rejected 样本概率同时下降是什么原因,可以怎么处理?
- 对比 TF-IDF 与 BM25,BM25 做了哪些核心优化?
- Agent 多阶段任务各阶段 token 差异大,阶段内 token 归一化算 loss 为什么能够缓解长度偏差?
《参考解析》
1. 三类奖励的适用场景与组合方式:Outcome Reward 只在任务结束时给分(单测是否通过、答案是否命中、工单是否真的解决),适合终态可验证、轨迹较短的场景;它便宜、几乎无法被刷,但信号极度稀疏。Process Reward 对每一步给分,适合步数多、终态模糊或失败率高的长任务(网页操作、多跳检索、跨文件改代码),能提供稠密梯度,代价是要标注或训练 PRM,而且模型很快会学会讨好评分器。规则奖励针对格式与合法性:JSON 能否解析、工具调用是否符合 schema、SQL 是否可执行、是否重复调用同一工具,成本近乎为零、可在线判定,但覆盖窄、容易被「只满足格式」骗过。实践的写法是分层:规则做门禁与轻量 shaping,outcome 做主信号,PRM 补中间稠密项,并对 PRM 的权重做退火,让训练后期回到真值目标上。
2. 长链路信用分配为什么困难:一条轨迹动辄几十上百步,最终只有一个 0/1 信号,于是「哪一步做错了」完全无法归因;同一个动作在不同上下文里价值不同,过程是非马尔可夫的;不同轨迹步数不等,return 的尺度不统一;用整条轨迹做蒙特卡洛估计,方差随步数线性增长;终局奖励还常常被环境随机性污染。常见解法包括:把终态拆成可验证的子目标当检查点;引入 PRM 或价值模型提供稠密信号;用 return-to-go 加折扣做时间衰减;用 GAE 之类基于 value 的基线降方差;对每个关键步 rollout 若干条后续轨迹再平均(逐步蒙特卡洛);用树搜索(MCTS/ToT)回溯节点价值;以及反事实基线(RLOO 的留一均值)。工程上还少不了奖励归一化与 advantage 白化两件事。
3. GRPO 及其主流衍生:原始 GRPO 对同一个 prompt 采样 G 条回答,用组内均值和标准差把回报归一化成 advantage,从而彻底去掉 value critic,只留策略模型加 KL 约束,显存占用和实现复杂度都大幅下降。衍生方向大致三类:一是修正采样与裁剪,DAPO 提出 clip-higher 放宽上界防止熵塌缩、动态采样过滤全对与全错的组、改用 token-level policy loss、对超长回答加惩罚塑形;二是修正归一化偏差,Dr.GRPO 指出按序列长度和标准差归一化本身就是一种隐式长度奖励,去掉之后训练更稳、回答更短;三是修正重要性比粒度,GSPO 把 ratio 从 token 级换成序列级,解决 MoE 路由带来的数值不稳导致训练崩溃的问题,在 Qwen 系列上用得较多。此外还有 RLOO/REINFORCE++ 这类用留一均值做基线的轻量版本,以及把 PRM、verifier 当成额外 advantage 项的变体。
4. Multi-Agent 该在什么时候上:适合的场景有明确的共同特征——任务可以拆成弱耦合的角色或子任务(检索 + 写作 + 校验、多个文件并行改造)、需要上下文隔离(不同子任务要盯不同的长材料)、需要并行探索来提高采样多样性、需要不同的工具与权限边界(一个能执行、一个只能审),或者单模型的上下文窗口确实装不下。收益是分工带来的准确率与吞吐提升,以及可以给不同角色配不同规格的模型来控制成本。代价同样明确:token 与延迟近似按 agent 数量放大;通信层会传播错误,上游的幻觉会污染下游;共享状态与记忆的一致性难维护;信用分配更细碎;评测与调试成本陡增;还可能出现相互等待。经验做法是先拿「单 agent + 好的上下文管理」做基线,只有确认某个子任务真的需要独立上下文或独立权限时才拆。
5. PRM 在训练里的两种接入方式:第一种是当成稠密奖励:把 r_t 设为 PRM 打分,或更常用它的差分 ΔPRM = PRM(s_t) − PRM(s_{t−1}),与终局奖励相加后进入 PPO/GRPO 的 advantage 计算。此时 PRM 在数学上等价于一个势函数,属于 potential-based shaping,不改变最优策略,只是把梯度铺开。第二种是直接当价值函数用:令 V(s_t) ≈ PRM(s_t),则 A_t = γV(s_{t+1}) − V(s_t)(或蒙特卡洛形式 V(s_t) − V(s_{t−1}))就是逐步优势,等于用 PRM 替代了 critic,可以只在工具调用前后这类关键决策点算分以省成本。除此之外 PRM 还大量用于数据侧:best-of-N 重排、轨迹过滤、拒绝采样造 SFT 数据、定位失败步做局部重采样。要防的是 PRM 被刷与校准漂移,通常让 PRM 权重随训练退火到零,并限制它只在训练分布内使用。
6. Agent 评测指标与两种判分方式:除了任务成功率,值得看的还有部分完成度与子目标达成率、步骤效率(步数、工具调用次数、token 与费用)、端到端延迟、工具调用合法率与参数幻觉率、失败后的自我恢复率、对 prompt 与环境扰动的鲁棒性、多次运行的一致性(pass^k 而不是只看 pass@k)、安全与越界率,以及与基线模型的对战胜率。LLM-as-a-Judge 的优势是可扩展、能评开放式回答、rubric 灵活;缺点是存在位置偏好、长度偏好、自我偏好等系统偏差,多次评分不稳定,容易被「看起来对」的答案骗过,必须配交换顺序、多次采样取均值与人工抽检校准。Golden Set 的优势是标准确定、可跨版本对比、能控制数据污染;缺点是建设与维护成本高、覆盖面窄、容易过拟合,对开放式任务表达能力有限。两者是互补关系:golden set 守底线,judge 看趋势。
7. 混元的架构与 Attention 差异:混元旗舰模型是 Decoder-only 的稀疏 MoE,总参数量数百 B,但每个 token 只激活几十 B,router 只把 token 送给少数专家(通常还配共享专家),用相同的激活算力换更大的模型容量。Attention 上它不再像原版 Multi-Head Attention 那样每个头都有独立的 Q/K/V:采用的是 GQA,多个 query 头共享一组 KV 头,KV cache 随 KV 头数增长而不是随 attention 头数增长,长上下文下的显存与带宽压力显著下降。更关键的是跨层注意力(Cross-Layer Attention):相邻两层共享同一份 KV 表示,相当于把 KV cache 再压掉一半,这才把可用上下文推到 256K 量级。新一代还走了 Mamba-Transformer 混合路线——大部分层用状态空间模型做 token mixer(线性复杂度、推理状态恒定),少数 Transformer 层负责精确检索,整体依然是 MoE。和 MHA 的本质差别可以概括为:省 KV、撑长上下文、稀疏用算力。
8. DPO 中 chosen 与 rejected 概率同时下降:DPO 优化的是隐式奖励差 β·[log π_θ(y_w)/π_ref(y_w) − log π_θ(y_l)/π_ref(y_l)],它只约束两者的相对差,从不约束各自的绝对似然。因此只要 rejected 的概率掉得比 chosen 更快,loss 就在下降,哪怕两条序列的绝对概率一起往下走。常见诱因:训练数据与当前策略分布差距过大(off-policy/OOD);学习率过大或训练太久;β 设得太小;chosen 自身质量不高或带标注噪声;序列很长使得 logprob 累加把失配放大;以及数据里 chosen 与 rejected 差异过小。处理办法:加 SFT/NLL 正则项把绝对似然锚住(DPO+NLL、RPO 一类做法);换成 IPO/CPO/SimPO 等有界或去参考模型的目标;清洗数据,剔掉 chosen 质量差和过于相似的样本;混入 on-policy 采样数据;降低学习率、调大 β 并早停;同时监控 chosen 的平均 logprob 与输出熵,一旦持续下滑就停。
9. BM25 相对 TF-IDF 的核心优化:TF-IDF 的 tf 随出现次数线性增长,且完全不惩罚长文档,结果是长文档天然占优、往文里堆关键词就能提分。BM25 是概率检索框架下的排序函数,做了三件事。第一,词频饱和:分母里的 k1·(1 − b + b·dl/avgdl) 让 tf 增大时收益递减,避免堆词。第二,文档长度归一化:用参数 b 控制长度惩罚强度(常用 0.75),长文档不再因为词多而占便宜。第三,IDF 换成 Robertson-Sparck-Jones 形式并做平滑,罕见词权重更合理、也不会出现负权重。经典 BM25 还保留查询词频项 k3;工程上常进一步扩展为 BM25F 做多字段加权,或与学习型稀疏检索(如 SPLADE)融合。一句话概括:TF-IDF 是加权计数,BM25 是带饱和与长度惩罚的概率相关性打分。
10. 阶段内 token 归一化为什么能缓解长度偏差:多阶段任务里各阶段的 token 数能差一个数量级(读文件几百、写代码几千)。如果按整条轨迹的总 token 数做归一化(或直接对整条序列求和),梯度里每个 token 的权重就是 1/L 或 1,短阶段几乎被淹没,长阶段主导参数更新;模型会学到「写得越长、说得越多,占的梯度越大」,于是出现冗长与长度膨胀。改成在阶段内部先对 token 求平均,再对各阶段的 loss 等权平均,等价于让每个阶段对梯度的贡献与它自身长度无关——短阶段往往是关键决策点(选工具、给结论),也能拿到充足监督;长阶段则不会因为 token 多而垄断更新。这和 DAPO 的 token-level loss、Dr.GRPO 去掉长度与标准差归一化的分析是同一件事:归一化方式本身就是一个隐式的长度奖励,改归一化就是在改偏好。