基于PID控制器的自动出价

643 阅读7分钟

概述

笔者梳理的《PID控制器原理及在预算平滑中的应用》介绍了PID控制器的原理和在计算广告预算平滑场景下的应用,其实在计算广告中还有很多场景应用了PID控制器。只要某对控制变量和被控制变量较难提前根据两者的关系函数,计算控制变量的值,使得被控制变量的值满足预期目标,则可以采用PID控制器对控制变量进行实时调控,使得被控制变量尽量趋近至预期目标。

PID控制器的另外一种应用场景是自动出价,通过调控出价使得最终实际的业务指标趋近于预期值。《Bid Optimization by Multivariable Control in Display Advertising》这篇论文介绍了程序化广告场景中DSP在对接ADX时如何基于反馈控制进行自动出价。

本篇是对《Bid Optimization by Multivariable Control in Display Advertising》的阅读笔记。如有不足之处,请指正。

出价策略

本篇论文首先将自动出价问题建模成线性规划问题,然后基于线性规划对偶问题和互补松弛定理推导出最优出价公式,最后使用反馈控制,对出价公式中的参数根据实时投放效果进行调整,以使得各业务指标趋近至预期值。

当然对于自动出价,目前也有不少论文探索其他方法,并取得不错的效果,一种方法是在通过线性规划推导出最优出价公式的基础上,通过强化学习进行公式参数的调整,关于这种方法的详细介绍可以进一步阅读笔者梳理的下述阅读笔记:

另一种方法是通过扩散模型进行生成式的自动出价,关于这种方法的详细介绍可以进一步阅读笔者梳理的下述阅读笔记:

RTB

图1 程序化广告投放流程和涉及方

因为论文介绍程序化广告场景中DSP在对接ADX时如何基于反馈控制进行自动出价,所以论文首先介绍程序化广告投放流程,如图1所示。

程序化广告投放流程即实时竞价(Real Time Bidding,RTB)。当用户访问网站时,网站向ADX发起广告请求,然后ADX向各DSP发起出价请求,DSP根据当前请求召回匹配的广告,预估广告点击率、转化率,同时还会预估各方出价分布以推断竞胜价格,在上述预估的基础上,DSP使用某种出价策略计算出价,向ADX返回广告和相应出价,ADX对各DSP返回的广告和相应出价进行竞价,选择出价最高的广告胜出,并向网站返回广告进行展示,同时,将第二高的出价作为竞胜价格向胜出的DSP发送计价请求,即计价方式为展现计价,竞价机制为广义二价拍卖(GSP),广告展示后发生的用户行为(如点击、转化等)也会发送给DSP,用于统计分析和模型训练。

关于广告点击率、转化率预估的详细介绍可以进一步阅读笔者梳理的下述阅读笔记:

关于出价分布预估的详细介绍可以进一步阅读论文:

而中国程序化广告整体技术生态如图2所示,目前,像头条、腾讯、百度这些大厂在商业化上一般建设综合大型投放平台,同时承担DSP、SSP、ADX、DMP等多个角色,因为其拥有大量优质用户流量,所以广告主也倾向于将预算投入到上述平台,由于同时拥有大量优质用户流量和广告主预算,上述平台能够投入大量的人力、财力进行系统建设、效果优化,做好用户流量和广告主预算的匹配,为广告主提供优质的投放服务和效果保障,为媒体提供优质的用户体验和流量变现,从而进一步吸引更多用户流量和广告主预算入驻上述平台,从而形成良性循环。因此,头条、腾讯、百度这些大厂在虹吸中国互联网优质用户流量的同时,也在虹吸中国各行业优质广告主的在线广告预算。

图2 中国程序化广告技术生态

下面假设广告预估点击率、转化率、出价分布已由其他模块或模型计算得到,主要介绍如何基于反馈控制进行自动出价。

问题建模

令一天中共有NN次广告曝光机会。对于第ii次广告曝光机会,xix_i表示竞得该次广告曝光机会的概率,取值为0和1之间,取值为1表示竞得,取值为0表示未竞得,viv_i表示该次广告曝光机会的价值,那么DSP一天所有竞得的广告曝光机会的总价值:

Value=i=1...Nxivi(1)Value=\sum_{i=1...N}{x_i\cdot v_i} \tag{1}

wpiwp_i表示竞得广告曝光机会后DPS需要支付的竞胜价格,那么DSP一天所有竞得的广告曝光机会需支付的总金额:

