推荐系统的PNN算法

看算法看到了PNN,找了好几篇介绍没太看懂,决定自己看完章理一遍。
前期算法储备:

  • FM算法
  • FFM算法
  • DeepFM
    PNN算法结构图
    推荐系统的PNN算法_第1张图片
    PNN结构图

    从上往下看:
    最后一层为输出层执行操作为:

    其中表示第二层隐藏层的输出。
    隐层二执行操作:

    为隐藏层1的输出。
    隐藏层1执行操作:

    表示线性部分,表示非线性部分。
    定义

    其中和为权重参数,为第一层神经元的个数。表示矩阵或者向量对应位置相乘后所有元素的和,即(这个定于与卷积的定义相同),如
    有的定义可以知道,和均是一个一个的数值。

首先明确一下各个字母的含义:为特征后的向量维度,表示用于的特征总数,表示一层和而第二层的神经元个数。表示特征后的维向量,。

下面具体先看一下
定义: l_z=(l^1_z,l^2_z,...,l^D_z),l^1_z = W^n_{z} \oplus z \\ z = (z_{1},z_{2},...z_{N})=(f_{1},f_{2},...f_{N})\\ 即: z =\begin{bmatrix} {z_{11}}&{z_{12}}&{\cdots}&{a_{1N}}\\ {a_{21}}&{a_{22}}&{\cdots}&{a_{2N}}\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}\\ {a_{M1}}&{a_{M2}}&{\cdots}&{a_{MN}}\\ \end{bmatrix}_{M*N}\\
与z按元素相乘,所以

所以线性层的参数维度为

下面再看:
由定义层中,,同理为的权重,也为一个矩阵。
具体的:

即中的每一个元素计算得出,可以给出不同的定义。
文章中函数定义了两种
1. 基于内积的函数(Inner Product-based Neural Network,IPNN)

即向量的内积。则可以表示为


由于,所以,故权重矩阵。=一个数值。

与FM算法的思路类似,考虑将进行因子分解。因为也为对称矩阵,因此可以将其分解为,此时
W^n_{p} \oplus p = \sum^N_{i=1} \sum^N_{i=1} \theta^n_{i}\theta^n_{j}<f_{i},f_{j}> = <\sum^N_{i=1} \delta^n_{i}, \sum^N_{i=1} \delta^n_{i}> = ||\sum_{i}\delta^n_{i}||\\ 其中\delta^n_{i} = \theta^n_{i}f_{i},\delta^n_{i} \in R^M


最终参数中的参数即为,故inner product涉及的参数总量为。
2. 基于外积的函数(Outer Product-based Neural Network)
此处外积定义为矩阵乘法:

由矩阵的乘法,得到。即为一个维的方阵,其中其每个元素同时也是一个维的方阵。

 如果第一层神经元的个数用表示,此时模型的时间复杂度为,其中复杂度为,样本个数为,需要计算次,复杂度为,故总的为。
为了降低复杂度,定义

此时仍有,复杂度为,。故outer product层的参数总量为。=一个数值。

即其实最终维的数组。

代码部分参考: 推荐系统遇上深度学习(六)--PNN模型理论和实践

你可能感兴趣的:(推荐系统的PNN算法)