前言
本次分享一篇2016年提出的模型PNN(Product-based Neural Networks for User Response Prediction)。本文的主要创新点是在Embedding与MLP之间加入了Product层。对于本篇文章,希望大家能看一下我提出的一个【疑问】,如果知道的话,可以私聊下进行交流。
本篇文章约2.1k字,预计阅读15分钟。
PNN
PNN是2016年上海交通大学研究团队在ICDM(International Conference on Data Mining)会议提出的模型。由于文章距离现在时间过长,所以对其中的背景、挑战不再提及。主要叙述一下文章的创新点:对于之前DIN模型中提到过的BaseModel,PNN在Embedding层与MLP层中间加入了Product层,来更有针对性地获取特征之间的交叉信息。
PNN的简要流程为:
使用Embedding层将高维稀疏数据转化为低维密集型数据;
建立一个乘积层(内积或外积操作),来对embedding特征向量进行特征之间的交互;
使用MLP对高阶特征进行提取;
Model
文章对模型的结构的分析是从上到下,这里我们还是按照从下到上对模型进行解析。
输入(Input)层
模型输入由 个特征域(Field)组成,都是离散稀疏的分类特征,如年龄、性别、id等(经过one-hot编码)。模型中并没有提及密集数值型数据,代码复现中可以在 中进行插入。
Embedding 层
与BaseModel一样,对每一个离散稀疏的Field特征域进行Embedding操作,参数是通过神经网络的反向传播进行学习。
例如,第 个域的embedding向量 是embedding的输出:
其中 表示包含多个领域的输入特征向量。 表示第 域的one-hot向量。 表示embedding层的参数。
该层引入一个常数1,是为了方便叙述乘积层的操作。
乘积(Product)层
关于该层的
和
,文中描述的是linear signals
和quadratic signals
,翻译过来就是线性信号和平方信号,其实通俗来说,
指的就是所有的特征域
;而
指的是两个embedding向量进行乘积(内积或外积)。公式描述为:
其中 是第 个域的embedding向量, 为embedding维度, 定义为特征交互对, 表示乘积操作函数。
【注】 提一个很小很小的问题,这部分的结构似乎有点歧义,模型中特征域和其自身是不发生交互的,但是文章的内容却是进行自身的交互的(图应该没有表示清楚)。
L1层
在进行乘积层操作后,并没有把结果直接送入 层,而是在乘积层内部有进行了局部全连接层的转换。线性信号 和平方信号 对应的局部全连接结果为 ,公式化描述为:
其中