论文地址:Product-based Neural Networks for User Response
Prediction
一、概述
PNN,全称为Product-based Neural Network,认为在embedding输入到MLP之后学习的交叉特征表达并不充分,提出了一种product layer的思想,既基于乘法的运算来体现特征交叉的DNN网络结构,特点如下:
- 直接从Embedding开始,而不需要预训练
- 使用product 层基于Embedding来学习特征之间的交互(包括内积和外积)
- 进一步通过FC来提取高阶特征模式
二、模型结构
2.1 Product-based Neural Network
PNN网络的架构如下图所示:
从上往下开始看:
- 网络的输出为:
y ^ = σ ( W 3 l 2 + b 3 ) \hat{y}=\sigma(W_3l_2+b_3) y^=σ(W3l2+b3)
即 l 2 l_2 l2的输出经过全连接层后再经过 s i g m o i d sigmoid sigmoid函数 - 第二个隐层的输出为:
l 2 = r e l u ( W 2 l 1 + b 2 ) l_2=relu(W_2l_1+b_2) l2=relu(W2l1+b2)
即 l 1 l_1 l1的输出经过全连接层后再经过 r e l u relu relu函数 - 第一个隐层的输出为:
l 1 = r e l u ( l z + l p + b 1 ) l_1 = relu(l_z+l_p+b_1) l1=relu(lz+lp+b1)
可以发现,输入有三个部分:-
l z l_z lz: 线性信号
-
l p l_p lp: 二阶信号
-
b 1 b_1 b1: 偏置
-
l z , l p l_z, l_p lz,lp 由product的输出 z , P z,P z,P得到,product层在下面详细介绍
- 最开始为特征嵌入层
f i = W 0 i x [ s t a r t i : e n d i ] f_i=W_0^ix[start_i:end_i] fi=W0ix[starti:endi]
x x x为包含不同fields的输入特征向量, x i x_i xi表示第 i i i 个field的 o n e one one- h o t hot hot v e c t o r vector vector,( i = 1 , ⋯ , N i=1,\cdots,N i=1,⋯,N)
2.2 Product Layer
- 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. - PNN在embedding层后设计了Product Layer,以显示捕捉基于Field的二阶特征相关性
如上图所示,Product Layer分为两部分:线性部分
z
z
z和二阶部分
P
P
P:
-
首先定义操作 ⊙ \odot ⊙为逐项相乘然后求和
-
z z z部分其实就是将Embedding层学到的嵌入直接原封不动地搬来
z = ( z 1 , z 2 , ⋯ , z N ) ≜ ( f 1 , f 2 , ⋯ , f N ) l z = ( l z 1 , l z 2 , ⋯ , l z d , ⋯ , l z D 1 ) , l z d = W z d ⊙ z \begin{aligned} & z= (z_1,z_2,\cdots,z_N) \triangleq (f_1, f_2,\cdots,f_N) \\ & l_z=(l_z^1,l_z^2,\cdots,l_z^d,\cdots,l_z^{D_1}), l_z^d=W_z^d\odot z \\ \end{aligned} z=(z1,z2,⋯,zN)≜(f1,f2,⋯,fN)lz=(lz1,lz2,⋯,lzd,⋯,lzD1),lzd=Wzd⊙z -
P P P部分是product layer的重点,表示二阶交叉特征,若 N N N 为feature field的个数
P = { p i , j } , i = ( 1 , ⋯ , N ) , j = ( 1 , ⋯ , N ) l p = ( l p 1 , l p 2 , ⋯ , l p d , ⋯ , l p D 1 ) , l z d = W p d ⊙ P \begin{aligned} & P=\{p_{i,j}\},i=(1,\cdots,N),j=(1,\cdots,N)\\ & l_p=(l_p^1,l_p^2,\cdots,l_p^d,\cdots,l_p^{D_1}), l_z^d=W_p^d\odot P \\ \end{aligned} P={pi,j},i=(1,⋯,N),j=(1,⋯,N)lp=(lp1,lp2,⋯,lpd,⋯,lpD1),lzd=Wpd⊙P
其中 p i , j = g ( f i , f j ) p_{i,j}=g(f_i,f_j) pi,j=g(fi,fj)表示 f i f_i fi和 f j f_j fj的交互, g ( ⋅ ) g(\cdot) g(⋅)可以有不同的形式,本文提出了PNN的的两种形式: I P N N IPNN IPNN和 O P N N OPNN OPNN
2.2.1 IPNN
IPNN在product层采用向量内积获得。
内积操作的图示如下:
P
∈
R
N
∗
N
,
P
i
j
=
g
(
f
i
,
f
j
)
=
<
f
i
,
f
j
>
=
f
i
T
f
j
∈
R
P\in \mathbb{R}^{N*N}, P_{ij}=g(f_i,f_j)=<f_i,f_j>=f_i^Tf_j\in \mathbb{R}
P∈RN∗N,Pij=g(fi,fj)=<fi,fj>=fiTfj∈R
其中:
- i , j = { 1 , ⋯ , N } i,j=\{1,\cdots,N\} i,j={1,⋯,N}, N N N 为特征域的个数
- f i ∈ R M f_i\in \mathbb{R}^M fi∈RM表示第 i i i个field的embedding向量
-
l
p
=
(
l
p
1
,
l
p
2
,
⋯
,
l
p
d
,
⋯
.
l
p
D
1
)
l_p=(l_p^1,l_p^2,\cdots,l_p^d,\cdots.l_p^{D_1})
lp=(lp1,lp2,⋯,lpd,⋯.lpD1),其中第
d
d
d个节点计算如下:
- l p d = W p d ⊙ P = ∑ i = 1 n ∑ j = 1 n ( W p d ) i , j P i , j l_p^d=W_p^d\odot P=\sum_{i=1}^{n}\sum_{j=1}^n(W_p^d)_{i,j}P_{i,j} lpd=Wpd⊙P=∑i=1n∑j=1n(Wpd)i,jPi,j
- ⊙ \odot ⊙表示逐项相乘再求和
- W p d ∈ R N ∗ N W_p^d\in \mathbb{R}^{N*N} Wpd∈RN∗N 为第 d d d个节点连接product层的权重
- W p d , P W_p^d , P Wpd,P 都为对称矩阵,可以利用一阶矩阵分解来近似 W p d W_p^d Wpd 从而降低复杂度
OPNN
外积操作的图示如下:
P i j = g ( f i , f j ) = f i f j T ∈ R M ∗ M P_{ij}=g(f_i,f_j)=f_if_j^T\in \mathbb{R^{M*M}} Pij=g(fi,fj)=fifjT∈RM∗M
- 当product层使用外积时,每次计算得到的结果是一个矩阵
参考资料
计算广告之CTR预测–PNN模型
详解 PNN: 在NN中显式引入Product
教你复现顶会论文网络结构(三)–PNN模型网络结构