• 论文阅读


    本文为阅读论文 Wide & Deep Learning for Recommender Systems 时记下的笔记。

    背景

    推荐系统给出的结果需要兼顾相关性和新颖性。推荐的内容和用户特征很匹配,就会推荐大量相关内容,时间一久,用户感到无新鲜感。推荐内容过于泛化,用户的兴趣无法满足。本文提出的算法用于 Google Play 的 APP 推荐系统。

    线性模型

    线性模型中各类特征常采用 one-hot 向量表示,比如“国家”属性,可取的值有 200 多个,要表示“国家”就采用一个 200 多个维度的向量,每一个国家占一个维度。类似地,其他属性也这样表示。如此以来,对某个事物的向量表示,就是拼接各个属性对应的 one-hot 向量,整个向量表示是非常稀疏的。

    国家:[0 0 0 1 0 0 ...]
    性别: [1 0]
    

    用户安装过的 APP,可以有多个,采用 bag-of-word 表示,每个维度表示一个 APP 是否安装。

    APP: [0 0 1 0 1 0 0 ...]
    

    不同的特征之间可以进行组合,比如将国家和性别属性组合,可以表示如“中国男性”这样的组合属性。特征的组合能够给线性模型增加非线性的特征。但是也会极大地增大特征维度。

    线性模型的使用的特征向量具有维度高、稀疏的特点。线性模型的形式如下:

    [y = mathbf{w}^Tmathbf{x} + b ]

    由于特征维度很大,往往没有足够的数据来训练模型中的每个参数。因为有的特征组合在数据集中根本就没有出现,或是数量很少。因此对数据集中未出现的情况,模型无法进行泛化。

    论文中提到了 generalization 和 memorization 这两个词,我读的论文少,对这两个概念理解的还不够透彻。

    说线性模型有较好的 memorization,我想是指线性模型能够较好地学习到各个特征(包含组合特征)的权重,以及学习到特征之间的相关性。

    深度模型

    深度模型,常常将某一个属性表示为一个低维的稠密向量,比如“国家”这个属性,可能会将不同的国家表示为一个长度为 10 的向量,这也常被称为 Embedding。如此以来,对某事物的向量表示就是一个较低维度且稠密的向量。然后使用深度网络模型,可以对 Embedding 中各维进行组合。

    深度模型可以实现很好泛化,当训练数据较稀疏的时候,甚至不能反映训练集的特征。即,太过泛化。好处就是能够应对数据稀疏的场景,缺点常常会得出结果不够相关。

    泛化大致是指,基于属性相关性的传递,发现过去没有或很少发生的新的特征组合,有利于增加推荐的多样性。

    Wide & Deep

    Google 在 2016 年发布的 Wide & Deep 模型,组合了线性模型和深度模型。该模型结合了线性模型的记忆能力和深度模型的泛化能力。因为线性模型的输入是维度很高的向量,模型的输入很 Wide,Wide 出自于此。

    推荐系统框架

    工业推荐系统基本都是 Matching 和 Ranking 两部分,Matching 用于从数据库中先粗略地检索出相关内容,极大地减小 item 的数量。Ranking 则对检索出的 item 做更加细致的排序,最终生成推荐。

    这里 Google Play 采用的策略也是如此。

    Wide & Deep 模型架构

    Wide 模型和 Deep 模型是联合起来训练的,如下图所示:

    图中左边是深度模型,将连续属性做归一化。离散属性做 Embedding 后,拼接起来,输入全连接网络。

    [a^{(l+1)}=fleft(W^{(l)} a^{(l)}+b^{(l)} ight) ]

    右边是线性模型,使用了用户安装的 APP 和曝光的 APP 以及两者的组合作为特征。

    将 Wide 和 Deep 的输出进行求和然后交给 sigmoid 函数求出概率。最终使用 Logistics 损失函数(就是 Logistics Regression 用的损失函数)来作为优化目标,使用 SGD 进行训练。

    [P(Y=1 | mathbf{x})=sigmaleft(mathbf{w}_{ ext {wide}}^{T}[mathbf{x}, phi(mathbf{x})]+mathbf{w}_{ ext {deep}}^{T} a^{left(l_{f} ight)}+b ight) ]

    Wide & Deep 模型和模型的集成不是一回事。集成是训练多个模型然后将结果进行集成,每个模型都使用了全部的样本特征。集成学习训练的多个模型是独立存在的,并不知道其他模型的存在。而这里用到的 Wide & Deep 联合学习,能够有效地组合各类特征,两个模型协同地优化目标函数。

    总结

    Wide & Deep 模型,在今天看来好像并不新颖,它提出了一种组合深层特征和浅层特征的方法。

  • 相关阅读:
    Git`s Operation
    从volatile说到,i++原子操作,线程安全问题
    sql中的几种删除方式
    Hibernate&MyBatis different
    集合问答
    Data Struct and Data Type
    Hash table and application in java
    idea`s shortcut key
    001--idea第一个报错JNI报错
    recyclebin
  • 原文地址:https://www.cnblogs.com/wy-ei/p/11534359.html
Copyright © 2020-2023  润新知