本文是对七月在线推荐课程-搜索和推荐的matching技术-召回的一个随堂笔记,课上实际主要围绕youtube的dnn 推荐架构来讲解了召回的流程,如何理解embedding和FM的公示推导,以及deepfm的框架和实现。
召回系统架构 :
曝光去重: 1) 疲劳度过滤(类似重复长期不点击的类别过滤掉)
2) 最近已看过的东西的过滤
3) 业务的过滤
召回索引 、流式计算 的简单介绍;
Youtube 召回
- 线下模型训练阶段, 三层 ReLU 神经网络之后接到 softmax 层, 也就是说在这里作者建模为为用户推荐下一个感兴趣视 频的多分类问题, 输出是在所有候选视频集合上的概率分布
- ⊚ 线上预测阶段, 考虑到召回的高性能需求首先通过 userId 找 到相应的用户向量, 然后使用 KNN 类方法找到相似度最高 的 N 条候选结果返回 (局部敏感哈希) 【局部敏感哈希,普通的哈希是不保持相对顺序的。局部敏感哈希是一种能保持相对顺序的哈希方法】
模型整体的思路可以认为是传统协同过滤思路的扩展. 传统的 UCF 强调相似的用户感兴趣的物品也相似; 传统的 ICF 强调对物品 A 感兴趣的用户, 可能也对物品 A 相似的物品同样 感兴趣. 所以传统的 UCF 和 ICF 实际上是分别构造了用户向量 空间和物品向量空间, 在任何一个向量空间找到相似性都可以进 行推荐.
而 YoutubeDNN 则学习统一的 (用户 + 物品) 向量空间来代替 原来的两个独立的向量空间, 使用深度网络将用户 + 物品映射到 这个统一的低维向量空间来发现学习更高阶的用户物品相似性.
什么是embedding
从三个角度看:
- ⊚ 用户观看过的 video 的 embedding 向量
- ⊚ 用户搜索词的 embedding 向量以及用户的地理位置年龄等静态特征
- ⊚ 这里的 embedding 向量作者是用 word2vec 类方法预先生成 的
简单介绍了词的embedding ,word2vec 的大致原理,以cbow为例。 无监督的序列学习转化为“有监督”提了下item2vec 。离线去算好参数, 在线的时候去调用。
FM 模型的表达式:
𝑦 = 𝜎(𝑤 · 𝑥 + 𝑥𝑇 · 𝑊(2) · 𝑥)
与 LR 不同的是, 这里有了二阶特征组合. 但是对于系数的情况, 我们怎么依然可以优雅的学习到呢?
使用矩阵分解的技巧
𝑊(2) =𝑊𝑇 ·𝑊
𝑦=𝜎(𝑤·𝑥+𝑥𝑇 ·𝑊𝑇·𝑊·𝑥)=𝜎(<𝑤,𝑥>+<𝑊·𝑥,𝑊·𝑥>)
参数由n方,变为nk,其中的k是远小于n的
关键推导:
FM 有哪些优势?
⊚ 泛化性能强⊚ embedding 的使用
Compare FM and MF
- MF 模型是 FM 模型的特例, MF 可以被认为是只有 User ID 和 Item ID 这两个特征 Fields 的 FM 模型. MF 将这两 类特征通过矩阵分解, 来达到将这两类特征 embedding 化表 达的目的
- ⊚ FM 则可以看作是 MF 模型的进一步拓展, 除了 User ID 和 Item ID 这两类特征外, 很多其它类型的特征, 都可以进一步 融入 FM 模型里, 它将所有这些特征转化为 embedding 低 维向量表达, 并计算任意两个特征 embedding 的内积, 就是 特征组合的权重
⊚ FM 继承了 MF 的特征 embedding 化表达这个优点, 同时引 入了更多 Side information (除了id类特征外,如年龄身高等side information信息)作为特征, 将更多特征及 Side information embedding 化融入 FM 模型中. 所以很明显 FM 模型更灵活, 能适应更多场合的应用范围
其他:
围绕deepfm的简单案例代码提了下tensorflow 的学习流程介绍
讲到了分布式学习的一个简单描述; parameter server
estimator的理解。;
基本: session ,graph : variable ,placeholder,constant 的基本概念,optimiizer : compute gradient; apply gradient;layer/op : 然后一个tensorflow案例 串起上面
进阶: estimator/ 分布式 的深入 : ps ,chief_worker ,master worker ,client 的理解
高阶: session /graph 的深入理解 :从c++ 层次去深入理解。
鸣谢与参考:
七月在线推荐课程。