在线广告的核心计算问题和挑战
广告中的计算问题可以概括为下面的公式(Find the best match between a given user u, in a given context c, and a suitable ad a)。下面公式中a表示Sponsor(advertiser),c表示媒体(context),u代表受众(user)。公式的含义是:给定user,给定context,选择一组ad,使得ROI最高。ROI对于不同的产品形态是不同的,后面会再讨论。i是impression,注意这里优化的是一组impressions,即要优化的是impression整体的ROI,而不仅仅是一次的ROI。
这个计算问题是一个比较复杂的问题。从优化角度看它会涉及:
1. 特征提取:个人理解是受众定向,即把u和c打上标签的过程,这是重要的一步。
2. 微观优化,对一次展示进行优化,得到最好的广告,最关键的技术是CTR预测。
3. 宏观优化:因为在线广告是用户,媒体,广告商三方博弈,所以竞价市场机制的设计非常重要,如果它设计的不好,那影响是巨大的。
4.受限优化:无论是品牌广告还是效果广告,都有质和量两个方面的需求,对品牌广告来讲,大部分情况下,量比质更重要,比如宝洁,它要投一个campaign, reach大量人群,如果广告仅是点击率比较低,那宝洁可能是可以接受的,但如果预计要reach 20万人,但最后只reach了10万人,那它是不能接受的。但对于效果广告来说,质一般要重要一点,但是量还是重要的。受限优化要解决的就是在量一定的情况下,怎么来优化质,在线分配就是这个问题。
5. 强化学习:如何知道在新的广告主或新的用户群预测它的点击率,很直觉的想法是尝试,分配一定的流量给广告,看是男性用户点击率高还是女性。但是在尝试的过程中会损失一部分收入,因为不是按最优策略出广告的了。尝试的过程即探索,使用探索的结果即利用。
6. 个性化重定向:会深入的使用推荐技术。
从系统角度来会涉及:
1. 候选查询:要使用实时索引技术,使广告能很快地进入索引,很快指两个方面,新的广告要能尽快上线,广告预算用完的广告要尽快下线。
2. 特征存储:在线高并发要用到一些No-Sql技术。
3. 离线学习:很多时候要用到Hadoop。
4. 在线学习:一些比较快的反馈,比如得到用户上一个搜索词,要用到流计算技术。
5. 交易市场:要用到实时竞价。
在线广告计算的主要挑战有:
大规模(Scale)
因为计算广告要处理的是广告主,用户,媒体三者的数据,所以数据量非常大,百万量级的页面(没有搜索要处理的十亿级量大)和十亿量级的用户,需要被分析处理。线投放系统中的高并发挑战 (例: Rightmedia每天处理百亿次广告交易,它会向多个DSP去请求,即每天要进行千亿次的请求),响应速度在常见的web应用中可能是最高的,广告系统对Latency有严格要求(例: ad exchange要求DSP竞价在100ms内返回,在 100ms内DSP要做完所有的Target,CTR预测,选出合理的广告返回),对于广告效果本身,Latency也是很重要的,广告晚展示100ms,效果就比较明显的变差了。
动态性(Dynamics)
从建模的广度讲动态性是很重要的。比如一个用户想买一双运动鞋,他可能会去电商网站搜索,但这种兴趣在购完后可能就会消失。所以需要所建立的模型支持快速变化,比如涉及到CTR预测,那么模型参数是否能快变,特征是否能快速改变都是有挑战的。
丰富的查询信息 (Rich query)
在搜索中只需要用户所键入的关键词外,不再需要更多的信息就可以产生比较好的结果了。而在广告中,则需要多方面的信息,用户的信息,上下文的信息,用户的短期行为等等。搜索中查询一般是一到四个关键词,而如果把广告看成是搜索问题,那它的查询条件有几十上百个之多。
探索与发现 (Explore & exploit)
用户反馈数据局限于在以往投放中出现过的(a, u, c)组合,需要主动探索未观察到的领域,以提高模型正确性