一、前言

现在推荐系统,网络搜索和在线广告的数据大多是分类的,并包含多个字段,有一个典型的方法将他们转化成高维稀疏二进制特征表示就是通过one-hot编码。对于这些高维稀疏的特征,传统模型可能会限制它们从数据中挖掘浅层模式的能力,即低阶组合特征,另一方面,像深度神经网络这样的深度模型由于巨大的特征空间而不能直接应用于高维输入。(浅层模型例如FM虽然可学习二阶特征交叉但是表达能力有限;而深层模型例如DNN虽然可以学习高阶信息,但是DNN本身并不具备学习特征交叉的能力(不同的field之间并无”且“的运算),而且过于稀疏的输入也不利于网络学习。)所以本文提出了PNN这个模型,其中的embedding层学习种类特征的分布式表示,product层捕获种类特征之间的交互特征(学习filed之间的交互特征),全连接层捕获高阶交互特征(PNN模型大致由三个部分组成:embedding层、product层、FC层。其中product为PNN的关键创新,它引入了不同的特征field之间的交叉信息并给予后续的FC层学习。)。

二、产生原因

信息检索领域(IR,Information Retrieval)包括:推荐系统、web search、线上广告。其核心是User Response Prediction,是指给出用户关于一个预先定义好的行为的概率。这些行为包括:clicks、purchases。预测的概率代表了用户对特定物品感兴趣的程度,物品包括:新闻、商品、广告。而这会影响商家对于展示文档的排序,广告投标等。IR问题最大的数据特点就是multi-field categorical,举例来说:对于[Weekday=Tuesday, Gender=Male, City=London],通过one-hot编码转化高纬度稀疏的数据:

在传统的机器学习模型中,例如像LR,GBDT依旧非常依赖人工特征工程,FM则缺少对高阶组合特征的建模,仅仅对特定阶的组合特征建模。

随着DNN在图像处理、语音识别、自然语言处理领域大放异彩,将DNN应用于CTR预估或者推荐系统的研究逐渐多了起来。DNN的输入往往是dense real vector 但是multi-field类别型特征起初是高维且稀疏的。常见的做法是通过加入Embedding Layer将输入映射到低维度的Embedding空间中。FNN使用FM初始化embedding vector,同时也受限于FM;CCPM利用CNN卷积来学习组合特征,但是只在相邻的特征间卷积,没有考虑到非相邻的特征的组合。

Embedding+MLP结构是DNN应用在CTR预估的标准模式。通常,NN层之间都使用“add operation” ,通过激活函数来引入非线性。作者认为,单纯的“add”也许不足以捕获不同的Filed特征间的相关性,原文表述为:"The ‘add’ operations of the perceptron layer might not be useful to explore the interactions of categorical data in multiple fields. ”

文中指出,一些相关研究表明“product”相比“add”能更好得捕捉特征间的dependence,因此作者希望在NN中显示地引入“product”操作,从而更好地学习不同Field特征间的相关性,在DNN结构中引入product layer即是这样的一个尝试。

三、模型介绍


首先说明一下符号:

3.1 Input层
一个类别型特征就是一个Field。比如用户信息包括:性别、职业等,这里的性别是一个Field,职业是另一个Field。上图中的Input是one-hot之后的,而且只给出了类别型特征。所以每个Field i都是一个向量,向量的大小就是类别型特征one-hot之后的维度。所以不同Field的维度是不同的。

3.2 FC层与embedding层

Embedding是Field-wisely Connected,就是每个Field只管自己的嵌入,Field之间网络的权重毫无关系,自己学习自己的。而且只有权重,没有bias。不同的Field之间没有关系。一个Field经过嵌入后,得到一个Feature,也就是对应的Embedding Vector嵌入向量。其维度一般是预先设定好的定值,论文中采用的是10。也就说是不同Feature的维度经过embedding后都是一样的。

Product Layer:
product思想来源于,在ctr预估中,认为特征之间的关系更多是一种and“且”的关系,而非add"加”的关系。例如,性别为男且喜欢游戏的人群,比起性别男和喜欢游戏的人群,前者的组合比后者更能体现特征交叉的意义。

3.3 product layer层
可以分成两个部分,一部分是线性部分lz,一部分是非线性部分lp。二者的形式如下:



