PNN神经网络

**一、导入

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即是这样的一个尝试。

二、模型实战

作者提出Product-based Neural Network(PNN),PNN的结构非常直观,如下图所示:

img图1. PNN网络结构

PNN与标准的「Embedding+MLP」差异仅在于引入了Product Layer。上图中Product Layer左边Z部分其实就是将Embedding层学到的嵌入直接原封不动地搬来,右边P部分才是我们讨论的重点。注意,product layer 中每个节点(见蓝色节点)是两两Field的embedding对应的“product”结果,而非所有Field的。

根据 product 函数的不同选择,PNN也有不同实现,这里的想象空间就很多了。文中尝试了相对常见的向量内积(inner product)和外积(outer product),对应 IPNN 和OPNN。

虽然结构简单,但这里存在一个大问题:product层的节点数至少是输入Field数的平方级别。在业界现实场景中,输入Field的规模往往很大,这大大增加了网络复杂度,对PNN的实际落地构成了挑战。作者把L1层每个节点的输入来源拆分为两部分,分别来自Embedding层与Product层,具体地,此时 L1层的输出l1表示为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hlvyliqc-1613575218224)(https://www.zhihu.com/equation?tex=%5Cbm%7Bl%7D_1%3Drelu%28%5Cbm%7Bl%7D_%7Bz%7D+%2B+%5Cbm%7Bl%7D_p+%2B+%5Cbm%7Bb%7D_1%29+%5Cin+%5Cmathbb%7BR%7D%5E%7BD%7D)]

其中[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xaH2FILQ-1613575218226)(https://www.zhihu.com/equation?tex=%5Cbm%7Bl%7D_z%2C+%5Cbm%7Bl%7D_p+%5Cin+%5Cmathbb%7BR%7D%5E%7BD%7D)]
对应来自Embedding层和Product层的计算结果,需要优化的正是Lp 部分。

IPNN

IPNN在product层使用向量内积操作,从矩阵视角看,此时结果可以等价表示为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KZvYhZUb-1613575218228)(https://www.zhihu.com/equation?tex=%5Cbm%7BP%7D+%5Cin+%5Cmathbb%7BR%7D%5E%7BN%2AN%7D%2C+~~~where~~~%7BP%7D_%7Bij%7D%3D%3C%5Cbm%7Bf%7D_i%2C+%5Cbm%7Bf%7D_j%3E%3D%5Cbm%7Bf%7D_i%5ET+%5Cbm%7Bf%7D_j+%5Cin+%5Cmathbb%7BR%7D)]

其中 N表示输入的Field个数, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0TdKsWHE-1613575218229)(https://www.zhihu.com/equation?tex=%5Cbm%7Bf%7D_i+%5Cin+%5Cmathbb%7BR%7D%5EM)]
表示第i个Field的embedding向量。L1层来自product layer部分的输出为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nS2yN2HL-1613575218231)(https://www.zhihu.com/equation?tex=%5Cbm%7Bl%7D_p%3D%28l_p%5E1%2Cl_p%5E2%2C..%2Cl_p%5Ed%2C...%2Cl_p%5ED%29%2C)]
以第 d 个节点为例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PJj4mPsr-1613575218232)(https://www.zhihu.com/equation?tex=%7Bl%7D_p%5Ed%3D%5Cbm%7BW%7D_p%5Ed+%5Codot+%5Cbm%7BP%7D+++%3D++%5Csum_%7Bi%3D1%7D%5E%7BN%7D++%5Csum_%7Bj%3D1%7D%5E%7BN%7D+++%28+%5Cbm%7BW%7D_p%5Ed%29_%7Bij%7D+%5Cbm%7BP%7D_%7Bij%7D)],
其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bGHxXzd7-1613575218233)(https://www.zhihu.com/equation?tex=%5Cbm%7BW%7D_p%5Ed+%5Cin+%5Cmathbb%7BR%7D%5E%7BN%2AN%7D)]
表示第d 个节点连接product层的权重,在这里插入图片描述
表示矩阵逐项乘后全部相加。注意到, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W8Hfqjnw-1613575218234)(https://www.zhihu.com/equation?tex=%5Cbm%7BP%7D%2C%5Cbm%7BW%7D_p%5Ed)]
都是对称矩阵,类似FM,可以利用一阶矩阵分解来近似 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eoB6o26p-1613575218235)(https://www.zhihu.com/equation?tex=%5Cbm%7BW%7D_p%5Ed)]
从而降低复杂。假设 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OTq6E6nT-1613575218236)(https://www.zhihu.com/equation?tex=%5Cbm%7BW%7D_p%5Ed%3D%5Cbm%7B%5Ctheta%7D%5Ed+%28%5Cbm%7B%5Ctheta%7D%5Ed%29%5ET%2C~~+%5Cbm%7B%5Ctheta%7D%5Ed+%5Cin+%5Cmathbb%7BR%7D%5EN)]
,可得:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gnAB1Axn-1613575218236)(https://www.zhihu.com/equation?tex=%7Bl%7D_p%5Ed%3D%5Cbm%7BW%7D_p%5Ed+%5Codot+%5Cbm%7BP%7D+++%3D+%5Csum_%7Bi%3D1%7D%5E%7BN%7D++%5Csum_%7Bj%3D1%7D%5E%7BN%7D+++%7B%5Ctheta%7D%5Ed_i+%7B%5Ctheta%7D%5Ed_j+%3C%5Cbm%7Bf%7D_i%2C+%5Cbm%7Bf%7D_j%3E+%3D+%3C+%5Csum_%7Bi%3D1%7D%5E%7BN%7D%5Cbm%7B%5Cdelta%7D%5Ed_i%2C+++%5Csum_%7Bi%3D1%7D%5E%7BN%7D%5Cbm%7B%5Cdelta%7D%5Ed_i%3E+%3D+%7C%7C+%5Csum_%7Bi%3D1%7D%5E%7BN%7D%5Cbm%7B%5Cdelta%7D%5Ed_i++%7C%7C%5E2)],

其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x8ZLdsuY-1613575218237)(https://www.zhihu.com/equation?tex=%5Cbm%7B%5Cdelta%7D_i%5Ed%3D%5Ctheta_i%5Ed+%5Cbm%7Bf%7D_i)] 。
此时L1 层的空间复杂度由 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y9ZN8ROA-1613575218238)(https://www.zhihu.com/equation?tex=O%28DNM%2BDN%5E2%29+%5Crightarrow+O%28DNM%29)] ,
时间复杂度由[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UkrF5PB2-1613575218239)(https://www.zhihu.com/equation?tex=O%28DNM%2BDN%5E2%29+%5Crightarrow+O%28DNM%2BDM%5E2%29)]
。NN的输入维度N通常远大于嵌入维度M ,通过一阶矩阵分解,L1 层的复杂度由 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gbIK25qS-1613575218241)(https://www.zhihu.com/equation?tex=N%5E2+%5Crightarrow+N)] 。

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

OPNN

当product层使用外积时,每次计算得到的结果是一个矩阵,即 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FNBuhihv-1613575218242)(https://www.zhihu.com/equation?tex=%5Cbm%7BP%7D_%7Bij%7D%3D++%5Cbm%7Bf%7D_i+%5Cbm%7Bf%7D_j%5ET++%5Cin+%5Cmathbb%7BR%7D%5E%7BM%2AM%7D)]
,这种复杂度这比 IPNN 更严峻。作者简单地使用sum pooling降低复杂度,product层结果为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oIdRALb1-1613575218242)(https://www.zhihu.com/equation?tex=%5Cbm%7BP%7D+%3D%5Csum_%7Bi%3D1%7D%5E%7BN%7D++%5Csum_%7Bj%3D1%7D%5E%7BN%7D+%5Cbm%7BP%7D_%7Bij%7D+%3D+%5Csum_%7Bi%3D1%7D%5E%7BN%7D++%5Csum_%7Bj%3D1%7D%5E%7BN%7D+%5Cbm%7Bf%7D_i+%5Cbm%7Bf%7D_j%5ET++%3D+%28+%5Csum_%7Bj%3D1%7D%5E%7BN%7D+%5Cbm%7Bf%7D_i+%29++%28%5Csum_%7Bj%3D1%7D%5E%7BN%7D+%5Cbm%7Bf%7D_i%29%5ET++%5Cin+%5Cmathbb%7BR%7D%5E%7BM%2AM%7D%2C)]

这时L1层的时空复杂度都由 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wLJAbhDP-1613575218244)(https://www.zhihu.com/equation?tex=O%28DM%5E2N%5E2%29+%5Crightarrow+O%28DMN%2BDM%5E2%29)]
,但信息损失也挺严重。

降低复杂度的具体策略与具体的product函数选择有关,IPNN其实通过矩阵分解,“跳过”了显示的product层,通过代数转换直接从embedding层一步到位到 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TEIPuZcE-1613575218244)(https://www.zhihu.com/equation?tex=L_1)] 隐层,而OPNN则是直接在product层入手进行优化。

三、Experiment

  • 实验设置

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

  1. Criteo 含1TB的点击日志,使用连续7天的数据训练,紧接着的下1天作测试。经过negative dawn-sampling和特征映射后,最终包含79.38 M 样本及 1.64M 维特征。
  2. 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*表示同时加入内积和外积。

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

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

img

论文也做了其他补充实验。在iPinYou数据集上,各模型在不同迭代轮数下的Auc曲线如图2所示,可见PNN模型的收敛速度在iPinYou上也优于其他算法。使用不同的隐层depth和不同类型激活函数,实验结果分别如图3和图4所示。

img图2

img图3

img图4

四、Conclusion

  1. PNN的动机很直观,通过在NN的嵌入层和隐层之间引入product层,显示地引入基于field的“product”,从而加强单纯基于“add”的NN的特征相关性学习能力。

  2. product函数的选择有不少想象空间;而引入product后的模型复杂度,将直接影响落地可行性。构造怎样的product函数以及如何降低复杂度是使用product layer的关键,例如文中对IPNN和OPNN的处理。一个实用的落地trick是基于先验知识,只在指定的Field间作product,从而降低复杂度,当然这也导致了需要human effort的坑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

perfect Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值