1. PNN
Product-based Neural Networks,简称PNN,由上海交通大学在2016年提出。用于CTR预测。
PNN,使用embedding layer学习categorial data的分布式表示;使用product layer去捕获interfield categories的交叉模式;使用connected laye去探索高阶特征交叉。
在此之前,DNN在分类和回归任务中有很好的性能。
DNN可以自动学习更有表现力的特征表示,并提供很好的预测性能。基于连接的embedding vector基础上,建立MLPs可以探索特征交叉。但是DNN存在两个问题:(1)嵌入的初始化的质量在很大程度上受到因子分解机的限制;(2)感知器层的“add”操作对于探索多个字段中categorical数据的交叉可能不是很有用。
有工作已经证明,不同fields的特征依赖关系,可以通过特性向量“product”操作而不是“add”操作来有效探索。
通过在product layer使用inner product和outer product,文章提出了两种PNN模型:IPNN,OPNN。
一些定义:
我们使用表示第i个隐藏层的维度。
内积公式:
Input
首先,原始样本数据是多类别的categorial数据,如用户信息(City,Hour),出版社信息(Domain,Ad slot),广告信息(Ad create ID,Campania ID)等。这些数据都需要经过one-hot编码,变成特征向量(feature vector ),即Filed1,Fidld2等等。
EMbedding Layer
特征向量输入进该层,得到embedding vector。Feature1就代表着Field1的嵌入向量。我们称Featrue1为,Feature2为.
。x是Input中的ont-hot 特征向量。
Product Layer
通过嵌入层提供的“1”,这样一个常量信号,该层不仅可以产生二次信号p,还能生成线性信号z。
我们可以看到,z中的每一个向量元素,其实就是上一层嵌入向量,即复制,它没有经过任何改变。,代表这特征交叉,g函数可以有不同的实现方式。之前提到的IPNN和OPNN,就是分别将g函数设为内积和外积。
Hidden Layer 1
该层的输入包括的线性信号以及二次线性。
Hidden Layer 2
CTR
,
损失函数
2. Inner Product-based Neural Network
IPNN中定义product layer的特征交叉为向量内积。我们可以知道,此时的P是一个N*N的矩阵,Z是N*M的矩阵。
那么,L1层公式,其空间复杂度为O(D1*N*(M+N)),其时间复杂度为O(N*N(D1 +M)).
我们可以学习FM的思想,通过矩阵分解来降低复杂度:。那么:
如此,时间复杂度就变成了D1*M*N。
3. Outer Product-based Neural Network
OPNN,在product layer以向量外积作为特征交叉,生成的交叉项是一个矩阵(在IPNN中是一个数字),维度是M*M。
为了减少负责度,论文使用了叠加的思想,它重新定义了p矩阵: