个人总结:计算广告概述

广告分类

合约广告

一般在门户网站和视频网站中较为常见,例如,Hulu广告收入的绝大部分来自于合约广告。这是由于用户与视频广告的交互较少,缺乏点击等反馈数据,不宜直接评估后续的转化效果。合约广告的客户通常是品牌类广告主,它们的主要诉求是向公众宣传自己的品牌形象,并不显式地评估后续的转化效果。合约广告一般以CPM(Cost per mille,千次曝光成本)进行结算,即每完成一千次曝光流量平台向广告主收取固定的成本。

合约广告一般不需要考虑广告的实际效果,所以没有CTR模块。

竞价广告

竞价广告最重要的形式是搜索广告。搜索广告的标的物是关键词,每个搜索广告可以对一些特定的关键词进行出价。用户输入的查询与广告竞标的关键词进行匹配,检索出所有符合条件的广告,并选择其中的一条或几条广告与搜索的网页结果一起展示,通常广告排在网页之前。搜索广告一般按点击结算,在用户点击之后按照广告主对该关键词的出价收费,没有点击则不收费,因此点击率预估算法对竞价广告的优化至关重要。

程序化交易广告

程序化交易广告能够让广告主更加灵活地选择自己的受众群体和曝光时机。在每一次展示机会到来之时,广告交易平台将流量的相关信息和竞价请求发送给需求方平台(Demand Side Platform,DSP),需求方平台根据流量的实际情况代表广告主进行出价,价高者得到本次的曝光机会。程序化交易广告通常以CPA(Cost Per Action,每次行动成本)的方式进行结算,因此需要综合考虑广告预估的点击率、转化率等因素。

程序化交易广告需要对接广告交易平台等第三方信息,所以需要更多的数据对接模块

广告系统框架

系统由分布式计算平台、流式计算平台和广告投放机三大部分组成。

用户画像

在合约广告中,广告主可以根据自身品牌的受众群体指定合适的定向条件,以节省成本;搜索广告和程序化交易广告可以根据用户的画像对该用户对各广告的点击率和转化率进行更精确的预估,从而优化整体的投放效果。

监督学习和非监督学习技术在用户画像中都得到了广泛的应用。例如,性别预测问题就是一个典型的监督学习问题。我们根据用户填写的性别信息可以得到一些用户的性别,而对于另外一些用户我们无法得知他们的准确性别,例如有些广告主要求针对特定的性别进行品牌推广。

监督学习的模型可以采用逻辑回归、支持向量机、决策树、随机森林、梯度提升决策树、前向神经网络等,采用的特征因具体的业务而异。例如,在搜索引擎中,可以根据用户的搜索和浏览历史来对用户的性别进行预测,从而实现更精准的搜索广告投放。

利用一个大型网站的历史访问数据进行实验,输入的特征为该用户搜索和浏览过的历史网页文本,其中的每个词作为单独的一维
特征,最终分类器学习到的较为显著的文本特征如图所示。可以发现,在预测女性时,较为重要的特征是孩子、食物、家庭等;而对于男性来说,较为显著的特征是体育、车、因特网等。所以,对特征的学习结果还是比较符合直觉的。

另外一大类用户画像方法是采用非监督学习。非监督学习的目的是发现数据本身存在的规律,并不需要使用带标注的数据。根据用户以往的行为和已有的特征,我们可以将用户聚为一些特定的类别。对于每一类用户,虽然很难描述他们所对应的确切标签,但是可以知道他们拥有很高的相似度,并据此预期他们对广告具有某种相似的兴趣。这样,通过应用聚类技术,并将得到的聚类结果用于点击率预估、广告排序与选择,通常能够带来明显的效果提升。常用的聚类方法有K均值、高斯混合模型、主题模型等,它们都属于非监督学习的范畴。

利用主题模型对用户的行为数据进行建模。下图展示了两个挖掘出来的主题实例,其中左边的主题可以理解为在工作日的早晨搜索股票的相关信息;右边的主题可以理解为在周末的晚上搜索聚会的酒吧;IsRelevant表示该特征的取值与我们对主题的解读是否相关,这是一种人工的判断。可以发现,绝大多数的特征都是与主题相关的,说明主题挖掘的效果较好。

点击率预估

