一、背景介绍
在商品服务高度发达,信息爆炸的市场经济体制下,企业之间的竞争日益激烈,广告作为一种重要的营销手段,肩负着将企业自身的品牌形象及产品服务准确传达给消费者,促进企业商业利益达成的使命。可以说广告对于企业的生存发展至关重要。
随着信息技术的进步,互联网广告由于投放周期短、触达范围广、可精准投放等优点,近些年来得到了高速发展。在互联网广告系统中,广告主(企业/商家)通过购买供给方(媒体)提供的广告位,将广告传递给受众(消费者),进而达成广告主的商业目的。在上述过程中,针对同一广告位,往往会存在多个广告主竞争出价,最终出价高者以一定的成本,赢得广告位并获得展示机会。具体过程如下图 1-1 所示。
图 1-1 广告竞价示意
互联网广告本质上是一种商业行为,在广告投放中必须要均衡考虑成本与回报。而在参与广告竞价的过程中,广告主出价的高低最终会影响广告获胜率。对于不同的潜在客户群体,采取适当的竞价策略,合理分配预算,在预算有限的条件下,使得企业商业利益最大化。这就要求对不同投放目标设定不同的投放策略及预算,并且需保证实际投放成本贴近预算。当实际投放成本超过预算或低于预算时,都会给广告投放带来负面影响,甚至会导致企业营销计划失败。
然而在实际的广告投放系统中,会包含诸如广告主端的点击率预估模型、用户价值预估模型、竞价算法,媒体端的 OCPA、OCPC 出价模型,以及多方竞价、二价成交等不可控机制,最终的投放系统十分复杂,影响投放成本的因素过多,造成用户成交价与实际出价并不相等,实际投放成本难以契合广告主在投放初期所制定的预算。
常用的广告成本控制方法可分为人为干预和算法自动控制两种。顾名思义,人为干预是通过人工实时监控广告投放情况,当发现实际成本低于或超出初期预算时,通过人工调整广告出价或修改人群定向等方式调节投放花费;算法自动控制是指采用相关算法,监控投放成本,并根据异常自动调节广告出价,达到控制成本的目的。
当前业界使用的相关算法各有特点,在实际应用中,我们综合考虑了算法性能、开发部署成本以及媒体方数据限制,在部分方案中采用了 PID 控制算法。
二、PID 控制算法简介
PID 算法是一种在工业生产中应用最为广泛的反馈控制算法,它具有原理简单,易于实现,适用面广等优点。小到某个元器件温度控制,大到无人驾驶自动转向、太空飞船姿态调整等,都可以使用 PID 算法进行控制,下图所示为 PID 控制系统结构图。
图 2-1 PID 反馈控制环
PID 算法包含了比例(Proportion)、积分(Integration)、微分(Differentiation)三个环节,其根据被控对象实际输出与目标值的偏差,按照三个环节进行运算,最终达到稳定系统的目的,其具体公式如下:
式中,Kp——比例增益;
Ti——积分时间常数;
Td——微分时间常数;
err——误差值;
下面分别介绍 PID 算法中三个环节对控制系统的实际意义:
(1)比例项
比例项的输出 u(t)与输入 err(t)成正比,直接反映了当前值与目标值得误差信号,偏差一旦产生,立即向相反方向成比例的减小偏差。比例项反应迅速,能快减小偏差,但不能消除静差。
静差指的是在系统达到稳态的过程中,稳定输入值与目标的差距。仅使用比例项,由于实际输出值与目标值间差距逐渐减小,因而比例项的输出也逐渐减小,只有存在偏差时比例项才能产生输出,当误差为零时,比例项输出也为零,因此在由非稳态逐渐向稳态逼近的过程中,必然会存在静差。
此外,比例项的输出取决于误差及比例系数,比例系数越小,输出对误差的敏感度也越小,系统响应越慢。反之比例系数越大,控制作用也越强,系统响应会越快。但值得注意的是,过大会使系统产生较大超调和振荡,导致系统稳定性变差,下图演示了在其他参数相同的条件下,不同比例系数下系统振荡曲线:
图 2-2 不同比例系数下系统振荡曲线
(2)积分项
积分项主要用于消除静差,提高系统的误差度。积分控制作用的存在与偏差 err(t)的存在时间有关,只要系统存在着偏差,积分环节就会不断起作用,对输入偏差进行积分,使控制器的输出及执行器的开度不断变化,产生控制作用以减小偏差。
在积分时间足够的情况下,可以完全消除静差,这时积分控制作用将维持不变。越小,积分速度越快,积分作用越强。积分作用太强会使系统超调加大,甚至使系统出现振荡。下图所示为其他参数相同的条件下,不同积分系数下的系统振荡曲线:
图 2-3 不同积分系数下系统振荡曲线
(3)微分项
微分环节的作用能反映偏差信号的变化趋势,并能在偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。在偏差刚出现或变化的瞬间,不仅根据偏差量做出及时反应,还可以根据偏差量的变化速度提前给出较大的控制作用,将偏差消灭在萌芽状态,这样可以大大减小系统的动态偏差和调节时间,使系统的动态调节品质得以改善。
微分环节有助于系统减小超调,克服振荡,加快系统的响应速度,减小调节时间,从而改善了系统的动态性能,但微分时间常数过大,会使系统出现不稳定。下图所示为其他参数相同的条件下,不同微分系数下的系统振荡曲线:
图 2-4 不同微分系数下系统振荡曲线
在实际的应用中,可选择性使用 PID 算法中的三个环节,并通过实验的方法确定合理的参数范围。在调试过程中为了减少需要整定的参数,首先可以采用 PI 控制器。为了保证系统的安全,在调试开始时应设置比较保守的参数,以避免出现系统不稳定或超调量过大的异常情况。根据 PID 参数与系统性能的关系,反复调节 PID 的参数,最终达到一个理想的范围。
三、实践案例
以信息流广告投放为例,广告主通过采买媒体平台广告位进行广告投放。在广告投放前,综合考虑投放目标以及历史投放经验等,会对广告投放预算成本进行控制,希望能够以预先规划的价格拿到广告位资源(即控制广告成交价)。但由于如前所述的广告投放系统中的出价优化模型以及二价成交机制等,广告主往往不能直接控制成交价,而需通过调整出价等方式间接控制成交价。
为了能够实现控制成交价的目的,我们实时监控成交价(输出)与预算成本(目标)间关系,并通过 PID 控制算法来动态调整出价,PID 反馈控制环如下图所示:
图 3-1 反馈控制环
在工业系统中,例如使用 PID 算法通过调节电流维持电机以恒定转速运转,在电机启动过程中,输入电流从 0 开始增大,随着系统达到稳定状态,误差得到不断积累,此时 PID 控制器能够以恒定的电流作为输出,抵消电机运转过程中因摩擦等阻力的损耗,使得系统能够以稳态运行。
与上述场景不同的是,在广告投放中,出价不可能从 0 开始,假如在初次出价时,成交价与目标值差值很小,这就导致 PID 算法的输出接近于 0,因而直接使用其输出作为出价是不合理。根据这个特点,我们对算法稍作变形,以第 i 次 PID 算法的输出作为变动量与第 i-1 次出价相加后作为最终出价,这样就会避免在算法运行初期,系统出现较大波动。
PID 算法中各项系数对系统的影响十分重要,因而在算法上线前,需事先确定较为合理的系数,避免上线后算法性能不稳定,导致出价幅度波动较大,造成损失。此外,由于广告系统的不确定性因素,即使一直以相同的价格出价,也会呈现不同的成交价。
为了线下模拟广告出价与成交价关系,我们对历史出价与成交价数据进行分析。分析发现,出价与成交价均值呈现正相关,即在一定范围内,出价均值增大,成交价均值也随之增大。但对应到具体的数据点上,二者还会伴随一定的随机性,具体关系见下图所示:
图 3-2 历史出价与成交价对应关系
图 3-3 平均出价与平均成交价对应关系
将出价与成交价关系分解为线性部分与随机波动部分。其中线性部分利用最小化均方误差拟合线性函数,得到线性函数表达式;随机波动部分根据相同出价时对应的不同成交价出现频率,生成与历史数据等概率分布随机模型。利用线性部分与随机部分叠加,得到给定出价对应的成交价。使用该模型输出的模拟结果与真实结果作对比,发现模型输出能够较为准确的还原数据真实分布,对比结果如下:
图 3-4 真实出价与成交价对应关系
图 3-5 模拟出价与成交价对应关系
在刚开始对 PID 控制器进行参数整定时,可通过只考虑出价与成交价线性关系的方法,使用不同参数进行试验,观察不同参数对系统性能的影响,初步得到各项系数较为合理的参数范围。由试验结果可以发现,当比例系数较大时系统振荡幅度较大,积分系数较大时系统达到稳态的时间较长,微分系数较大会导致系统持续振荡,难以达到稳定状态,不同参数下系统振荡曲线如下所示:
图 3-6 较大比例系数及积分系数下系统振荡曲线
图 3-7 较大微分系数下系统振荡曲线
图 3-8 较为合理的系数下系统振荡曲线
以上述试验所选定的参数范围为基础,引入随机项进行微调,得到较为理想的 PID 控制器。通过设定不同的目标成交价,对比使用 PID 算法以及以固定价格出价的策略在不同场景下对成交价控制的表现:
(1)目标成本为 A 场景下,PID 算法与固定出价策略表现对比:
图 3-9 固定出价策略下出价与成交价关系
图 3-10 PID 算法下出价与成交价关系
(2)目标成本为 B 场景下,PID 算法与固定出价策略表现对比:
图 3-11 固定出价策略下出价与成交价系
图 3-12 PID 算法下出价与成交价关系
由上述对比结果可见,使用 PID 控制算法动态调整出价能够很好的将广告平均成交价稳定在目标成交价,而使用固定出价策略,则会使得广告投放的实际平均成本偏离目标值,特别是当广告投放时间周期较短时,偏离程度会更大。
由于实际投放场景中,对出价范围及出价时间有一定的约束,需根据业务场景对 PID 算法的输出做一定的处理,使得算法输出价格能够合理的参与到广告竞价系统中。
四、总结
PID 算法在工业生产中有较长的应用历史,随着时代的发展,其应用范围逐渐从传统工业领域扩展到了如互联网广告等新兴领域。由于广告投放业务场景与传统工业应用场景稍有不同,我们对 PID 算法进行了适当的调整,对其输出形式、出价范围以及出价时间进行了优化,并且根据历史成交数据,建立了成交价模拟系统,并用其对 PID 控制器进行线下参数整定,最终在广告成本控制场景中取得了不错的效果。
当然,通过 PID 算法控制成本只是广告投放中特定场景下的一种手段,为了优化广告的投放效果,我们还做了其他方面的工作,比如通过预估用户点击率和转化率,实现广告精准定向;使用媒体标签进行人群量级和价值的预估,对广告主的投放进行自动扩量;根据广告主的配置自动进行媒体、计划间的预算分配,保证广告主的投放收益最大化。
作者介绍:
Jason Pei,携程高级算法工程师,对计算广告、推荐系统、NLP 等领域有浓厚兴趣。
本文转载自公众号携程技术(ID:ctriptech)。
原文链接:
评论