machine-learning
  • Welcome
  • 动手学深度学习
    • 1. 前言
    • 2. 预备知识
    • 3. 线性神经网络
    • 4. 多层感知机
    • 5. 深度学习计算
    • 6. 卷积神经网络
    • 7. 现代卷积神经网络
    • 8. 循环神经网络
    • 9. 现代循环神经网络
    • 10. 注意力机制
    • 11. 优化算法
    • 12. 计算性能
    • 13. 计算机视觉
    • 14. 自然语言处理:预训练
    • 15. 自然语言处理:应用
    • 16. 附录:深度学习工具
  • 百面机器学习
    • 1. 特征工程
    • 2. 模型评估
    • 3. 经典算法
    • 4. 降维
    • 5. 非监督学习
    • 6. 概率图模型
    • 7. 优化算法
    • 8. 采样
    • 9. 前向神经网络
    • 10. 循环神经网络
    • 11. 强化学习
    • 12. 集成学习
    • 13. 生成式对抗网络
    • 14. 人工智能的热门应用
  • 百面深度学习
    • 1. 卷积神经网络 CNN
    • 2. 循环神经网络 RNN
    • 3. 图神经网络 GNN
    • 4. 生成模型
    • 5. 生成式对抗网络 GAN
    • 6. 强化学习 RL
    • 7. 元学习
    • 8. 自动化机器学习 AutoML
    • 9. 计算机视觉 CV
    • 10. 自然语言处理 NLP
    • 11. 推荐系统
    • 12. 计算广告
    • 13. 视频处理
    • 14. 计算机听觉
    • 15. 自动驾驶
  • 统计学习方法
  • 推荐系统实践
    • 1. 推荐系统
    • 2. 特征工程
    • 3. Embedding
    • 4. 精排
    • 5. 召回
    • 6. 粗排/重排
    • 7. 多任务/多场景
    • 8. 冷启动
    • 9. 评估调试
    • 10. 自我修养
  • 深度学习推荐系统
    • 1. 推荐系统
    • 2. 进化之路
    • 3. 深度学习的应用
    • 4. Embedding
    • 5. 多角度审视
    • 6. 工程实现
    • 7. 评估方法
    • 8. 前沿实践
    • 9. 知识框架
  • 强化学习的数学原理
    • 1. 基础概念
    • 2. 贝尔曼公式
    • 3. 贝尔曼最优公式
    • 4. 值迭代与策略迭代
    • 5. 蒙特卡洛方法
    • 6. 随机近似与随机梯度下降
    • 7. 时序差分方法
    • 8. 值函数近似
    • 9. 策略梯度方法
    • 10. Actor-Critic方法
Powered by GitBook
On this page
  • 3.1 Embedding
  • 3.2 共享 or 独占
  • 3.3 Parameter Server 训练加速器
  1. 推荐系统实践

3. Embedding

3.1 Embedding

  • 传统推荐算法:评分卡 LR,博闻强记,个性化差

    • 扩展性:将细粒度的概念,拆解为一系列粗粒度的特征

    • 依赖于特征工程 → 能否自动将概念拆解?

  • 核心套路:无中生有的 Embedding,精确匹配 → 模糊查找

unq_categories = ['music', 'movie', 'finance', 'game', 'military', 'history']
id_mapping = layer = tf.keras.layers.StringLookup(vocabulary=unq_categories)
emb_layer = tf.keras.layers.Embedding(input_dim=len(unq_categories) + 1, output_dim=4)

3.2 共享 or 独占

  • 共享 Embedding:训练充分、节省存储空间

  • 独占 Embedding:避免互相干扰

    • FM(共享):logitFM=∑i=1nwixi+∑i=1n∑j=i+1n(vi⋅vj)xixjlogit_{FM}=\sum_{i=1}^n w_i x_i+\sum_{i=1}^n \sum_{j=i+1}^n\left(\mathbf{v}_i \cdot \mathbf{v}_j\right) x_i x_jlogitFM​=∑i=1n​wi​xi​+∑i=1n​∑j=i+1n​(vi​⋅vj​)xi​xj​

    • FFM(特征爆炸 nfk):logitFFM=∑i=1nwixi+∑i=1n∑j=i+1n(vi,fj⋅vj,fi)xixjlogit_{FFM}=\sum_{i=1}^n w_i x_i+\sum_{i=1}^n \sum_{j=i+1}^n\left(\mathbf{v}_{i, f_j} \cdot \mathbf{v}_{j, f_i}\right) x_i x_jlogitFFM​=∑i=1n​wi​xi​+∑i=1n​∑j=i+1n​(vi,fj​​⋅vj,fi​​)xi​xj​

    • Co-Action Network (CAN):使用网络结构进行特征交叉,item 拆解 × user 输入小型 MLP

3.3 Parameter Server 训练加速器

  • 传统分布式计算的不足:master 容纳不下参数量、广播网络负载巨大

  • PS(分布式 KV 数据库):参数由一群 PS Server 节点存储读写,只需要传递非零特征参数

    • Data Parallelism:训练数据分布在各个 worker 节点

    • Model Parallelism:不会再同一特征的参数下产生竞争,worker 相对解耦

  • PS 中的并发策略

    • 同步并发策略(Bulk Synchronous Parallel, BSP)

    • 异步并发策略(Asynchronous Parallel, ASP):梯度时效(Stale Gradient)不严重,但 DNN 权重更新冲突

    • 半同步半异步(Staleness Synchronous Parallel, SSP):允许一定迭代轮数之内保持异步

  • 基于 ps-lite 实现分布式算法

  • 更先进的 PS

    • 阿里 XDL:ASP + 流水线机制,Server 节点也能部署训练模型(降维)

    • 快手 Persia:同步异步混合,特征准入 + 特征逐出

Previous2. 特征工程Next4. 精排

Last updated 1 year ago