PNN网络(Product-based Neural Network)
Posted zhiyong_will
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PNN网络(Product-based Neural Network)相关的知识,希望对你有一定的参考价值。
1. 概述
PNN(Product-based Neural Network)是在2016年提出的用于计算CTR问题的深度神经网络模型,PNN的网络结构对传统的FNN(Feedforward Neural Network)网络结构做了一些优化,使得其能够更适合处理CTR问题。在PNN网络模型中,主要的优化点为:
- 通过Embedding层处理离散特征。Embedding层现在已经成为DNN模型处理CTR问题的标配;
- 增加Product层,在Product Layer中,通过显式构造特征交叉,在不同的特征域之间进行特征组合,在实际的实施过程中,会有不同的product计算方法,在参考文献[1]中,提到了两种不同的product计算方法,分别为inner producr和outer product。
2. 算法原理
2.1. PNN的网络结构
PNN的网络结构如下图所示:
从网络结构上看,整个网络分成四层,第一层为特征Embedding层,第二层为Product层(PNN最为核心的部分), 第三层与第四层是传统的全连接网络层,最后模型的输出层。其网络结构与传统的DNN网络结构基本一致,不同的就是比传统DNN网络结构增加了Product层,与传统DNN的网络结构对比如下图所示:
2.2. PNN网络的计算过程
从上到下最上层上PNN的输出层,PNN网络的输出为
y ^ = σ ( W 3 l 2 + b 3 ) \\haty=\\sigma \\left (\\mathbfW_3\\mathbfl_2+b_3\\right ) y^=σ(W3l2+b3)
其中, W 3 ∈ R 1 × D 2 \\mathbfW_3\\in \\mathbbR^1\\times D_2 W3∈R1×D2和 b 3 ∈ R b_3\\in \\mathbbR b3∈R是L2层到输出层的参数, l 2 ∈ R D 2 \\mathbfl_2\\in \\mathbbR^D_2 l2∈RD2是L2层的输出, D 2 D_2 D2为隐层L2层输出向量的维度, σ \\sigma σ为输出层的激活函数,且是CTR计算中通常使用的激活函数,此处便不在赘述。L2层的输出 l 2 \\mathbfl_2 l2为:
l 2 = r e l u ( W 2 l 1 + b 2 ) \\mathbfl_2=relu\\left ( \\mathbfW_2\\mathbfl_1+\\mathbfb_2 \\right ) l2=relu(W2l1+b2)
其中, W 2 ∈ R D 2 × D 1 \\mathbfW_2\\in \\mathbbR^D_2\\times D_1 W2∈RD2×D1和 b 2 ∈ R D 2 \\mathbfb_2\\in \\mathbbR^D_2 b2∈RD2为L1层到L2层的参数, l 1 ∈ R D 1 \\mathbfl_1\\in \\mathbbR^D_1 l1∈RD1是L1层的输出, D 1 D_1 D1为隐层L1层输出向量的维度, r e l u relu relu为L2层的激活函数。L1层的输出 l 1 \\mathbfl_1 l1为:
l 1 = r e l u ( l z + l p + b 1 ) \\mathbfl_1=relu\\left ( \\mathbfl_z+\\mathbfl_p+\\mathbfb_1 \\right ) l1=relu(lz+lp+b1)
其中, b 1 ∈ R D 1 \\mathbfb_1\\in \\mathbbR^D_1 b1∈RD1为Product层到L1层的参数。 l z ∈ R D 1 \\mathbfl_z\\in \\mathbbR^D_1 lz∈RD1为Product的线形部分, l p ∈ R D 1 \\mathbfl_p\\in \\mathbbR^D_1 lp∈RD1 为Product的特征交叉部分。 l z \\mathbfl_z lz和 l p \\mathbfl_p lp分别为:
l z = ( l z 1 , l z 2 , ⋯ , l z n , ⋯ , l z D 1 ) , l z n = W z n ⊙ z \\mathbfl_z=\\left ( l_z^1,l_z^2,\\cdots ,l_z^n,\\cdots ,l_z^D_1 \\right ),\\; l_z^n=\\mathbfW_z^n\\odot \\mathbfz lz=(lz1,lz2,⋯,lzn,⋯,lzD1),lzn=Wzn⊙z
l p = ( l p 1 , l p 2 , ⋯ , l p n , ⋯ , l p D 1 ) , l p n = W p n ⊙ p \\mathbfl_p=\\left ( l_p^1,l_p^2,\\cdots ,l_p^n,\\cdots ,l_p^D_1 \\right ),\\; l_p^n=\\mathbfW_p^n\\odot \\mathbfp lp=(lp1,lp2,⋯,lpn,⋯,lpD1),lpn=Wpn⊙p
其中, W z n \\mathbfW_z^n W推荐系统PNN模型(Product-based Neural Networks)
推荐系统PNN模型(Product-based Neural Networks)