看上面的公式,我们首先需要知道z和p,这都是由我们的embedding层得到的,其中z是线性信号向量,因此我们直接用embedding层得到:

论文中使用的等号加一个三角形,其实就是相等的意思,你可以认为z就是embedding层的复制。

对于p来说,这里需要一个公式进行映射:

不同的g的选择使得我们有了两种PNN的计算方法,一种叫做Inner PNN,简称IPNN,一种叫做Outer PNN,简称OPNN。

后面,我会分别来具体介绍这两种形式的PNN模型,由于涉及到复杂度的分析,所以我们这里先定义Embedding的大小为M,field的大小为N,而lz和lp的长度为D1。

3.4 IPNN

这种做法本质上是利用参数共享降低了参数量,更一般地,为了减少信息丢失,可以按需要考虑K-阶分解,当然复杂度也会相应提升K倍,这是一个trade-off。

3.5 OPNN

注:降低复杂度的具体策略与具体的product函数选择有关,IPNN其实通过矩阵分解,“跳过”了显示的product层,通过代数转换直接从embedding层一步到位到 L1 隐层,而OPNN则是直接在product层入手进行优化。

四、实验

4.1 实验设置
数据集 论文使用2个真实世界的开源数据集,具体如下

Criteo 含1TB的点击日志,使用连续7天的数据训练,紧接着的下1天作测试。经过negative dawn-sampling和特征映射后,最终包含79.38 M 样本及 1.64M 维特征。
iPinyou 包含超过10天的点击日志,共 19.5M 样本,经过one-hot后特征共 937.67 K维。沿用该数据集原始的train/test划分,即每个advertiser的最后3天数据作test,其余作train。
对比方法 使用 logistic loss,论文对比了LR、FM、CCPM、FNN、IPNN、OPNN以及PNN*,PNN*表示同时加入内积和外积。

FM和NN模型的embedding维度设为10。
为防止拟合,LR和FM使用L2正则,NN类模型使用rate=0.5的Dropout。
CCPM——1嵌入层+2卷积层 (max pooling) +1隐层;FNN——1嵌入层+3隐层;PNN——1嵌入层+1 product层+3隐层。

4.2 实验结果
不同数据集和指标上的结实验果如下表所示,PNN类模型性能最优

论文也做了其他补充实验。在iPinYou数据集上,各模型在不同迭代轮数下的Auc曲线如下图所示,可见PNN模型的收敛速度在iPinYou上也优于其他算法。

使用不同的隐层depth和不同类型激活函数,实验结果分别下图所示。

五、总结

  • PNN的动机很直观,通过在NN的嵌入层和隐层之间引入product层,显示地引入基于field的“product”,从而加强单纯基于“add”的NN的特征相关性学习能力。
  • product函数的选择有不少想象空间;而引入product后的模型复杂度,将直接影响落地可行性。构造怎样的product函数以及如何降低复杂度是使用product layer的关键,例如文中对IPNN和OPNN的处理。一个实用的落地trick是基于先验知识,只在指定的Field间作product,从而降低复杂度,当然这也导致了需要human effort的坑。

六、代码实现(来自某位大佬)

代码连接:https://github.com/ZiyaoGeng/Recommender-System-with-TF2.0