点击率预估是效果类广告中最重要的算法模块之一。为了优化广告效果,首先要对广告展示之后的效果(即点击率、转化率等)有一个准确的判断,才能据此进行合理的选择与投放。在搜索广告中,一般通过广告的点击数量进行效果的评估和结算,因此点击率预估的准确性在效果优化中起到非常关键的作用。如果最终评估效果的指标是转化,那么还需要同时对点击之后的转化率进行估计。在很多场景中,实际的转化数据非常稀少,很难直接利用转化数据对模型进行训练,所以经常退而求其次,对二次跳转、加入购物车等行为进行建模。

点击率预估可以抽象成为一个二分类问题。它所解决的问题是:给定一个请求以及与该请求所匹配的广告,预测广告展示之后获得点击的概率。标注可以从实际的投放数据中获得,在历史的投放结果中,获得了点击的记录标注为1,其余标注为0。下图为点击率预估模型中的一条训练/测试数据记录的示意。左边的方框中列出了这条数据记录对应的特征,包括与用户(User tags)、上下文(Date,City,Ad exchange,Domain,...)、广告主(Ad Id)、创意(Ad size)等相关的特征。在训练记录中,如果这条记录最终发生了点击,则记录为1,否则记录为0;在预测时,我们需要预测这条记录发生点击的概率,即CTR(Click-Through Rate)。

点击率预估主要分为样本采样、特征抽取与组合、模型训练、模型评估等步骤。

  • 样本采样

在点击率预估时,通常要对负样本进行采样,这是因为在点击率预估的二分类问题中,点击数通常要远远小于总曝光数(PC端展示广告的点击率一般在0.1%~1%之间),这将导致正负样本严重不均衡。如果点击率为0.1%,那么简单地将所有样本都预测为负样本,分类器的准确率也可以达到99.9%,这在一些分类器和训练算法中会存在问题。更重要的是,一条负样本所包含的信息相比于正样本来说较少,如果我们能够对负样本进行采样,就可以减少训练时间,或者能够在同样的训练时间中处理更多的正样本,从而在训练时间不变的条件下取得更好的效果。需要指出的是,样本在采样之后会改变数据的分布,因此在预估点击率时需要将原始分布还原。

  • 特征抽取与组合

抽取与用户、上下文、广告主、创意等相关的各维特征,并对这些特征进行组合。在点击率预估中,捕捉特征之间的交互非常重要,由于一些特征表达了广告的性质,另一些特征表达了用户的兴趣,因此需要学习到两类特征的交互,才能更加准确地对点击率进行估计。传统的机器学习模型无法直接捕捉到两类特征之间的交互,因此需要显式地进行特征交叉,即将任意两个特征组合起来作为一维新的特征。这样做可能会遇到维度爆炸的问题,由于我们并不知道哪些特征的交互最好捕捉,因此需要尝试所有
可能的特征组合。实践中,经常采用梯度提升决策树和分解机对原始特征进行预处理。在梯度提升决策树中,每一棵决策树的每一条从根到叶子结点的路径可以作为一种显著的特征组合,然后将所有的特征组合作为逻辑回归模型的输入再进行训练。这是Facebook在2014年发表的工作,后来被证明在很多应用场景中都取得了不错的效果。

深度神经网络为我们提供了一种更加自动地抽取组合特征的方式,可以直接端到端地对点击率进行建模和预测。下图是一种端到端的深度CTR预测模型,其中原始输入为最简单的独热编码,接着通过预训练分解机将输入表示为嵌入的向量,然后通过三个全连接层,最后应用Sigmoid激活函数输出点击率的预测结果。

在实际的产品线中,我们可能不方便推翻以前的架构,全部改为利用端到端的深度学习模型对点击率进行建模。这时,将深度学习模型输出的中间结果当作高层语义特征,输入到传统的浅层机器学习模型中,通常也能够取得不错的效果提升。

  • 特征抽取与组合

进行完特征抽取与组合,并选择一个合适的模型后,我们就可以对模型进行训练了。模型的训练与调优过程也蕴藏着许多经验与知识。例如,在线上进行实时点击率预估的时候,我们通常希望模型被全部加载到内存中,从而保证服务的响应时间。因此,需要在模型的稀疏性和预测效果之间进行一个折中,对模型的稀疏性有一定的要求。但是,如果采用L2范式对模型进行正则化,很难得到完全稀疏的结果,更好的方案是采用L1正则。在编写深度神经网络模型对点击率进行建模和训练时,我们需要检验程序计算出的梯度是否正确,这需要对梯度验证技术有所了解。另外,由于深度神经网络模型的假设空间是非凸的,有时在使用随机梯度下降法优化时会陷入局部最优解难以自拔,这时需要对随机梯度下降法失效的原因进行深入分析,并利用改进的方法进行训练。

  • 模型评估

