基于物品的协同过滤

⽤索引,离线计算量⼤,线上计算量⼩

Swing额外考虑重合的⽤户是否来⾃⼀个⼩圈⼦,两个⽤户重合度⼤,则可能来⾃⼀个⼩圈⼦,权重降低。

基于用户的协同过滤

同样是离线计算索引,在线召回的流程

离散特征处理

Embedding 层参数数量=向量维度× 类别数量

矩阵补充模型

矩阵补充模型有很多缺点,效果不好

训练好后线上召回

双塔模型

除了ID还要考虑一些离散特征、连续特征;离散特征可以用Embedding Layers,连续特征可以归一化、分桶等处理

训练方式主要有pointwise、pairwise、listwise

pointwise就是常规的分类的思想

pairwise希望拉开用户与正负样本的距离

listwise考虑更多的负样本

正样本的选择需要考虑冷门、热门物品

负样本可以是简单和困难样本的混合

简单负样本可以是全体物品(考虑非均匀采样打压热门物品)或者Batch内负样本

困难负样本主要考虑被召回,但是被排序淘汰的样本

一个常见的错误!

双塔模型的线上召回和更新

⽤户兴趣动态变化,⽽物品特征相对稳定,事先存储物品向量𝐛,线上现算⽤户向量𝐚

为了适应用户兴趣变化需要更新模型

双塔模型的问题

可以通过减去对数抽样概率来进行纠偏

自监督学习

一个物品的两个向量可以通过一些特征变换得到

训练模型

最终的损失函数包含两部分

Deep Retrieval 把物品表征为路径(path),线上查找⽤户最匹配的路径

其他召回通道

⽤户可能对附近、同城发⽣的事感兴趣

  • 索引:GeoHash优质笔记列表(按时间倒排)

  • 索引:城市优质笔记列表(按时间倒排)

关注作者召回

有交互的作者召回

相似作者召回

缓存召回,缓存⼤⼩固定,需要退场机制。

曝光过滤问题

Bloom filter 判断⼀个物品ID是否在已曝光的物品集合中

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