知乎推荐页Ranking经验分享

  • 知乎推荐页场景和 Ranking 历程介绍
  • 深度学习在 Ranking 中的尝试和应用现状
  • Ranking 面临问题和未来研究方向
展开查看详情

1.知乎推荐页 Ranking 经验分享 单厚智 2018.12.15

2.主要内容 l 知乎推荐页场景和 Ranking 历程介绍 l 深度学习在 Ranking 中的尝试和应用现状 l Ranking 面临问题和未来研究方向

3.知乎推荐页场景

4.推荐页请求流程

5.推荐页模块详解 ● 召回:负责把用户可能感兴趣的内容提取出来,重点是全 Ø 基于话题:关注,行为挖掘 Ø 基于内容:协同 ● 排序:负责对召回的内容进行打分,可以理解为感兴趣程度,重点是准 Ø 基于规则:时间顺序,线性加权 Ø 基于模型:GBDT,DNN ● 重排序:出于产品或者业务的考虑,对排序后的内容进行重排,最终展示 Ø 提权:比如对视频进行一定的提权 Ø 隔离:相似内容隔开 Ø 强插:高质量的新内容流通

6.推荐页Ranking历程 EdgeRank 算法 Global Ranking 根据用户亲密度进行排序 深度学习,DNN 模型 时间序 Feed Ranking 根据产生动态的时间进行排序 GBDT,非线性模型

7.模型选择 能处理更高维度特征, 深度学习大趋势 如几十万话题量级, 非线性模型,不必做大 使用GPU + HDFS结构, GBDT 无法完成训练 量的特征组合 可以训练更多的样本

8. 特征介绍 l 用户画像 Ø 用户属性特征:性别等 Ø 统计特征,用户点赞数等 l 内容画像 Ø 固有特征:文章长度,关键词等 Ø 统计特征:历史点赞数等 l 交叉特征 Ø 用户与内容的交叉特征:比如用用户感兴趣的话题和当前待推荐内容的话题交叉

9. 特征介绍 ● 特征类别 Ø 数值特征:文章长度,点赞数 Ø Onehot:内容类型 Ø Multihot:内容多个话题 id Ø Onehot with value:用户对单类型内容的感兴趣程度 Ø Multihot with value :用户对各话题的感兴趣程度

10. 特征设计 ●设计原则 Ø 特征尽量全:从现有的数据中提取尽可能多的特征 Ø 特征原始值全:比如加历史CTR 特征的时候,可以把 pv 和 click 都带上 Ø 覆盖率大:去掉一些覆盖率很低的特征,这些特征影响影响范围小,大部分是缺失值 Ø 线上线下一致:覆盖率和取值分布尽可能接近 ●新特征方向 Ø 显式交叉特征:DNN 能学习特征的非线性能力,增加交叉特征可以降低模型搜索的空间,在训练数据一定的情况下 可以提升效果,如用户的话题兴趣和当前话题的均值和最大值,效果提升明显 Ø 出于业务考虑:需要对业务有一定的理解,把自己当做用户,考虑什么情况下点击率会大,什么样的内容更容易被 用户点,比如视频在 wifi 下更容易被点,视频点击率高的人更喜欢视频 Ø 数据挖掘特征:如内容 Embedding 特征

11. 特征设计 ●内容 Embedding 介绍 Ø Embedding 目的:把内容映射到低纬空间,相似内容距离较近,可以当做内容特征 Ø 文本角度:tfidf,关键词进行word2vec 等 Ø 行为角度:考虑用户在知乎的行为,搜索内容相关性较好,依据搜索点击序列设计 Embedding ● 实现细节 Ø 数据:将搜索行为进行session切分,组织成类似于 sentence 序列 Ø 样本:85亿 Ø 模型:skip-gram Ø loss:nce-loss

12. 特征设计 l skip-gram 结构 l embedding 效果

13. CTR 模型 ●选择 CTR 模型原因: Ø 推荐页排序目标是把用户推荐感兴趣的内容排在前面,可有下面两个学习目标 u 停留时长:适合用回归问题来解决,最后会偏向于长文章 u 点击率:二分类问题,知乎的问答一般不长,更加合适 Ø 分类问题相比回归问题,目标类别少,相对准确率高 Ø 分类问题场景业界应用较广,可交流空间大 Ø 分类问题最后会输出一个概率分,方便与多目标结合 ●损失函数

14.最初DNN 结构 1. 将输入特征分为用户和内容两块 2. 经过特征映射后分别通过全连接 与两个独立的隐含层连接 3. 两个独立的隐含层 cancat 后再 经过两个全连接层 4. 最后输出 sigmoid 与交叉熵损失 作为 loss AUC:0.7618

