百度 算法岗面经 两轮 智驾决策与大模型
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
第一轮(2026 年 8 月 20 日)
- 请做一下自我介绍。追问:为什么模型只使用一个 Head?
- Loss 和 Reward 是如何设计的?
- 决策任务的 Label 是什么?预测任务如何监督?
- 预测结果不解码、只使用高维特征时,如何监督预测精度?
- 整个训练采用开环还是闭环?
- 主车动作会影响周围车辆吗,仿真中如何实现这种交互?
- 是否评估过交互合理性、训练场景质量和 Corner Case 配比?
- 模型只输出离散决策时,如何控制车辆并生成轨迹?
- 如何评价模型效果,并与其他算法进行比较?
- 不同程度的减速如何映射到碰撞风险?
- 单独训练决策模型与实际工程落地之间有哪些差距?
- 数据清洗具体如何进行?
- C++ 掌握到什么程度,是否做过部署工作?
第二轮(2026 年 8 月 14 日)
- 请做一下自我介绍。
- 大模型实习经验与智驾算法岗位有哪些共同点,哪些能力可以迁移?
- 自建数据集的规模是多少,评估集规模是多少?
- 采用 SFT 与 GRPO 后,相比原有模型做了哪些改动?
- 数据层面存在哪些问题,做了哪些改进?
- 模型最终输出的内容是什么?
《参考解析》
为什么只用一个 Head 是个取舍题:单 Head 输出一个联合分布(比如「行为类别 + 目标车道 + 目标速度」打包进一个分类头),参数共享、样本效率高、推理只跑一次,也省掉了多任务之间的权重调参;代价是任务之间可能梯度打架——行为意图和速度决策相关性高时共享有益,而像「感知回归」和「行为分类」这种异质任务硬塞一个头就会互相拖累。真被追问时给出判断标准:任务相关性高、标注量小、推理预算紧就用共享头,任务异质或需要独立调权时再拆多 Head / 多头注意力。能说出「我先试了共享头,因为…」比背结论好。
Loss 与 Reward 的设计要点:监督学习阶段用交叉熵拟合专家动作(多模态时用 Laplacian 混合或 anchor 分类 + 偏移回归,输出分布而不是单点),再叠一个 KL 约束防止策略分布跑得太偏。强化学习阶段(GRPO / PPO)Reward 是一个加权标量,通常分四类:安全(碰撞、闯红灯、压实线、冲出可行驶区域给大负值或直接终止)、舒适(加加速度 jerk、横向加速度、曲率变化)、效率(通行时间、与限速的偏差、跟车距离)、合规(车道保持、礼让)。关键是权重与量纲:各项先归一化到同一量级,安全项用硬约束或 -100 级的大惩罚,而不是和其他项同权重的小扣分——否则策略会学会「轻微碰撞换效率」。
决策与预测任务的 Label 与监督方式:决策任务的 Label 是专家驾驶行为,常见做法是离散成行为类别(跟车/换道/让行/停车)加上目标车道、目标速度这类结构化标签,由专家轨迹反推或人工标注;预测任务的 Label 是周围车辆未来几秒的轨迹序列,监督方式不是单纯回归坐标,而是「分类 + 回归」的多模态输出(若干条候选轨迹各带概率,回归各自偏移)。如果只用高维特征不解码,监督要走辅助任务:把特征接一个未来轨迹预测头算 NLL 作为辅助 loss,或者做对比学习(同一场景不同时刻为正样本、不同场景为负样本),保证特征里保留了未来运动信息;否则特征会退化成只对当前帧分类有用的东西,下游规划用不上。
开环训练和闭环训练的差别必须说清:开环是拿真实日志喂模型、用专家动作监督,训练便宜、指标可复现,但存在因果混淆——模型的动作不会改变输入分布,推理时的误差累积和分布漂移完全暴露不出来,开环指标好不等于在车上好。闭环是模型的动作真的接到仿真器里控制主车,后续状态由模型行为决定,能暴露级联误差、震荡和死锁,代价是仿真昂贵、结果对场景初始化敏感、甚至不可复现。工程实践一般是开环预训练 + 闭环微调与验收,并且要明确两个阶段各自的指标口径:开环看位移误差 / 分类准确率,闭环看碰撞率、接管率、通行效率。
离散决策怎么变成可执行的轨迹:模型输出离散的决策(换到左车道、目标速度 60、减速度档位),规划层负责解码:横向以目标车道中心线为参考,用五次多项式或螺旋线在横向采样出满足曲率约束的路径;纵向把目标速度档转成 s-t 曲线(梯形速度曲线或多项式),或者把离散决策当成 MPC 的参考与约束项,让优化器在满足运动学(曲率、加速度、jerk 上下界)的前提下生成连续轨迹。中间必须做可行性校验:曲率超限、加速度超限、与障碍物时空重叠都要回退到保守动作,不能让分类头的输出直接变成方向盘转角。
不同程度的减速怎么映射到碰撞风险:主流做法是用 TTC(Time To Collision,本车与目标沿相对运动方向相撞的剩余时间)分档:TTC 大于 3 秒属于安全跟车,做轻微松油门或小减速;1.5 到 3 秒进入预警区,给中等减速;小于 1.5 秒进入紧急区,直接最大减速度制动。也可以用 RSS(责任敏感安全)算最小安全距离,或者用势能场/占据栅格给出连续风险值而不是分档。要注意 TTC 只对真正有冲突的目标算:先做横向重叠判定(同车道或车道切入),否则相邻车道正常行驶的车会算出虚假的高风险,导致幽灵刹车。
数据清洗与 Corner Case 配比:清洗分三层——物理可行性过滤(切掉加速度、jerk、曲率超限的轨迹,识别传感器跳变和标注抖动)、去重(对场景做特征哈希或轨迹相似度聚类,避免近似重复样本反复进训练集)、标注一致性校验(同一场景多次标注的差异过大就回炉)。Corner Case 靠主动挖掘而不是随机采样:按场景类型打标(加塞切入、鬼探头、静止障碍、施工区、大车遮挡、逆光/雨夜),统计各类型占比后做定向补齐,让危险场景在训练集里的占比明显高于它自然出现的频率,但也不能全喂长尾——直行跟车这类高频场景承载了基础能力,配比失衡会让模型在正常场景里也犹豫。评估集要和训练集场景隔离,并且单独留一套长尾测试集看边际效果。
SFT 与 GRPO 的关系:SFT 是模仿学习,用(输入,标准输出)对做极大似然,作用是让模型学会格式、领域语言和基本能力,但它只能拟合「平均答案」,学不到「哪个答案更好」。GRPO(Group Relative Policy Optimization)是策略优化:同一个 prompt 采样一组 G 个回答,用各自的 reward 减去组内均值、除以组内标准差得到归一化优势,再按这个优势做策略梯度更新,并加 KL 惩罚约束不要偏离参考模型太远。相比 PPO 它去掉了 value/critic 网络,省掉一份和策略同规模的显存与训练开销,适合 reward 能程序化校验的任务(数学、代码、格式约束)。落到「相比原模型改了什么」时,要具体说清是加了 SFT 数据域、换了 reward 设计、还是调了采样组大小 G 与 KL 系数。