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网络模型中,主要的优化点为:

  1. 通过Embedding层处理离散特征。Embedding层现在已经成为DNN模型处理CTR问题的标配;
  2. 增加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 W3R1×D2 b 3 ∈ R b_3\\in \\mathbbR b3R是L2层到输出层的参数, l 2 ∈ R D 2 \\mathbfl_2\\in \\mathbbR^D_2 l2RD2是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 W2RD2×D1 b 2 ∈ R D 2 \\mathbfb_2\\in \\mathbbR^D_2 b2RD2为L1层到L2层的参数, l 1 ∈ R D 1 \\mathbfl_1\\in \\mathbbR^D_1 l1RD1是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 b1RD1为Product层到L1层的参数。 l z ∈ R D 1 \\mathbfl_z\\in \\mathbbR^D_1 lzRD1为Product的线形部分, l p ∈ R D 1 \\mathbfl_p\\in \\mathbbR^D_1 lpRD1 为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=Wznz

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=Wpnp

其中, W z n \\mathbfW_z^n W推荐系统PNN模型(Product-based Neural Networks)

推荐系统PNN模型(Product-based Neural Networks)

Python,为啥我的概率神经网络(PNN)总是预测零?

PNN神经网络(Matlab)

matlab --概率神经网PNN与广义回归神经网络GRNN

故障诊断分析基于matlab PNN概率神经网络柴油机故障诊断含Matlab源码 2343期