一种广告点击率预估方法
技术领域
本发明属于广告点击率预估技术领域,尤其涉及一种广告点击率预估方法。
背景技术
目前,广告点击率(Click-Through Rate,CTR)指的是给定用户和网页内容,广告被点击的次数占总展示次数的比例。在当前的大数据场景下,广告由过去的“粗放式”投放正在向“精准化”投放转变,以数据驱动的广告精准投放已经成为当前广告投放的主流方式,在广告需求方的程序化购买和在线投放过程中,需要预先评估用户对广告的偏好程度,而衡量这一重要指标的过程就是CTR预估。CTR预估是互联网计算广告中的关键环节,CTR的准确度不仅影响广告产品的收益,同时也影响用户的体验度和满意度。
传统的CTR预估主要采用逻辑回归(Logistic Rehression,LR)学习CTR预测模型,LR模型的优点是简单、可解释性强,缺点是作为一个线性模型,其表达能力不强,无法进行特征交叉。为此,提出了POLY2模型,该模型考虑了二阶特征的交叉从而在一定程度上解决了特征组合问题,但是POLY2模型采用独热向量编码的方式处理类别型特征使得特征向量极度稀疏,导致大部分特征交叉的权重难以训练,模型无法收敛。
近几年,非线性模型在CTR预估中得到广泛关注。代表模型为因子分解机模型(Factorization Machine,FM),FM通过将高维稀疏向量转化为低维稠密向量从而大幅减少了权重参数的数量,FM的缺点为只能进行二阶特征交叉,无法得到高阶特征交互信息。随后,基于FM提出的特征域相关的因子分解机模型(Field-aware Factorization Machin,FFM)在多项CTR大赛中夺魁,相比FM,FFM引入了特征域感知的概念,每个特征针对不同特征域学习不同的隐向量。可以看出,FM、POLY2和FFM均是在LR的基础上通过二阶特征的自动组合提升模型的表达能力。
随着深度学习的兴起,基于深度学习的CTR预估模型在探索特征之间的高阶组合方面取得了大幅进展,其中,代表性的CTR预估模型:如微软的DeepCrossing、谷歌的Wide&Deep、DCN,PNN、华为的SENET和阿里巴巴的DIN等等,然而这些模型忽略了建模不同特征的重要程度。对于不同的预测目标来说,不同特征的重要程度是不同的。举例来说:目标任务为预测用户是否会买《机器学习》这本书,那么该用户的职业这个特征就比用户的其他特征如:性别、收入等重要的多。
通过上述分析,现有技术存在的问题及缺陷为:基于深度学习的CTR预估模型忽略了建模不同特征的重要程度。
发明内容
针对现有技术存在的问题,本发明提供了一种广告点击率预估方法。
本发明是这样实现的,一种广告点击率预估方法,所述广告点击率预估方法,包括:
步骤一,特征编码,逐一建立模型的各个组件;
步骤二,建立嵌入层,将从原始特征转化为对于的嵌入向量;
步骤三,建立用于动态学习特征之间的重要度的SENET层;包括:用于学习特征的一阶和二阶交叉的FM模块,用于学习特征之间的高阶交叉的DNN模块;
步骤四,建立拼接层,将FM模块的输出结果和DNN模块的输出结果进行拼接,将拼接的结果输送给后续的多层感知机层;
步骤五,建立多层感知机层,通过多层神经网络对特征进一步交叉;
步骤六,广告点击率预估模型建立完成后,计算模型的损失函数。
进一步,所述步骤一中,特征表征的具体为:
原始类别型特征,性别、手机型号,经过onehot编码转化成onehot向量,公式表示为x=[x1,x2,...,xi,...xf],x∈Rd,d为onehot向量的维度;f为特征域的个数;
数值型的特征:收入,数值型特征就是其自身的值;
通常onehot向量x是一个超高维且稀疏的向量,CTR的目标即通过一个CTR预估模型将输入x转化为一个预估的概率
即:
进一步,所述步骤二中,进一步包括:
嵌入层主要用于将onehot编码后的高维稀疏向量转化为低维稠密向量E,公式表示如下:
E=[e1,e2,...,ei,...,eM];
ei=vixi;
其中,M为类别特征的特征域个数,ei为第i个特征域的Embedding向量,ei∈Rk,K为Embedding向量的维度,vi是第i个特征域的Embedding矩阵向量,xi为第i个特征域的onehot向量;
使类别型特征和数组型特征进行特征交叉,同样将数值型特征转化为一个K维的向量,公式表示为:en=vnxn;
其中vn为第n个特征域的Embedding向量,xn为第n个特征域的数值。
进一步,所述步骤三中,建立SENET层具体过程为:
首先对每个特征域的Embedding向量通过平均池化操作,使得Embedding的维度得到压缩;
其次,通过两层神经网络捕获特征域之间的相关性;
最后,将得到的相关性向量和原Embedding向量按照对应的特征域相乘得到新的Embedding向量。
进一步,所述压缩通过平均池化将原Embedding向量转化为统计向量,使得每个特征域的统计向量具有全局信息,公式表示如下:
Z=[z1,z2,...,zi,...,zf];
其中ei为第i个特征域的Embedding向量,K为Embedding向量的维度,zi为经过平均池化后的第i个特征域的统计向量。
进一步,所述通过两层神经网络捕获特征域之间的相关性中激励Excitation,主要由两层全连接层组成,通过对全连接层的两个权重参数W1、W2的学习来为统计向量Z的每个特征域生成权重A,该操作用于显式建模特征通道间的相关性,公式表示如下:
A=Fex(Z)=σ2(W2σ1(W1Z));
A={a1,...,ai,...,af};
其中,A∈R
f,f为特征域的个数,σ
1、σ
2为激活函数,本论文中σ
1、σ
2为ReLU,W
1、W
2为两个全连接层的权重,
r为缩减比例;
所述重标定Re-Weight,用于将学习到的特征通道的相关性A按照相应的特征域加权到原Embedding向量上,从而完成对原Embedding向量的“重标定”;公式表示如下:
L=FReWeight(A,E)=[a1·e1,...,ai·ei,...,af·ef]=[l1,...,li...,lf];
其中,L∈Rf×k,f为特征域的个数,k为Embedding向量的维度,li∈Rk,ei∈Rk。
进一步,所述步骤三中,建立SENET层,具体过程为:
SENET由FM和DNN两个组件构成,它们共享相同的输入;
所述FM
在FM中,通过对特征i、特征j的隐向量Vi、Vj计算內积,从而学习二阶的特征交叉;公式如下:
其中,<w,x>为一阶特征向量,w∈Rd,d为特征经过onehot编码后的维度,Vi和Vj为第i个特征和第j个特征的隐向量,xj1、xj2为样本的第j1、j2个特征的值;
所述DNN
DNN是一个包含多个隐层的前向神经网络,用来学习特征之间的高阶交互信息;将SENET层的输出向量L=[l1,...,li...,lf]作为DNN的输入,公式如下:
yDNN=LH+1=σ(WHLH+bH);
其中H为前向神经网络的层数,LH分别为第H层的输出,同时作为H+1层的输入,WH、bH为第H层的权重和偏置。
进一步,所述步骤四中,建立拼接层具体过程为:
拼接层用于拼接FM和DNN的输出向量,将拼接后的结果C作为后续网络的输入,公式表示如下:
C=concat(yFM,yDNN)。
进一步,所述步骤五中,建立多层感知机层具体过程为:
多层感知机层包含多个隐层的前向神经网络,用于对FM和DNN拼接后的结果进一步特征交叉,学习高阶特征的交互信息,公式如下:
CY+1=σ(WYCY+bY);
其中Y为前向神经网络的层数,C
Y分别为第Y层的输出,同时作为Y+1层的输入,W
Y、b
Y为第Y层的权重和偏置,
n
Y为第Y层隐节点个数,n
Y+1为第Y+1层隐节点个数;σ为激活函数,隐层节点的激活函数为ReLU;前向神经网络的最后一层连接输出节点,输出节点的激活函数采用Sigmoid激活函数,预测点击率p的计算公式如下:
p=Sigmoid(WSCS+bS);
WS为最后一个隐层到输出节点的权重向量,CS为最后一个隐层的输出向量,bS为输出节点的偏置。
进一步,所述步骤六中,计算模型的损失函数将数损失函数作为模型的目标函数,公式表示如下:
其中,L(θ)为模型的对数损失函数,θ表示模型的参数,p(xi,θ)为样本i的特征向量xi基于当前模型当前的参数θ计算得到的预测点击率,yi为样本i的真实标签,有点击的为1,无点击的为0,N为样本的总数。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提出SeSENET模型,SeSENET结构采用Squeeze-and-Excitation网络动态学习特征的重要程度,同时为了充分对特征进行交叉,本发明将FM的输出和DNN的输出进行拼接并输送给后续的多层感知机。SeSENET的主要贡献总结如下:提出了一个全新的模型用于CTR预估任务,该模型丰富了特征的表征和提升了CTR预估的准确度。不同于之前的模型无差别地将特征进行交叉,SeSENET采用Squeeze-and-Excitation网络动态学习特征之间的重要程度,使得预估的结果更加精准。在SENET的基础上对FM的输出和DNN的输出进行拼接,通过后续的多层感知机进一步学习高阶特征交叉信息从而提升模型的准确率。
本发明模型在SENET模型的基础上使用Squeeze-and-Excitation网络动态学习特征的重要性,同时该模型提出了将FM和DNN输出结果进行拼接,通过后续的多层感知机层进一步学习特征的高阶交互信息。通过对比了两个公开数据集,实验结果显示,基于特征重要度的广告点击率预估模型相比其他模型得到更好的表现。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的广告点击率预估方法流程图。
图2是本发明实施例提供的SeSENET模型的结构示意图。
图3是本发明实施例提供的SENET的网络结构结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种广告点击率预估方法,下面结合附图对本发明作详细的描述。
如图1所示,本发明实施例提供的广告点击率预估方法,包括:
S101,特征编码,逐一建立模型的各个组件;
S102,建立嵌入层,将从原始特征转化为对于的嵌入向量;
S103,建立用于动态学习特征之间的重要度的SENET层;包括:用于学习特征的一阶和二阶交叉的FM模块,用于学习特征之间的高阶交叉的DNN模块;
S104,建立拼接层,将FM模块的输出结果和DNN模块的输出结果进行拼接,将拼接的结果输送给后续的多层感知机层;
S105,建立多层感知机层,通过多层神经网络对特征进一步交叉;
S106,广告点击率预估模型建立完成后,计算模型的损失函数。
本发明提供的广告点击率预估方法业内的普通技术人员还可以采用其他的步骤实施,图1的本发明提供的广告点击率预估方法仅仅是一个具体实施例而已。
本发明实施例提供的S101中,特征表征的具体为:
原始类别型特征,如性别、手机型号,经过onehot编码转化成onehot向量,公式表示为x=[x1,x2,...,xi,...xf],x∈Rd,d为onehot向量的维度;f为特征域的个数;
数值型的特征如:收入,数值型特征就是其自身的值;
通常onehot向量x是一个超高维且稀疏的向量,CTR的目标即通过一个CTR预估模型将输入x转化为一个预估的概率
即:
本发明实施例提供的S102中,建立嵌入层的具体过程为:
嵌入层主要用于将onehot编码后的高维稀疏向量转化为低维稠密向量E,公式表示如下:
E=[e1,e2,...,ei,...,eM] (1)
ei=vixi (2)
其中,M为类别特征的特征域个数,ei为第i个特征域的Embedding向量,ei∈Rk,K为Embedding向量的维度,vi是第i个特征域的Embedding矩阵向量,xi为第i个特征域的onehot向量。为了让类别型特征和数组型特征进行特征交叉,同样将数值型特征转化为一个K维的向量,公式表示为:en=vnxn。其中vn为第n个特征域的Embedding向量,xn为第n个特征域的数值。
本发明实施例提供的S103中,建立SENET层具体过程为:
首先对每个特征域的Embedding向量通过平均池化操作,使得Embedding的维度得到压缩;
其次,通过两层神经网络捕获特征域之间的相关性。
最后,将第二步得到的相关性向量和原Embedding向量按照对应的特征域相乘得到新的Embedding向量。
所述压缩Squeeze
通过平均池化将原Embedding向量转化为统计向量,使得每个特征域的统计向量具有“全局信息”,公式表示如下:
Z=[z1,z2,...,zi,...,zf] (3)
其中ei为第i个特征域的Embedding向量,K为Embedding向量的维度,zi为经过平均池化后的第i个特征域的统计向量。
所述激励Excitation,主要由两层全连接层组成,通过对全连接层的两个权重参数W1、W2的学习来为统计向量Z的每个特征域生成权重A,该操作用于显式建模特征通道间的相关性,公式表示如下:
A=Fex(Z)=σ2(W2σ1(W1Z)) (5)
A={a1,...,ai,...,af} (6)
其中,A∈R
f,f为特征域的个数,σ
1、σ
2为激活函数,本论文中σ
1、σ
2为ReLU,W
1、W
2为两个全连接层的权重,
r为缩减比例。
所述重标定Re-Weight,用于将学习到的特征通道的相关性A按照相应的特征域加权到原Embedding向量上,从而完成对原Embedding向量的“重标定”;公式表示如下:
L=FReWeight(A,E)=[a1·e1,...,ai·ei,...,af·ef]=[l1,...,li...,lf] (7)
其中,L∈Rf×k,f为特征域的个数,k为Embedding向量的维度,li∈Rk,ei∈Rk。
本发明实施例提供S103中,建立SENET层,具体过程为:
SENET由FM和DNN两个组件构成,它们共享相同的输入。
所述FM
在FM中,通过对特征i、特征j的隐向量Vi、Vj计算內积,从而学习二阶的特征交叉。公式如下:
其中,<w,x>为一阶特征向量,w∈Rd,d为特征经过onehot编码后的维度,Vi和Vj为第i个特征和第j个特征的隐向量,xj1、xj2为样本的第j1、j2个特征的值。
所述DNN
DNN是一个包含多个隐层的前向神经网络,用来学习特征之间的高阶交互信息。将SENET层的输出向量L=[l1,...,li...,lf]作为DNN的输入,公式如下:
yDNN=LH+1=σ(WHLH+bH) (9)
其中H为前向神经网络的层数,LH分别为第H层的输出,同时作为H+1层的输入,WH、bH为第H层的权重和偏置。
本发明实施例提供的S104中,建立拼接层具体过程为:
拼接层用于拼接FM和DNN的输出向量,将拼接后的结果C作为后续网络的输入,公式表示如下:
C=concat(yFM,yDNN) (10)
本发明实施例提供的S105中,建立多层感知机层具体过程为:
多层感知机层包含多个隐层的前向神经网络,用于对FM和DNN拼接后的结果进一步特征交叉,学习高阶特征的交互信息,公式如下:
CY+1=σ(WYCY+bY) (11)
其中Y为前向神经网络的层数,C
Y分别为第Y层的输出,同时作为Y+1层的输入,W
Y、b
Y为第Y层的权重和偏置,
n
Y为第Y层隐节点个数,n
Y+1为第Y+1层隐节点个数;σ为激活函数,隐层节点的激活函数为ReLU;前向神经网络的最后一层连接输出节点,输出节点的激活函数采用Sigmoid激活函数,预测点击率p的计算公式如下:
p=Sigmoid(WSCS+bS) (12)
WS为最后一个隐层到输出节点的权重向量,CS为最后一个隐层的输出向量,bS为输出节点的偏置。
本发明实施例提供的S106中,计算模型的损失函数将数损失函数作为模型的目标函数,公式表示如下:
其中,L(θ)为模型的对数损失函数,θ表示模型的参数,p(xi,θ)为样本i的特征向量xi基于当前模型当前的参数θ计算得到的预测点击率,yi为样本i的真实标签,有点击的为1,无点击的为0,N为样本的总数。
下面结合具体实施例对本发明的技术方案作进一步的描述。
随着深度学习的兴起,基于深度学习的CTR预估模型在探索特征之间的高阶组合方面取得了大幅进展,其中,代表性的CTR预估模型:如微软的DeepCrossing、谷歌的Wide&Deep、DCN,PNN、华为的SENET和阿里巴巴的DIN等等,然而这些模型忽略了建模不同特征的重要程度。对于不同的预测目标来说,不同特征的重要程度是不同的。举例来说:目标任务为预测用户是否会买《机器学习》这本书,那么该用户的职业这个特征就比用户的其他特征如:性别、收入等重要的多。基于以上观察,在SENET的基础上,本发明提出一种SeSENET模型,SeSENET结构采用Squeeze-and-Excitation网络动态学习特征的重要程度,同时为了充分对特征进行交叉;本发明将FM的输出和DNN的输出进行拼接并输送给后续的多层感知机。SeSENET的主要贡献总结如下:
本发明提出了一个全新的模型用于CTR预估任务,该模型丰富了特征的表征和提升了CTR预估的准确度。不同于之前的模型无差别地将特征进行交叉,SeSENET采用Squeeze-and-Excitation网络动态学习特征之间的重要程度,使得预估的结果更加精准。在SENET的基础上对FM的输出和DNN的输出进行拼接,通过后续的多层感知机进一步学习高阶特征交叉信息从而提升模型的准确率。
本发明提出的SeSENET模型,如图2所示。首先介绍特征的表征,然后自底向上地逐一介绍模型的各个组件,包括:
(1)嵌入层,用于将从原始特征转化为对于的嵌入向量。
(2)SENET层,用于动态学习特征之间的重要度。
(3)SENET层,包括:1、FM模块,用于学习特征的一阶和二阶交叉;2、DNN模块,用于学习特征之间的高阶交叉。
(4)拼接层,将FM模块的输出结果和DNN模块的输出结果进行拼接,将拼接的结果输送给后续的多层感知机层。
(5)多层感知机层,通过多层神经网络对特征进一步交叉。
1.1特征的表征
原始类别型特征,如性别、手机型号等,需要经过onehot编码转化成onehot向量,公式表示为x=[x
1,x
2,...,x
i,...x
f],x∈R
d,d为onehot向量的维度。f为特征域的个数,数值型的特征如:收入等,数值型特征就是其自身的值。通常onehot向量x是一个超高维且稀疏的向量,CTR的目标即通过一个CTR预估模型将输入x转化为一个预估的概率
即:
1.2嵌入层
嵌入层主要用于将onehot编码后的高维稀疏向量转化为低维稠密向量E,公式表示如下:
E=[e1,e2,...,ei,...,eM] (1)
ei=vixi (2)
其中,M为类别特征的特征域个数,ei为第i个特征域的Embedding向量,ei∈Rk,K为Embedding向量的维度,vi是第i个特征域的Embedding矩阵向量,xi为第i个特征域的onehot向量。为了让类别型特征和数组型特征进行特征交叉,同样将数值型特征转化为一个K维的向量,公式表示为:en=vnxn。其中vn为第n个特征域的Embedding向量,xn为第n个特征域的数值。
1.3SENET层
如图3所示,SENET模块主要包含3个步骤:首先是对每个特征域的Embedding向量通过平均池化操作,使得Embedding的维度得到压缩;其次,通过两层神经网络捕获特征域之间的相关性。最后将第二步得到的相关性向量和原Embedding向量按照对应的特征域相乘得到新的Embedding向量。
1.3.1压缩Squeeze
该步骤用于特征的压缩,通过平均池化将原Embedding向量转化为统计向量,使得每个特征域的统计向量具有“全局信息”,公式表示如下:
Z=[z1,z2,...,zi,...,zf] (3)
其中ei为第i个特征域的Embedding向量,K为Embedding向量的维度,zi为经过平均池化后的第i个特征域的统计向量。
1.3.2激励Excitation
该操作主要由两层全连接层组成,通过对全连接层的两个权重参数W1、W2的学习来为统计向量Z的每个特征域生成权重A,该操作用于显式建模特征通道间的相关性,公式表示如下:
A=Fex(Z)=σ2(W2σ1(W1Z)) (5)
A={a1,...,ai,...,af} (6)
其中,A∈R
f,f为特征域的个数,σ
1、σ
2为激活函数,本论文中σ
1、σ
2为ReLU,W
1、W
2为两个全连接层的权重,
r为缩减比例。
1.3.3重标定Re-Weight
该操作用于学习到的特征通道的相关性A按照相应的特征域加权到原Embedding向量上,从而完成对原Embedding向量的“重标定”。公式表示如下:
L=FReWeight(A,E)=[a1·e1,...,ai·ei,...,af·ef]=[l1,...,li...,lf] (7)
其中,L∈Rf×k,f为特征域的个数,k为Embedding向量的维度,li∈Rk,ei∈Rk。
1.4SENET
SENET由FM和DNN两个组件构成,它们共享相同的输入,其中的好处在于:1、可以同时从原始特征中学习出低阶和高阶特征交互信息。2、相比于Wide&Deep模型,SENET无需额外的特征工程。下面分别对FM和DNN进行说明。
1.4.1FM
在FM中,通过对特征i、特征j的隐向量Vi、Vj计算內积,从而学习二阶的特征交叉。公式如下:
其中,<w,x>为一阶特征向量,w∈Rd,d为特征经过onehot编码后的维度,Vi和Vj为第i个特征和第j个特征的隐向量,xj1、xj2为样本的第j1、j2个特征的值。
1.4.2DNN
DNN是一个包含多个隐层的前向神经网络,用来学习特征之间的高阶交互信息。将SENET层的输出向量L=[l1,...,li...,lf]作为DNN的输入,公式如下:
yDNN=LH+1=σ(WHLH+bH) (9)
其中H为前向神经网络的层数,LH分别为第H层的输出,同时作为H+1层的输入,WH、bH为第H层的权重和偏置。
1.5拼接层
拼接层用于拼接FM和DNN的输出向量,将拼接后的结果C作为后续网络的输入,公式表示如下:
C=concat(yFM,yDNN) (10)
1.6多层感知机层
多层感知机层是一个包含多个隐层的前向神经网络,用于对FM和DNN拼接后的结果进一步特征交叉,学习高阶特征的交互信息,公式如下:
CY+1=σ(WYCY+bY) (11)
其中Y为前向神经网络的层数,C
Y分别为第Y层的输出,同时作为Y+1层的输入,W
Y、b
Y为第Y层的权重和偏置,
n
Y为第Y层隐节点个数,n
Y+1为第Y+1层隐节点个数。σ为激活函数,隐层节点的激活函数为ReLU。前向神经网络的最后一层连接输出节点,输出节点的激活函数采用Sigmoid激活函数,预测点击率p的计算公式如下:
p=Sigmoid(WSCS+bS) (12)
WS为最后一个隐层到输出节点的权重向量,CS为最后一个隐层的输出向量,bS为输出节点的偏置。
1.7计算模型的损失函数
为了对模型的权重和参数进行学习,将数损失函数(也称为logloss)作为模型的目标函数,公式表示如下:
其中,L(θ)为模型的对数损失函数,θ表示模型的参数,p(xi,θ)为样本i的特征向量xi基于当前模型当前的参数θ计算得到的预测点击率,yi为样本i的真实标签,有点击的为1,无点击的为0,N为样本的总数。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。