一种基于改进Transformer的广告点击率预估方法
技术领域
本发明属于广告点击率预估领域,特别的涉及一种基于改进Transformer的广告点击率预估方法。
背景技术
广告点击率是指在广告展示中广告被用户点击的概率。广告点击率预估是指根据用户数据和广告数据来预估目标广告被点击的概率。在当前的大数据场景下,广告由过去的“粗放式”投放正在向“精准化”投放转变,以数据驱动的广告精准投放已经成为当前广告投放的主流方式,在广告需求方的程序化购买和在线投放过程中需要预先评估用户对广告的偏好程度,而衡量这一重要指标的过程就是广告点击率预估。广告点击率预估是互联网计算广告中的关键环节,广告点击率预估的准确度不仅影响广告产品的收益,同时也影响用户的体验度和满意度。
目前的广告点击率预估方法主要分为基于机器学习的方法和基于深度学习的方法。基于机器学习的方法主要有逻辑回归、因子分解机等等。近年来,基于深度学习的方法比传统基于机器学习的方法展现出了更多的优势,主要体现在:(1)与传统的机器学习方法相比,基于深度学习的广告点击率预估方法表达能力更强,能够挖掘出更多数据中隐藏的模式;(2)深度学习的广告点击率预估模型结构更加灵活,能够根据业务场景和数据特点灵活调整模型,且大大减少人工的特征工程。
CN202010170770.6,涉及一种基于广告点击率阈值调控的目标cpc控制方法及系统,方法包括:根据历史数据训练ctr预估模型,利用模型预估出每一条流量的ctr;建立pid控制器,根据历史数据训练pid控制器;利用pid控制器计算ctr阈值;将预估ctr与ctr阈值进行比较,确定是否对流量出价。即利用pid控制器调控ctr阈值的方式进行流量筛选,进而控制广告的计划cpc。
然而,当前的方法主要存在以下几个问题:1)当前的广告点击率预估方法直接把用户的点击行为当成用户兴趣,缺少对用户的行为序列建模;2)用户的行为是广泛且动态变化的,之前的方法都是把用户的兴趣同等对待,这显然是与事实不符的。
同时,在加入注意力机制方面,CN202010106887.8,一种广告点击率预估模型的建立方法,在模型训练阶段,将数据按照时间顺序依次输入到所选模型进行训练,并保存训练后的中间结果。在模型测试阶段,对于当前测试数据,按照用户标签和时间间隔向前检索所保留的中间结果,将这些中间结果取出,并加入注意力机制,得到一个新的向量,作为当前训练数据的输入中的一部分输入到模型中进行训练,最终的输出作为预测值。
CN202010117174.1公开了一种广告点击率预测方法,包括以下步骤:获取原始实例数据;对原始实例数据进行预处理;构建基于卷积神经网络和注意力机制的广告点击率预测网络模型;对广告点击率预测网络模型进行训练;对广告点击率预测网络模型进行测试。
但结合用户历史行为的时效性、目标广告相关度、改进Transformer和注意力机制等方面,从而进一步探索广告点击率预估方法的技术还有待进一步创新。
发明内容
为解决上述问题,本发明的目的在于提供一种基于改进Transformer的广告点击率预估方法。该方法基于改进的Transformer建模用户的历史行为序列,从而挖掘隐藏在用户点击序列背后的用户兴趣,同时利用Sampleloss监督兴趣的抽取过程,并通过注意力机制将每一步用户兴趣输出和目标广告相关度进行加权,使得相关性高的兴趣得到增强,低相关的兴趣得到削弱,使得对用户兴趣的建模更加精准。
为实现上述目的,本发明的技术方案为:
一种基于改进的Transformer的广告点击率预估方法,包括以下步骤:
S1、获取用户的历史行为记录构建用户历史点击序列,同时得到目标广告特征向量、上下文特征向量以及用户画像特征向量;
S2、将用户历史点击序列、目标广告特征向量、上下文特征向量以及用户画像特征向量输入到嵌入层,通过嵌入层的Embedding技术得到对应的嵌入向量;
S3、将用户历史点击序列的嵌入向量输入到改进的Transformer网络,改进的Transformer网络中增加了时间衰减因子对原transformer的位置编码进行加权、采用Sampleloss用于监督每一步的兴趣输出以及将transformer和注意力机制相结合,使得经过改进Transformer建模后的每一步用户兴趣输出和目标广告根据相似度进行加权;具体过程为:首先对用户点击序列的物品位置进行改进编码并抽取出用户的历史兴趣;然后采用Sampleloss监督用户兴趣的抽取;最后将用户历史兴趣和目标广告特征的嵌入向量通过注意力机制,得到经过目标广告相关度加权后的用户历史兴趣;
S4、将加权后的用户历史兴趣和目标广告特征、上下文特征以及用户画像特征的嵌入向量进行拼接,然后输入到后续的多层感知机,通过softmax激活函数得到预估的广告点击概率。
进一步,所述步骤S1中:
将用户u的历史点击记录按照点击时间排序,得到排序后的该用户点击物品序列,统称为物品序列,对该物品序列进行独热编码,将编码后的物品向量序列称为用户u的点击序列(简称用户点击序列)Su,表示如下:
Su={b1,b2,...,bT}
其中,T为用户点击序列中物品的个数,bt(1≤t≤T)为经过独热编码后该用户第t个点击的物品向量;在广告点击率预估中,其他能利用的特征有:目标广告特征、上下文特征、用户画像特征;其中上下文特征包括用户点击或购买的时间,设备信息;用户画像特征包括用户的id,用户的年龄、性别;通过独热编码分别将目标广告特征、上下文特征、用户画像特征转化为目标广告特征向量xa、上下文特征向量xc、用户画像特征向量xp。
进一步,所述步骤S2中:
由于广告类数据呈现高维稀疏性的特点,其上述原始特征也被称为稀疏特征;稀疏特征可以表示为
其中M为稀疏特征域的个数,d
model为嵌入层的Embedding维度;将步骤S1中的用户点击序列S
u、目标广告特征向量x
a、上下文特征向量x
c、用户画像特征向量x
p经过嵌入层的Embedding技术得到用户点击序列、目标广告特征、上下文特征、用户画像特征对应的嵌入向量,分别表示如下:
Eu={e1,e2,...,eT}
其中,Eu、Ea、Ec、Ep分别表示用户历史点击序列嵌入向量、目标广告特征嵌入向量、上下文特征嵌入向量、用户画像特征嵌入向量,Na、Nc、Np分别为目标广告特征向量xa、上下文特征向量xc、用户画像特征向量xp的稀疏特征的个数,T为用户点击序列中物品的个数,e1~eT即用户点击序列中第1~T位置的物品嵌入向量。
进一步,所述步骤S3包括:
S31、对用户点击序列中的物品位置进行改进编码;为了表示序列中物品之间的位置关系,对序列中的每个物品向量均分配一个位置向量PE,表示位置编码;然后根据序列中该用户最后一次点击时间和每个位置物品点击时间的时间差Vt,计算时间衰减因子
为缩减因子,
接着得到经过时间衰减因子加权过后的位置编码:PE=PE*f(Vt),Vt越大,则时间衰减因子f(Vt)越接近于0,Vt越小,则时间衰减因子f(Vt)越接近于1,其含义为越是近期的点击行为权值越大,即用户近期的点击行为对预测用户下一次的点击的参考价值越大,越是早期的点击行为对预测用户下一次的点击的参考价值越小;最后将步骤S2得到的用户历史点击序列嵌入向量E
u和序列中各个物品的位置编码向量PE相加,得到融合了位置向量的用户历史点击序列嵌入向量Z;
S32、通过多头自注意力建模用户点击序列中物品之间的关联;将步骤S31输出的向量Z进行多头自注意力计算,即并行将自注意力进行H次拼接,得到多头自注意力层的输出S;
S33、通过归一化层加快模型收敛;为防止由于参数多导致模型收敛速度慢及容易过拟合的问题,采用归一化层加快模型收敛速度及防止模型过拟合,得到归一化层的输出向量S′;
S34、通过前向全连接层加强模型的非线性能力,并再次通过归一化层加快模型收敛;通过两层全连接层进一步加强模型的非线性能力,同时采用LayerNorm和Dropout技术加快模型收敛速度和预防模型的过拟合,得到相应的输出向量O={o1,o2,...,oT},即为用户的历史兴趣,其中T为用户点击序列中物品的个数,ot代表模型基于前面t步预测出来的用户兴趣;
S35、通过Sampleloss监督用户兴趣的抽取;利用Sampleloss监督模型用户历史兴趣的每一步输出,具体方法如下:利用用户u的t+1步点击的物品向量b
t+1来监督模型第t步的用户兴趣输出
b
t+1为用户u第t+1步点击的物品向量,表示为正样本,通过负例采样随机选择总物品中未被该用户点击过的物品为负样本;于是产生
u∈1,2,...,N,
N为用户的个数,T为用户点击序列中物品的个数,d
model表示嵌入层的Embedding维度;e
u[t+1]表示用户u的点击序列的第t+1个物品的嵌入向量,
表示经过负例采样得到用户u的点击序列的第t+1个物品的嵌入向量,Sampleloss的表示向量L
Sample公式如下:
其中,Lsample为模型的Sampleloss(辅助损失函数),N为用户的个数,σ为Sigmoid激活函数。
S36、通过注意力机制建模用户历史点击序列和目标广告特征之间的相关程度,得到经过目标广告相关度加权过后的用户历史兴趣,公式如下:
其中,a
t为步骤S34的输出向量o
t和目标广告特征的嵌入向量E
a经过注意力加权后的用户历史兴趣,W为权重向量,
d
h为S34输出向量的维度,d
model为嵌入层的Embedding维度;a
t值越大表明输入o
t和目标广告特征嵌入向量E
a的相似度越高;A表示经注意力机制加权后的用户历史兴趣的平均值。
进一步,所述步骤S4包括:
S41、对步骤S36的输出向量A和目标广告特征、上下文特征、用户画像特征的嵌入向量Ea、Ec、Ep进行拼接,得到拼接后的向量Y,公式表示如下:
Y=Concat(A,Ea+Ec+Ep)
S42、通过多层感知机进一步加强特征组合并得到预估的广告点击概率;
将步骤S41的输出向量Y经过多层感知机进一步加强特征组合;多层感知机的隐节点个数设置为{200,80,2},最后一层的隐向量个数为2即表示广告点击率预估的二分类,通过softmax激活函数将二分类的输出向量转化为广告点击预估的概率p,其中0表示预测为不点击,1表示预测为点击,公式如下:
p=σ(WsY(l)+bs)
其中,σ为激活函数,l为多层感知机的层数(l>=1),
分别为多层感知机第l-1层隐节点到第l层隐节点的连接权重和偏置,
n
l-1和n
l分别为第l-1、l层隐节点的个数,Y
(l)为第l层的输出隐向量;W
s、b
s分别为多层感知机倒数第二层到最后一层的权重和偏置,最后一层的激活函数设置为softmax函数,通过softmax激活函数将二分类的输出向量转化为广告点击预估的概率p,其中0表示预测为不点击,1表示预测为点击;
再计算模型的损失函数,评估模型的好坏。
本发明用于广告点击率预估任务中挖掘用户点击序列背后的潜在兴趣,使得广告点击率预估得更加精准。本发明既建模了用户的历史兴趣序列,又通过注意力机制建模了序列和目标广告的关联,从而使得广告点击率预估更加精准。
本发明改进的Transformer的主要创新性如下:1、增加了时间衰减因子对原transformer的位置编码进行加权,使得越是近期的点击行为对预测用户下一次的点击的参考价值越大,越是早期的点击行为对预测用户下一次的点击的参考价值越小,增加对兴趣建模的时效性;2、增加Sampleloss用于监督每一步的兴趣输出,使得模型的输出和用户的真实兴趣差距得到缩小,提升模型的准确率;3、将transformer和注意力机制相结合,使得经过改进Transformer建模后的每一步用户兴趣输出和目标广告根据相似度进行加权,相关性高的兴趣得到增强,相关性低的兴趣得到削弱,使得对兴趣的建模更加有效。
附图说明
图1为本发明的结构示意图。
图2为本发明的流程示意图。
图3为本发明改进的Transformer网络的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。相反,本发明涵盖任何由权利要求定义的在本发明的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本发明有更好的了解,在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。
实施例1,一种基于改进Transformer的广告点击率预估方法,包括以下步骤:
S1、获取用户的历史行为记录构建用户历史点击序列,同时得到目标广告特征向量、上下文特征向量以及用户画像特征向量;
将用户u的历史点击记录按照点击时间排序,得到排序后的该用户点击物品序列,统称为物品序列,对该物品序列进行独热编码,将编码后的物品向量序列称为用户u的点击序列(简称用户点击序列)Su,表示如下:
Su={b1,b2,...,bT}
其中,T为用户点击序列中物品的个数,bt(1≤t≤T)为经过独热编码后该用户第t个点击的物品向量。具体地,T通常设置为100,如用户的点击物品序列长度超过100,即采取截断方式,取其前100个,如序列长度不足100,对不足部分补0处理。在广告点击率预估中,其他可以利用的特征有:目标广告特征、上下文特征、用户画像特征。其中上下文特征为用户点击或购买的时间,设备信息等,用户画像特征包括用户的id,用户的年龄、性别等等。通过独热编码分别将目标广告特征、上下文特征、用户画像特征转化为目标广告特征向量xa、上下文特征向量xc、用户画像特征向量xp。具体地,某用户的性别为男,则对应的独热向量编码为[0,1]。
S2、将用户历史点击序列、目标广告特征向量、上下文特征向量以及用户画像特征向量输入到嵌入层,通过嵌入层的Embedding技术得到对应的嵌入向量;
由于广告类数据呈现高维稀疏性的特点,其上述原始特征也被称为稀疏特征;稀疏特征可以表示为
其中M为稀疏特征域的个数,d
model为嵌入层的Embedding维度;将步骤S1中的用户点击序列S
u、目标广告特征向量x
a、上下文特征向量x
c、用户画像特征向量x
p经过嵌入层的Embedding技术得到用户点击序列、目标广告特征、上下文特征、用户画像特征对应的嵌入向量,分别表示如下:
Eu={e1,e2,...,eT}
其中,Eu、Ea、Ec、Ep分别表示用户历史点击序列嵌入向量、目标广告特征嵌入向量、上下文特征嵌入向量、用户画像特征嵌入向量,Na、Nc、Np分别为目标广告特征向量xa、上下文特征向量xc、用户画像特征向量xp的稀疏特征的个数,T为用户点击序列中物品的个数,e1~eT即用户点击序列中第1~T位置的物品嵌入向量。
S3、将用户历史点击序列的嵌入向量输入到改进的Transformer网络,首先对用户点击序列的物品位置进行改进编码并抽取出用户的历史兴趣;然后采用Sampleloss监督用户兴趣的抽取;最后将用户历史兴趣和目标广告特征的嵌入向量通过注意力机制,得到经过目标广告相关度加权后的用户历史兴趣;
具体包括:
S31、对用户点击序列中的物品位置进行改进编码;
为了表示序列中物品之间的位置关系,对序列中的每个物品向量均分配一个位置向量,同时根据序列中该用户最后一次点击时间和每个位置物品点击时间的时间差进行时间衰减,公式表示如下:
PE(pos,2i)=sin(pos/100002i/d)
PE(pos,2i+1)=cos(pos/100002i/d)
PE=PE*f(Vt)
PE表示位置编码,pos为物品在序列中的位置,2i表示偶数位置,2i+1表示奇数位置,d表示位置编码的维度,这里和嵌入层的维度相同,f(Vt)为时间衰减因子,Vt为序列中该用户最后一次点击时间和每个位置物品点击时间的时间差,
为缩减因子,
Vt越大,则时间衰减因子f(Vt)越接近于0,Vt越小,则时间衰减因子f(Vt)越接近于1。
最后将步骤S2得到的用户历史点击序列嵌入向量Eu和序列中各个物品的位置编码向量PE相加,得到融合了位置向量的用户历史点击序列嵌入向量Z,公式表示如下:
Z=Eu+PE
S32、通过多头自注意力建模用户点击序列中物品之间的关联;
将步骤S31输出的向量Z进行多头自注意力计算,过程如下:设W
i Q为查询变换矩阵权重向量,W
i K为关键字变换矩阵权重向量,W
i V为值变换矩阵权重向量,首先通过W
i Q、W
i K、W
i V将Z分别转化为查询向量Q、关键字向量K、值向量V;然后将Q、K、V进行自注意力的计算,包括对Q和K进行点积计算,结果除以缩放因子
接着经过softmax函数,得到的结果再和V相乘;最后进行多头自注意力计算,即并行将自注意力进行H次拼接,得到多头自注意力层的输出S。具体计算公式如下:
Q=ZWi Q
K=ZWi K
V=ZWi V
headi=Multihead(Z)=Attention(ZWi Q,ZWi K,ZWi V)
S=Concat(head1,head2,...,headH)WC
其中,headi表示第i个自注意力(1≤i≤H),多头自注意力S为H个自注意力的拼接。
S33、通过归一化层加快模型收敛;
为防止由于参数多导致模型收敛速度慢及容易过拟合的问题,采用归一化层加快模型收敛速度及防止模型过拟合。具体方法如下:
S′=LayerNorm(Z+Dropout(S))
Z为步骤S31的输出向量,S为S32中多头自注意力的输出,S′为归一化层的输出向量。LayerNorm表示层归一化,主要作用在于加快模型的收敛速度;Dropout为随机失活,用于在参数较多的模型中防止模型的过拟合。
S34、通过前向全连接层加强模型的非线性能力,并再次通过归一化层加快模型收敛;
通过两层全连接层进一步加强模型的非线性能力,同时继续采用LayerNorm和Dropout技术加快模型收敛速度和预防模型的过拟合。具体方法如下:
O=LayerNorm(S′+Dropout(Relu(S′W(1)+b(1))W(2)+b(2)))
O为前向全连接层的输出向量,由于在S31中输入的是一个长度为T的序列,所以将O进一步表示为O={o1,o2,...,oT},即用户的历史兴趣,其中T为用户点击序列中物品的个数,ot代表模型基于前面t步预测出来的用户兴趣。S′为S33的输出向量,W(1)、W(2)和b(1)、b(2)分别为2层前向全连接层的权重系数和偏置。
S35、通过Sampleloss监督用户兴趣的抽取;
利用Sampleloss监督模型用户历史兴趣的每一步输出,具体方法如下:利用用户u的t+1步点击的物品向量b
t+1来监督模型第t步的用户兴趣输出
b
t+1为用户u第t+1步点击的物品向量,表示为正样本,通过负例采样随机选择总物品中未被该用户点击过的物品为负样本;于是产生
u∈1,2,...,N,
N为用户的个数,T为用户点击序列中物品的个数,d
model表示嵌入层的Embedding维度;e
u[t+1]表示用户u的点击序列的第t+1个物品的嵌入向量,
表示经过负例采样得到用户u的点击序列的第t+1个物品的嵌入向量,Sampleloss的表示向量L
Sample公式如下:
其中,Lsample为模型的Sampleloss(辅助损失函数),N为用户的个数,σ为Sigmoid激活函数。
S36、通过注意力机制建模用户历史点击序列和目标广告特征之间的相关程度,得到经过目标广告相关度加权过后的用户历史兴趣,公式如下:
其中,a
t为步骤S34的输出向量o
t和目标广告特征的嵌入向量E
a经过注意力加权后的用户历史兴趣,W为权重向量,
d
h为S34输出向量的维度,d
model为嵌入层的Embedding维度;a
t值越大表明输入o
t和目标广告特征嵌入向量E
a的相关度越高;A表示经注意力机制加权后的用户历史兴趣的平均值。
S4、将加权后的用户历史兴趣和目标广告特征、上下文特征以及用户画像特征的嵌入向量进行拼接,然后输入到后续的多层感知机,通过softmax激活函数得到预估的广告点击概率;
S41、对步骤S36的输出向量A和目标广告特征、上下文特征、用户画像特征的嵌入向量Ea、Ec、Ep进行拼接,得到拼接后的向量Y,公式表示如下:
Y=Concat(A,Ea+Ec+Ep)
S42、通过多层感知机进一步加强特征组合并得到预估的广告点击概率;
将步骤S41的输出向量Y经过多层感知机进一步加强特征组合;多层感知机的隐节点个数设置为{200,80,2},最后一层的隐向量个数为2即表示广告点击率预估的二分类,通过softmax激活函数将二分类的输出向量转化为广告点击预估的概率p,其中0表示预测为不点击,1表示预测为点击,公式如下:
p=σ(WsY(l)+bs)
其中,σ为激活函数,l为多层感知机的层数(l>=1),
分别为多层感知机第l-1层隐节点到第l层隐节点的连接权重和偏置,
n
l-1和n
l分别为第l-1、l层隐节点的个数,Y
(l)为第l层的输出隐向量;W
s、b
s分别为多层感知机倒数第二层到最后一层的权重和偏置,最后一层的激活函数设置为softmax函数,通过softmax激活函数将二分类的输出向量转化为广告点击预估的概率p,其中0表示预测为不点击,1表示预测为点击;
S43、计算模型的损失函数;
将二分类交叉熵损失函数作为模型的目标函数,通过最小化损失函数使得模型的参数得到更新。目标函数公式表示如下:
L=Ltarget+α*Lsample
其中,Ltarget为模型的输出和样本的偏差,L表示模型的总损失函数,Lsample为模型的Sampleloss(辅助损失函数),α为Sampleloss加入到总损失函数的比例,N为样本的总数及用户的总个数,x为模型的输入,y为真实样本的标签,p(x)为模型的预估概率。
综上所述,本发明实施例提出的一种基于改进Transformer的广告点击率预估方法,该方法采用改进Transformer建模用户点击序列,并加入注意力机制根据目标广告来“反向激活”用户历史点击序列,使得相关性高的兴趣得到增强,低相关度的兴趣得到削弱,从而使得广告点击率的预估更加准确。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明的范围内。本发明要求的保护范围由所附的权利要求书及其等同物界定。