途虎养车 大模型算法开发 一面

1. 自我介绍

2. 介绍下你简历上这个项目, 说说难点, 遇到什么问题,怎么解决的,你这个项目是网上找的 还是怎么来的

3. 为什么汽车后市场推荐比普通内容推荐更难做长期目标优化

因为它不是纯消费型即时反馈场景,很多行为从曝光到成交会跨天甚至跨周,中间还夹着门店库存、服务时段、用户行程安排和价格波动这些外部因素。你今天推荐一个保养套餐,用户不一定马上下单,但不代表这次推荐没有价值;同样,用户今天点击了也不一定转化,因为可能只是先了解方案。长期目标优化难在信用分配,你必须回答当前一次曝光到底对后续留资、咨询、预约、核销贡献了多少。

工程上通常不会直接拿“最终成交”做唯一监督,而是拆成若干代理目标,比如咨询、收藏、加入购物车、到店意向、支付、核销,再配合时间衰减和归因窗口做多目标学习。否则模型很容易被即时点击带偏。

4. 如果只给你曝光、点击、咨询、下单、核销五种信号,你会怎么设计多目标训练

这五种信号天然是一个漏斗,越往后越稀疏但业务价值越高。比较稳的做法不是简单给每个目标拍一个权重,而是把它们拆成共享底座 + 分任务塔,底层学通用用户与商品表示,上层分别学习 CTR、咨询率、订单率、核销率。同时会考虑漏斗依赖关系,比如核销只在下单样本上有意义,咨询更多是中间意图变量,适合和订单目标做辅助约束。

如果要进一步做深,会对目标做条件建模,例如学习 P(核销|下单)P(下单|点击),再拼成最终价值估计。这样相比直接拟合最终成交,更容易收敛,也更贴近业务路径。

import torch

click_loss = torch.tensor(0.31)
consult_loss = torch.tensor(0.42)
order_loss = torch.tensor(0.57)
redeem_loss = torch.tensor(0.66)

w = {"click": 0.2, "consult": 0.2, "order": 0.25, "redeem": 0.35}
total_loss = (
    w["click"] * click_loss +
    w["consult"] * consult_loss +
    w["order"] * order_loss +
    w["redeem"] * redeem_loss
)
print(total_loss.item())

5. 为什么很多推荐系统线上强调 AUC,但你不能只拿 AUC 解释模型好坏

AUC 衡量的是排序一致性,能反映模型区分正负样本的能力,但它对分布偏斜、校准误差和业务阈值并不敏感。一个模型 AUC 高,不代表它在高价值样本区间也一定更强,更不代表上线后 GMV、留资率或者核销率一定提升。尤其在强曝光偏置和多目标场景下,AUC 只是一个必要但不充分的指标。

真正在线上决策里,往往还要结合 GAUC、分桶 AUC、Calibration、PR-AUC、TopK 命中率、业务分层表现和最终收益指标一起看。AUC 更像底线能力检查,不是最终业务判断。

6. ROC 和 PR 曲线在极度不平衡样本下各自说明什么

ROC 曲线看的是 TPR 和 FPR 的关系,它在样本极不平衡时有时会显得“过于乐观”,因为大量负样本会让 FPR 的变化不那么敏感。PR 曲线则直接看 Precision 和 Recall,更能反映在少数正样本场景下模型到底把真正有价值的样本抓出来多少。因此在咨询、支付、核销这类极稀疏目标里,PR-AUC 往往比 ROC-AUC 更能说明问题。

但 PR 曲线也有自己的局限,它对正样本基线非常敏感,不同数据集之间不能简单横向比绝对值。所以实践中常常两者都看,同时结合特定业务阈值下的 Precision@K 或 Recall@K。

7. 为什么说推荐系统里的标签延迟会直接破坏训练数据分布

因为你采样训练数据时,很多本该成为正样本的曝光记录还处在“未来会转化,但当前没转化”的状态。如果你过早把它们当负样本打进训练集,模型就会把一批真实高价值样本学成负例,尤其对长链路决策场景影响很大。这样一来模型会越来越偏好即时反馈强的物料,长期价值内容会被系统性打压。

