序言:
本来打算写文章介绍一下业界内广告搜索引擎的业务及架构的,但是觉得应该先介绍一下整个搜索广告的大背景的,所以周末学习了一下斯坦福大学的Introduction to Computational Advertising课程,下文主要内容都是翻译自此课程的幻灯片,由于我目前只对搜索广告有所了解,所以只翻译了搜索广告相关的一部分内容,原文中的很多内容没有涉及到,例如展示广告,定向广告,推荐系统等。
计算广告是计算机科学中出现的一个相对较新的子科学领域,利用算法来给用户展示[通常是在浏览器中]出最佳的广告。它集合了下面的技术于一身:
在一个给定场景下的给定用户和合适的广告之间找到一个最佳的匹配(Find the "best match" between a given user in a given context and a suitable advertisement.)
如果把广告看作一种信息,那么找到一个“最佳广告”就是一个信息检索问题,这个问题附带有多个可能互相矛盾的效用函数。
传统广告:
计算广告:
约翰*沃纳梅克,著名的百货商店之父曾经说过:
我在广告上的投资有一半是无用的,但是问题是我不知道是哪一半。
根据广告主的计费方式,可以分为
根据展现形式分为:图片广告[Graphical Ads]、文本广告[Textual Ads]、视频等。
根据不同的产品形式分为
在互联网中,搜索广告是最主要的文本广告的形式。
广告支撑起了互联网上一个巨大的生态系统:
如果没有广告,互联网就不可能像现在这么发展迅速、规模宏大。广告给消费者提供了直接和间接的巨大价值。
这些参与者有各自不同的诉求:流量提供者渴望每次展现/搜索的高收益,广告主渴望高投资回报率(ROI)和流量,用户希望高相关性,广告网络渴望收益与市场份额。而广告的选择,就是要兼顾四个参与者的收益,达到最优状态,需要权衡长期和短期的商业目标。
亿级别:
毫秒级别:
钱:
搜索广告是由搜索关键词驱动的广告。广告主选择一个“竞价词”,当用户触发某个搜索请求时,广告主的广告得以展现。
业界的系统:Google AdWords, 百度凤巢,淘宝搜索直通车
在上文中我们提到的计算广告中有4个参与方,在搜索广告中,流量提供方是搜索结果页 SERP(search results page),通常流量提供方和广告平台是同一个(Google,Bing),当然也可以不一样(微软给雅虎提供广告搜索)。
在搜索广告中三个参与者之间有如下的交互行为:
广告主:
浏览者:给搜索引擎提交查询串,表达一定的意图
搜索引擎:
从搜索引擎的角度来看,搜索广告中存在三个子问题:
以上三个顺序是搜索广告事件发生的顺序,这里面1和2属于信息检索问题,而2和3又属于微观经济学问题。
文章一开头提到了计算广告中涉及到了博弈论,拍卖理论,机制设计,到底在哪里用到了呢?想了解这些疑问就得接着往下看。
对于目前的搜索广告来说,都被设计成了拍卖的机制。搜索引擎拍卖的是每个流量中可能的广告位,广告主提交对购买的关键词的每次点击的最高出价,广告主是不知道其他人的出价信息的。虽然每个流量中一般会有多个广告位置,但是广告主只出一个价格。最终搜索引擎根据广告主竞价和广告的点击率CTR来对广告进行排序,决定最终的展示位置。
点击扣费时,目前普遍采用的是Google发明的广义第二价格扣费GSP(General Second Price),有两种策略:
根据广告平台的收益排序:根据期望最大收益ecpm来排序
ecpm=bidprice*ctr
被点击的广告主i付的费用为
由于bidprice(i)*ctr(i)>bidprice(i+1)*ctr(i+1),可以从上述公式看到广告主实际扣费肯定小于最高出价
在广告搜索引擎中,不能直接拿着用户的查询串在倒排索引中进行广告检索的,因为这样可能导致搜出来的广告深度不够,而且查询多种多样,在搜索引擎有限的资源下,不可能对所有查询建立倒排索引,所以需要经过查询改写来改写出归一化后的多个搜索词,用这些搜索词去检索广告。
把用户查询(Query)改写成竞价词(Bidword)的过程。总的来说有离线(offline)改写和在线改写(online)两类。
离线改写:
在离线的时候利用相对在线而言更多的数据来处理用户的查询,生成一个query->bidword的映射关系表,缺点是只能给那些高频词进行离线处理。这里有两个问题:我们应该改写哪些查询--我们需要市场深度的查询上。我们应该改写成什么样的查询--那些市场深度足够的查询上。
在线改写:
对于离线不能处理的少数请求需要我们进行在线改写,在线改写相对离线而言,资源受限(内存限制,时间限制),需要在很短的时间(数ms)内做分析。
给定一个查询,搜索引擎可以展示两类广告:
精确匹配EM(Exact match): 广告主对特定的查询竞价
高级匹配AM(Advanced match)或广泛匹配(Broad match): 广告主并不对特定的词进行竞价,但是这个查询被认为是广告主感兴趣的。
搜索广告中的流量具有长尾效应,非常多的长尾流量查询在搜索广告中没有对应的广告,高级匹配主要是为了解决这相当一部分流量没有被竞价的问题,广告主不关心竞价词,他们只关心转化--卖掉商品。如何覆盖到相关的流量呢,从引擎的角度出发,高级匹配比精确匹配更有挑战性。
在广告搜索引擎中,广告语料库中的广告数量巨大,高达百万之多,而实际展示的过程中,只有极少数量的广告能够展示出来,目前业界普遍采用两阶段广告选择来解决性能问题。
广告检索过程中,整个广告的选择分为两部分:
对于广告重排序阶段,目前有两种主流的方法,以赛马为例:
反应式(Reactive):选定一匹马,根据它的历史成绩来预测未来的表现
预估式(Predictive):根据体重,腿长等特征为赛马建模,找到这些特征在预测比赛名次终的重要程度,然后基于这些特征来给见过、未见过的赛马预测成绩。
当我们拥有对某赛马的足够信息的时候,就使用这些信息(反应性),否则使用模型(预测性)。
本文只是简单介绍了一下计算广告和搜索广告中的一些问题和解决办法,如果想深入了解,可以去看看原文里面提到了的一些相关论文。
后续会写文章介绍一下业界内的搜索广告的业务和架构,敬请期待~