点击预估PNN模型,丰富特征交叉的方式

目录

1. 前言

2. PNN模型结构

3. PNN模型原理

    3.1 介绍PNN模型 Product Layer 的线性部分   

    3.2 介绍PNN模型 Product Layer 的非线性交叉部分   

        3.2.1 Inner Product(内积) 交叉形式,IPNN

        3.2.2 Outer Product(外积) 交叉形式,OPNN

1. 前言

说在前面,点击预估模型在广告、搜索、推荐领域应用比较广泛。从传统的协同过滤、机器学习等方法逐渐过渡到深度学习领域,模型的复杂度在不断地提高,当然效果也在不断地提升。虽然目前发表论文时,总会将源代码放到网上,但是作为算法工程师要尽量的理解算法原理,并达到复现论文的能力。静下心阅读论文、拿出纸和笔推导公式,一定能掌握论文原理的整个脉络。一起加油学习吧,奥利给!

本文主要介绍一下 Product-based Neural Networks for User Response Prediction (PNN) 点击预估模型,PNN 结构网络相对传统结构的 Embedding+MLP(Multi-layer Perceptron) 点击预估模型,在 Embedding 层后增加了 Product Layer(特征乘积层),以捕捉基于 Field 的二阶特征相关性。并定义了Inner Product,Outer Product等多种Product的操作捕捉不同的交叉信息,增强了模型表征不同数据模式的能力 。

MLP有对特征进行高阶交叉的作用,但是MLP的特征交叉的能力是比较弱的,这也是为什么很多深度学习点击预估模型加入 Product Layer 的原因。

补充一个小问题:为什么MLP有对特征进行高阶交叉的作用?

答:因为激活函数的存在,为MLP提供了非线性拟合能力。特征加权求和的结果,通过sigmoid、tanh等激活函数之后,与其他神经元的输出进行进一步的混合,再通过下一层神经元的激活函数增加非线性。经过层层神经网络处理后,使MLP具备了特征交叉的能力,甚至在N层之后,就具备了拟合任意函数的能力。

2. PNN 模型结构

PNN 网络结构图如图 1 所示。接下来介绍一下PNN模型的网络结构。

图1 PNN网络结构图

输入层:多个类别 Field 变量,输入变量个数为  ;

Embedding Layer:对 Field 类别做Embedding映射,Embedding维度长度相同,均为  维;

Product Layer:分为  部分(线性部分,保留低阶特征);   部分(又分为Inner Product(内积)、Outer Product(外积) 两种形式,提供非线性/交叉信息);

Hidden Layer 1:将Product Layer的结果输入到第一层隐层,  

Hidden Layer 2:将Hidden Layer 1的结果输入到第二层隐层,   

输出层:将Hidden Layer 1的结果经过Sigmoid层输出预估值,  

3. PNN 模型原理

PNN模型的创新点在于 Product Layer,此处主要介绍该部分的原理部分。Product Layer 可以分成两个部分,一部分是线性部分  ,一部分是非线性部分  。具体形式如下:

3.1 介绍PNN模型 Product Layer 的线性部分   

 的表达式如下所示:

其中:

(1)

可以认为   就是Embedding层的复制品;

(2)

 的长度为  ,表示第一个隐层的输出节点个数,每个元素   是一个标量,每个元素中的权重矩阵  是不同的。计算时   是共享的,为输入Embedding 矩阵。

线性部分的权重矩阵参数情况:  。

3.2 介绍PNN模型 Product Layer 的非线性交叉部分   

  的表达式如下所示:

其中:


 表示成对特征交叉函数,定义不同的交叉方式也就有不同的PNN结构,   。下面分别介绍 Inner Product,Outer Product 两种 Product 操作形式。

3.2.1 Inner Product(内积) 交叉形式,IPNN

此时定义:  ,是一个标量。则   中的第   个元素为:

 

其中:  表示输入的Field个数; 表示第   个节点连接 Product Layer 的权重,形式同   ,   参数量共计  ;  表示矩阵逐项乘后全部相加;   表示第   个 Field 的Embedding向量。

  的长度为  ,表示 Product Layer   部分输出的节点个数,每个元素  也是一个标量,每个元素分别对应一个权重矩阵  。计算时   是共享的,为  矩阵。

 的矩阵详细表示:

  

优化前时间复杂度分析:

此时得到一个   的时间复杂度为  ,由于   的大小为  ,因此计算得到   的时间复杂度为  。而再由   得到   的时间复杂度是   。因此对于 IPNN 方式来说,总的时间复杂度为   。

文章对这一结构进行了优化,可以看到   是一个对称矩阵,因此也可以将权重矩阵  转化成一个对称矩阵,即:  。则:

  

第   个   节点的权重矩阵   分解出   个   ,分别与   个   做内积后相加,得到   。即 :

得到:

优化后时间复杂度分析:

得到   的时间复杂度为  ,继而得到   的时间复杂度为   ,最终得到   的复杂度为  。经过优化,时间复杂度由为   降为   。

3.2.2 Outer Product(外积) 交叉形式,OPNN

当 Product Layer 使用外积时,  表达式如下所示:

 每次计算得到的结果是一个矩阵,即:  ,此时   为  的矩阵,计算一个   的时间复杂度为   ;而   是  的矩阵,因此计算   的时间复杂度为   。从而计算  的时间复杂度变为   。

为了进行计算优化,作者引入叠加的概念(sum pooling)。将   的计算公式重新定义为:

此时:  ,则:   。

所以,优化后的   为: 

 的长度为  ,表示 Product Layer   部分输出的节点个数,每个元素  是一个标量,每个元素分别对应一个权重矩阵  。计算时   是共享的,为  矩阵。

 的矩阵详细表示:

 

优化后时间复杂度分析:

 的时间复杂度为   ,  的时间复杂度为   ,那么计算   的时间复杂度为   。从上一小节可知,计算   的时间复杂度为    。所以最终 OPNN 的时间复杂度为   。

那么OPNN的时间复杂度由   降低到   。

好了,本文主要内容  Product Layer 介绍到此结束。

参考:

Product-based Neural Networks for User Response Prediction (https://arxiv.org/pdf/1611.00144.pdf)

欢迎加入我们,一起交流学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值