在推荐系统的完整链路中,rerank(重排序)环节往往是最容易被忽视却至关重要的存在。想象一下这样的场景:经过召回和粗排阶段后,系统已经筛选出几百个候选item,这些item从个体角度看都符合推荐标准,但如果直接按预测分数高低排序输出,很可能会出现"美食视频扎堆"或"同类商品过度集中"的问题——这就是为什么我们需要rerank机制。
我曾在多个千万级DAU的推荐系统中验证过,合理的rerank策略能使人均停留时长提升12-23%,转化率提高8-15%。其核心价值主要体现在三个维度:
多样性控制:通过品类/标签分布约束,避免结果同质化。例如限制"美妆"类目占比不超过30%,同时保证"服饰"、"数码"等类目有足够曝光。
业务规则注入:将无法在前置环节实现的策略落地,如:
体验优化:解决"视觉疲劳"问题。当检测到用户连续划过5个穿搭视频后,插入1个宠物或旅行内容作为调剂。实测这种"5+1"模式能降低15%的划出率。
这是工业界最常用的baseline方案,我们团队在2021年前的推荐系统都采用这种模式。其核心是通过预定义的业务规则调整item排序:
python复制def rule_based_rerank(items):
for item in items:
# 新品加权
if item['is_new'] and item['ctr'] > 0.02:
item['score'] *= 1.3
# 低库存降权
if item['stock'] < 50:
item['score'] *= 0.7
# 版权过滤
if not item['has_copyright']:
item['score'] = 0
return sorted(items, key=lambda x: -x['score'])
典型问题与优化:
信息检索领域的经典算法,通过平衡相关性与多样性实现rerank。其核心公式:
$$
MMR = \arg\max_{d_i \in D \setminus S} [\lambda \cdot sim_1(d_i, q) - (1-\lambda) \cdot \max_{d_j \in S} sim_2(d_i, d_j)]
$$
在视频推荐场景的改造应用:
python复制def mmr_rerank(items, lambda_param=0.7, top_n=20):
selected = []
remaining = items.copy()
while len(selected) < min(top_n, len(items)):
scores = []
for item in remaining:
rel_score = item['ctr_pred']
div_score = max([tag_similarity(item, s) for s in selected]) if selected else 0
scores.append(lambda_param * rel_score - (1-lambda_param) * div_score)
best_idx = np.argmax(scores)
selected.append(remaining.pop(best_idx))
return selected
实际应用中发现,当候选集超过500条时MMR计算成本剧增。我们通过"先聚类再分组MMR"的方案,将耗时从1200ms降至300ms。
前沿方案采用强化学习动态调整rerank策略,模型结构示例:
(示意图:状态编码器提取用户/上下文特征,策略网络输出多样性权重)
我们在电商推荐中验证的关键发现:
部署注意事项:
有效的rerank依赖多维特征交叉,我们构建的特征体系包含:
| 特征类别 | 具体特征示例 | 更新频率 |
|---|---|---|
| 用户状态 | 当前session浏览类目分布 | 实时 |
| 内容属性 | 商品价格段/视频时长 | 天级 |
| 环境上下文 | 网络类型/时间段/设备型号 | 实时 |
| 业务指标 | 库存状态/促销权重/版权状态 | 分钟级 |
特别提醒:必须包含"已曝光item列表"特征,否则会导致重复推荐。我们曾因遗漏该特征导致CTR下降7%。
建立专门的rerank监控看板,核心指标包括:
多样性指标
业务指标
系统指标
我们曾通过监控发现,当类目熵值低于2.3时用户划出率明显上升,据此调整了多样性权重。
问题1:过度追求多样性导致相关度下降
问题2:新用户冷启动偏差
问题3:设备性能差异
当前行业正在探索的几个创新方向:
多目标联合优化
将rerank建模为MOO(多目标优化)问题,使用NSGA-II等算法平衡:
因果推理应用
通过反事实推理消除偏差,例如:
端到端训练
将rerank与前置环节联合训练,难点在于:
在实际业务中,建议从规则基线起步,逐步迭代到模型方案。我们团队的演进路径是:
规则策略(6个月)→ MMR优化(3个月)→ 强化学习(当前阶段)
一个容易被忽视但至关重要的建议:rerank策略必须与产品形态强绑定。在瀑布流场景有效的策略,切换到信息流卡片模式可能完全失效,需要重新验证。