真实面经题目 · 原创解析

用 GNN 做推荐时,哪些因素最重要?

用 GNN 做推荐最重要的是图怎么构建、边表示什么、节点和边特征是否可靠、采样和聚合如何保留有效邻居、层数如何避免过平滑、训练目标是否贴近排序任务,以及线上是否能承受图更新和推理成本。GNN 的优势在于利用高阶邻居和关系结构,但效果高度依赖图质量。

出现于:美团 · 算法

60 秒回答模板

先讲 GNN 推荐优势:能在用户、商品、商家、类目等图上做信息传播,捕捉协同信号和高阶关系。再回答关键因素:图构建、边权和时间、节点特征、采样策略、聚合层数、负采样和损失函数。最后讲落地约束:动态图更新、冷启动、过平滑、可解释性和线上延迟。

考点 图质量优先
难度 真实面经题
回答目标 讲清原理、实现和边界

深入解析

01

图构建层

首先决定图的语义,而不是先选 GCN、GraphSAGE 或 GAT。节点可以是用户、商品、商家、类目等,边可以表示曝光、点击、购买、收藏、搜索后访问等行为;异构图、二部图还是同构图会直接决定可传播的信息和噪声范围。

02

信号层

边信号要区分强弱、时间和置信度。购买、加购、长停留、短点击、仅曝光不能等价处理,边权可结合次数、最近时间、行为类型和去重策略;过期行为需要衰减,异常刷量或低质量曝光也要过滤,避免噪声在图上传播。

03

表示层

节点初始表示不能只依赖 ID embedding。用户画像、物品属性、类目、文本向量、价格或质量特征都可能提供冷启动和泛化能力;如果初始特征缺失或分布漂移严重,后续消息传递只是在低质量信号上扩散,模型名字救不了效果。

04

传播层

传播设计包括邻居采样、聚合函数、层数和归一化方式。浅层只能利用近邻协同信号,深层能看高阶关系但更容易引入远距离噪声和过平滑;实际要通过分层采样、边类型权重、残差或跳连控制信息衰减。

05

训练层

训练目标要贴近推荐排序,而不是只做节点分类。负采样应优先使用曝光未点击、同类目难负样本和近期候选,并处理热门偏置、曝光偏差和假负例;损失可选 BPR、交叉熵或 sampled softmax,但要和召回或排序位置一致。

06

工程层

工程落地要说明 GNN 用在召回、粗排还是精排。大规模图通常离线训练 embedding,在线通过缓存或特征服务读取;实时行为进入图结构、embedding 刷新频率、冷启动兜底和推理延迟,会决定它能否真正支撑推荐链路。

易错点

  • 只说 GNN 能利用图结构,没有说明图结构如何定义。
  • 把所有行为边等权处理,忽略行为强度和时间衰减。
  • 盲目加深 GNN 层数,忽略过平滑。
  • 离线效果好但没有考虑图结构在线更新和推理成本。

面试官追问

GNN 推荐中如何构建用户物品二部图?

把用户和物品作为两类节点,以曝光、点击、购买、收藏等行为建边,并按行为类型、时间和强度设置权重或边特征。

为什么 GNN 层数过深可能效果变差?

层数过深会引入远距离噪声,并让节点表示趋同,出现过平滑,推荐区分度下降。

如何做负采样才能更贴近真实推荐排序?

优先从曝光未点击、同类目难负样本和近期候选中采样,并控制热门偏置和假负例。

GNN 更适合召回阶段还是排序阶段?

常见做法是离线训练图 embedding 用于召回或作为排序特征;在线端到端 GNN 排序成本更高,需要看延迟预算。

动态图更新延迟如何影响线上推荐?

如果新行为不能及时进入图或 embedding,模型会错过短期兴趣,冷启动和热点变化下效果会下降。