业务背景
主要内容源于阿里的《强化学习在阿里的技术演进与业务创新》第十章内容。
搜索⼴告业务不论是在阿⾥巴巴还是京东的电商体系下,都是最为重要的⼀个业务,在创造整个集团⼤部分营收的同时,也承担着重要的⽣态调节功能,是帮助商家成长的“快车道”和“名校”。
搜索⼴告的竞价和排序遵循下⾯的业务流程:⼴告上在竞价词上定义⾃⼰的出价,对于每个⼴告位,搜索⼴告引擎根据⼴告质量(包括⼴告的点击率、转化率等)和⼴告主的出价对候选⼴告集合进⾏排序,排名第⼀位的⼴告获得当前⼴告位的展⽰机会。
从整个业务流程来看,每⼀次搜索⼴告的展⽰都牵扯到了广告商、用户和平台三方的利益。对于广告商来说,借助搜索⼴告的流量获取作⽤,通过竞价来提升商品的曝光率,从而提⾼商品的销量;对于用户来说,用户在平台中搜索自己感兴趣的商品,希望平台能够提供更具个性化的推荐结果,从而提⾼浏览的效率和体验;而对搜索广告平台来说,希望在保证广告商诉求和用户体验的前提下,不断提高自己的收益,而用户和广告商的满意度也恰恰是维护平台长期收益的前提。同时最⼤化这三⽅利益的关键就是选择合适的⼴告和合适的扣费标准。他们通过优化排序公式的设计来达到这样的⽬的。采⽤⼆价扣费机制(Generalized Second Price,GSP)进⾏点击扣费计算,这种计费⽅式按照保证展⽰⼴告能够维持⾃⼰排序位置的最低出价来对⼴告商扣费。也就是说,排序公式也决定了⼴告最后的收费标准。
关于竞价方式的讨论可以参考广告系统初探。
数学模型和优化方法
首先是数学模型。搜索⼴告的优化具有场景相关性的特点,搜索⼴告和原⽣搜索结果同时展⽰在搜索结果流⾥,两者互为上下⽂,⼴告是否能吸引⽤户的眼球,并且在风格和内容上保证⽤户体验是优化的⽬标之⼀,因此定义学习公式:
a
=
A
(
s
)
a=A(s)
a=A(s)
a
a
a是排序公式的参数化描述,
s
s
s是当前请求的上下文:
s
=
<
U
s
e
r
,
Q
u
e
r
y
,
A
d
s
>
s=<User,Query,Ads>
s=<User,Query,Ads>,Ads是当前的候选广告集合,目标是最大化交互序列的多点场景奖赏和:
∑
s
r
s
\sum_s r_s
∑srs。
然后是优化目标。保证长期效益,权衡三方利益,需要不断提⾼RPM (revenue per thousand impressions,即平均千次⼴告展示获得的总⼴告商扣费)兼顾CTR(click-through-rate,⼴告点击率),CVR(conversion rate,转化率或者⽤户购买率)和GMV (gross merchandise volume,电商货品总销量)等指标。
最后是优化目标的抓手。一个是用户是否点击或购买,点击给平台带来收入,购买满足了广告主的诉求。搜索⼴告结果在展⽰页⾯是和⾃然搜索(主搜)的结果混合排列的(搜索⼴告在每⼀页有固定的展⽰位置),这就使得⽤户对⼴告的响应(点击或者购买)除了受到⼴告本⾝质量的影响以外,还受到⾃然搜索⼴告结果的影响,需要感知上下文(这里应该是两点吧,书表达有点乱)。二个是预估扣费,扣费影响平台收入,感知候选广告分布,预估扣费并调节。三个是考虑整个浏览过程,从候选广告集不放回地拿出广告是一个类似田忌赛马的博弈过程,因为不是每次拿出最好的结果就最好(这个不太理解)。
排序公式设计
a
=
a
i
(
i
=
1
,
⋯
,
5
)
a=a_i(i=1,\cdots,5)
a=ai(i=1,⋯,5)是排序公式的参数,bid是广告ad的出价,price是广告对应商品的价格。公式兼顾平台收入、用户满意程度和广告主可能的收益。
ad、ad’表⽰排在相邻的两个位置之间的⼴告,则根据GSP的扣费计算⽅式,可以计算当前点击扣费为
其实就是用后一个广告ad’计算广告ad的bid
系统简介
系统主要由三个模块构成:离线搜索⼴告仿真模块,离线强化学习模块和在线策略优化模块。
离线仿真模块主要⽤于仿真不同策略函数的参数的影响,如计算不同策略下候选⼴告的排序结果,可能的用户⾏为和扣费情况。仿真模块的使用可以使系统在离线的情况下充分探索可能的策略,同时不损害线上⽤户的真实体验。
离线强化学习模块主要根据仿真模块产⽣的结果学习最优的离线策略,完成策略模型的初始化工作。(这里的离线强化学习与offline RL有区别)
在线策略优化模块来弥补仿真与真实环境的差别。
离线仿真模块
仿真系统记录线上每次广告展示对应的上下文环境(user,query)和候选广告集合,根据策略函数参数得到新的用于展示的广告和相关点击扣费click_price,以及预估用户行为的CTR、CVR,同时使用保序回归进行校准,因为我们需要准确的概率。使用校准结果计算reward。
离线强化学习进行排序策略模型初始化
状态是上下文,包括user、query、广告列表、用户的profile信息、历史行为等。
动作是排序函数中从参数 a = { a i } i = 1 5 a=\{a_i\}_{i=1}^5 a={ai}i=15。
奖赏是面向平台收益和用户点击: r ( s t , a t ) = C T R ⋅ c l i c k _ p r i c e + δ ⋅ C T R r(s_t,a_t)=CTR\cdot click\_price+\delta\cdot CTR r(st,at)=CTR⋅click_price+δ⋅CTR, δ \delta δ是调节因子。
一个episode是同一query下的浏览过程,状态转移是迁移或离开。
作者说离线仿真暂时无法仿真前一页展示结果和用户行为对后续页广告打分的影响,因此需要off-policy的算法,同时动作空间是连续的,作者使用DDPG。
激活函数选择elu,避免梯度弥散的问题。critic输出采用dueling结构,
Q
(
s
,
a
)
=
V
(
s
)
+
A
(
s
,
a
)
Q(s,a)=V(s)+A(s,a)
Q(s,a)=V(s)+A(s,a),对v值能有更频繁的更新。进行梯度裁剪。
异步的方式进行训练,即每个worker计算梯度后回传给参数服务器。
在线排序策略模型优化
除了用户行为估计不准,仿真还存在没考虑⼴告主的预算、出价等信
息,⽆法得到序列化得仿真结果的问题,因此需要在线finetune。
这里通过演化策略进行在线更新,分为两步:
- 在模型参数空间加入高斯噪声产生探索动作a
- 统计不同噪声下的奖赏结果,更新参数
假设进行n次扰动,扰动后的参数空间为:
Θ
π
=
{
θ
π
+
ϵ
i
,
i
=
1
,
⋯
,
n
}
\Theta_{\pi}=\{\theta_{\pi}+\epsilon_i,i=1,\cdots,n\}
Θπ={θπ+ϵi,i=1,⋯,n},对应的实际奖赏为
R
i
R_i
Ri,参数更新方法为:
θ
π
′
=
θ
π
+
η
∑
i
=
1
n
R
i
ϵ
i
n
σ
\theta_{\pi}'=\theta_{\pi}+\eta\frac{\sum_{i=1}^nR_i\epsilon_i}{n\sigma}
θπ′=θπ+ηnσ∑i=1nRiϵi
η
\eta
η是学习率。这种方式有三点优势:1)不需要求导,计算量小;2)每个worker只需要把奖赏传给参数服务器,带宽需求低;3)可根据一个episode的累加奖赏更新,避免稀疏性带来的影响。
实验分析
(1) dueling 通过将值函数(value function) 和优势函数(advantage function) 区分对待,明显地提升了模型的收敛性质;(2)由于数据的⽅差比较大,batch size大一点对于收敛有正向作⽤;(3)使⽤衰减的学习率对于收敛有正向作用。
在线上进行2%的流量测试,也显示出了性能的提高。