Cost=i=1...Nxiwpi(2)Cost=\sum_{i=1...N}{x_i\cdot wp_i} \tag{2}

CTRiCTR_i表示预估点击率,CVRiCVR_i表示预估转化率,则点击成本:

CPC=i=1...Nxiwpii=1...NxiCTRi(3)CPC=\frac{\sum_{i=1...N}{x_i\cdot wp_i}}{\sum_{i=1...N}{x_i\cdot CTR_i}} \tag{3}

对于广告价值,若广告主希望最大化转化,则使用预估点击率和预估转化率相乘作为转化效率来表示广告价值,即:

vi=CTRiCVRi(4)v_i=CTR_i\cdot CVR_i \tag{4}

若希望在满足预算和点击成本约束下,最大化广告价值,则问题可建模为:

maxxii=1...NxiCTRiCVRis.t.i=1...NxiwpiBi=1...Nxiwpii=1...NxiCTRiCwhere 0xi1,i(5)\begin{align} \max_{x_i} & \sum_{i=1...N}{x_i \cdot CTR_i \cdot CVR_i} \\ \text{s.t.} & \sum_{i=1...N}{x_i \cdot wp_i \le B} \\ & \frac{\sum_{i=1...N}{x_i \cdot wp_i}}{\sum_{i=1...N}{x_i \cdot CTR_i}} \le C \\ \text{where } & 0 \le x_i \le 1,\forall i \end{align} \tag{5}

最优出价策略

上述线性规划问题可进一步改写成以下形式:

maxxii=1...NxiCTRiCVRis.t.i=1...NxiwpiBi=1...Nxi(wpiCTRiC)0xi1,iwhere xi0,i(6)\begin{align} \max_{x_i} & \sum_{i=1...N}{x_i \cdot CTR_i \cdot CVR_i} \\ \text{s.t.} & \sum_{i=1...N}{x_i \cdot wp_i \le B} \\ & \sum_{i=1...N}{x_i \cdot (wp_i - CTR_i \cdot C)} \le 0 \\ & x_i \le 1, \forall i \\ \text{where } & x_i \ge 0,\forall i \end{align} \tag{6}

其中,xi,i=1,...,nx_i,\forall i=1,...,n是原问题需求解的变量,表示每次曝光机会竞胜的概率,令xi,i=1,...,nx_i^*,\forall i=1,...,n是原问题的最优解,即若根据最优解中每次曝光机会竞胜的概率进行广告投放,则可以在满足预算和点击成本约束的前提下,获得最多的转化。

而在线性规划中,每个原问题都有对应的对偶问题。若原问题的形式为:

maxCXs.t.AXbwhere X0(7)\begin{align} \max & CX \\ \text{s.t.} & AX \le b \\ \text{where } & X \ge 0 \end{align} \tag{7}

其中,CR1×nC\in\mathbb{R}^{1\times n}ARm×nA\in\mathbb{R}^{m \times n}bRm×1b\in\mathbb{R}^{m \times 1}X={x1,...,xn}X=\{x_1,...,x_n\},是原问题需求解的变量。那么其对偶问题的形式为:

minYbs.t.YACwhere Y0(8)\begin{align} \min & Yb \\ \text{s.t.} & YA \ge C \\ \text{where } & Y \ge 0 \end{align} \tag{8}

其中,Y={y1,...,ym}Y=\{y_1,...,y_m\},是对偶问题需求解的变量。且上述线性规划原问题和对偶问题满足以下定理。

定理一(弱对偶性):若Xˉ\bar{X}是原问题的可行解,Yˉ\bar{Y}是对偶问题的可行解,则有CXˉYˉbC\bar{X}\le \bar{Y}b

由弱对偶性定理,我们有以下重要结论:

  • 原问题任一可行解的目标函数值是其对偶问题目标函数值的下界;反之对偶问题任一可行解的目标函数值是其原问题目标函数值的上界;
  • 如原问题有可行解且目标函数值无界(具有无界解),则其对偶问题无可行解;反之,对偶问题有可行解且目标函数值无界,则原问题无可行解。

定理二:若XX^*是原问题的可行解,YY^*是对偶问题的可行解,且有CX=YbCX^*=Y^*b,则XX^*是原问题的最优解,YY^*是对偶问题的最优解。

