《推荐系统》-PNN模型

一、原理

PNN,全称为Product-based Neural Network,认为在embedding输入到MLP以后学习的交叉特征表达并不充分,提出了一种product layer的思想,既基于乘法的运算来体现体征交叉的DNN网络结构,以下图:
在这里插入图片描述
图一、Product-based Neural Network Architecturehtml

按照论文的思路,咱们也从上往下来看这个网络结构:web

输出层

输出层很简单,将上一层的网络输出经过一个全连接层,通过sigmoid函数转换后映射到(0,1)的区间中,获得咱们的点击率的预测值:
y ^ = σ ( W 3 l 2 + b 3 ) \hat{y} = \sigma (W_{3} l_{2} + b_{3} ) y^=σ(W3l2+b3)网络

l2层

根据l1层的输出,经一个全连接层 ,并使用relu进行激活,获得咱们l2的输出结果:
l 2 = r e l u ( W 2 l 1 + b 2 ) l_{2} = relu(W_{2} l_{1} + b_{2} ) l2=relu(W2l1+b2)svg

l1层

l1层的输出由以下的公式计算:
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)函数

重点立刻就要来了,咱们能够看到在获得l1层输出时,咱们输入了三部分,分别是lz,lp 和 b1,b1是咱们的偏置项,这里能够先无论。lz和lp的计算就是PNN的精华所在了。咱们慢慢道来:学习

Product Layer

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

product layer能够分红两个部分,一部分是线性部分lz,一部分是非线性部分lp。两者的形式以下:
l z = ( l z 1 , l z 2 . . . l z n . . . l z D 1 ) , l z n = W z n ⊙ z l_{z} = (l_{z}^1 ,l_{z}^2 ...l_{z}^n ...l_{z}^{D1} ) , l_{z}^n = W_{z}^n \odot z lz=(lz1,lz2...lzn...lzD1),lzn=Wznzui

l p = ( l p 1 , l p 2 . . . l p n . . . l p D 1 ) , l p n = W p n ⊙ z l_{p} = (l_{p}^1 ,l_{p}^2 ...l_{p}^n ...l_{p}^{D1} ) , l_{p}^n = W_{p}^n \odot z lp=(lp1,lp2...lpn...lpD1),lpn=Wpnzurl

在这里,咱们要使用到论文中所定义的一种运算方式,其实就是矩阵的点乘啦:
A ⊙ B = ∑ A i , j B i , j A\odot B = \sum\nolimits A_{i,j} B_{i,j} AB=Ai,jBi,jspa

Embedding Layer

Embedding Layer跟DeepFM中相同,将每个field的特征转换成一样长度的向量,这里用f来表示。
( f 1 , f 1 . . . f N ) (f_{1} ,f_{1} ...f_{N} ) (f1,f1...fN)

损失函数

使用和逻辑回归一样的损失函数,以下:
L ( y , y ^ ) = − y l o g y ^ − ( 1 − y ) l o g ( 1 − y ^ ) L(y,\hat{y} )=-y log \hat{y} -(1-y)log(1-\hat{y} ) L(y,y^)=ylogy^(1y)log(1y^)

二、Product Layer详细介绍

前面提到了,product layer能够分红两个部分,一部分是线性部分lz,一部分是非线性部分lp。看product layer的公式,咱们首先须要知道z和p,这都是由咱们的embedding层获得的,其中z是线性信号向量,所以咱们直接用embedding层获得:
z = ( z 1 , z 2 . . . z N ) ≐ ( f 1 , f 2 . . . f N ) z = (z_{1} ,z_{2} ...z_{N} )\doteq (f_{1} ,f_{2} ...f_{N} ) z=(z1,z2...zN)(f1,f2...fN)

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

对于p来讲,这里须要一个公式进行映射:
p = p i , j , i = 1... N , j = 1... N p={p_{i,j} } , i =1...N,j=1...N p=pi,j,i=1...N,j=1...N

p i , j = g ( f i , f j ) p_{i,j} = g(f_{i} ,f_{j} ) pi,j=g(fi,fj)

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

接下来,咱们分别来具体介绍这两种形式的PNN模型,因为涉及到复杂度的分析,因此咱们这里先定义Embedding的大小为M,field的大小为N,而lz和lp的长度为D1。

2.1 IPNN

IPNN的示意图以下:
在这里插入图片描述图二、IPNN

IPNN中p的计算方式以下,即便用内积来表明p_{i,j} :
g ( f i , f j ) = < f i , f j > g(f_{i} ,f_{j} ) = <f_{i} ,f_{j} > g(fi,fj)=<fi,fj>

因此,p_{i,j} 实际上是一个数,获得一个p_{i,j} 的时间复杂度为M,p的大小为NN,所以计算获得p的时间复杂度为NNM。而再由p获得lp的时间复杂度是NND1。所以 对于IPNN来讲,总的时间复杂度为NN(D1+M)。文章对这一结构进行了优化,能够看到,咱们的p是一个对称矩阵,所以咱们的权重也能够是一个对称矩阵,对称矩阵就能够进行以下的分解:
W p n = θ n θ n T W_{p}^n = \theta ^n \theta ^{nT} Wpn=θnθnT

所以:
l p n = W p n ⊙ p = ∑ i = 1 n ∑ j = 1 n < f i , f j > = < ∑ i = 1 n δ i n , ∑ i = 1 n δ i n > l_{p}^n =W_{p}^n \odot p = \sum_{i=1}^n \sum_{j=1}^n <f_{i} ,f_{j} > = <\sum_{i=1}^n \delta_i^n, \sum_{i=1}^n \delta_i^n> lpn=Wpnp=i=1nj=1n<fi,fj>=<i=1nδin,i=1nδin>

δ i n = θ i n f i \delta _{i}^n = \theta _{i}^n f_{i} δin=θinfi

所以:
δ n = ( δ 1 n , δ 2 n . . . δ i n . . . δ N n ) ∈ R N × M \delta _{n} = (\delta _{1}^n, \delta _{2}^n...\delta _{i}^n...\delta _{N}^n ) \in R^{N\times M} δn=(δ1n,δ2n...δin...δNn)RN×M

从而获得:
l p = ( ∣ ∣ ∑ i δ i 1 ∣ ∣ . . . ∣ ∣ ∑ i δ i n ∣ ∣ . . . ∣ ∣ ∑ i δ i D 1 ∣ ∣ ) l_{p} = (||\sum_{i} \delta_{i}^1 ||...||\sum_{i} \delta_{i}^n ||...||\sum_{i} \delta_{i}^{D1} ||) lp=(iδi1...iδin...iδiD1)

能够看到,咱们的权重只须要D1 * N就能够了,时间复杂度也变为了D1MN。

2.2OPNN

OPNN的示意图以下:
在这里插入图片描述
图三、OPNN

OPNN中p的计算方式以下:
p i , j = g ( f i , f j ) = f i f j T p_{i,j} =g(f_{i} ,f_{j} ) =f_{i}f_{j}^T pi,j=g(fi,fj)=fifjT

此时 p i , j p_{i,j} pi,j 为MM的矩阵,计算一个 p i , j p_{i,j} pi,j 的时间复杂度为MM,而p是NNMM的矩阵,所以计算p的事件复杂度为NNMM。从而计算lp的时间复杂度变为D1 * NNM*M。这个显然代价很高的。为了减小负责度,论文使用了叠加的思想,它从新定义了p矩阵:
p = ∑ i = 1 N ∑ j = 1 N f i f j T = f ∑ ( f ∑ ) T , f ∑ = ∑ i = 1 N f i p = \sum_{i=1}^N \sum_{j=1}^N f_{i} f_{j}^T = f_{\sum\nolimits} (f_{\sum\nolimits} )^T,f_{\sum\nolimits} =\sum_{i=1}^N f_{i} p=i=1Nj=1NfifjT=f(f)T,f=i=1Nfi

这里计算p的时间复杂度变为了D1M(M+N)

参考文献:
论文:Product-based Neural Networks for User Response Prediction

推荐系统中使用ctr排序的f(x)的设计-dnn篇之PNN模型

推荐系统赶上深度学习(六)–PNN模型理论和实践

推荐好文: 深度学习在CTR预估中的应用