【推荐系统】Product-based Neural Networks for User Response Prediction

论文地址: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=Wzdz

  • 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=WpdP
    其中 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} PRNN,Pij=g(fi,fj)=<fi,fj>=fiTfjR
其中:

  • 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 fiRM表示第 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=WpdP=i=1nj=1n(Wpd)i,jPi,j
    • ⊙ \odot 表示逐项相乘再求和
    • W p d ∈ R N ∗ N W_p^d\in \mathbb{R}^{N*N} WpdRNN 为第 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)=fifjTRMM

  • 当product层使用外积时,每次计算得到的结果是一个矩阵

参考资料

计算广告之CTR预测–PNN模型
详解 PNN: 在NN中显式引入Product
教你复现顶会论文网络结构(三)–PNN模型网络结构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值