定理三(强对偶性):若原问题有最优解,则对偶问题也有最优解,且目标函数值相等。

定理四(互补松弛性):若XX^*YY^*分别是原问题和对偶问题的可行解。那么YXs=0Y^*X_s=0YsX=0Y_sX^*=0,当且仅当XX^*YY^*为最优解,其中XsX_sYsY_s分别为原问题的松弛变量和对偶问题的剩余变量,即:

maxCXs.t.AX+Xs=bwhere X0(9)\begin{align} \max & CX \\ \text{s.t.} & AX + X_s = b \\ \text{where } & X \ge 0 \end{align} \tag{9}

minYbs.t.YAYs=Cwhere Y0(10)\begin{align} \text{min} & Yb \\ \text{s.t.} & YA - Y_s = C \\ \text{where } & Y \ge 0 \\ \end{align} \tag{10}

其中,Xs={xs1,...,xsm}X_s=\{x_{s1},...,x_{sm}\}Ys={ys1,...,ysn}Y_s=\{y_{s1},...,y_{sn}\}

根据互补松弛定理可知,原问题和对偶问题的最优解必须满足:第ii个原始松弛变量大于0意味着第ii个对偶变量等于0;第ii个对偶变量大于0意味着第ii个原始松弛变量等于0;第ii个对偶剩余变量大于0意味着第ii个原始变量等于0,第ii个原始变量大于0意味着第ii个对偶剩余变量等于0。

根据上述线性规划原问题和对偶问题的对应关系,可以将自动出价的线性规划原问题转化为以下对偶问题:

minp,q,riBp+i=1...Nris.t.wpip+(wpiCTRiC)q+rivi,iwhere p0,q0,ri0,ivi=CTRiCVRi,i(11)\begin{align} \min_{p,q,r_i} & B \cdot p + \sum_{i=1...N}{r_i} \\ \text{s.t.} & wp_i \cdot p + (wp_i - CTR_i \cdot C)q + r_i \ge v_i, \forall i \\ \text{where } & p \ge 0, \\ & q \ge 0, \\ & r_i \ge 0, \forall i \\ & v_i = CTR_i \cdot CVR_i, \forall i \end{align} \tag{11}

其中,ppqqri,i=1,...,nr_i,\forall i=1,...,n是对偶问题需求解的变量,令pp^*qq^*ri,i=1,...,nr_i^*,\forall i=1,...,n是对偶问题的最优解。

xsi,i=1,...,nx_{si},\forall i=1,...,n是自动出价对偶问题的剩余变量,则对于第ii个剩余变量xsix_{si},有:

wpip+(wpiCTRiC)q+rixsi=vi(12)wp_i \cdot p^* + (wp_i - CTR_i \cdot C)q^*+r_i^* - x_{si} = v_i \tag{12}

所以:

xsi=wpip+(wpiCTRiC)q+rivi(13)x_{si}= wp_i \cdot p^* + (wp_i - CTR_i \cdot C)q^*+r_i^* - v_i \tag{13}

由互补松弛定理可知:

xixsi=0(14)x_i^* \cdot x_{si} = 0 \tag{14}

替换xsix_{si}可得:

xi(viwpip(wpiCTRiC)qri)=0(15)x_i^* \cdot (v_i - wp_i \cdot p^* - (wp_i - CTR_i \cdot C) q^* - r_i^*) = 0 \tag{15}

类似地,令psp_sqsq_srsi,i=1,...,nr_{si},\forall i=1,...,n是自动出价原问题的松弛变量,则对于松弛变量rsir_{si},有:

xi+rsi=1(16)x_i^*+r_{si}=1 \tag{16}

所以:

rsi=1xi(17)r_{si}=1-x_i^* \tag{17}

由互补松弛定理可知:

rsiri=0(18)r_{si} \cdot r_i^* = 0 \tag{18}

替换rsir_{si}可得:

(xi1)ri=0(19)(x_i^*-1) \cdot r_i^* = 0 \tag{19}

论文进一步分析,若原问题在最优解下,第ii次曝光竞胜,则xi>0x_i^* \gt 0,则由式15可知:

viwpip(wpiCTRiC)qri=0(20)v_i - wp_i \cdot p^* - (wp_i - CTR_i \cdot C) q^* - r_i^* = 0 \tag{20}

对上式进行推导,可得:

