Paper-DeepFM

    • Introduction
    • 现存方法的侧重点
      • low- / high- order interactions 低阶/高阶交互
      • expertise feature engineering 专业特征工程
    • 关键挑战
      • in effectively modeling feature interactions 有效建模特征交互
    • FM中
      • 使用 inner product 内积作为潜在特征向量之间的交互,效果很好
      • 特征通常只考虑2层,为避免高复杂度
    • 改进方法
      • CNN+:更倾向于临近特征之间的交互
      • RNN+:更适合有顺序的数据
    • 本文方法
      • DeepFM,FM+DNN
      • 使用FM建模低阶特征交互,DNN建模高阶特征交互
      • 不同于 wide&deep,DeepFM可以端到端训练,不需要特征工程
    • 本文方法
    • 概述
      • (X,y) X是m域的数据记录,通常包括一对用户和物品,y∈{0,1}表示用户点击行为
      • X可能包含分类字段(性别、地区)用一个one-hot编码向量表示;连续字段(年龄)用其自身值或离散化之后的one-hot编码向量表示
      • 最后每个实例可以表示为(x,y),其中x由各类向量表示组成
      • 任务目标:建立一个预测模型y' 估计用户点击给定内容的概率
    • DeepFM
      • DeepFM推荐系统 论文+代码
      • 包含FM、deep两个部分,共享相同的输入
      • 对于特征i,一个标量wi用来权衡其一阶重要性,一个潜在向量Vi用来衡量它与其他特征交互的影响。Vi喂入FM建模二阶特征交互,送入deep部分建模高阶特征交互
      • FM部分
        • DeepFM推荐系统 论文+代码
        • 除了特征之间的线性(一阶)交互作用外,FM还将特征间的相互作用(二阶)使用各自潜在特征向量的内积进行建模
        • DeepFM推荐系统 论文+代码
        • 将稀疏特征向量做一个add聚合,然后对稠密嵌入两两聚合(内积);最后将这些聚合一起放入Sigmoid函数中得到输出
      • Deep部分
        • DeepFM推荐系统 论文+代码
        • 一个多层前馈神经网络
        • 由于原始特征输入向量非常稀疏并且高阶,需要使用嵌入层将输入压缩为低维稠密实值向量,再输入到第一个隐藏层
        • DeepFM推荐系统 论文+代码
        • 输入的不同类向量的长度可能不同,但其嵌入都是相同的size,k
        • FM中的潜在特征向量V现在用来作为网络权值进行学习,用来将输入向量压缩为嵌入相连
        • Embedding层的输出是a(0)=[e1,e2,…,em],然后将其送入DNN中
        • DeepFM推荐系统 论文+代码
        • 最后生成一个稠密实值特征向量,送入sigmoid函数中
        • DeepFM推荐系统 论文+代码
      • 与其他NN方法关系
        • DeepFM推荐系统 论文+代码
        • FNN:使用FM预训练;仅捕获高阶特征交互
        • PNN:增加 product 层,使用内积、外积;仅捕获高阶特征交互
        • Wide & Deep:需要专家特征工程输入"wide" 部分;像是将稀疏特征进行嵌入后放入DNN中,在最后的sigmoid函数时加入一些wide的内容;可以捕获低阶特征
        • 感觉DeepFM捕获低阶特征交互就是将稀疏特征进行累加这一点
    • 实验部分
    • 数据集
      • Criteo Dataset
        • 包含45 million用户的点击记录,共有13个连续特征,26个分类特种
      • Company 公司数据集
    • 评价指标
      • AUC,Area Under ROC
      • Logloss,cross entropy
    • 实验结果
      • DeepFM推荐系统 论文+代码
    • 相关工作
    • CTR prediction 点击率预测
      • 线性模型、FM、tree-based模型、基于tensor的模型、SVM、bayesian 贝叶斯模型
    • Deep learning in RS
    • 总结
    • DeepFM:a Factorization-Machine based Nerual Network for CRT prediction
      • 联合训练 a deep component and an FM component
      • 优点:
        • 不需要预训练
        • 学习低阶和高阶特征交互
        • 提出一种避免特征工程的特征嵌入共享策略
      • 未来工作
        • 增强学习最有效的高阶特征交互的能力(引入池化层pooling layer)
        • 在GPU集群上训练DeepFM解决大规模问题
    • 代码实现
    • Embedding
      • 即将一个特征转换为一个向量
      • 对离散变量可以直接转换为One-hot
      • 但是itemid这种转换后维度会非常高,且只有一个1其他都是0。因此通常转换为embedding
      • 其实是一层全连接的神经网络
      • DeepFM推荐系统 论文+代码
      • 假设一个离散变量共有5个取值,也就是说one-hot之后会变成5维,我们想将其转换为embedding表示,其实就是接入了一层全连接神经网络。由于只有一个位置是1,其余位置是0,因此得到的embedding就是与其相连的图中红线上的权重。
      • 使用tensorflow中tf.nn.embedding_lookup函数实现
      • tf.nn.embedding_lookup(embedding,feature_batch),根据feature_batch中指定的索引,去embedding中寻找并返回对应的行
    • 参考
    • 论文 https://arxiv.org/abs/1703.04247
    • 代码实现 https://mp.weixin.qq.com/s?__biz=MjM5ODkzMzMwMQ==&mid=2650411720&idx=3&sn=fe75cd049fc982ea5235a16553f865f9&chksm=becd949289ba1d84d7eb371bedb8be0596cd9ea00e6549620ee3d59a22c62ef7a23a6e39694d&scene=0&xtrack=1&key=e15c8f28f870437036182c7acb96858c7c4b8e94ed690c2ff8578a3c3980204b7c35a7c9557d2aef77d9b84a09ede5bb85c19fa9ee4a3b27e95300591955c66fb93e07d616ad8d6ede88b78f0d7480ba&ascene=1&uin=NjI3ODE1NDA0&devicetype=Windows+10&version=62070152&lang=zh_CN&pass_ticket=lHNl8oO%2Bu4tE2SjjLZ37N5iE6MiVcZgo9VfC9Qk3Zone3U%2BIKCYs1Qjl8qw9u2dr
    • 代码复现 https://github.com/FloatingMaple/DeepFM

相关文章: