• * 论文笔记 【Wide & Deep Learning for Recommender Systems】


    标题 * 表示未完成
    论文原文传送门

    文章提出了 m e m o r i z a t i o n   a n d   g e n e r a l i z a t i o n memorization\ and\ generalization memorization and generalization 的概念,‘Wide’ 使用 基于 cross-product feature transformations 的 linear models 来记忆稀疏特征的交互,‘Deep’ 使用 low-dimensional embeddings 将未被认识到的特征交互一般化。主要是使用 ‘Wide’ 来弥补 ‘Deep’ 的不足,即通过将 ‘例外或异常记入小本本上’ 来弥补DNN对于数据稀疏的embeddings处理能力不足的问题。
    在这里插入图片描述

    1. 研究目的
    • 本文章提出了一种 W i d e   &   D e e p   L e a r n i n g Wide\ \&\ Deep\ Learning Wide & Deep Learning算法, W i d e Wide Wide 表示一个宽广的线性模型(如LR模型), D e e p Deep Deep 表示一个DNN,文章中将这两种子模型结合起来提高了模型的 m e m o r i z a t i o n   a n d   g e n e r a l i z a t i o n memorization\ and\ generalization memorization and generalization 能力,以此来达到提升推荐服务的质量的目的,此算法已在谷歌商店的实际生产环境中上线,事实证明其显著的提升了APP安装量。
    • 文章指出推荐系统可以被看做一个搜索排序问题(即给予一定的条件输入,系统将返回一个可能感兴趣的产品列表),提升此系统性能的关键点就在于解决 m e m o r i z a t i o n   a n d   g e n e r a l i z a t i o n memorization\ and\ generalization memorization and generalization 问题。
    • m e m o r i z a t i o n memorization memorization 可以被宽泛的定义为利用 user 历史数据中的各种数据关系来学习时常共同出现的 items or features,即:使用户切实产生过的 ‘痕迹’ 来保证推荐服务质量。
    • g e n e r a l i z a t i o n generalization generalization 一般基于关联信息具有传递性的特点,并以此来找出过去尚未发现的 u s e r − i t e m user-item useritem交互特征,即:挖掘出用户的潜在需求,为用户推荐 ‘自身需要的,但是自身尚未意识到自身需要的’ 。
    • 在文章中指出 g e n e r a l i z a t i o n generalization generalization使用利用了embeddings的深度神经网络实现时,有时会出现over-generalize(过于笼统)的推荐,尤其是 u s e r − i t e m user-item useritem交互矩阵是稀疏和高维的时候。所以文章提出使用基于交叉积特征转换的线性模型来记忆这些 ‘特殊情况’ 来解决上述问题。
    1. 本文模型及方法
    • The Wide Component
      ‘Wide’ 即为一个广义线性模型 y = w T x + b y = w^Tx + b y=wTx+b,y是预测值, x = [ x 1 , x 2 , … , x d ] x = [x_1,x_2,…,x_d] x=[x1,x2,,xd]是一个具有d个特征的向量, w = [ w 1 , w 2 , … , w d ] w =[w_1,w_2,…,w_d] w=[w1,w2,,wd]为模型参数,b为偏差。其中 x x x包含原始的特征以及经过交叉积转换的特征。交叉积定义如下。
      该公式中 c k i c_{ki} cki是一个布尔值,当第 i i i个特征属于第 k k k次变换 ∅ k \varnothing_k k的一部分时,为1,反之为0。
      例如在二分关系中, 一个基于cross-product的转换集“AND(gender=female, language=en)”,只有(“gender=female"和"language=en”)时为1,否则为0。这就捕获了二元特征之间的交互,并将非线性添加到广义线性模型中。
      在这里插入图片描述

    • The Deep Component
      此 ‘Deep’ 子模型使用基于前反馈的神经网络,由于特征矩阵往往是高维稀疏矩阵所以往往使用 embedding 向量尽可能的解决这一问题,本文章中也使用了这一方法,将 embeddings 传递到隐藏层。隐藏层的表达式如下。其中 l l l 为层数, f f f 为激活函数, W W W为第 l l l层权重。
      在这里插入图片描述

    • 模型训练以及实现
      文章指出联合训练与集体训练是不同的,集体训练是将各个子模型分开各自训练,之后在预测时才结合起来,所以需要更多的 features and transformations。而联合训练则是同时优化整个模型的所有参数,只需要在 ‘Wide’ 部分使用一些小当量的cross-product feature transformations 即可弥补 ‘Deep’ 部分的缺陷。所以文章中选用了联合训练的方式。最后对 ‘Wide’ 和 ‘Deep’ 的输出进行加权求和作为最后的输出。
      Wide & Deep 模型的联合训练使用 mini-batch 随机优化方式,对于两个子模型同时进行反向传播。并使用了L1正则化【follow - the- regularization -leader (FTRL)算法】作为 ‘Wide’ 优化器,AdaGrad作为 ‘Deep’ 优化器。模型的预测公式如下。Y=1表示用户下载了impression app
      在这里插入图片描述
      Wide & Deep模型结构图如下。‘Wide’ 由用户已安装的app与用户被推荐过的app的转换交叉积组成。‘Deep’ 由归一化的连续特征 和 经过Embedding处理后的分类特征组成一个联合的大约有1200维的大Embedding,之后经过三层ReLU映射,最后使用逻辑回归函数输出。值得一提的是,由于每次有新的训练集时都需要重新训练模型,这样做的代价很大,所以文章中使用 warm-starting 的方法初步解决了这一问题,即初始化新模型时使用旧模型的Embedding和 ‘Wide’ 线性模型的权重进行初始化(不就是迁移学习嘛)。
      在这里插入图片描述

    • Data Generation
      使用一段时间内user和app的 impression data 作为训练集。之后建立一个 Vocabularies 它可以将分类特征映射到整形IDs空间上。而对连续特征进行了归一化处理,通过将特征值X映射到其对应的累积分布函数P(X ≤ x),最后将连续实值特征归一化。归一化方式是将累计分布函数切分为 n q n_q nq个分位数,i 表示第 i 个分位数,之后带入到 i − 1 n q − 1 \frac{i-1}{n_q - 1} nq1i1式中计算归一化后的值。

      1. 实验结果
    • 文章从两个方面对模型性能作出了评估:app被推荐后的下载率、推荐服务响应性能(使用多线程提升这一性能)。
      在这里插入图片描述
      从那个表一中可以发现Wide & Deep模型比单一模型表现要好。
      在这里插入图片描述

      • END
  • 相关阅读:
    一文3000字解析Pytest单元测试框架【保姆级教程】
    YOLO 施工安全帽目标检测模型
    C++数据结构X篇_11_C++栈的应用-后缀表达式求解
    面试题-React(十五):React中的CSS编写方案及推荐
    Java中的线程中断
    弘辽科技:淘宝怎么才能获得更多流量?要做点什么?
    Java高级面试问题
    01-基于IDEA,Spring官网,阿里云官网,手动四种方式创建SpringBoot工程
    05 需求分析阶段
    Wpf 使用 Prism 实战开发Day04
  • 原文地址:https://blog.csdn.net/Salmon1122/article/details/126825606