PNN模型

8/2/2021 PNN模型

# PNN相较NeuralCF和Deep Crossing有哪些改进?优势是什么?

相比NeuralCF,PNN模型的输入不仅包括用户和物品信息,还可以有更多不同形式、不同来源的特征,通过Embedding层的编码生成同样长度的稠密特征Embedding向量。

相比Deep Crossing,在输入、Embedding层、多层神经网络,以及最终的输出层没有结构上的不同,唯一的区别在于PNN用乘积层代替了Deep Crossing模型的Stacking层,不同的Embedding向量不再是简单的拼接,而是用Product操作进行两两交互,更有针对性地获取特征之间的交叉信息。

# PNN中特征交叉有哪些方式?分别是怎么样的?

PNN引入了乘积层对特征进行交叉,它由线性操作部分和乘积操作部分组成,其中,乘积特征交叉部分又分为内积操作和外积操作,使用内积操作的PNN模型被称为IPNN,使用外积操作的PNN模型被称作OPNN。

内积操作就是经典的向量内积,对应位置相乘组成一个新的向量;

外积操作是对特征向量的各维度进行两两交叉,生成一个特征交叉方形矩阵。外积操作会将复杂度从M提升到(M是输入向量的维度),为了在一定程度上减小复杂度,PNN通过把所有两两特征Embedding向量外积互操作的结果叠加,也即先通过一个平均池化层,再进行外积互操作。但对具有不同含义的特征强行池化,会模糊很多信息。

# PNN中的product 函数IPNN是怎样的?

IPNN在product层使用向量内积操作,从矩阵视角看,此时结果可以等价表示为:

其中表示输入的Field个数,表示第个Field的embedding向量。层来自product layer部分的输出为以第个节点为例:

其中表示第个节点连接product层的权重,表示矩阵逐项乘后全部相加。注意到,都是对称矩阵,类似FM,可以利用一阶矩阵分解来近似从而降低复杂。假设 ,可得:

其中。此时, 层的空间复杂度由,时间复杂度由。NN的输入维度通常远大于嵌入维度 ,通过一阶矩阵分解,层的复杂度由

这种做法本质上是利用参数共享降低了参数量,更一般地,为了减少信息丢失,可以按需要考虑K-阶分解,当然复杂度也会相应提升K倍,这是一个trade-off。

# PNN中的product 函数OPNN是怎样的?

当product层使用外积时,每次计算得到的结果是一个矩阵,即 ,这种复杂度这比IPNN更严峻。作者简单地使用sum pooling降低复杂度,product层结果为:

这时层的时空复杂度都由,但信息损失也挺严重。

降低复杂度的具体策略与具体的product函数选择有关,IPNN其实通过矩阵分解,“跳过”了显示的product层,通过代数转换直接从embedding层一步到位到隐层,而OPNN则是直接在product层入手进行优化。

# PNN模型的优势和局限性是什么?

交叉方式的多样化,相比于简单的交由全连接层进行无差别化的处理,PNN中的内积和外积操作更有针对性地强调了不同特征之间的交叉,让模型更容易捕获特征的交叉信息。

但PNN中的外积操作,为了优化训练效率,对所有的特特征进行无差别的交叉,在一定程度上忽略了原始特征向量中包含的有价值信息。