第 86 题:用户塔与物品塔的不对称设计,历史行为长度差异的处理?
题目
用户塔与物品塔的不对称设计,历史行为长度差异的处理?
完整讲解
一、用户塔与物品塔的不对称性
用户侧:输入常包含长序列——用户历史行为(点击/观看序列),长度可达几十至几百;需用 RNN/Transformer 等做序列编码,计算量大、表示维度高。物品侧:输入多为单物品或短属性(物品 ID、类目、标签等),无长序列,结构相对简单。因此两塔在输入长度、网络深度与宽度上天然不对称。
二、历史行为长度差异的处理
- 用户塔:长序列需池化为定长向量。常用 sum/mean pooling、attention pooling(如 target attention:用目标物品对历史做 attention 再聚合)、或最后一隐状态;为控计算,可对序列截断或采样(如最近 N 条、或随机采样),或分层/分块编码后再聚合。
- 物品塔:无长序列,可直接 MLP 或浅层网络;为与用户塔维度对齐,输出维度与用户塔一致(如均为 128 维),内积才可算。
- 不对称设计:用户塔可更深、更宽、用更强序列模型;物品塔保持轻量,便于离线预计算所有物品向量。训练时两边都更新;部署时用户塔在线算、物品塔离线算并建索引,不对称不影响检索流程。
三、工程要点
- 用户塔序列过长时:截断、采样、或使用高效 attention(线性 attention、稀疏 attention)控制时延。
- 若物品侧也有序列(如物品的评论、描述),可对称地做序列编码,但需权衡物品塔复杂度与离线计算成本。
面试要点
- 能说明不对称:用户塔长序列、需序列编码与池化;物品塔单物品/短属性、结构简单;两塔深度/宽度可不同。
- 能说历史长度处理:用户侧截断、采样、attention/sum 池化得到定长向量;物品侧定长输入;输出维对齐以便内积。
- 能提及用户塔可更强、物品塔轻量以利离线预计算;序列过长时的截断与高效 attention。
记忆要点
- 用户塔:长序列 → 序列编码 + 池化 → 定长向量;物品塔:单物品/短属性,轻量。
- 长度差异:截断/采样/attention 池化;输出维对齐。
- 不对称设计:用户塔可更深,物品塔轻量便于离线算 item 向量。