wpi=1p+qvi+qp+qCCTRi1p+qri=1p+qCTRiCVRi+qp+qCCTRi1p+qri(21)\begin{align} wp_i & = \frac{1}{p^* + q^*} v_i + \frac{q^*}{p^*+q^*} C \cdot CTR_i - \frac{1}{p^* + q^*} r_i^* \\ & = \frac{1}{p^* + q^*} CTR_i \cdot CVR_i + \frac{q^*}{p^*+q^*} C \cdot CTR_i - \frac{1}{p^* + q^*} r_i^* \end{align} \tag{21}

因为p0p^* \ge 0q0q^* \ge 0ri0r_i^* \ge 0,所以1p+qri0\frac{1}{p^* + q^*}r_i^* \ge 0

论文根据推导出的wpiwp_i的公式,设计最优出价策略,即对于第ii次曝光的最优出价bidibid_i^*,其由下式计算:

bidi=1p+qCTRiCVRi+qp+qCCTRi(22)bid_i^*=\frac{1}{p^*+q^*}CTR_i\cdot CVR_i+\frac{q^*}{p^*+q^*}C\cdot CTR_i \tag{22}

因为1p+qri0\frac{1}{p^* + q^*}r_i^* \ge 0,所以bidiwpibid_i^* \ge wp_i,即出价大于或等于竞胜竞价,这与前面提出的当前曝光竞胜相一致。

若原问题在最优解下,第ii次曝光未竞胜,则xi=0x_i^* = 0,则由式19可知:ri=0r_i^*=0,对对偶问题中的约束条件进行推导:

wpip+(wpiCTRiC)q+riviwpi(p+q)vi+CTRiCqriwpi(p+q)CTRiCVRi+CTRiCqwpi1p+qCTRiCVRi+qp+qCCTRiwpibidi\begin{align} wp_i · p^* + (wp_i − CTR_i · C)q^* + r_i^* & \ge v_i \\ wp_i (p^* + q^*) & \ge v_i + CTR_i \cdot C \cdot q^* - r_i^* \\ wp_i (p^* + q^*) & \ge CTR_i \cdot CVR_i + CTR_i \cdot C \cdot q^* \\ wp_i & \ge \frac{1}{p^* + q^*} CTR_i \cdot CVR_i + \frac{q^*}{p^* + q^*} \cdot C \cdot CTR_i \\ wp_i & \ge bid_i^* \end{align}

即出价小于或等于竞胜价格,这与前面提出的当前曝光未竞胜相一致。

综上,式22表示的出价是最优出价策略,能够保证对于需竞胜的曝光,出价大于或等于竞胜价格,对于无需竞胜的曝光,出价小于或等于竞胜价格。

论文将最优出价公式拆分为两阶段:

c_bidi=1p+qCVRi+qp+qC(23)c\_bid_i=\frac{1}{p+q}\cdot CVR_i+\frac{q}{p+q}\cdot C \tag{23}
bidi=c_bidiCTRi=(1p+qCVRi+qp+qC)CTRi(24)\begin{align} bid_i&=c\_bid_i\cdot CTR_i \\ &=(\frac{1}{p+q}\cdot CVR_i+\frac{q}{p+q}\cdot C)\cdot CTR_i \end{align} \tag{24}

其中,c_bidic\_bid_i可以认为是点击出价,其由ppqqCVRiCVR_iCC决定,bidibid_i是展现出价,其可由点击出价和预估点击率相乘得到,因此,论文后面在分析、计算出价时,转化为分析、计算点击出价,在得到点击出价后,乘以预估点击率即得到最终的展现出价。

论文在这里初步分析了点击出价和转化率、展现出价和点击率的关系,如图3中的a和b所示。

图3 点击出价和预估转化率、展现出价和预估点击率的关系

上面左图表示c_bidic\_bid_iCVRiCVR_i变化的线性函数,即式23,其中横坐标是CVRiCVR_i,纵坐标是c_bidic\_bid_i,右图表示bidibid_iCTRiCTR_i变化的线性函数,即式24,横坐标是CTRiCTR_i,纵坐标是bidibid_i

点击出价和转化率、展现出价和点击率分别正相关,转化率越高,说明点击价值越高,相应的点击出价越高,同理,点击率越高,说明展现价值越高,相应的展现出价越高。

