专栏首页AI科技时讯PNN:Product-based Neural Networks for User Response Prediction

PNN:Product-based Neural Networks for User Response Prediction

前言

现在推荐系统,网络搜索和在线广告的数据大多是分类的,并包含多个字段,有一个典型的方法将他们转化成高维稀疏二进制特征表示就是通过one-hot编码。对于这些高维稀疏的特征,传统模型可能会限制它们从数据中挖掘浅层模式的能力,即低阶组合特征,另一方面,像深度神经网络这样的深度模型由于巨大的特征空间而不能直接应用于高维输入。所以本文提出了PNN这个模型,其中的embedding层学习种类特征的分布式表示,product层捕获种类特征之间的交互特征(学习filed之间的交互特征),全连接层捕获高阶交互特征。

本文提到的相关论文: 1、 Deep learning over multi-field categorical data: A case study on user response prediction(FNN) 2、 A convolutional click prediction model(CCPM) 3、 Sequential click prediction for sponsored search with recurrent neural networks

Introduction

信息检索领域(IR,Information Retrieval)包括:推荐系统、web search、线上广告。其核心是User Response Prediction,是指给出用户关于一个预先定义好的行为的概率。这些行为包括:clicks、purchases。预测的概率代表了用户对特定物品感兴趣的程度,物品包括:新闻、商品、广告。而这会影响商家对于展示文档的排序,广告投标等。IR问题最大的数据特点就是multi-field categorical,举例来说:对于[Weekday=Tuesday, Gender=Male, City=London],通过one-hot编码转化高纬度稀疏的数据:

。在传统的机器学习模型中,例如像LR,GBDT依旧非常依赖人工特征工程,FM则缺少对高阶组合特征的建模,仅仅对特定阶的组合特征建模。

随着DNN在图像处理、语音识别、自然语言处理领域大放异彩,将DNN应用于CTR预估或者推荐系统的研究逐渐多了起来。DNN的输入往往是dense real vector 但是multi-field类别型特征起初是高维且稀疏的。常见的做法是通过加入Embedding Layer将输入映射到低维度的Embedding空间中。FNN使用FM初始化embedding vector,同时也受限于FM;CCPM利用CNN卷积来学习组合特征,但是只在相邻的特征间卷积,没有考虑到非相邻的特征的组合。

在神经网络的各神经元中,加法操作无法发现种类特征之间的交互特征,所以采用乘法操作,来发现不同field的交互特征。这也是PNN的由来。

PNN模型介绍

网络结构图:

Input:

一个类别型特征就是一个Field。比如用户信息包括:性别、职业等,这里的性别是一个Field,职业是另一个Field。上图中的Input是one-hot之后的,而且只给出了类别型特征。所以每个Field i都是一个向量,向量的大小就是类别型特征one-hot之后的维度。所以不同Field的维度是不同的。

Embedding Layer:

Embedding是Field-wisely Connected,就是每个Field只管自己的嵌入,Field之间网络的权重毫无关系,自己学习自己的。而且只有权重,没有bias。不同的Field之间没有关系。一个Field经过嵌入后,得到一个Feature,也就是对应的Embedding Vector嵌入向量。其维度一般是预先设定好的定值,论文中采用的是10。也就说是不同Feature的维度经过embedding后都是一样的。

Product Layer:

Product Layer中z中每个圈都是一个向量,向量大小为Embedding Vector大小,向量个数 = Field个数 = Embedding向量的个数。
Product Layer中如果是内积,p中每个圈都是一个值;如果是外积,p中每个圆圈都是一个二维矩阵。

对于Embedding Vector有两种处理策略:

直接和内积或外积结果拼接,输入到神经网络。(未经过线性变换的Z和P拼接)
先进行一次线性变换,再和内积或外积结果拼接,输入到神经网络。(经过线性变换的Z和P拼接)

图上Embedding Layer中的那个1,其实就是直接把Embedding Vector拿来用并没有进行线性变换。这样做处理起来很简单,但是也有个缺点。Embedding Vector和内积项或外积项的数值分布差异交大,没有进行线性变换,导致分布不稳定不利于训练。

图中Product层包括Z和P两部分:

Z:在数据流中,假设Field个数为N,那么经过Embedding后的Field得到了N个Feature,将这N个Feature拿过来并排,没有经过线性变换,就得到Z(参考Embedding Vector有两种处理策略)。这部分代表的是对低维度特征,或者说原始特征的建模。加入这一部分训练会变得稳定。
P:经过Embedding后得到的N个Feature两两组合进行Product操作,把结果放到一起就得到了p。N个向量两两组合,会产生N(N-1)/2对组合。其中Product操作包括内积运算和外积运算,内积运算:每个神经元就是一个实数值,外积运算:每个神经元就是一个二维矩阵。

