知乎首页推荐系统

知乎推荐系统的实践及重构之路
知乎如何洞察你的真实喜好?首页信息流技术揭秘

前记

架构部分主要是针对业务的发展把召回、排序等模块进行了可配置化和选型梳理
算法部分基本上参考youtube2016和alibaba2018的思路对系统进行了重构,包括召回和排序,也结合自己的业务做了一些优化,值得参考。

系统架构

  • 高并发场景从python到golang,利用抽象工厂模式来实现可插拔
  • 解决支持多队列混排和支持多路召回
  • 具体的召回方式主要是ES + Redis + ANN 的模式进行构建。ES 主要支持相对复杂的召回逻辑,比如基于多种 topic 的混合召回;Redis 主要用于支持热门召回,以及规模相对较小的 CF 召回等;ANN 主要支持 embedding 召回。
  • 离线任务和模型的管理问问题
    • 离线任务的代码统一到一处管理
    • 离线任务管理平台,将所有任务以通用包的形式进行管理
    • 任务结果的监控体系
  • 特征穿越问题
    • 在线代替了离线,通过在线落特征日志,而不是 Raw Data,并统一了特征日志 Proto,如此就可以统一特征解析脚本。
  • StatsD + Grafana + InfluxDB 的监控系统,因为召回已经用配置的方式,那么剩下的召回源的比例关系,还有特征分布,ranking 得分分布都可以很方便的获取,而不用一个一个开发

召回

  • 多路召回:用户画像、内容标签、内容源信息、关注关系队列、搜索关键词队列、用户兴趣召回感兴趣的内容,根据搜索关键词进行相关推荐
  • DNN召回1.0
    • 用户 128 维的 Embedding 表示
    • 冷启动:看到内容用户的 Embedding 是什么以及点击这些内容用户的 Embedding 是什么,我们可以利用这份数据把这些新产生内容的 Embedding 计算出来更新到 Embedding 库里面去
  • 准确度 DNN 比起 ALS 来讲提升了10倍的量级
  • DNN召回2.0
    • 原始数据比如长度有多少,有没有图片,经过三层的网络之后会生成 Feed Embedding,可以直接得到 Content Embedding,解决新内容的召回机制问题
    • 1)User Representation Network 引入 FM Pooling 层,学习用户高频消费行为的交叉特征,会让 Top100 的精确度提高 8%,2)我们把展示未点击的数据作为特征引入到 User Representation Network 里面,其中会用到历史搜索和历史阅读数据。3)展示了但是跳过的内容会在采样的时候加大权重,把它成为负例的概率变得更大,让用户的行为来指导采样。

排序

  • GBDT -> DNN -> ATTENTION+LSTM , 强化学习
  • 引入 FM 层作为这些类别之间的 Sparse Input 之间的交叉,AUC 提升了 0.2%,CTR提升了 1%。引入 CNN 及 LSTM 分别作为文本Encoder/Last Action Encoder,单用户使用时长提高 50 秒。
  • 引入 Attention 机制作为用户 Embedding 和 Candidate Embedding 之间的交叉权重,单用户使用时长增加了 40 秒左右
  • 多目标:我们使用了 CTR 预估模型预训练网络,利用 Parameter Hard Sharing,点击和点赞这两层共享之前的权重,会有一个独立的隐藏层 model task 自己的目标,这样能降低前向/反向传播中的计算量。
  • 将连续值预测转化成离散值预测:阅读时长的分布,这个分布与正态分布比较类似。所以我们使用了 z-value 来对阅读市场进行离散化,离散化之后会把阅读时长分为五等——没点击、点击了阅读时长低、点击了阅读时长中等、点击了阅读时长偏高、点击了阅读时长非常高
  • 修改了 Softmax 函数:如果预测出的档数和实际用户阅读时长档数差太多,我们加一个比较大的修改函数,让这种样本的 loss 加大

模型训练问题和业务问题

  • 样本组织:线上进行实时打点避免穿越;正负样本进行不同采样率的实验
  • 特征工程:分布范围比较大的特征,有一万个赞也有几万个赞的,做 CTR 预估的过程中赞量的影响会变得非常不平均,所以通常会进行特征的归一化和 boxing,分成不同的段输入
  • 模型评估:做了一个 DCG Gain 收益的指标,比AUC具有更高的参考意义
  • 多样性问题:一个内容出现几次之后你没有点击,之后都不会推荐相似的内容
  • 信息茧房:针对老用户及兴趣比较均匀的用户,适当减少兴趣探测力度,在探测过程中也会尽量使用 Tag 之间的关联信息增强探测效率

总结

  • ES也许在我们目前的场景中能发挥用处,而不用人工来进行索引拆解
  • DNN来进行召回和排序看起来已经是业界非常通用的方法了,而且ESSM和DIN、DIEN这些ali的方法看起来工业届也是用起来比较合适的
  • 特征工程其实有很多统计的工作
  • 配置化不仅策略上线方便,监控也方便
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354