深度学习推荐系统实战

基础架构

推荐系统要解决什么问题?

  • 在信息过载的情况下,用户如何高效获取感知的信息,即学习\(score(user,item,context)\)

推荐系统的技术架构

深度学习推荐系统实战

  • 数据
    • 数据入口:客户端服务器端实时数据,流处理平台准实时数据,大数据平台离线数据
    • 数据出口:算法模型数据,模型 Serving 特征数据,系统监控统计数据。
  • 模型
    • 模型种类:召回+排序+策略
    • 模型训练:离线,在线
    • 模型测试:离线评估,线上 A/B 测试

特征工程

什么是特征工程?

  • 利用工程手段从用户信息,物品信息,场景信息提取出特征的过程。

推荐系统中常用特征

  • 用户行为数据:显示反馈,隐性反馈

    深度学习推荐系统实战

  • 用户关系数据:强关系,弱关系

  • 属性,标签类数据:用户,物品等都具有

    深度学习推荐系统实战

  • 内容类数据:描述性数据

  • 场景信息:范围极广,如时间,地点等

Spark处理特征

  • 由 Manager 调度,Worker 计算,返回给 Driver

    深度学习推荐系统实战

  • Stage内部高效并行,边界处进行消耗资源的 Shuffle、Reduce 操作

数据编码方式

  • 类别、ID 特征:One-Hot,Multi-Hot
  • 数值特征:
    • 归一化:特征数值范围取值不一
    • 分桶:数据分布过于集中、分散
    • 其他改变分布方式的操作:如开方,平方等

Embedding

用数值向量表示一个对象的方法。

  • 用处
    • 处理稀疏特征:大量使用 One-Hot 导致特征向量极度稀疏,不利于深度推荐模型(收敛慢,参数多)
    • 融合其他信息,生成高阶特征向量:主要来自于 Graph Embedding 的广泛使用
  • 主流方法
    • Word2Vec:模型结构,目标函数,负采样
    • Item2Vec:Word2Vec 在任意序列上的推广
    • Graph Embedding:DeepWalk,Node2Vec
  • 应用
    • 直接应用:计算相似性,典型功能如相似物品推荐,猜你喜欢,召回等
    • 预训练应用:作为特征向量一部分,与其他特征拼接参与推荐模型训练
    • End2End:也即 Embedding 层,直接训练

线上服务

深度学习推荐系统实战

高并发推荐服务器

  • 负载均衡
  • 缓存
  • 服务降级

分级存储

深度学习推荐系统实战

  • Redis 特性
    • 数据以 Key-Value 对存储
    • 数据全部存储在内存中,硬盘只在持久化或恢复数据时起作用

召回层

深度学习推荐系统实战

  • 单策略召回:利用评分、标签、新鲜度等单一策略召回
    • Pros:速度快,实现简单
    • Cons:无法覆盖不同需求,召回率不高
  • 多路召回:采用不同策略,分别召回部分候选集混合在一起
    • Pros:可以覆盖不同需求
    • Cons:每一路评分不可比,需要大量人工调参
  • Embedding 召回:将多种策略融合到 Embedding 中实现召回
    • Pros:实现简单,评分可比,可以融合多种信息
    • Cons:线上计算复杂

局部敏感 Hash

常数时间内快速找到与一个 Embedding 最相似的 Embedding。

  • 出发点
    • 欧式空间中,将高维空间的点映射到低维空间,原本接近的点在低维空间肯定依然接近,但原本远离的点有一定概率变成接近的点。
  • 经验性建议
    • 点越多,桶数目越多,反之亦然。
    • 维度越大,hash 函数要越多,尽量采用且作为多桶策略,反之亦然。

深度学习推荐系统实战

Serving&Inference

  • 预存推荐结果
    • 完全解耦,延迟极低
    • 组合数目爆炸,无法引入线上 context 特征
  • 预存Embedding 结果
    • 推断简单快速
    • 无法引入线上 context 特征,无法进行复杂网络结构模型的推断
  • 预训练 Embedding+轻量线上模型
    • 隔离了离线模型的复杂性与线上推断的效率要求
    • 不能完全支持复杂模型
  • Tensorflow Serving
    • End2End 部署
    • 线上服务效率低,需要大量优化

迷你推荐系统框架概览

深度学习推荐系统实战

深度学习推荐系统实战

模型?模型!

协同过滤

上一篇:推荐系统 - 排序算法 - 神经网络:WDL


下一篇:大规模预训练模型在阿里机器翻译中的应用