15.优化 DNN 结构 1. 将用户和内容的特征,分别按照 内容的 field 分为不同的 block 2. 每个 block 先经过全连接到独立 的隐含层 3. 将上面的隐含层 concat 再经过 后面的 DNN 模型 AUC:0.7678,提升0.6%

16. Deep FM Sigmoid Add Linear Weight-One DNN Dot Embedding Normal Sigmoid Sparse Feature Activation Dense Feature FM 1. 增加了一阶和 FM 模 Dense Dense 块,FM 通过 block Embedding Input 之间的内积实现 2. AUC 提升 0.2% Sparse Input

17.Last View + DIN Output Attention Add Linear Unit Weight-One DNN Dot Embedding Normal 1 Sigmoid 1 Sigmoid Sigmoid Sparse Feature 64 ReLU 64 ReLU Activation Dense Feature 128 ReLU 128 ReLU Concat Concat | Out Concat | Out Product Product Sum Attention Embedding other Embedding 1 Embedding n Embedding 1 Embedding n Pooling Part feature Last View Candidate Attention Attention Block 1 Block n Unit Unit Embedding 1 Embedding n Embedding 1 Embedding n Topic Topic Last View Topic Candidate Topic 1 N Topics 1 N Topics 1. Last view topic 与当前内容的几个 topic 计算 Attention Score,再按权重进行 sum pooling 2. AUC 提升约 0.2%

18.Last Display + GRU Sigmoid Weight-One DNN Concat Hidden Units other Embedding 1 Embedding n feature GRU Block 1 Block n 1. Last Display 经过 Embedding Embedding Embedding Embedding 后与是否点击结合,再进入 GRU is click is click is click 模块,最后状态当做 DNN 输入 2. AUC 提升约 0.4% last last last display 1 display 2 display n

19.多目标 1. 每个 task 共享前面的几层权重,可以 节省训练和预测的计算量 2. Loss 可以是几个 task 的 loss 做简 单线性加权 3. 上线仍然要确定各个 ctr 的加权值, 经验比较重要 4. 上线后线上表现:点击率基本不变,而 其他的几个指标,比如点赞,收藏大幅 提升

20.最终模型结构

21. 经验分享 ● 对于随时间变化的统计特征,比如用户和内容画像的统计值,线上 service 应当纪录请求时的值,生成训练样 本时直接从纪录的日志里获取,避免特征穿越问题; ● 如果发现线下效果好,比如 AUC 和 NDCG 提升明显,但上线效果不显著,很可能是特征不一致导致的,可重点 排查; ● 线上线下最好使用同一套特征抽取框架,只需使用的相同特征配置便可保证一致性,我们 Global Ranking 使 用同一套 proto 结构和特征抽取模块实现; ● 做特征归一化操作,发现有特别大的值,比如几万或者几十万,要先取 log ,不然会导致这个特征大部分值都 趋向0,相当于特征失效; ● 输入特征要做非法检查,防止出现 inf,nan,而导致模型训练出现异常的参数; ● 对于线上的每次请求,用户特征都是一样的,可以只计算一遍用户特征相关的 block,避免冗余运算; ● 训练数据量要尽可能大,可以使用 FlatBuffer 结构把训练数据存放在 HDFS 上,训练时直接从 HDFS 读取, 边读取边训练; ● 线上模型要能自动更新,过老的模型效果下降严重;

22.面临问题 l 推荐页与搜索页的特性不同 Ø 搜索带着 query 来的,结果与之相关性越高越好,不用太关心结果的多样性 Ø 推荐页用户没有明确的目的,但是有兴趣偏好和对结果的多样性需求,推荐既要准确又要多样化 l CTR 预估模型是 pointwise 模型,没有考虑单个内容与其他内容同时出现的影响 l 用户对感兴趣的东西会出现审美疲劳,要及时抓住这种特点,比如一个算法工程师看完几个机器学习文 章后就不想再看了,这时候要能推荐一些其他话题的内容

23. 未来方向 l 强化学习 Ø Actor:根据用户过去的浏览和点击行为生成推荐页整屏结果 Ø Critic:接收到点击或者其他正向行为作为 reward,同时训练 Critic 和 Actor 网络参数 l 优点 Ø 能及时捕捉用户的反馈,从而避免对同一话题产生审美疲劳 Ø 推荐整屏幕内容,避免 pointwise 方式下内容较为集中问题 l 缺点 Ø 模型结构复杂,模型参数训练较困难

24.Thank you!