另外,还有一个有趣的结论,图3左图中,若某个曝光机会的预估转化率为0,则点击出价为qp+qC\frac{q}{p+q}\cdot C,即仍会为点击出价。论文给出的解释是,由于存在点击成本的约束,出价策略对于无转化的低价值点击也会出价,这样可以拉低点击成本,从而后续对于有转化的高价值点击出相对高的价,最终整体满足点击成本的约束。

以上推导过程是求解广告投放目标为最大化转化、投放约束为预算和点击成本的最优出价策略,若广告投放目标和投放约束是其他业务指标,例如投放目标还可以是最大化点击,投放约束还可以包括展现成本或转化成本,均可以根据具体的广告投放目标和投放约束构建相应的线性规划原问题,转化为对偶问题,再根据互补松弛定理,求解出相应的最优出价策略,而最优出价策略中的出价根据对偶问题的最优解和业务指标计算可得。

在《A Unified Solution to Constrained Bidding in Online Display Advertising》这篇论文中,论文作者就综合各种投放约束,给出了带约束自动出价问题的统一表示,并相应给出了最优出价的统一计算公式,其中包括多个业务指标和出价参数。具体介绍可以进一步阅读笔者梳理的《基于强化学习的自动出价论文阅读笔记(2)》

系统设计

预算BB和点击成本CC由广告主预先设置,若还已知当天所有曝光机会,以及各曝光机会的竞胜价格wpiwp_i、预估点击率CTRiCTR_i、预估转化率CVRiCVR_i,可以使用线性规划的常用求解方法求解对偶问题的最优解,并进而根据pp^*qq^*由式22计算得到各曝光机会的出价bidibid_i^*

但是在实际广告投放过程中,当ADX向DSP发起一次广告请求时,DSP并不知晓当天所有曝光机会(当天剩余时间内的曝光机会还未发生),因此,也就无法事先使用线性规划的常用求解方法求解对偶问题的最优解,并进而根据pp^*qq^*由式22计算得到当前曝光机会的出价。

那有没有其他办法呢?一种方法使用历史数据进行计算,比如当天广告投放时,已知前一天所有曝光机会及各曝光机会的竞胜价格、预估点击率、预估转化率,则基于前一天所有曝光机会的数据求解最优出价线性规划对偶问题,从而得到对偶问题的最优解pp^*qq^*,然后将最优解代入到最优出价公式中,用于在当天广告投放时,使用最优出价公式计算各曝光机会的出价。

但是这个方法存在一个问题,即假设用户流量和竞价环境是静态不变的,当天所有曝光机会及各曝光机会的竞胜价格、预估点击率、预估转化率和前一天基本保持不变,而实际上用户流量和竞价环境是动态变化的,前一天对偶问题的最优解并一定是当天对偶问题的最优解,基于前一天对偶问题的最优解计算的出价也并一定是当天最优的出价。

如何解决上述问题?一种方法是在使用前一天对偶问题的最优解作为当天最优出价公式中参数的初始值,然后根据当天用户流量和竞价环境的变化对投放目标和约束造成的影响,动态调整参数值。

在《A Unified Solution to Constrained Bidding in Online Display Advertising》这篇论文中,论文作者引入强化学习,将自动出价建模成马尔科夫决策过程,其将一天内的广告投放划分为若干个时间段,在某个时间段开始,自动出价智能体根据当前状态,选择动作,修改出价公式各参数,然后自动出价智能体基于修改后的参数在当前时间段内和竞价系统进行交互,计算出价并竞价,在当前时间段结束、下一个时间段开始时,将当前时间段竞得的广告流量价值之和作为当前时间段所获得的奖励,自动出价智能体的优化目标即最大化一天内的奖励之和。基于强化学习的自动出价的具体介绍可以进一步阅读笔者梳理的《基于强化学习的自动出价论文阅读笔记(2)》

而在本篇论文中,论文作者也是将一天内的广告投放划分为若干个时间段,但在某个时间段开始,并不是通过基于强化学习的自动出价智能体根据当前状态、选择动作对出价公式各参数进行调整,而是通过PID控制器,选择一些业务指标作为被控制变量,将最优出价公式中的参数作为控制变量,针对被控制变量的实际值和预期值的偏差,对控制变量进行调整,进而基于调整后的最优出价公式中的参数,在当前时间段内和竞价系统进行交互,计算出价并竞价。

