3、 PNN
预测用户的反应,如点击和转换,是非常重要的,并且已经在许多网络应用中使用,包括推荐系统、网络搜索和在线广告。这些应用中的数据大多是分类的,并且包含多个fields;针对这些数据的一个典型的表示方法是通过单次编码将其转化为高维稀疏二进制特征表示。面对极端的稀疏性,传统模型可能会限制其从数据中挖掘浅层模式的能力,即低阶特征组合。另一方面,由于巨大的特征空间,像深度神经网络这样的深度模型不能直接应用于高维度的输入。本文提出了一个基于产品的神经网络( Product-based Neural Networks,PNN),它有一个嵌入层来学习分类数据的分布式表示,一个产品层来捕捉领域间类别的互动模式,以及一个全连接层来探索高阶特征互动。
图8. PNN结构
PNN结构如图8所示。输入层(Input):一个类别型特征就是一个Field。比如用户信息包括:性别、职业等,这里的性别是一个Field,职业是另一个Field。图18中的Input是one-hot之后的,而且只给出了类别型特征。所以每个Field i都是一个向量,向量的大小就是类别型特征one-hot之后的维度。所以不同Field的维度是不同的。
嵌入层(Embedding):是Field-wisely Connected,就是每个Field只管自己的嵌入,Field之间网络的权重毫无关系,自己学习自己的。而且只有权重,没有bias。不同的Field之间没有关系。一个Field经过嵌入后,得到一个Feature,也就是对应的嵌入向量(Embedding Vector)。其维度一般是预先设定好的固定值,论文中采用的是10。也就是说,不同Feature的维度经过embedding后都是一样的。
Product层:product思想来源于,在CTR预估中,认为特征之间的关系更多是一种and“且”的关系,而非add"加”的关系。例如,性别为男且喜欢游戏的人群,比起性别男和喜欢游戏的人群,前者的组合比后者更能体现特征交叉的意义。Product层可以分成两个部分,一部分是线性部分l_z,一部分是非线性部分l_p。二者的形式如下:
通过引入一个 "1 "的常数信号,product层不仅可以生成二次信号p,还可以保持线性信号z,如图18所示。
其中,f_i∈RM是field i的嵌入向量。p_i,j = g(f_i, f_j )定义了成对的特征交互。PNN模型可以通过设计不同的操作而有不同的实现方式。本文提出了PNN的两个变体,即IPNN(Inner Product-based Neural Network)和OPNN(Outer Product-based Neural Network)。field i的嵌入向量f_i,是嵌入层的输出:
其中,x是包含多个field的输入特征向量,x[start_i: end_i]代表field i的独热编码向量。W_0代表嵌入层的参数,(W_0)i∈RM×(end_i-start_i+1)与field全连接。
最后,将监督训练应用于最小化对数损失,以捕捉两个概率分布之间的分歧:
IPNN
在IPNN中,首先将成对的特征交互定义为矢量内积:g(f_i, f_j ) =<f_i, f_j>。在恒定信号 "1 "的情况下,线性信息z被保留为:
至于二次信息p,g(f_i, f_j )的成对内积项形成一个方形矩阵p∈RNxN。
受FM启发,作者提出了矩阵分解的想法,以降低复杂性。通过引入(W_p)n=θn θnT的假设,其中,θn∈RN,简化l_1的表述为:
通过对第n个节点的一阶分解,得到l_p如下:
更一般地说,我们讨论(W_p)n的K阶分解。(W_p)n=θnθnT只是强假设下的一阶分解。一般的矩阵分解方法可以由下式推导出来:
OPNN
矢量内积将一对矢量作为输入,输出一个标量。与此不同的是,矢量外积需要一对矢量并生成一个矩阵。IPNN通过向量内积定义了特征交互,接下来我们讨论基于外积的神经网络(OPNN)。IPNN和OPNN之间的唯一区别是二次项p。在OPNN中,定义特征交互如下:
此时,OPNN复杂度比IPNN还高。作者引入sum pooling降低复杂度,重新定义p的表述如下:
当前 SOTA!平台收录 PNN 共 2 个模型实现资源。
项目 | SOTA!平台项目详情页 |
PNN | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/pnn |
前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。
网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。
移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。