其中fi是field i经过Embedding后得到的Feature。 Pi,j = g(fi, fj)定义为Feature之间两两组合,PNN中操作方式的不同,g函数会不同。

Hidden Layer:

把z和p直接拼接起来,就得到了第一个隐层的输入。经过多个隐藏层最后给出CTR预测值。图中包括两个隐藏层L1和L2。

Wzn与 Wpn为Product层的权重。

输出:

根据Product Layer的操作不同,PNN有三种变体:IPNN、OPNN、PNN*

Inner Product-based Neural Network(IPNN)

P中每个神经元都是一个实数值,和Z中的嵌入向量拼接起来,喂给神经网络就行了。

Outer Product-based Neural Network(OPNN)

外积得到的是一个矩阵,所以p中的每个神经元都是一个矩阵。针对两个M维的嵌入向量e1和e2. 它们外积得到的是M M 的二维矩阵。一共有N个嵌入向量,那么矩阵就有N(N-1)/2个。那么一个二维矩阵怎么输入到神经网络中去?针对外积产生的每一个二维矩阵,我们都通过另外一个矩阵W,大小为M M。这两个矩阵对应位置相乘,再相加,就得到了最终的结果。也就是说,最终外积产生的二维矩阵,通过和另外一个需要学习的参数矩阵,对应位置相乘,再相加,得到了一个标量,一个实数值。

逻辑上如下图所示:

PNN*

如果Product Layer同时使用内积+外积,把内积和外积的结果拼接起来,就得到PNN*。

总结

PNN从FM和FNN的角度出发,提出利用内积或者外积来学习高阶的非线性特征

PNN中如果采用内积操作,那么嵌入向量两两组合每对组合都得到一个实数值。如果后面隐藏层的权重矩阵W全是1的话,那么PNN就变成了FM。
PNN使用外积操作得到的是一个二维矩阵,需要学得一个与之对应的二维矩阵,通过和一个矩阵对应位置相乘在相加,就把这些二维外积矩阵转换成了一个实数值。
OPNN的实现代码中利用了公式进行了转换,稍微降低了复杂度。

假设两个嵌入向量,列向量U,V。UV的外积结果为二维矩阵。外积与参数矩阵W相乘,相当于对u经过w矩阵投影,在投影空间中与v计算内积。

本文分享自微信公众号 - AI科技时讯(aiblog_research),作者:知乎

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 想成为数据科学家?先做到这6点吧!

    世界变化很快,各行各业在大环境的变化也发生着非常大的改动。传统的行业比如会计师、审计师、同声翻译、点餐员等许多职业逐渐被机器所替代。根据相关报道,...

    用户3578099
  • ​分类问题的评估指标一览

    最近分类问题搞的有点多,但对一些指标依旧有模糊的地方(虽然做了笔记), 事实证明, 笔记笔记,没有进到脑子里呀。因此,我想着肯定有跟我一样半生半熟的小伙伴在分类...

    用户3578099
  • 如何从机器学习数据中获取更多收益

    对于深度学习而言,合适的数据集以及合适的模型结构显得至关重要。选择错误的数据集或者错误的模型结构可能导致得到一个性能不佳的网络模型,甚至可能得到的是一个不收敛的...

    用户3578099
  • 程序猿的骄傲,以及骄傲背后真实的原因

    程序猿,这个字汇在近几年开始渐渐被大众所熟知。在外界看来,这一直是个特殊的群体,社会上也给程序猿贴了很多的标签,内向、屌丝、苦逼、裤衩、拖鞋等等。在他们的心中,...

    哲洛不闹
  • IP 地址的格式和分类

    在网际层中,利用 IP 地址将数据传输到目的地。为了能够使数据正确地发送到目标主机上,网络上的 IP 地址必须有一定的规则来识别主机的位置。

    杰哥的IT之旅
  • 号称自主国产浏览器,融资2.5亿!解压后竟然出现Chrome !

    网友@Touko 把红芯浏览器 Windows 版的 exe 文件多次解压后,出现了广为人知的 Chrome,并且是 Chrome 49v。

    程序员宝库
  • 弈聪软件BDS大数据公共服务平台决策分析能力三大特点

    在“互联网+”时代下,从移动互联网、到企业私有云及公有云数据平台、再到“感知万物”的物联网等,大数据早已经渗透到中国各行各业,成为重要的生产要素。基于海量大数据...

    西安弈聪软件公司
  • 听说全部看懂Arrays.sort的都被面试官录取了

    1.可以直接排的基本数据类型是:int,long,short,char,byte,float,double,其余类型都归于对象类,Object[];注意是没有b...

    三哥
  • Gitlab+Drbd高可用方案(主备模式)

    直接在清华大学镜像站下载:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/

    泽阳
  • Spark的容错机制

    天策

扫码关注云+社区

领取腾讯云代金券