而具体选择哪些业务指标作为被控制变量呢?因为论文中的自动出价策略的投放目标是在满足预算和点击成本的约束下最大化转化,所以论文作者选择了两个业务指标,分别是预算消费速率和点击成本,控制预算消费速率主要针对最大化转化的投放目标和预算的投放约束,通过控制预算消费速率使得预算在各时间段的分布和流量在各时间段的分布保持一致,即预算平滑,进而使得广告计划在满足预算约束的前提下,在当天的各个时段都有足够的预算进行出价,竞得有价值的流量,而控制点击成本则直接针对点击成本的投放约束。

下面详细介绍如何通过PID控制器进行最优出价公式中的参数的调控。

反馈控制

图4 反馈控制的原理

反馈控制的原理如图4所示,将系统输出作为被控制变量的实际值,将被控制变量的预期值和实际值的偏差作为反馈信号输入控制器,调节控制变量,而调节后的控制变量进一步作为系统输入,从而对被控制变量产生影响,使得被控制变量的实际值趋近至预期值。

PID控制器是自动控制领域的经典控制算法,关于PID控制器的详细介绍可以进一步阅读笔者梳理的《PID控制器原理及在预算平滑中的应用》。以下直接给出数字PID控制器的公式。

令被控制变量的预期值为r(t)r(t),被控制变量的实际值为y(t)y(t),预期值和实际值的偏差为e(t)e(t)

e(t)=r(t)y(t)(25)e(t)=r(t)-y(t) \tag{25}

e(t)e(t)作为数字PID控制器的输入。

令数字PID控制器输出的控制变量为u(t)u(t),则:

u(t)=kpe(t)+kii=1...te(k)+kd(e(t)e(t1))(26)u(t)=k_pe(t)+k_i\sum_{i=1...t}{e(k)}+k_d(e(t)-e(t-1)) \tag{26}

其中,kpk_pkik_ikdk_d分别是数字PID控制器比例、积分、微分三项的系数。

通过控制变量u(t)u(t)调整下一步的系统输入:

x(t+1)=ϕ(x(0),u(t))(27)x(t+1)=\phi(x(0),u(t)) \tag{27}

对于论文中的自动出价问题,由控制器输出的控制变量所调整的系统输入,即出价策略中的参数ppqq,而被控制变量,即预算消费速率和点击成本,因此,论文中的自动出价问题所需的反馈控制为多变量控制,即控制变量有2个,被控制变量也有2个,而PID控制器只适用于单变量控制,即控制变量和被控制变量均只有1个。

那如何对原多变量控制问题进行转化,从而可以基于PID控制器实现对预算消费速率和点击成本的同时调控呢?论文首先对出价策略中的参数ppqq,对预算消费速率和点击成本的影响进行分析。

参数分析

由于出价策略中的参数ppqq分别是原线性规划问题中预算约束和点击成本约束的对偶变量,所以论文分别分析参数pp对预算消费速率的影响、参数qq对点击成本约束的影响。

先看参数pp对预算消费速率的影响。固定qq,调整pp,点击出价函数曲线的变化如图5所示。若pp减小,则函数曲线斜率增大,如a图黑色实线所示,函数曲线围着中心点(qC,0)(-q\cdot C, 0)逆时针旋转,若pp增大,则函数曲线斜率减小,如b图黑色实线所示,函数曲线围着中心点(qC,0)(-q\cdot C, 0)顺时针旋转,若p=0p=0,则函数曲线经过(0,C)(0,C)这个点,如c图黑色实线所示,若p=p=\infin,则函数曲线变成和横轴重合的直线。也就是说若pp减小,相同转化率下,点击出价增大,若pp增大,相同转化率下,点击出价减小。即pp和点击出价负相关。当p=p=\infin时,点击出价固定为0,即不出价了,当p=0p=0时,预算约束不起作用,出价策略主要受点击成本约束影响,如果再把q=0q=0,点击成本约束也不起作用,这时点击出价无穷大,即可以竞得所有曝光机会,最大化广告转化。

通过上述分析可知,通过调整参数pp可以控制点击出价,从而控制曝光机会的竞胜概率,进而控制预算消耗速率。因此,可以将参数pp作为单独调控预算消耗速率(即预算平滑)的控制变量。

图5 点击出价函数曲线的变化

