最近想看一些关于推荐系统的内容,打算从CRT模型整体的发展过程看一些经典的模型。本篇就是其中一篇,PNN模型,全称Product-based Neural Network。
1、原理和模型结构
这篇文章提出的主要问题是,在embedding后到神经网络中得到的交叉特征表达的不够充分,因此提出了一种 product-based 的思想,通过乘法的运算来体现出特征交叉的网络结构。具体的结构如下图:
从上往下一次介绍模型的每个结构:
输出层
输出层主要是将上一层的结果拿来做了一个全连接,然后通过sigmoid函数,将结果映射在(0,1)上,得到需要的点击率。
l2层
l2层主要是将上一层的结果拿来做了一个全连接,然后通过relu函数,得到l2层的输出结果。
l1层
l1层和l2层类似,公式如下。 这里的$l_z$和$l_p$ 是什么呢?明显不是embedding层的结果啊。其实这就是PNN全文的核心,在embedding层和MLP中间加入的product layer.
Product layer
Product layer 其核心思想就是想体现一种多个特征之间更多的是一种“且”的关系,而不是和的关系。例如,性别为男且喜欢游戏的人群,比起性别男和喜欢游戏的人群,前者的组合比后者更能体现特征交叉的意义。
Product layer包含着2部分,其中的$l_z$和$l_p$,所表达的是线性和非线性关系。形式如下: 上面的运算方式指的是矩阵的点乘:
Embedding 层
这里的Embedding层和DeepFM中的是类似的,对于不同field的特征转化成相同长度的向量,这里用f来表示.
损失函数
损失函数采用的是和逻辑回归相同的函数,公式如下:
2、Product Layer 详细解释
前面说,product layer有两部分,$l_z$和$l_p$,其中这两部分都是由Embedding得到的。$l_z$是表示线性向量,因此我们直接由Embedding得到,z就是embedding层的复制。
对于p来说,需要将Embedding映射成另一个向量
其中这个g函数就可以是不同的类型了。文中给出了两种函数,一种是Inner PNN,另一种是 Outer PNN
2.1、IPNN
先定义Embedding的大小为M,field的大小为N,而lz和lp的长度为D1。 IPNN结构如下图所示:
在IPNN模型中,g函数采用的就是内积来代表pij:
从中我们可以看出,p是一个对称矩阵,因此W也可以是一个对称矩阵,就有如下分解:
因此:
因此:
从而得到:
2.2、OPINN
OPNN的示意图如下:
在OPNN中,g函数的计算方式如下: 这里的$p_{i,j}$是一个M* M的矩阵,由于计算Pi,j的复杂度是o(M* M),因此计算p的时间复杂度是 N* N*M *M,可以看出这个计算的代价很大。文中对此进行了优化,采用了叠加的方式,重新定义p 矩阵 此时时间复杂度D1 * M *(M+N)