数据集采用的是:Criteo,下载链接为:(https://pan.baidu.com/s/1sYsY88APFTNldcZ2n3sKlA):96f2

下面附上自己跑代码的截图,由于自己电脑显卡太拉跨,所以跑起来太慢(我只采用了这个数据集中的前1000000条数据,还不是完整的数据集,就估计得好久才能跑完,这里就不跑下去啦)

4.Product-based Neural Networks for User Response Prediction论文详细解读和代码实现相关推荐

  1. 论文《Product-based Neural Networks for User Response Prediction》阅读

    论文<Product-based Neural Networks for User Response Prediction>阅读 论文概况 Introduction Deep Learni ...

  2. 模糊神经网络:基于模糊神经网络(Fuzzy Neural Networks,FNN)的数据分类(提供MATLAB代码)

    一.模糊神经网络FNN 模糊神经网络(Fuzzy Neural Networks,FNN)结合了神经网络系统和模糊系统的长处,它在处理非线性.模糊性等问题上有很大的优越性,在 智能信息处理方面存在巨大 ...

  3. GeniePath:Graph Neural Networks with Adaptive Receptive Paths 论文详解 AAAI2019

    文章目录 1 相关介绍 1.1 感受野的定义 贡献 2 图卷积网络GCN GCN.GraphSAGE.GAT Discussions 3 GeniePath 3.1 Permutation Invar ...

  4. 2022 Neural Networks期刊边缘检测网络FCL-Net论文精读

    FCL-Net: Towards accurate edge detection via Fine-scale Corrective Learning 本次阅读分析的论文来自于期刊Neural Net ...

  5. 《Multi-scale Convolutional Neural Networks for Crowd Counting》论文笔记

    Multi-scale Convolutional Neural Networks for Crowd Counting 论文地址 论文翻译 ABSTRACT 1. INTRODUCTION 2. M ...

  6. Mode-Adaptive Neural Networks for Quadruped Motion Control 论文

    # 摘要 动物的四足动作包括各种步态,如散步,步伐,小跑和跑步,以及诸如跳跃,坐姿,转身和怠速等动作.应用现有的特性控制框架来解决动物的四足运动问题需要大量的数据及繁琐的数据预处理,例如动作的标注和对 ...

  7. KDD2018《Adversarial Attacks on Neural Networks for Graph Data》 论文详解

    Adversarial Attacks on Neural Networks for Graph Data 论文链接:https://arxiv.org/pdf/1805.07984.pdf evas ...

  8. 6.DeepFM: A Factorization-Machine based Neural Network for CTR Prediction论文详解和代码实现

    一.总述 这篇论文来自哈工大&华为诺亚方舟实验室,主要关注如何学习user behavior背后的组合特征(feature interactions),从而最大化推荐系统的CTR.但目前的方法 ...

  9. 关于Training deep neural networks for binary communication with the Whetstone method的代码实现

    GitHub网址如下: https://github.com/SNL-NERL/Whetstone/blob/master/examples/adaptive_mnist.py 实现过程中解决的问题: ...

最新文章

  1. Gemini 3D双目结构光深度相机在Android平台上深度数据噪点非常多的问题
  2. 比ajax更好技术,ajax 技术
  3. 跑三小时的monkey测试该怎么算_百亿次的锤炼 - 带逛Dragonboat的各类测试
  4. XGBoost算法的相关知识
  5. 浅谈分布式消息技术 Kafka
  6. e search index.php,php操作elastcisearch使用ik分词做搜索,搜索结果总为空
  7. 在Mybatis中处理sql中的大于号小于号
  8. python读取文件中的内容_python逐行读取文件内容的三种方法
  9. 二十个JAVA程序代码
  10. linux下 Apache 配置虚拟主机三种方式
  11. ipad怎样和计算机连接网络,ipad怎样连接电脑itunes
  12. Pepper机器人的背后,孙正义的情怀和梦想
  13. 火车票订票小助手,帮助了很多同事和朋友,安全无毒
  14. CWnd::Create和CWnd::CreateEx 区别
  15. CentOS7.4静默安装Oracle,并通过工具远程连接
  16. Centos6.5更新e1000网卡驱动
  17. [递归+访问者模式]实现树状结构的节点遍历处理
  18. AJAX——发送GET请求
  19. 工具篇_动软代码生成器
  20. 网络游戏公司招聘C++程序员的笔试题(有我的答案)

热门文章

  1. React 项目--创建组件(7)
  2. 发现了阿里云 APP 的一个小 BUG
  3. Linux12-bash变量和逻辑运行
  4. 零基础入门学习Python(26)-文件1
  5. 第一轮通知 | 2022年中国生物物理学会肠道菌群分会年会暨“崂山论肠菌”学术论坛...
  6. STE:环境菌群代谢产物可预防炎症症状
  7. QIIME 2教程. 29参考数据库DataResources(2021.2)
  8. 【不容错过】12月10日:纳米孔测序科研团队大会NCM 2020亚太区特别专场
  9. GPB编辑部招聘启事 2019 Impact Factor破7;CiteScore破10
  10. NBT:未培养病毒基因组的最少信息标准(MIUViG)