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

论文概况

这篇论文是上海交大发表在ICDM 2016上的一篇论文, CCF B会,提出了模型PNN。 模型在因子分解机(Factorization Machines, FMs)具有较大的影响力, 首先提出了product操作用于 field feature之间的 interaction, 经常被引用为baseline方法。接下来,让我们一起学习一下这篇论文!

Introduction

这里我们需要指出的是,文章题目中的user response prediction在这里做出了明确的定义,是指用于预测用户做出定义的正向回应动作的概率,正向回应动作包括点击、购买等等。

Deep Learning for CTR Estimation

先贴图:
PNN
这里,我们分成三部分进行介绍。分别是未分解版IPNN, 向量分解版IPNN, 向量分解版OPNN。

未分解版IPNN

这里作者是对N个域(field)向量,分别两两进行内积,得到 N × N N\times N N×N的实数矩阵作为域之间的交互(interaction)参与模型运算。但是本文的时间复杂度和空间复杂度应该是有些问题,欢迎同学们评论区参与讨论。

原文的图片多少有点难于理解,这里放一个比较容易看的图示:
redraw-PNN

这里只显示了一个 W p W_p Wp,也即 n = 1 n = 1 n=1,实际上这里的映射矩阵应该有 D 1 D_1 D1个,用于将一次项和二次项特征(即将向量内积和向量本身堆叠形成的矩阵,就是图片中一堆箭头指向的部分)进行全连接映射。

IPNN 未分解版本时间复杂度应该为:

并行:
O ( max ⁡ ( N 2 ( D 1 + M ) ,    M N D 1 ) ) O(\max(N^2(D_1+M), \ \ MND_1)) O(max(N2(D1+M),  MND1))
串行:
O ( N 2 ( D 1 + M ) +    M N D 1 ) O(N^2(D_1+M) + \ \ MND_1) O(N2(D1+M)+  MND1)

具体如下,我们可以看到,左边一次项的空间复杂度应该是 M N D 1 MND_1 MND1,右边应该是 N 2 D 1 N^2D_1 N2D1,因此,空间复杂度为 O ( D 1 N ( M + N ) ) O(D_1N(M+N)) O(D1N(M+N))

另外,时间复杂度方面,左边一次项目计算内积,需要逐个进行计算,共 D 1 D_1 D1个矩阵,应该有 M N D 1 MND_1 MND1次运算;右边二次项,首先计算二次项共包含 N 2 M N^2M N2M次运算,计算完成后,形成了 N 2 N^2 N2大小的二次特征交互向量,二次向量向隐含层进行映射,需要完成 N 2 D 1 N^2D_1 N2D1。因此,综合上面所有部分,如果一次项和二次项是并行着运算的,那么时间复杂度应该是 O ( max ⁡ ( N 2 ( D 1 + M ) ,    M N D 1 ) ) O(\max(N^2(D_1+M), \ \ MND_1)) O(max(N2(D1+M),  MND1)) ;如果一次项和二次项同时运行,那么时间复杂度就应该是两个时间复杂度之和,即 O ( N 2 ( D 1 + M ) +    M N D 1 ) O(N^2(D_1+M) + \ \ MND_1) O(N2(D1+M)+  MND1)

不知道为什么原文中将一次项的时间复杂度略掉了,这是我的理解,欢迎有不同的意见能够在评论区批评指正,我向你敬礼,salute。

向量分解版IPNN

这里作者指出,对于对称矩阵 W p n W_p^n Wpn,可以使用 W p n = θ n θ n T W_p^n = \boldsymbol{\theta}^n {\boldsymbol{\theta}^n}^{\mathsf{T}} Wpn=θnθnT

这里需要指出的是,对于一个对称矩阵 W p n W_p^n Wpn,不一定存在向量 θ n \boldsymbol{\theta}^n θn使得 W p n = θ n θ n T W_p^n = \boldsymbol{\theta}^n {\boldsymbol{\theta}^n}^{\mathsf{T}} Wpn=θnθnT 成立,用反证法很容易证明。

W p n = [ 1 3 3 4 ] W_p^n = \begin{gathered} \begin{bmatrix} 1 & 3 \\ 3 & 4 \end{bmatrix} \quad \end{gathered} Wpn=[1334]
给定上面的矩阵 W p n W_p^n Wpn,无法用列向量和其转置乘积来简化,因为如果要得到对角上的元素1 和 4,那么向量 θ n \boldsymbol{\theta}^n θn 必须是 ( 1 , 2 ) (1, 2) (1,2) (矩阵对角元素是向量对应元素的平方),但这样一来3就错误了( 1 × 2 ≠ 3 1\times2\neq3 1×2=3)。

因此,本文使用 K K K 维向量来代替实数 θ n i {\theta}_n^i θni θ n i ∈ R K \boldsymbol{\theta}_n^i \in \mathbb{R}^K θniRK,表示形式使用向量内积。

向量分解版OPNN

这里不再赘述,具体形式上与IPNN类似,只不过将二次项的内积表达改为外积,这样,中间的权重矩阵就变化为 D 1 × N 2 × M 2 D_1 \times N^2 \times M^2 D1×N2×M2,这里 M 2 M^2 M2 是指 M M M 维的向量做外积形成的一个 M × M M\times M M×M的小矩阵, 这样 M × M M\times M M×M的小矩阵 一共有 N 2 N^2 N2 个(因为N个域特征两两配对)完成外积运算,这样的外积运算完成后,再映射到L1层,共有 D 1 D_1 D1个。

这里作者同样适用了一种简化,即将 特征外积之和 使用 特征之和的外积进行简化。

Experiments

这里突出两点:

  • 作者借鉴Net2Net模型,首先不加隐藏层和输出层,作者先对PNN的一部分进行部分预训练,预训练完之后,加上隐含层和输出层进行进一步的训练。这样模型更容易收敛。

  • Criteo数据集很大,作者用连续7天的样本作为训练集,连着的一天作为验证集。使用negative 下采样进行数据集缩小

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值