PNN
NeuralCF模型只提到了用户向量和物品向量两组特征向量,如果加入多组特征向量该如何设计特征交互的方法呢?2016年,上海交通大学的研究人员提出了PNN模型,给出了特征交互的几种设计思路。PNN模型的提出同样是为了解决CTR预估和推荐系统的问题。
PNN模型的网络架构
模型的结构图如上图所示,相比于DeepCrossing模型,PNN模型在输入、Embedding层、多层神经网络以及最终的输出层并没有什么不同,唯一的区别在于PNN模型用乘积层(Product Layer)代替了DeepCrossing模型中的Stacking层。也就是说,不同特征的Embedding向量不再是简单的拼接,而是用Product操作进行两两交互,更有针对性地获取特征之间的交叉信息。
另外,相比NeuralCF,PNN模型的输入不仅包括用户和物品信息,还可以有更多不同形式、不同来源的特征,通过Embedding层的编码生成同样长度的稠密特征Embedding向量。针对特征的交叉方式,PNN模型也给出了更多的具体的互操作方法。
Product层的多种特征交叉方式
PNN模型对于深度学习结构的创新主要在于乘积层的引入。具体地说,PNN模型的乘积层由内积操作部分(乘积层的z部分)和外积操作部分(乘积层的p部分)组成。其中,无论是内积操作部分还是外积操作部分,都是对不同特征Embedding向量进行两两组合。为了保证内积操作和外积操作能够顺利进行,各Embedding向量的维度必然相同。
外积操作生成的是一个M×M的方形矩阵。这样的外积操作无疑会直接将问题的复杂度从原来的M提升到M2,为了将在一定程度上减小模型寻来你的负担,PNN模型的论文中介绍了一种降维的方法,就是把所有两两特征Embedding向量外积互操作的结果叠加,形成一个叠加外积互操作矩阵P,其定义如下:
从公式的最终形式看,叠加矩阵P的最终形式类似于让所有特征Embedding向量通过一个平均池化层后,再进行外积互操作。
在实际应用中,还应对平均池化层的操作谨慎对待。因为把不同特征对应维度进行平均,实际上是假设不同特征的对应维度有类似的含义。但如果不同Embedding向量不在一个向量空间中,显然不具备任何可比性。这时将二者平均起来,会模糊很多有价值的信息。平均池化的操作经常是发生在同类Embedding上。
事实上,PNN模型在经过对特征的内积和外积互操作后,并没有把结果直接送入上层的L1全连接层,而是在乘积层内部又进行了局部全连接层的转换,分别将内及部分z,外积部分p映射成了D1维的输入向量lz和lp(D1为L1隐藏层的神经元数量),再将lz和lp叠加,输入L2隐藏层。这部分可以被其他转换操作完全代替。
PNN模型的优势和局限性
优势
- PNN的结构特点在于强调了特征Embedding向量之间的交叉方式是多样化的,PNN模型定义的内积和外积操作显然更有针对性地强调了不同特征之间的交互,从而让模型更容易捕获特征的交叉信息。
局限性
- 在外积操作的实际应用中,为了优化训练效率进行了大量的简化操作。
- 对所有特征进行无差别的交叉,在一定程度上忽略了原始特征向量中包含的有价值的信息。