论文为: Product-based Neural Networks for User Response Prediction
1, 原理
给大家举例一个直观的场景: 比如现在有一个凤凰网站, 网站上面有一个迪斯尼广告, 那我们现在想知道用户进入这个网站之后会不会有兴趣点击这个广告, 类似这种用户点击率预测在信息检索领域就是一个非常核心的问题. 普遍的做法就是通过不同的域来描述这个事件然后预测用户的点击行为, 而这个域可以有很多. 那么什么样的用户会点击这个广告呢? 我们可能猜想: 目前在上海的年轻的用户可能会有需求, 如果今天是周五, 看到这个广告, 可能会点击这个广告为周末做活动参考. 那可能的特征会是:[Weekday=Friday, occupation=Student, City=Shanghai], 当这些特征同时出现时, 我们认为这个用户点击这个迪斯尼广告的概率会比较大.
传统的做法是应用 One-Hot Binary 的编码方式去处理这类数据, 例如现在有三个域的数据 X=[Weekday=Wednesday, Gender=Male, City=Shanghai], 其中 Weekday 有 7 个取值, 我们就把它编译为 7 维的二进制向量, 其中只有 Wednesday 是 1, 其他都是 0, 因为它只有一个特征值; Gender 有两维, 其中一维是 1; 如果有一万个城市的话, 那 City 就有一万维, 只有上海这个取值是 1, 其他是 0.
那最终就会得到一个高维稀疏向量. 但是这个数据集不能直接用神经网络训练: 如果直接用 One-Hot Binary 进行编码, 那输入特征至少有一百万, 第一层至少需要 500 个节点, 那么第一层我们就需要训练 5 亿个参数, 那就需要 20 亿或是 50 亿的数据集, 而要获得如此大的数据集基本上是很困难的事情.
FM,FNN 以及 PNN 模型
因为上述原因, 我们需要将非常大的特征向量嵌入到低维向量空间中来减小模型复杂度, 而 FM(Factorisation machine)-- 最有效的 embedding model:
第一部分仍然为 Logistic Regression, 第二部分是通过两两向量之间的点积来判断特征向量之间和目标变量之间的关系. 比如上述的迪斯尼广告, occupation=Student 和 City=Shanghai 这两个向量之间的角度应该小于 90, 它们之间的点积应该大于 0, 说明和迪斯尼广告的点击率是正相关的. 这种算法在推荐系统领域应用比较广泛.
那我们就基于这个模型来考虑神经网络模型, 其实这个模型本质上就是一个三层网络:
它在第二层对向量做了乘积处理(比如上图蓝色节点直接为两个向量乘积, 其连接边上没有参数需要学习), 每个 field 都只会被映射到一个 low-dimensional vector,field 和 field 之间没有相互影响, 那么第一层就被大量降维, 之后就可以在此基础上应用神经网络模型.
我们用 FM 算法对底层 field 进行 embeddding, 在此基础上面建模就是 FNN(Factorisation-machinesupported Neural Networks)模型:
我们进一步考虑 FNN 与一般的神经网络的区别是什么? 大部分的神经网络模型对向量之间的处理都是采用加法操作, 而 FM 则是通过向量之间的乘法来衡量两者之间的关系. 我们知道乘法关系其实相当于逻辑 "且" 的关系, 拿上述例子来说, 只有特征是学生而且在上海的人才有更大的概率去点击迪斯尼广告. 但是加法仅相当于逻辑中 "或" 的关系, 显然 "且" 比 "或" 更能严格区分目标变量.
所以我们接下来的工作就是对乘法关系建模. 可以对两个向量做内积和外积的乘法操作:
可以看出对外积操作得到矩阵而言, 如果该矩阵只有对角线上有值, 就变成了内积操作的结果, 所以内积操作可以看作是外积操作的一种特殊情况. 通过这种方式, 我们就可以衡量两个不同域之间的关系.
在此基础之上我们搭建的神经网络 PNN:
PNN, 全称为 Product-based Neural Network, 认为在 embedding 输入到 MLP 之后学习的交叉特征表达并不充分, 提出了一种 product layer 的思想, 既基于乘法的运算来体现特征交叉的 DNN 网络结构, 如下图:
按照论文的思路, 从上往下来看这个网络结构:
输出层
输出层很简单, 将上一层的网络输出通过一个全链接层, 经过 sigmoid 函数转换后映射到 (0,1) 的区间中, 得到我们的点击率的预测值:
l2 层
根据 l1 层的输出, 经一个全链接层 , 并使用 relu 进行激活, 得到我们 l2 的输出结果:
l1 层
l1 层的输出由如下的公式计算:
重点马上就要来了, 我们可以看到在得到 l1 层输出时, 我们输入了三部分, 分别是 lz,lp 和 b1,b1 是我们的偏置项, 这里可以先不管. lz 和 lp 的计算就是 PNN 的精华所在了. 我们慢慢道来:
Product Layer
product 思想来源于, 在 ctr 预估中, 认为特征之间的关系更多是一种 and"且" 的关系, 而非 add"或" 的关系. 例如, 性别为男且喜欢游戏的人群, 比起性别男和喜欢游戏的人群, 前者的组合比后者更能体现特征交叉的意义.
product layer 可以分成两个部分, 一部分是线性部分 lz, 一部分是非线性部分 lp. 二者的形式如下:
在这里, 我们要使用到论文中所定义的一种运算方式, 其实就是矩阵的点乘:
我们先继续介绍网络结构, 有关 Product Layer 的更详细的介绍, 我们在下一章中介绍.
Embedding Layer
Embedding Layer 跟 DeepFM 中相同, 将每一个 field 的特征转换成同样长度的向量, 这里用 f 来表示.
损失函数
损失函数使用交叉熵:
2,Product Layer 详细介绍
前面提到了, 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.
2.1 IPNN
IPNN 中 p 的计算方式如下, 即使用内积来代表 pij:
所以, pij 其实是一个数, 得到一个 pij 的时间复杂度为 M,p 的大小为 N*N, 因此计算得到 p 的时间复杂度为 N*N*M. 而再由 p 得到 lp 的时间复杂度是 N*N*D1. 因此 对于 IPNN 来说, 总的时间复杂度为 N*N(D1+M). 文章对这一结构进行了优化, 可以看到, 我们的 p 是一个对称矩阵, 因此我们的权重也可以是一个对称矩阵, 对称矩阵就可以进行如下的分解:
因此:
因此:
2.2 OPNN
OPNN 中 p 的计算方式如下:
此时 pij 为 M*M 的矩阵, 计算一个 pij 的时间复杂度为 M*M, 而 p 是 N*N*M*M 的矩阵, 因此计算 p 的事件复杂度为 N*N*M*M. 从而计算 lp 的时间复杂度变为 D1 * N*N*M*M. 这个显然代价很高的. 为了减少复杂度, 论文使用了叠加的思想, 它重新定义了 p 矩阵:
通过元素相乘的叠加, 也就是先叠加 N 个 field 的 Embedding 向量, 然后做乘法, 可以大幅减少时间复杂度, 定义 p 为:
这里计算 p 的时间复杂度变为了 D1*M*(M+N)
3.Discussion
和 FNN 相比, PNN 多了一个 product 层, 和 FM 相比, PNN 多了隐层, 并且输出不是简单的叠加; 在训练部分, 可以单独训练 FNN 或者 FM 部分作为初始化, 然后 BP 算法应用整个网络, 那么至少效果不会差于 FNN 和 FM;
三, EXPERIMENTS
使用 Criteo 和 iPinYou 的数据集, 并用 SGD 算法比较了 7 种模型: LR,FM,FNN,CCPM,IPNN,OPNN,PNN(拼接内积和外积层), 正则化部分(L2 和 Dropout);
实验结果如下图所示:
结果表明 PNN 提升还是蛮大的; 这里介绍一下关于激活函数的选择问题, 作者进行了对比如下:
从图中看出, 好像 tanh 在某些方面要优于 relu, 但作者采用的是 relu,relu 的作用: 1, 稀疏的激活函数(负数会被丢失);2, 有效的梯度传播(缓解梯度消失和梯度爆炸);3, 有效的计算(仅有加法, 乘法, 比较操作);
参考:
- https://www.jianshu.com/p/be784ab4abc2
- https://zhuanlan.zhihu.com/p/33177517
来源: https://www.cnblogs.com/Jesee/p/11129251.html