再看参数qq对点击成本的影响。固定pp,调整qq,点击出价函数曲线的变化如图6所示。若qq减小,则函数曲线斜率增大,函数曲线围绕中心点(pC,C)(p\cdot C,C)逆时针旋转,若qq增大,则函数曲线斜率减小,函数曲线围绕中心点(pC,C)(p\cdot C,C)顺时针旋转。以qq增大为例,函数曲线围绕中心点(pC,C)(p\cdot C,C)顺时针旋转,则点击出价大于CC的会减小,点击出价小于CC的会增大,所以广告计划会竞得更少点击成本高于CC的曝光机会,竞得更多点击成本小于CC的曝光机会。因此,若qq增大,整体点击成本减小。类似分析可得,若qq减小,整体点击成本增大。即qq和点击成本负相关。当q=q=\infin时,不管转化率是多少,点击出价均是CC,因为竞价机制采用GSP,所以若竞胜,则竞胜价格肯定小于CC,即点击成本肯定小于CC

通过上述分析可知,通过调整参数qq可以控制点击成本。因此,可以将参数qq作为单独调控点击成本的控制变量。

图6 点击出价函数曲线的变化

多变量控制

基于上一节分析的两个结论:

  • 可以将参数pp作为单独调控预算消耗速率(即预算平滑)的控制变量;
  • 可以将参数qq作为单独调控点击成本的控制变量。

论文首先设计了两个独立的PID控制器分别对点击成本和预算消耗速率进行控制,如图7所示。第一个控制器使用点击成本的偏差作为控制器的输入,控制器的输出是uq(t)u_q(t),使用uq(t)u_q(t)其对qq进行调整。第二个控制器使用预算消耗速率的偏差作为控制器的输入,控制器的输出是up(t)u_p(t),使用up(t)u_p(t)pp进行调整。

图7 两个独立的PID控制器

上述方案中,ppqq分别单独调控预算消耗速率和点击成本,但实际上,两条反馈控制链路之间存在耦合和相互影响。例如,在上一节图5的分析中,增大pp,相同转化率下,点击出价减小,从而减小预算消耗速率,但同时,点击成本也减小,即pp对点击成本也存在影响。另外,在上一节图6的分析中,增大qq,点击成本减小,但同时也减小预算消耗速率了。所以ppqq并不是严格独立控制预算消耗速率和点击成本,两个控制相互影响、相互耦合。ppqq对预算消耗速率均有影响,对点击成本也均有影响。

图8 增加模型预测模块的PID控制器

如何解决两个控制器相互耦合的问题,论文借鉴了模型预测控制(Model Predictive Control,MPC)的思想,对两个独立的PID控制器进行优化,如图8所示,在两个控制器分别输出uq(t)u_q(t)up(t)u_p(t)后,并不直接使用上述两个值分别对qqpp进行调整,而是通过一个模型预测模块(Model Predictive Module),对上述两个值进行线性组合,得到拟合了耦合影响的输出uq(t)u'_q(t)up(t)u'_p(t),如下所示:

[up(t)uq(t)]=[α1α1ββ][up(t)uq(t)](28)\begin{bmatrix} u_p'(t) \\ u_q'(t) \end{bmatrix}= \begin{bmatrix} \alpha & 1-\alpha \\ 1-\beta & \beta \end{bmatrix} \begin{bmatrix} u_p(t) \\ u_q(t) \end{bmatrix} \tag{28}

或:

up(t)=αup(t)+(1α)uq(t)(29)u_p'(t)=\alpha\cdot u_p(t) + (1-\alpha)\cdot u_q(t) \tag{29}
uq(t)=(1β)up(t)+βuq(t)(30)u_q'(t)=(1-\beta)\cdot u_p(t) + \beta\cdot u_q(t) \tag{30}

然后再使用uq(t)u'_q(t)up(t)u'_p(t)分别对qqpp进行调整。

实验评估

数据集

实验所用的数据集来自淘宝展示广告,共有40个广告计划连续多天的2千万出价日志,每个出价日志包含5个字段:

  • opportunityiopportunity_i,当前曝光机会出价日志的唯一标识;
  • timestampitimestamp_i,当前曝光机会出价日志的时间戳;
  • wpiwp_i,当前曝光机会出价日志竞胜后的计价,因为是GSP,所以计价是小于出价,另外,若当前出价日志没有竞胜,wpiwp_i也是有值,只是该值表示竞胜该曝光机会的其他广告计划、而非当前出价日志中广告计划的计价;
  • CTRiCTR_i,当前曝光机会的预估点击率;
  • CVRiCVR_i,当前曝光机会的预估转化率;

