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
  • 11.1 推荐系统基础 **
  • 1. 推荐系统 **
  • 2. 为什么 召回 + 排序 **
  • 11.2 推荐系统设计与算法
  • 1. NN 角度理解 矩阵分解算法 **
  • 2. 用深度学习,根据用户行为,计算物品相似度 ***
  • 3. 用深度学习,基于会话的推荐系统 ***
  • 4. 二阶因子分解机 ****
  • 5. 快速近似 KNN**
  • 11.3 推荐按系统评估
  • 1. CTR 为什么选择 AUC
  • 2. 为什么线下 AUC 提高,不能保证线上 CTR 提高
  1. 百面深度学习

11. 推荐系统

11.1 推荐系统基础 **

1. 推荐系统 **

  • 典型推荐系统:数据层 -> 算法层(召回层 + 排序层) -> 展示层

    • 召回策略:内容过滤、协同过滤

      • 协同过滤(基于用户 / 基于物品)

        • 基于邻域

        • 隐语义模型(Latent Factor Model)

          • 矩阵分解、概率矩阵分解、协同主题模型

    • 排序算法(CTR)

      • LR、GBDT、FM、NN

      • Wide&Deep、DIN、DIEN

    • 其他模块:条件过滤、权重调整、冷启动(强化学习)召回 / 排序 的异同

2. 为什么 召回 + 排序 **

  • 设备资源、响应时间 有限,简单方法 + 复杂模型 更有利

  • 传统算法:协同过滤 + LR / GBDT

  • 深度学习

    • 召回:特征粗略,Softmax 输出,结构简单

    • 排序:特征精细,单个神经元,结构复杂(LSTM、GRU 等)

11.2 推荐系统设计与算法

1. NN 角度理解 矩阵分解算法 **

  • 优化目标:向量内积 逼近 实际得分 ru,i≈r^u,i=μ+bu+bi+vuTwir_{u,i}\approx \hat r_{u,i}=\mu+b_u+b_i+v_u^Tw_iru,i​≈r^u,i​=μ+bu​+bi​+vuT​wi​

    • 输入输出:输入 user / item 编号,输出打分

    • 优化目标(RMSE):min⁡μ,bu,bi,v,w∑(u,i)∈R(rr,i−μ−bu−bi−vuTwi)2+λ1∣∣vu∣∣22+λ2∣∣wi∣∣22\min_{\mu,b_u,b_i,v,w}\sum_{(u,i)\in R}(r_{r,i}-\mu-b_u-b_i-v_u^Tw_i)^2+\lambda_1||v_u||_2^2+\lambda_2||w_i||_2^2minμ,bu​,bi​,v,w​∑(u,i)∈R​(rr,i​−μ−bu​−bi​−vuT​wi​)2+λ1​∣∣vu​∣∣22​+λ2​∣∣wi​∣∣22​

    • 神经网络模型:编号 -> embedding -> 内积 -> 偏置 -> 评分

    • 训练方法:反向传播,BGD

    • 超参数:λ1\lambda_1λ1​,λ2\lambda_2λ2​,低维稠密向量 v,wv,wv,w 的维度

  • 矩阵分解 = 没有非线性单元的 NN

  • 隐式反馈:需要调整(置信度、排序损失函数)、可能效率更低

2. 用深度学习,根据用户行为,计算物品相似度 ***

  • 无监督学习(Prod2Vec):将 item 看作单词,将 user 的购买序列看作句子,借用 Word2Vec 的 skip-gram 模型

  • 监督学习:消费过物品 x 待推荐物品 -> 相似度 -> 求和推荐 -> 损失函数

3. 用深度学习,基于会话的推荐系统 ***

  • 给定输入(动作序列),预测输出(用户的下个动作)

  • 方法分类:频繁模式挖掘、马尔科夫链、马尔可夫决策过程 MDP、RNN

4. 二阶因子分解机 ****

  • 二阶因子分解机 y^(x)=μ+∑i=1nwixi+∑i=1n∑j=i+1n⟨vi,vj⟩xixj\hat y(x)=\mu+\sum_{i=1}^n w_ix_i + \sum_{i=1}^n \sum_{j=i+1}^n \langle v_i,v_j\rangle x_i x_jy^​(x)=μ+∑i=1n​wi​xi​+∑i=1n​∑j=i+1n​⟨vi​,vj​⟩xi​xj​

    • 稀疏特征的 embedding,内积可以表达 任意 特征交叉系数,但维度限制表达能力

    • embedding 之间引入 非线性运算(NN),可以提升表达能力,e.g. DeepFM

5. 快速近似 KNN**

  • 基于空间划分的算法:高维空间划分,精确算法,维度高 时计算量过大,e.g. KD-树、区间树、度量树

  • 局部敏感哈希类算法:高维相邻向量,映射到同一个桶里,但 需要设计 好的哈希函数、边界 附近有损失

  • 积量化类算法:对数据集做划分,对每个划分,找到表示向量,比较灵活

  • 基于最近邻图的算法:精确,但 内存消耗高,预处理时间长

11.3 推荐按系统评估

1. CTR 为什么选择 AUC

  • 几何含义:相对顺序,与绝对分值没有关系,不受正负样本比例影响

  • 概率含义:正样本评分 > 负样本评分 的概率

2. 为什么线下 AUC 提高,不能保证线上 CTR 提高

  • 线下 AUC 将所有样本混杂在一起,破坏 维度信息(用户、时间、设备)

  • 解决方法:各个维度 样本聚合,分别计算 AUC,再加权平均

  • 其他原因:线下验证集分布、线上线下特征不一致

Previous10. 自然语言处理 NLPNext12. 计算广告

Last updated 2 years ago