模型评估主要分为离线评估和在线评估两个阶段。离线评估的任务是设计合理的实验和指标,使得离线评估的结果和将来上线之后的结果尽量吻合。由于单个指标通常只能评估模型的某个方面,我们通常需要采用不同的指标来对模型的效果进行综合评价。以点击率预估为例,离线阶段常用的评估指标有Log Loss和AUCLog Loss衡量预测点击率与实际点击率的吻合程度;AUC评价模型的排序能力,即获得点击的样本应尽量排在未获得点击的样本前面。一方面,我们希望预测的点击率尽可能精准;另一方面,又希望更有可能获得点击的广告被尽可能地排列在前面。所以要求两个指标都得到比较好的结果,至于哪个指标作为主要指标要视具体的业务场景而定。如果一个模型在离线评估阶段取得了好的结果,下一个阶段就是进行线上A/B测试了。这一环节在模型正式上线之前至关重要,因为即使一个精心设计的离线实验仍然与线上的环境有所差别

  • 广告检索

广告检索阶段的任务是根据查询、受众等定向条件检索出所有满足投放条件的广告。例如,根据查询的模糊匹配,要求将与该查询文本在语义上相近的广告尽可能地召回,供下一阶段广告排序和选择算法使用。这一阶段主要以召回率为评估指标,因为被漏掉的广告在后面就没有机会被展示出来了。解决模糊匹配问题的经典方法是查询扩展。通俗地讲,就是为当前的查询找到一组语义相关的查询,然后至少被其中一个查询检索到的广告都可以加入备选集合。查询扩展本质上是计算两个查询之间的文本相似度,或者求出给定一个查询的条件下生成另一个查询的概率。前者可基于主题模型、Word2Vec等算法实现,后者可利用深度神经网络等方法进行建模。

  • 广告排序/选择

不同的广告业务场景在此步骤中的决策方式是不同的。

对于合约广告来说,我们的目标是满足合约中规定的每日曝光数量要求(当曝光数量不足时会受到惩罚),并不涉及点击率预估,因此广告的排序和选择问题可以被建模成带约束的优化问题。下图使用优化问题的建模思路,左侧的每一个节点代表一个广告,右侧的每一个节点代表一类曝光机会。我们将流量按照特征划分为若干个分段,每个分段代表了一类曝光机会,每一个合约由于其定向条件的限制,只能在某些分段的流量上进行投放。于是广告的选择可以表达成为一个二部图匹配问题,优化的目标是使得总的投放收入最大化。

假设dj为第j个合约的总需求量,si为第i类曝光机会的供给量,vj为第j个合约的单次曝光收入(CPM),xij∈[0,1]为第i类曝光机会到来时,选择第j个合约的广告进行展示的概率。目标函数如下,即使得总的投放收入最大化

另有三个约束:

式1规定每个合约规定的总曝光量必须得到满足;式2表示每类曝光机会选择各个合约的总概率之和应该小于等于1;式3表达概率xij的非负性。

对上述问题求解即可找到一个最优解,当然在总供给量不够的情况下,上面的问题也可能无解,这时需要在式1中添加一个变量uj,代表合约j的欠曝光量(under-delivery),且约束变更为:。与此同时,在目标函数中也需要加入欠曝光量所带来的惩罚。

竞价广告的模式下,广告投放机根据点击率预估的结果对广告进行排序和选择。对于一个新上线的广告,如果没有充分的曝光,是无法对其点击率做出准确预测的。这时如果我们仅采用利用的方案,会倾向于选择其他点击率更高的广告,或给出一个较低的出价。长此以往,该广告很可能丧失足够的曝光机会,我们也永远无法对其点击率进行合理的估计。因此,我们需要对曝光量不足的广告进行探索,但仅仅采用探索的方案显然也是不行的。对于已有足够曝光量的广告,还是应该遵循点击率预估的结果进行排序、选择和出价。探索与利用是一对矛盾的主体,需要在其间找到平衡,才能达到最佳的投放效果,这也是强化学习所重点关注与解决的问题。在强化学习的场景下,一开始我们并没有足够多的带标注样本,需要与环境进行交互(投放广告),通过获得反馈的方式来改进模型,最终获得一个最优的投放策略。

发布了94 篇原创文章 · 获赞 137 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/yyhhlancelot/article/details/98877132