解决思路通常不是简单等足够久再训练,因为那样数据新鲜度又会下降。比较常见的是做延迟校正、窗口分层、半监督标注,或者同时建模即时目标和延迟目标,让系统在新鲜度和准确性之间找平衡。

8. 用户保养需求这种低频行为,为什么不能完全用普通 CTR 思路去做

低频行为的问题在于反馈稀疏、决策周期长、触发条件强依赖外部状态。用户不可能每天都需要做保养,也不会每天都需要换轮胎,所以“没点没买”并不等于“不需要”。如果直接用普通 CTR 框架把所有未点击都视作负反馈,模型会严重低估真实需求。

这类任务更适合把“需求时机”先建模出来,比如基于里程、时间间隔、车型生命周期和历史履约估计一个触发概率,再在高需求概率人群里做服务排序。先判断“该不该推”,再判断“推什么”,通常比直接一锅学排序更合理。

9. 为什么序列推荐里加入时间间隔特征后,有时效果反而下降

因为时间间隔并不是天然有益特征,它的语义高度依赖场景。若编码方式粗糙、分桶不合理或者与位置编码冲突,模型很容易学到噪声模式,比如把很长时间没打开 App 的用户和极低兴趣用户混为一类。另一个常见问题是时间间隔与曝光策略、推送策略强相关,模型会把平台运营节奏误学成用户兴趣变化。

所以时间特征通常需要做归一化、对数缩放、场景拆分,必要时和行为类型一起编码,而不是单独喂一个 raw gap 就期待它自动有用。

10. Transformer 在行为序列建模里,为什么会被说“强但不稳”

强,是因为它能直接建模长距离依赖和多兴趣混合,不像传统 RNN 那样容易把早期信号冲淡。不稳,是因为推荐行为序列噪声很大,行为并不全都同等重要,而且用户序列长度差异巨大、时间分布极不均匀。Transformer 如果不加约束,很容易把偶发行为放大,或者把近期强信号和长期轮廓混在一起。

因此工业里往往不会直接裸用标准 Transformer,而是加时间偏置、行为类型 embedding、target-aware attention、interest router 或 memory 压缩,让它更像一个可控的序列聚合器,而不是纯粹的语言建模结构。

11. DiT 和 U-Net 相比,为什么在某些生成任务上更有优势

DiT 的优势在于它继承了 Transformer 在全局建模上的强表达能力,尤其适合高维 token 化表示之间的长程依赖学习。U-Net 更偏局部卷积归纳偏置,在图像去噪里很强,但当条件信息复杂、上下文很长、需要统一处理多模态控制时,Transformer 风格的块结构往往更灵活。DiT 本质上是把扩散过程中的噪声预测器替换成更适合大规模表征学习的架构。

但这不意味着 DiT 一定全面优于 U-Net。它通常更吃数据量、训练资源和优化细节,对 tokenization 方式也更敏感。优势更像是“上限更高”,而不是“天然更省事”。

12. 如果把 DiT 的思想迁移到推荐生成或行为建模里,最难的地方在哪

最难的不是把结构搬过去,而是定义扩散空间和噪声过程。图像像素天然连续,扩散过程比较直观;推荐里的 item、行为和上下文多是离散符号或异构特征,如何在不破坏语义的情况下做逐步加噪和去噪,本身就是难题。其次,推荐场景对生成结果有强约束,候选必须合法、可供给、可解释,还要受库存、地域和价格限制,不能像开放生成那样随意输出。

所以推荐里的“扩散式建模”很多时候不会直接生成最终 item,而是生成用户兴趣轨迹、重构未来偏好分布或者做候选去噪排序,这样落地难度更可控。

13. 为什么 LoRA 在业务推荐大模型适配中常常比全参微调更合适

因为业务分布变化快,实验周期短,目标经常调整,全参

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务