使用竞胜后的CTRiCVRiCTR_i\cdot CVR_i作为广告价值,即广告投放目标为最大化转化,这里没有使用真实的转化作为广告价值,是因为真实的转化还受点击率、转化率预估模型的影响,为了消除这种影响,只单纯评估自动出价的效果,因此使用预估点击率和预估转化率相乘作为广告价值。

论文将上述数据集划分为训练数据集和测试数据集。

衡量指标

RR表示广告实际获得的价值,RR^*表示广告在预算和点击成本约束下可以获得的最大的价值,即线性规划问题的最优解,R/RR/R^*表示广告实际获得的价值和可以获得的最大的价值的接近程度。论文设计以下衡量指标:

  • CPCratioCPC_{ratio},表示满足点击成本约束(即实际点击成本不超过预期点击成本的110%)的计划在所有计划中的占比,该指标用于衡量出价策略满足投放约束的效果;
  • ValueratioValue_{ratio},表示满足点击成本约束的计划的R/RR/R^*值的平均值,该指标用于衡量出价策略最大化投放目标的效果。

实现细节

论文将当天按小时划分为多个时间段,在当天开始时,使用通过历史数据求解线性规划对偶问题得到的ppqq的最优解作为其初始值p(0)p(0)q(0)q(0),代入出价公式中,针对后续的曝光机会,由其他模块或模型计算预估点击率、预估转化率,然后通过出价公式计算出价并参与竞价。在每个时间段结束后,统计该时间段的预算消耗速率和点击成本的偏差,分别输入预算消耗速率和点击成本的PID控制器,PID控制器输出的原始控制变量通过模型预测模块进行线性组合得到最终的控制变量up(t)u_p'(t)uq(t)u_q'(t),最后通过up(t)u_p'(t)uq(t)u_q'(t)分别对p(0)p(0)q(0)q(0)进行调整,得到下一个时间段的ppqq的值:

p(t+1)=p(0)exp(up(t))(31)p(t+1)=p(0)\cdot exp(-u_p'(t)) \tag{31}
q(t+1)=q(0)exp(uq(t))(32)q(t+1)=q(0)\cdot exp(-u_q'(t)) \tag{32}

由于广告投放最终主要关注广告计划在当天投放结束时的整体点击成本,而当天各个时段的点击成本因各个时段的点击数不同,对当天整体点击成本的影响权重不同,点击数越多,影响权重越大,因此,论文使用点击数对各个时段的点击成本的偏差进行加权:

eq(t)=click(t)(r(t)y(t))(33)e_q(t)=click(t)\cdot(r(t)-y(t)) \tag{33}

因为偏差已使用点击数进行加权,所以在得到uq(t)u_q(t)后,再对其除以累计至当前时段的点击数,进行权重的归一化:

uq(t)=1i=1...tclick(t)u(t)(34)u_q(t)=\frac{1}{\sum_{i=1...t}{click(t)}}\cdot u(t) \tag{34}

而对于PID控制器中比例、积分、微分系数(kpk_pkik_ikdk_d)和模型预测模块中线性组合系数(α\alphaβ\beta)的确定,论文通过在训练数据集上进行“Grid Search”以确定最优的系数组合,并应用在测试数据集上。

效果

图9是采用两个独立的PID控制器在预算消耗速率上的控制效果,图10是采用两个独立的PID控制器在点击成本上的控制效果。如图9左图所示,各时段的实际消耗(实线)基本围绕预期消耗(虚线)上下波动,如图9右图所示,累计消耗实际值(实线)与预期值(虚线)也基本一致。如图10左图所示,各时段的实际点击成本(实线)也在预期点击成本(虚线)的上下10%以内,如图10右图所示,累计点击成本实际值(实线)也在预期值(虚线)的上下10%以内,且初始时较高,后面下降,最后实际值略低于预期值。

图9 两个独立的PID控制器的在预算消耗速率上的控制效果

图10 两个独立的PID控制器的在点击成本上的控制效果

图11是自动出价各方案效果指标的对比,其中,“I-PID”是两个独立PID控制器的方案,“M-PID”是两个独立PID控制器再加上模型预测模块的方案,从中可以看出,上述方案在均达成CPCratioCPC_{ratio}指标的前提下,“M-PID”在ValueratioValue_{ratio}指标上的值最高。

图11 自动出价各方法效果指标的比较

参考文献