来自 快手社区科学部-郑东-datafuntalk年终大会
分享大纲:
主要有3个页面:
首页-发现频道(双列选择)
同城页面
首页精选(单列沉浸式)
核心指标: DAU (日活: 每日活跃用户数)
上图显示了: 用户留存和 DAU的关系, 留存时间越长,DAU越高 因此可以通过 提升使用时长/正向反馈 降低负反馈来提高留存
用户留存的正负反馈指标:
- 隐式正反馈
- 播放时长 有效播放 (播放完成度在75%以上(不确定比例)算一个有效播放) 播放完成率 复播等
- 显示正反馈
- 点赞 收藏 下载 进入个人页面 关注 正向评论 观看评论 原声点击 标签点击 分享 等主动操作
- 隐式负反馈
- 短播放 以及 终止session
- 显示负反馈
- 不感兴趣 举报 负向评论
个性化门控+多域门控融合:
因为share-bottom 当目标之间存在较大差异无法学到最优 在MMOE的基础上进行改进
MMOE+特征/Embedding 对齐 + 行为序列建模
由多任务学习过渡到多目标排序:
- 快手推荐追求时长、点赞、关注、分享等多种目标
- 合适的排序目标和机制设计,获得多目标的协同提升
stage1: 手动公式融合
缺点 • 过于依赖规则设计 • 过于依赖人工调参,维护成本高 • 固定权重,缺少个性化、场景化
stage2: 树模型规则ensemble融合
缺点:表达能力有限,无法online learning
stage4: 端到端 learn to rank
存在很多复杂场景 中有不同的打分逻辑,
常规融合:线性加权 Score = a*scoreA + b * scoreB + c * ScoreC + … + m * ScoreM 存在问题: • 不同Score之间含义、量级和分布差异较大 • 显式反馈如点赞率等在不同用户间差异巨大,难以适应统一权重 • 依赖模型预估值绝对大小,预估值分布变化时需重新调节或校准
优化方法:
• 各子项分内做Normalize,如转换为序的函数,与GAUC目标一致 𝑆𝑐𝑜𝑟𝑒 =𝐶# = 𝑓(𝑟𝑎𝑛𝑘 𝑜𝑓 𝑆𝑐𝑜𝑟𝑒𝐶#) --- 将排序转化为分数 转化为同一量纲,这种排序同时和GAUC的预估值一致,与线上效果一致
• 可兼容含义差异巨大的子项分,各子项目分权重可在同一量级调节 • 隐式反馈权重在不同用户上做到了某种自适应调节 ()
优点:
简单轻量, 可解释性好
缺点 • 效率低 • 依赖工程师经验 • 参数变多后,很难全局调优 • 处理能力有限,难以个性化、场景化
优点: • 可看作off-policy,数据利用率高(100%) • 模型自由度高,可训练千亿参数规模
缺点: • 无法直接对标业务指标 • 难以考虑到线上复杂多模块的完整影响 • 存在训练数据和在线数据不一致性
探索与利用(如何设置实验) • 5%线上流量探索,每次探索N组参数 • 基线组每轮收集固定数量样本,探索组和基线组同始终
Reward设计(对每组实验参数如何评价好坏) • 每组参数时长和互动相比基线的相对涨跌幅来衡量 • 收益项:视频观看时长/个人页时长/评论区时长 • 约束项:互动,如播放/点赞/关注/分享/…,使用非线性约束 • 阈值内,线性弱衰减 • 超出阈值,指数强衰减
自动调参算法 (Cross-Entropy Method )
CEM算法优点 • 简洁、高效,超参很少 • 0阶方法,TopK选取只依赖reward的序,不需要对reward的数值进行建模,对噪声更加鲁棒 • 参数通过高斯分布扰动探索,线上指标相对平稳
噪声来源 • 数据稀缺:5%探索流量分100组,每组参数仅仅相当于线上1/2000的流量 • 稀疏label:越稀疏的label噪声越大 • 指标随时间周期变化
主要考虑视频之间的相互影响
方案设计 • Top6 Rerank: 对一个PageSize (6)的候选视频使用Transformer进行建模,刻画视频间相互影响 • 采用Weighted Logloss,学习目标类似Learn2Rank • 前序视频对后序视频观看有影响,前后组合决定总收益
方案: • 用户一次请求下发更多视频到客户端,如从6提升到20 • 端上部署模型,根据用户最新行为反馈,每一滑实时从剩余候选集中选择最佳的
优势 • 用户对当前视频的反馈,可以立刻影响Next-One推荐,不必等到PageSize(=6)再去服务端刷新 • 上下滑场景替换后序视频后,用户无感知 • 可以利用端上丰富的特征,包括一 些数据量大、隐私等不便于上传到云端的特征 • 端上实现了实时推荐,所以PageSize可以变大,降低对服务端的请求压力和资源消耗
具体模型: