美文网首页算法小白菜
推荐系统模型1-FM模型族

推荐系统模型1-FM模型族

作者: 林桉 | 来源:发表于2021-11-10 16:15 被阅读0次

    FM 原理与特点

    适用场景

    FM模型可以用于回归任务、二分类任务、排名任务,特别是在数据稀疏场景下,效果明显,广泛应用于推荐系统、广告系统等领域。

    • 针对问题:
      FM(Factorization Machine)主要是为了解决数据稀疏的情况下,特征怎样组合的问题。
      不同特征之间非独立假设。


      image.png

      这个是它的原式,对于这个式子来说,前面两项的复杂度是O(n),我们可以先忽略,重点来看最后一项。我们要做的就是通过数学公式的变形来对这一项进行化简:

    • 求解


      image.png
    image.png 关键: image.png image.png image.png
    image.png
    • 多维扩展
      > 2特征之间交互。

      image.png
      不好优化,三重特征交叉过度稀疏,意义不大。
    • FM 实现
      libfm-C++的 自己看 懒得记。
      http://www.libfm.org/

    FFM

    就是在FM模型上加field,效果优于FM,但是参数量太大,一般情况下不建议使用这种笨重的模型。


    image.png

    FFM是FM的一个特例,它更细致地刻画了这个特征。首先它做了任意两个特征组合,但是区别在于,怎么刻划这个特征?FM只有一个向量,但FFM现在有两个向量,也就意味着同一个特征,要和不同的fields进行组合的时候,会用不同的embedding去组合,它的参数量更多。对于一个特征来说,原先是一个vector,现在会拓成F个vector,F是特征fields的个数,只要有跟其它特征的任意组合,就有一个vector来代表,这就是FFM的基本思想。
    为了改进FFM参数量巨大不适合线上训练的特点,双线性改进应运而生。


    image.png
    原理:共享参数矩阵W。
    三种组合W
    image.png

    最优效果为组合方式。张俊林老师实验结果显示,随着参数逐渐增多,双线性FFM效果逐渐接近甚至赶超FFM。


    image.png
    结论与猜想:
    1. 共享参数矩阵,可以有效降低FFM的海量参数,提升模型效率。
    2. 随着共享矩阵参数逐渐复杂,模型效果提升就接近饱和,猜想可能存在一个共享参数矩阵的最优边界。

    两条演进路线:

    image.png

    一种,设计有效的FM新func使得有效捕捉二姐特征组合,第二种,讨论高阶特征。一般应用中,第一种方式的收益,对于大多数场景,要优于第二种,不是高阶特征就一定有收益,除非高阶特征的组合,对目标预测的效果有正向收益,否则,一般来说二阶特征组合已经满足所需要的精度,且适合于实践与部署。

    DeepFM

    image.png

    基础架构,基于W&D,LR替换为FM由人工交叉走向特征自动交叉。
    FM部分:


    image.png
    image.png

    sparsefeature做addition,共享的embedding之后的特征做隐向量点积。
    Deep部分:


    image.png
    稀疏特征转换为低维稠密向量。通常随机初始化,
    DeepCTR的方式,通过logistic loss function分别训练,合并输出。

    实际上由三部分构成:linear+Second-order Interaction+DNN

    xDeepFM 与特征交叉三巨头

    特征交叉三巨头


    image.png
    image.png

    理论上,XDeepFM更接近于DCN的模型结构,是DCN模型结构的改进,模型由三部分组成:linear+DNN+CIN
    解决元素级特征交互中bit-wise方式,模型训练域概念丢失问题,如图所示
    DCN的cross方式,先将field 的向量横向 concat,作为一个输入向量 x0,然后每层特征都会与 x0做内积,得到更高一阶的特征交互(DCN的Xl层输出与Xl+1层输出进行残差拟合)。


    image.png image.png

    如何改进?
    CIN:


    image.png image.png image.png

    CIN与corss的主要差异:

    1. 采用vector-wise的方式使同field特征权重得以保持一致。
    2. 在第l层,cross包含从1~l+1层的所有特征组合,而CIN只包含l+1层的特征组合,每层输出中间结果,然后X0再与每层做Hadamard乘积。
    • 几个问题
    1. CIN与FM的关系?
      FM为CIN单层且压缩矩阵W恒为1的特殊情况CIN。
    2. W这个鬼东西貌似是关键?怎么求?


      image.png
      image.png

      求解方式:一维卷积,deepctr里面实现可以去看类CIN下的call。
      核心思想就是利用H^k+1 个尺寸为 m*H^k 的卷积核生成下一层隐层的状态,将三维矩阵压缩为二维。


      image.png
      curr_out的大小是 Batch * Embedding Size * Layer size。然后把curr_out按照direct或者非direct的方式作为下一个隐层向量的输入。filters采用默认glorot_uniform_initializer初始化。

    纯属学习 不涉利益

    ref:
    https://zhuanlan.zhihu.com/p/343174108
    *https://zhuanlan.zhihu.com/p/145436595
    https://zhuanlan.zhihu.com/p/35526715
    https://zhuanlan.zhihu.com/p/61096338
    https://zhuanlan.zhihu.com/p/83784018
    https://zhuanlan.zhihu.com/p/371849616
    https://zhuanlan.zhihu.com/p/67795161
    https://arxiv.org/pdf/1703.04247.pdf
    https://zhuanlan.zhihu.com/p/154591869
    https://zhuanlan.zhihu.com/p/109933924
    https://zhuanlan.zhihu.com/p/45450361
    https://www.cnblogs.com/talkaudiodev/p/14287562.html

    相关文章

      网友评论

        本文标题:推荐系统模型1-FM模型族

        本文链接:https://www.haomeiwen.com/subject/trhkvltx.html