神经网络预测
最近研究了几篇这两年在顶会上发表的使用神经网络模型进行CTR预估的策略(也可以看做是目前工业界正在使用的主流方法),正好在这里总结一下。
所谓CTR预估,就是点击转化率的预估即click through rate,一般用在推荐广告系统中。简单来说,就是当用户浏览网页或者使用APP的时候,在用户浏览的context中插入一些广告(比方说一些APP的安装链接、一些商品的销售信息),如果用户在浏览的过程中点击了这些广告,就算作是一次成功的转化。因为考虑到了用户的因素,因此针对不同的人不同的爱好,系统会推荐不同的广告。如果是离线系统,一般采用AUC进行系统性能的评估;如果是在线系统,一般采用A&B Test 的方式进行系统性能的评估。
在推荐系统中,输入样本特征包括了数值特征(比方说浏览时间、身高等等)和类别特征(比方说user-id和item-id等等),为了使这些特征的形式保持一致,方便模型的训练,一般有两种可选方式:1 全部转化为数值特征;2 全部转化为类别特征,当然这就对应于两种解决方案即“海量类别特征+简单模型” 和“少量数值特征+复杂模型”(李沐)。 这里的简单模型一般指的是LR,复杂模型一般指的是DNN。
如果全部转化为类别特征,对于原始的类别特征来说往往采用one-hot的编码方案,对于原始的数值特征来说则需要进行离散化的处理(一般采用的是等频离散化策略,即每一个离散区间内的样本数大致相当)。至于数值特征离散化的意义则如下所示:
1 对异常数据有很强的鲁棒性。比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
2 离散化后可以加强特征交叉;
3 对LR来看,能够提升模型学习能力 。单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性;
4 较少对数值的敏感性,加强模型的鲁棒性。 比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问。
这种方案最大的缺点就是会导致输入特征的稀疏性,即很多位都是0,同时还会出现有些在预测集中出现的特征组合从来没有在训练集中遇到过,这样就会使模型对于这部分样本的预测准确性大大地下降。一般业界认为这种“海量类别特征+简单模型”的方式提取到的都是低阶的特征交互信息,因为LR可以看成是单层的神经网络。
如果全部采用数值特征,一般来说对于原始的类别特征就是使用embedding策略将其映射到一个低维的实数向量空间中去,这个向量可以随机初始化也可以使用FM算法进行pre-training初始化。接下来通过多层神经网络结构和非线性变换,一般业界认为这种“少数数值特征+复杂模型”的方式提取到的都是高阶的特征交互信息。
基于上面的基础知识,下面我来介绍几篇比较不错的论文。
首先要介绍的就是2016年Google发表的论文《Wide & Deep Learning for Recommender Systems》,他在论文就形象的把推荐系统和它最拿手的“search ranking system”进行了类比,即推荐系统中的user和context信息可以被看做是search ranking system中的query,推荐系统的输出则可以被看做是search ranking system输出的ranked list of items。整个模型架构如下所示:
从图中就可以看出该模型之所以叫做Wide & Deep 模型是因为由Deep模块和Wide模块组成,所谓Wide模块其实就是上面提到的“海量类别特征+LR”,Deep模块就是“少量数值特征+DNN”(论文用实验证明对于神经元总量相同、总层数相同的DNN网络,100-200-300,300-200-100,150-300-150,200-200-200这四种方式中200-200-200效果是最好的)。最后整体的预测函数形式是
第二篇要介绍的是2017年华为诺亚方舟实验室的在IJCAI会议发表的论文《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》,这个论文提出的模型和上述Google那篇其实是很相似的,只不过把Wide模块的LR换成了FM(注意:该模型所提到的FM专指只利用一阶和二阶交互信息的线性FM即
同样FM用来学习低阶交互特征,DNN用来学习高阶交互特征。
第三篇要介绍的是2017年在SIGIR会议上发表的论文《Neural Factorization Machines for Sparse Predictive Analytics》,提出的模型名称为NFM。整个模型的预测公式为:
图中的hidden layers就是简单的全连接网络结构,可以看出图中有一个被称之为“Bi-Interaction Pooling”的操作,这也是这篇文章最大的创新点,这个操作的定义为:
第四篇要介绍的是2017年IJCAI上发表的论文《attentional Factorization Machines:Learning the Weight of Feature Interactions via Attention Networks》。从题目上可以看出这篇论文提出的模型是attention机制和FM的一种组合方式,因为很显然不是所有的二阶特征交互的重要性都是一样的,如何通过机器自动的从中学习到这些重要性是这篇论文解决的最重要的问题,首先展示一下模型的架构图:
他把引入attention机制的FM写成了如下形式:
第五篇要介绍的是2016年微软在SIGKDD会议上发表的论文《Deep Crossing: Web-scale Modeling without Manually Crafted Combinatorial Features》。这篇论文针对的也是CTR预估问题,从名字上不难看出这是一种深度神经网络模型,整个网络架构其实很简单如下所示:
在输入层统一的把所有的特征转化为dense特征,对于那些类别特征使用embedding技术进行转化。值得一提的是,在这篇paper中提到了一种技巧,可以在保证准确率的前提下降低类别特征one-hot的维度:采用统计方式,只对出现次数在一定排名之前的类别进行有效编码,其余剩下的稀少类别归为剩下的一种类别中去。其实该文章最大的创新点就是把residual layers即深度残差网络引入了推荐系统中去,residual layer如下:
第六篇要介绍的是2016年发表的论文《field-aware Factorization Machines for CTR Prediction》。从题目上看这篇paper也是一种对FM模型的创新,传统的FM在计算二阶特征交互的时候,每一维特征都对应一个固定的latent向量,但是作者说这样是不合理的。应该是每一维特征对应多个latent向量,每一个latent向量用来区分和该维特征交互的特征种类(听上去有点绕口)。举例来说比方对于一个拥有三个特征属性的样本(A,B,C),如果进行二维特征交互操作,对于这种field-aware的方式来说,当A和B交互的时候以及当A和C交互的时候分别对应两个latent向量
总的来说CTR预估目前工业界主流的方式还是神经网络那一套理论,这几篇论文都是几篇比较基础的论文,希望记录下来,以后会进一步跟进这个方向。
文章最后发布于: 2018-03-21 20:32:58
相关阅读
作为付费的企业级产品,随着开放平台应用的增多,我们需要考虑不同市场对不同应用或组合的偏好,以及组合价格对企业用户的吸引力。借着
马尔可夫预测的性质及运用 对事件的全面预测,不仅要能够指出事件发生的各种可能结果,而且还必须给出每一种结果出现的概率,说明被预
首先感谢各位客官对《别走!没有想到你是这样的用户!——流失用户预警》的抬举,在这里发文更多是为了整理这一年来的学习与收获,一年前
说到分支管理模型,令人最为熟悉的莫过于TrunkBased 和 GitFlow。 TrunkBased 模型是持续集成思想所崇尚的工作方式,它由单个master
上一篇文章解决了前三问题,这篇文章解决第四个问题,目前世界上都有哪些通用系统模型。了解了这些系统模型,未来应对复杂挑战、做出睿