博客

知识的诅咒

先打个广告: 团队长期招p6~p9数据,工程,算法; 业务发展快。 感兴趣的同学可直接关注以下公众号获取岗位信息:

管理,都和人相关,所以很多时候都是在讲心理学, 无论是更加了解自己, 还是更加了解别人。 同时发现一个比较有意思的现象, 就是中式心理学更关注自己的内心,中式心理学更关注了解自己,提升自己的修养;而西式心理学似乎更功利一些, 不仅探究内心,更在乎如何去影响他人。

今天听了一场讲座,里面提到一个比较有意思的概念,叫知识的诅咒。今天就跟大家聊聊这个概念。

先说一下什么是知识的诅咒,指的是一旦当你掌握某种知识,你就会认为这个事很容易,但是这反过来就会让你去教授或者讲解该内容的时候变得很困难,别人想听懂你教授知识的难度,比你想象中,听众掌握该知识的难度要高得多。

是不是没有理解以上我所说的话?这也是一个知识的诅咒:)

举个形象的例子,网上经常流传着一些段子,就是家长在鸡娃的时候都很崩溃,突然就觉得自己家的娃变傻了,那么简单的问题都不会?

或者我们在公司跟同事沟通的时候,也老觉得对方为什么听不懂我们说的内容,尽管觉得我们说的很清楚,内容也很简单。

这就是知识诅咒的例子:一旦我们掌握了某个知识,我们就觉得这个知识无比简单,但是我们就永远也无法完全理解没有掌握该知识的人的真实情况,就会导致我们认为:掌握该知识的难度和具体学习的人觉得的难度的偏差非常之大。

所以以后在工作当中,不要轻易的去质疑别人为什么听不懂。大家能在同样一个公司工作,教育背景都很优秀,智商都很高,都是通过高考这种千挑万选,独木桥上留下的人选,最大的可能就是你现在正在经历知识的诅咒。这也是一种非常普遍的认识偏差,或者其实也是人天生的一种偏见。一定要客观的看待他,并且尽量的减少它的影响。

所以你好好观察一下,你身边是不是经常会有这样的人:他的智商似乎没有你高,不过他们和别人沟通非常频繁,就会导致他们推进事情更顺畅以及产出更多,更能得到团队的认可。很多时候,这也是他们尽量避免知识诅咒所带来的缺陷,这也是大家在他们身上值得学习的优点。

所以很多时候我们需要尽量的去换位思考,看我们的沟通对象到底是什么样的人?他是不是已经具有了我们足够多的沟通背景知识?沟通的双方是不是已经真的在同样的一个频道上?如何补齐大家的认知偏差?

这也是我最近几年的一个比较大的感悟:同样一个事儿,你站在不同的角度看,会得到完全不一样的答案,甚至是截然相反的答案,但他们都是对的,只是所看的角度和立场不一样罢了。

比如你可以想一想,‘996福报’是不是对? 不一样的人会有完全不一样的答案,例如公司的角度,公司需要的是拼搏精神,而且很多事都是拼刺刀拼出来的,并且冲在最前边的人大概率会有更多的回报。。。。那就应该996!
当然,如果你说我就是要家庭工作平衡,那是不是就完全不一样?
我是经历过创业型公司的,算是近距离看过创业型公司的老板从白手起家到市值做得非常高,财务自由的过程。这种公司的老板非常之拼,比如经常半夜12点发一个微信过来,说有一个特别好的idea想讨论一下,几天之内就需要验证模式是否OK;或者他们基本上在电梯里,在车上都在讨论问题,都在开会,都在和合作伙伴谈生意。

记得之前有一次,和创业公司的老板连线讨论问题,他在国外是当地的半夜,他一边吃刚泡的白天在外边买的泡面,一边和我们开会,而且说没想到国外桶装泡面当里没有叉子,所以就拿卫生间的梳子当叉子,吃着泡面,和我们讨论问题。 又有多少人能够做到这么拼?

别人所吃的苦是我们很难想象的,当然,别人所拥有的财富也是我们所难想象的。

沟通视窗4象限

对于我们在沟通方面的认知,可以使用沟通视窗为4个象限来描述


图:沟通视窗4象限

公开象限
每个人都有自己的公开象限,就是别人知道自己到底是一个什么样的人。这个象限的大小,我们是可以控制的,不能说它是越大越好,还是越小越好。这个象限的大小有他的作用,也有它的弊端。

一般情况下,公众人物的这个象限是比较大的,这也会为他们带来好处,例如,他们可以塑造自己正面,积极,阳光的形象,为他们带来名声,之后就会产生相应的利益。

我们看市面上有各种各样的成功学,或者说各种CEO老板的传记,其实他们都在放大自己的公开象限,而且专挑好的说,这些文章或者书籍,也许你在看的时候不知不觉就这些人带来流量作为他们变现的工具,但从你的角度,你可能还以为自己学到了别人成功的经验。是不是很搞笑的一件事?

当然,公开象限比较大,也会带来它的弊端,例如你的隐私会变少,或者会不会你苦心经营或者伪装的人设在瞬间崩塌? 这样的例子其实非常多,比如打工皇帝唐骏,或者各种崩塌的明星。

隐私象限
隐私象限,这个象限和公开象限是相对的,这个象限具体对每个人的大小是可以控制的,到底要公开多少,每个人都会有自己的选择。有些人就会让隐私上线比较大这样这个人就会显得比较低调,这样的人一般不容易出事儿,但是因为别人对你不太了解,所以跟你就会产生距离感。

盲点象限
这个上线也是很大的每个人都有,而且很多时候处理不好是很致命的.一般的人有网点上线可能更多的是因为自己的认知偏差,很多绝顶聪明,并且又有非常多阅历的人,也经常会陷入盲点象限, 特别是当他们位高权重掌握各种利益分配权利的时候。

举个例子,在袁世凯的晚期,他所有的手下都在骗他,甚至手下还专门出了一份供袁世凯看的报纸,全北京这份报纸就只给袁世凯看,让他以为他称帝是民心所向。。多么恐怖的一件事。

但比较搞笑的是,我之前听百度的同事也提到,之前百度信息流有一个专门供李彦宏看的版本,老板看到的内容跟其他用户看到的是不一样的。。。历史是何等相似且在不断重复,真是细思极恐。

所以不管是谁,忠言逆耳,兼听则明。人性都是喜欢听好话,但当听到别人说自己不好的一方面时,那最好先冷静下来想一想,是不是别人正在说自己的盲点象限。

潜能象限
这是一个非常大的象限,每个人的潜能象限都特别大,而且我们每个人一生都致力于开发潜能象限。记得之前听到一种说法,好像说是字节,张一鸣说的:姜子牙80多岁才辅助周武王平定天下那他之前在干什么呢?主要就在读书和锻炼身体,我们可以认为他就是在不断的开发潜能上限。

而对于我们这些寻常人来说,确实,随着年龄的增长,身体的机能和精力是在下降的,但是如果保持一个年轻的心态,不断学习,不断探索,其实我们永远能够取得超乎我们想象的成绩。

在阿里,大家不断的在提升,大家的压力也非常大,环境也逼着大家不断的去挑战自己,也经常说一句土话,今天最好的表现是明天最低的要求,其实我觉得背后也是要把大家的潜能逼出来。

特别是很多问题,我们需要放在时间的维度去考虑。例如我到阿里之后,其实我从来没有去过健身房,也没有刻意的锻炼,但我觉得我的身体素质是是在变好的,随便爬个十多层的楼梯,可以小跑的速度上去,原因很简单,每天坚持做50个俯卧撑,几分钟就搞定。 简单却并不容易,坚持下来, 会发现很不一样。

所以大家一定要保持一个年轻的心态,就像小孩一样的求知欲。

【管理】产品与技术的相爱相杀

先打个广告: 团队长期招p6~p9数据,工程,算法; 业务发展快。 感兴趣的同学可直接关注以下公众号获取岗位信息:

引言

各位研发同学,大家有没有这样一种感觉:就是在工作中, 你经常会有如下感叹:

  1. 为什么我们的产品需求如此多? 就不能想清楚再做吗?
  2. 为什么我们的产品居然给算法提了个效果翻5倍这样愚蠢而不可能完成的增长要求
  3. 产品抱个脑袋想出一个需求,研发就要吭哧吭哧搞半天,那产品平常都在搞啥?


总体来说研发同学有这样的想法是很常见的, 也是很正常的。 而且以我的经验,无论是大厂,初创公司,或者中型公司,都会存在这样的情况,无论是以工程师文化著称的百度,还是以强势业务导向的阿里, 或者其他一些小公司都不会例外。

下边我就来分析下研发为啥会有这样的想法, 以及站在产品的角度, 又会看到那些不一样的东西。

公司里最大的理,就是对业务的发展有利

在这里先抛一个基本原则, 无论你的角色是产品还是研发, 无论你看你对应的产品, 或者技术再怎么不顺眼, 这些都是有主观立场有屁股的看法, 而且是信息不完全的看法;每个人都会以自己的角度,自己的经验去看问题。
这样就会出现我经常和下属讲的:二元世界理论:同样一个事,从不同的角度看,会得到不同的结论,并且都是对的。

公司里边最大的理,就是要对业务的发展有利。其他的诸如研发觉得产品是不是需求提太多, 是不是需求不合理, 是不是在压研发的排期, 甚至是不是在找事儿, 这些都是有屁股, 有偏见的主观的看法,不是理

产品与技术的相爱相杀

前两年听淘宝一个研发负责人分享,末了一个听众问了个问题,大抵是问研发在业务需求非常多的时候,如何平衡技术长期建设和短期业务需求的关系。 当时那个研发负责人提到,‘产品和技术的关系,是相爱相杀的关系’,产品和技术都会有自己想做的, 自己认为重要的的事, 那如何去决定什么事重要, 优先级如何, 其实就会涉及到优先级的PK, 或者是较多的平衡。

产品与技术的目标一致吗?

可能这里有研发的小伙伴会问: 不是一直说产品和研发的目标是一致的吗? 那还需要平衡什么?
但你认真想想,产品和技术, 目标真的一致吗?
我个人的观点是: 产品和技术的目标, 是不一致的, 或者说是不完全一致的。否则从公司组织机制上,就不用专门分出来产品和技术两个工种了 。

那为什么说是不完全一致的?简单想想:产品会考虑稳定性吗? 会考虑实现如何具有可扩展性吗? 似乎不太会吧。
但技术需要考虑这些。 虽然有些技术小伙伴接需求接麻木了, 需求挡又挡不回去, 就干脆需求来了后就糙快猛把需求怼上去,产品说啥就是啥吧, 但最后系统越来越复杂,越来越慢,直到某天迭代不动了, 影响到了业务发展, 这是谁的问题? 其实还是技术的问题!

所以,大家的业务目标是一致的,但当业务需求提过来的时候,技术同学有必要,也有义务从技术的角度,审视需求的合理性,并需要结合长短期的技术发展,确定合理的方案
而且很多时候,以我的经验,技术的长短期方案的权衡,以及必要的技术投入, 其实都是可以和产品同学一起聊, 一起沟通的。 至少我打过交道的产品同学, 虽然他们更多从产品的视角来看问题,但你讲你的技术长期考虑,长短期如何权衡和他们沟通后, 都还是可以得到理解或者支持的。 如果确实有些需求是有很大的业务压力,必须要糙快猛地搞,大家至少在信息上是可以拉平的。 当然, 如果资源上实在无法拉齐,至少信息拉齐了,可以上升到老板来决策。 前提是研发需要有自己的判断。

产品业务同学的压力

很多时候技术同学觉得自己比较辛苦, 压力比较大,还被产品同学PUSH得不行,甚至心里委屈有气, 其实在和产品充分沟通后,换位思考一下, 其实产品,业务的压力更大。
为什么更大? 业务,包括产品都是需要背业务指标的,收入一年翻5倍, 核心指标翻3倍。。。 可能都是老板直接就拍下来了。
技术同学可能还会根据各种数据,指标估一个合理的可能的增长,但业务一般不是这样,都是先拍KPI,再想达成的手段,这样在KPI拆解的过程中, 就会导致很多理智的逻辑性很强的研发同学觉得产品对技术的要求高的可笑,觉得产品同学不靠谱,但其实这正是产品同学的压力所在。
很多问题其实就是个屁股问题, 换个角度看, 就能理解了。

开头的3个问题

对于开始的3个问题,读了上文后,应该就有答案了:

  1. 为什么我们的产品需求如此多? 就不能想清楚再做吗?
    答:很难,没有人能预知未来,换你,也只能快速地去试,只能做到Fail Fast。 因为从‘肯尼芬框架’的角度来看,产品所处的象限是‘复杂’的象限, 技术所处的角度为‘繁杂’ 甚至是‘简单’的象限。
  2. 为什么我们的产品居然给算法提了个效果翻5倍这样愚蠢而不可能完成的增长要求
    答:因为老板拍目标的时候,就是按照更高的要求拍下来的,产品也没地方说理(且不说很多时候高目标也能够实现)
  3. 产品抱个脑袋想出一个需求,研发就要吭哧吭哧搞半天,那产品平常都在搞啥?
    答:产品涉及各种上下游拉通,好好想想就知道了, 其实真的很操心


图:肯尼芬框架简图,产品业务一般处于‘复杂’区间,技术处于‘繁杂’或‘清晰’区间

但有一点是肯定的,产品在整个价值链路上处于中枢的角色,对全局的信息更加了解,而技术则处在底层,信息比较局部,仅是‘重要的环节’, 所以遇到问题,多和产品沟通,多了解下更加全局的信息,这样对整个业务的了解会更加全面和透彻。 在整个过程中不要有情绪,和产品同学的合作不要有偏见,这些都是主观的。 一定要记住:公司里边最大的理,就是要对业务的发展有利

P.S. 在公司里,一定不要因为不爽而和产品对抗,考虑问题多考虑上边提到的公司最大的。另外产品同学更接近业务,是需要对公司发展,或者说挣钱负责的, 技术固然重要,但更多是公司运作的单一环节。 二者如果竞争,这就像一个6维空间的文明, 和3维空间的文明对抗一样, 维度不一样,结果可想而知。

阿里工业级LBS DMP设计思路

先打个广告: 团队长期招p6~p9数据,工程,算法; 业务发展快。 感兴趣的同学可直接关注以下公众号获取岗位信息:

前言

通过阅读本文, 可以有两方面的收获:

  1. 我们针对LBS 场景的DMP建设, 定义了新的基于底层人地关系原子能力的范式,避免了传统DMP用户数据生产过程中, 标签建设代价过大,无法迅速扩展的缺陷
  2. 展示了分层DMP建设的框架

个人隐私相关的行业背景

最近国家密集出台史无前例的互联网个人隐私管控的法律,以及算法管控备案的条纹, 例如:《互联网个人信息保护法》中明确对互联网APP个人信息收集,利用做了非常严格的限制。

对于各种设备级ID的使用, 例如原来imei, idfa, androidid等都有较为严格的限定,对于类似于轨迹,定位数据也做了较为严格限定。

从系统分发的角度, 《互联网信息服务推荐算法管理规定》也对算法的分发提出了较多要求, 对于个性化, 大数据杀熟等国家也在加强备案和管控。

在这样的行业背景下, 互联网的大数据使用会逐渐趋于规范和精细化。 这里需要明确的是, 国家不是限定大数据的发展,而是限定原有不规范,粗放式的数据使用。

例如早些年我的确听说有些公司对外提供DMP服务,按照请求次数收费,各种个人隐私数据不管应用方的类似随便使用, 这样的确是很恐怖的情况。 因为现在每个人在手机上产生的数据太丰富: 包括家庭住址,信息获取偏好, 购物, 所在位置等。

挑战

在这样的大背景下, 在构建工业级的LBS DMP体系的时候, 就会面临两大类挑战:

  1. 传统的技术挑战, 更多是技术问题, 包括如何更高效,实时地处理海量数据; 如何从数据中,对业务的LBS 能力进行原子能力的抽象; 基于原子能力如何对数据资产沉淀, 以及如何更通用化, 更高效地对外提供数据能力的支持。 每一个点均能衍生出较多非常多的技术挑战点需要攻克。
  2. 新的隐私数据安全, 包括哪些隐私数据我们能够收集, 哪些能够使用, 应该如何使用, 提升个性化效果以及触及个人隐私的边界在什么地方,这些都需要在数据使用,系统设计实现的时候充分考虑。 毕竟我们在社会主义的红旗下,需要做遵纪守法的产品研发,打造合法的系统。

同时,在大数据时代,我们也不可能就因为个人隐私风险而放弃对数据的建设, 毕竟互联网快速发展了20多年,基于数据算法的个性化被证明是提升系统效果的利器, 过去工业界,学术界的算法得核心也是数据驱动的个性化精准分发, 同时以后随着数字化的发展, 更多IOT设备的加入导致更多的信息需要处理都需要我们有更加强大的数据处理能力。

所以各个公司, 特别是阿里,腾讯,字节等大厂, 更是会在这一块工作上持续投入。 都会构建自己工业级的LBS DMP,以便在各种搜广推的分发应用中,提升分发的效率。

下边就为大家介绍我们LBS DMP建设的思路。

设计


图:LBS DMP架构分层图

工程实现

从具体设计实现的角度,高德的LBS DMP从工程的角度和业界是比较类似的,从底层数据到上层应用,主要分成以下四层:

  1. 底层原始数据数仓,该层主要包括原始的数据收集,数仓ETL建设,以及对应的实时计算。具体的数据包括超级APP端内的搜点规划导航等LBS数据和用户行为数据的处理,以及高德开放平台数据。这两类数据一个最大的区别就是APP端内数据可以对应到具体的用户,但开放平台的一部分数据,我们是对应不到具体的用户的,拿不到体用户ID的数据,这些数据可以用来做热力相关的应用。具体实现层面,该层我们会基于ODPS和Blink来进行数据处理。
  2. 第二层是我们的人地关系算法层,该层更多的是基于我们的原始数据做进一步的深加工,包括对应的数据挖掘以及实时的算法处理。该层的算法挖掘质量会决定最终DMP效果。在实现层面,我们会用到非常多的深度学习,以及推荐类似的算法,所以也需要算法架构的支持,这次我们就基于AI OS去打造我们的数据挖掘和匹配逻辑算法。但是我们会给我们的应用场景去抽象,我们极少的原子能力,不求多,但求精。
  3. 第三层是我们的数据资产沉淀层,我们需要基于第二层打造出来的核心原子能力,进行灵活的拼装,组成上层应用,包括实时或离线的特征和标签,这些特征和标签既有表征用户长期兴趣特点的类型,又有实时用户的状态,行为的类型,例如,用户长期的类别偏好,兴趣偏好,这些都是用户长期的数据积累下来的,并且是在一定时间之内,不太会改变的用户的固有属性,这种就是长期的兴趣标签数据,另外,类型是跟永辉相关的事实,实的会很快改变的,需要快速补充的类型,例如,当前用户的需求是不是在饭店需要吃饭?是不是在外地需要订酒店?甚至细化到最近30分钟是不是有酒店需求这样的动态标签,这些都是实时类型。 从我的角度,我们对标签的定义进行了扩展:这些都是标签,只是长期兴趣标签总体来说没有时效性,相对稳定而短期实时标签具有动态性和时效性。
  4. 第四层就是服务层,例如,以什么样的方式对外提供数据服务,构建什么样的中台,什么样的通用的数据方式去提供通用的数据解决方案。这层我们会基于阿里的 AIOS,并且配合我们的数据管理平台,对外提供通用化的数据伏。

算法

从算法的角度,最重要的就是我们如何去抽象我们的LBS场景问题,将众多的数据以及对应的应用抽象为可数的几个核心原子能力

原子能力
这里先解释一下什么是原子能力:原子能力就是基于最底层的抽象,不能再分割的能力,而上层的更复杂的业务能力,都是由底层的可数的原子能力拼装组合并演绎而出。

之前在听美团的干嘉伟的一个分享的时,他提到所有的问题都可以进行拆解,再打碎为原子能力后重构,而对LBS场景所有的问题都可以根据时间,空间去进行拆解,所以我们在这样的拆解框架之下,只要我们的原子能力从时间和空间的角度分成点线面(空间)*过去现在未来(时间)的模式:


图:LBS 时空原子能力拆解

我们在建设上层特征及标签的时候,不再遵循传统的方式对标签进行一对一的深加工定制,因为这样是有一个扩展性的限制的,扩展性标签的代价是线性的,当标签非常多的时候,代价是不可承受的。不可能无限的扩展。

例如,在之前的系统中,我们建设了400多个标签,但之后就无法再高效准确的维护对应标签的数据质量,所以后来我们转变思路:所有标签都是基于我们的原则能力,在上层,进行组合加工得到最终的标签,底层的原则能力会持续地不断深化,

对于原子能力,我们在单点上进行深化建设,底层的原子能力,我们使用了非常多的深度学习及图关系的算法,讲原子能力做的足够准确,相反上层的组合做的足够简单,并且可解释,当然,底层的原则能力都需要配合debug分析平台来提升数据质量。

这一部分其实是这个算法的核心,因为算法会涉及到比较多和业务相关的数据能力,数据算法能力,所以此处主要就说一下思路更多的时间此处就不展开了。

这里也有一个比较有意思的现象,就是无论线上的搜广推还是离线的LBS标签建设,在实现的时候都是使用相同的思路。

例如,我们在线上搜光腿检索轮实现的时候,经常会进行召回排序机制将各个环节分开进行;比较有意思的是,在离线进行数据处理标签建设的时候,也会使用类似的思路,都是先招呼一个大集合,然后再去做排序,最后再进行挑选。像我们在识别一个用户,他的家庭住址的时候,也会先挑出来这个用户候选的家庭住址,然后再去做打分排序,最后再选TOP N。

或者在进行路线规划的时候,也是先选择一部分的候选路线,再进行排序。整个过程从框架思路上没有本质区别。所以这应该也是搞互联网技术的人比较倾向于招搜广推经验丰富的候选人,因为搜广推比较有经验的话,这些技术迁移到其他的领域也会比较方便。

从本质上来说,这些操作都是信息处理过程,都是user和item的匹配,这可能是这些技术比较相近最本质的原因。

成果

和公司相关的业务此处就不再展开。此处人地关系的通用原子能力,我们也发表了对应的论文,会在后续的文章中介绍。具体参见《learning the continuous context-aware temporal knowledge graph representation for user and poi understanding》

Reference

  • Learning the Continuous Context-aware Temporal Knowledge Graph Representation for User and POI Understanding
  • 阿里巴巴 AIOS

计费系统&超投控制

背景

在整个广告系统中, 计费是处在和钱最相关的环节:检索端把结果展现给用户,如果用户感兴趣,并且产生点击之后,这些点击就需要通过计费系统进行流转,对广告主的费用进行扣费。

因为计费系统和钱完全相关,所以任何问题都是钱的问题,而钱的问题在广告系统里边都是最受到重视的所以在各个广告平台当中,都会有专人对计费系统进行升级,维护和监控。
想象一下出了问题之后,要么是广告平台的钱受到损失,要么是广告主的钱受到损失,计费系统如果有问题,要么广告主直接跳出来找你,要么就公司收入受损失,所以一般做计费系统的同学的压力都是比较大的。
例如在大厂(比如腾讯,阿里巴巴,字节),如果一天的广告收入是一亿,在高峰时段,出了故障半小时就损失大几百万,而且有一些事故的收入是回补不回来的,这个收入是回补不回来的这个还是挺恐怖的。

下面就给大家介绍一下积分系统的实现逻辑。

图:计费系统系统位置

在用户看到检索端呈现的结果之后,如果用户感兴趣,就会发生接下来的点击和转化,此时,这些信息就流转到计费系统去进行计费。

计费数据链路


图: 计费数据链路图

广告计费平台涉及以下内容:资金管理,实时计费,投放控制,日终结算等和钱相关的工作,重要性非常高。

上图中的几个组件功能如下:

  1. 资金管理平台, 主要是对用户的账户资金进行管理,包括交易,结算,充值等。
  2. BP,主要对投放进行管理, 包括投放计划/单元的设置,投放预算的设置。
  3. 计费平台,为本文的核心部分,主要和广告投放引擎,资金管理平台进行协同进行计费,同时进行投放的控制和结算。

计费系统的挑战很多,主要体现在以下几方面:

  • 实效性非常高, 否则会造成较多超投,或者少投,相当于是资损。
  • 涉及金额较大, 广告平台涉及到的所有的钱都会通过该系统链路
  • 线上‘钱’的链路的最后一环, 需要对上游系统错误进行容错,最大程度避免钱的损失。

超投控制方案

超投: 超过广告主余额,计划预算的投放流量是不能找广告主收钱的,该种情况就是超投。 超投不可避免,但可以尽量降低超投或者少投,这就是一种开源节流

为什么超投不能避免?
原因很简单,以CPC为例(CPA等其他模式会更加严重,因为转化路径和转化延迟更为严重),广告平台的展现,到用户的点击是有时间差的,如果广告展现的时候还有预算,但用户点击时预算花完,该点击就不能向广告主收费,就会出现超投。

另外系统的数据链路本身也会有延迟。 所以超投不可避免。

图:计划撞线

如何降低超投?
控制超投的思路, 就只有一个, 就是在预期计划可能超投的情况下, 进行投放的减速

具体来说,就是**降速在消耗接近预算/余额前,进行降速,以期望在预算为0时,正好停止投放。 思路就类似于预算/余额接近0的时候开始刹车。

在具体实施的时候,可以使用以下方法进行刹车控制:

  1. 根据预算/余额直接进行计算是否开始踩刹车。参见图:刹车控制超投
  2. 根据剩余点击数,根据预算/余额,以及最近的N条点击的花费,计算出剩余的点击数进行控制
  3. 根据剩余预算/余额/点击分段进行控制, 这是更精细化的方式,越接近刹车终点,速率越慢。
  4. 缓升控制, 该方法不仅考虑预算控制的刹车的方法,还需要考虑计划投放启动的速率,主要是避免有些预算较少的单元,因为一开始投放较多, 直接就控制不住超投。参见图:缓升控制超投。


图:刹车控制超投


图:缓升控制超投

计费收益优化

排序

为了实现平台的收益最大化, 以及统计口径的统一, 在计费日志遍历的过程中,需要对排序逻辑进行优化, 排序优化分为以下4个阶段:

  1. 按日志的自然顺序计费,该计费的方式优点比较直接, 就是计费逻辑比较简单,同时能够保证计费结果的一致性;但缺点也很明显: 该方式对平台不利,很容易出现较多的超投。
  2. 引入贪心算法, 即大价格在前,该方式对于自然顺序有一定优化。
  3. 引入改价策略,即排序的时候进行计费日志改价,这样就能够保证最后一条日志能够计费。
  4. 引入排序稳定性改价, 多次重跑,保证结果一致。

最后,大量招人,算法,工程,数据P6~P9,具体岗位参见: 招聘信息

基于blink DataStream的实时数据配置平台

背景

随着移动互联网的普及, 以及各种超级APP的出现, 每个公司都对数据收集以及充分挖掘数据的价值非常看重,并几乎不计成本地投入。 在每个公司, 无论是实时的BI报表统计分析, 通过实时数据的异常监控, 还是根据用户的实时反馈进行算法效果模型预估,在各个公司都有非常多的应用,并对公司业务效果的保障有着巨大的影响和贡献。

当然, 随着近些年各种开源软件,平台的出现, 特别是以hadoop为起点的开源组件,使得各公司都能够基于这些组件,以及各大厂的云计算快速搭建自己的大数据平台,包括实时数据处理系统。

这里八卦下自己的看法, 个人觉得这些年百度相比于阿里,百度的技术其实是在退步的(虽然我在百度工作了很多年,百度是我的老东家), 我觉得一个主要的原因就是百度的系统太封闭。这在早些年, 在开源社区还不活跃, 大家都需要自己封闭造轮子的时代,这个时代就比拼各个公司自己的技术能力,彼时以工程师为主导的文化, 的确让百度技术领先阿里一大截。 记得10年前,我们都特看不起阿里的技术,就觉得阿里没有技术, 就业务好。 甚至业界还没提云计算的时候, 我们在百度内部, 大家的开发机就已经是以虚拟账号的方式分配资源了。相当于内部已经开始某种意义上上云了。
但后来随着开源社区的兴起, 百度这样连STL都自己重新写一套的模式就慢慢跟不上节奏了: 开源社区结合了各路神仙的才智,对各种大数据组件进行打磨,这也是开放带来的牛逼之处。

通过近两年对老东家百度出来的同学的面试深深由此感觉, 百度甚至内部跑数据还在自己写各种MR,感觉跟我2013年还在百度的时候没啥区别。。。。

扯了那么多,就是想说各种中间件的大数据处理组件,还是需要开放生态,才能有竞争力。国家都需要开放,更别说公司技术。

此处就为大家介绍我们团队为了降低实时数据计算的成本, 构建的‘基于Blink DataStream的实时数据配置平台’,从思路上介绍我们是如何满足各种纷繁多样的基于LBS的实时数据计算需求的。希望对大家有借鉴作用。

同时打个广告: 团队长期招p6~p9数据,工程,算法; 业务发展快。 感兴趣的同学可直接关注以下公众号获取岗位信息:

解决问题

移动互联网目前已经发展到近乎巅峰状态,各个大厂都有自己主打的超级APP,头条各种基于内容的kill time app,腾讯, 阿里淘宝,包括高德都是DAU过亿的超级应用。 这些应用也时刻在产生海量的用户数据。 很多场景都需要对这些数据进行实时处理, 包括:

  1. 用户行为反馈后,进行BI实时报表计算&分析&财务结算
  2. 系统监控,包括业务效果的监控。
  3. 实时特征生成供模型实时使用,例如搜推广的ctr,cvr,实时反作弊等

这个过程中, 实时计算就是一个绕不开的话题, 而且每个场景都会有非常多的定制化需求。


图:广告系统业务端到检索端的基准+实时增量数据同步


图:实时反作弊,需要实时对用户点击反馈进行反作弊计算。

以上两个广告的例子,广告系统业务端到检索端数据同步,以及实时反作弊,都会涉及到较多的实时计算。

挑战 & 实现

在我们的场景, 对实时计算有以下要求:

  1. 实时性: 实时计算的延迟很多场景需要缩短到毫秒级别,才能在很多场景满足用户需求。例如:广告实时性能力建设 《风向标逻辑》
  2. 极低的接入成本:理想情况希望业务方的工程OR算法就能通过平台操作攒出满足自己需求的实时数据计算,满足自己的需求。

基于以上两个要求, 我们定制了基于Blink Data Streaming的实时计算配置平台。
Why Blink? 很简单,flink在实时计算很有优势,流批一体, 且Blink基于flink,是阿里的。
Why Data Streaming:Data Streaming更底层,可以做更深层次的定制和性能优化。


图:基于Blink Data Streaming的实时数据平台架构

在具体实现的时候。 我们将系统抽象成以下几层:

数据层
其功能是对各种来源的数据,按照规范进行数据的normalizing, 因为高德是LBS场景, 所以所有的原始数据实时进入系统的时候, 都会被规范化为<time, location, userid, object, event>, 也就是时间地点人物事件,以及事件处理到的对象。
此处的userid及object并没有带维度属性,维度属性由离线batch逻辑生成。 并在引擎层进行id和维度属性的自动关联。

引擎
此处的引擎主要有两个作用:

  1. 定义算子: 我们使用blink 的data streaming api开发并优化了常用的实时数据算子, 以便引擎能够将各种算子攒成任务, 此处的算子可以灵活定义并根据需求开发, 类似于一个faas平台。
  2. 任务调度: 单个算子仅进行实时数据的一步原子计算, 需要引擎层中的任务调度, 根据上对层平台计算任务配置的解析, 组合成完成整个实时计算逻辑的task任务。 此处比较像tensorflow在运行时, 将各个operator按照有向无环图编排任务进行计算的过程。

服务层
服务层的两个作用:

  1. 任务配置: 负责给平台使用者提供UI,以便用户进行任务的配置。目前开源有很多这样的配置管理组件可以使用, 我们内部使用Diamond平台
  2. 资源状态管理: 从系统的角度对任务进行调度, 资源分配。

效果

目前我们团队开发的实时计算平台已经在各个业务中使用, 初步实现了配置化实时任务的生成, 启动,管理, 监控。 连写blink sql都免了, 用主要负责开发的同学的话说: '该平台再完善完善, 写blink sql的同学也可以失业了。。'

如果你对我们的工作感兴趣, 可以联系我们, 需要更多同学进行类似平台的建设和完善。

参考文献

  1. 广告实时性能力建设
  2. 在高德吃喝玩乐!LBS信息的AI技术应用

广告预估校准机制介绍

背景

说搜推广的时候,我们会用到很多的模型来对效果进行预估,包括ctr的模型和cvr模型。这就会涉及到使用对应的指标,对模型的效果进行衡量。

一般情况下,我们使用最多的指标就是auc,因为auc可以来评判排序的效果好坏。很多时候我们也会使用auc来评判广告中的ctr或者cvr模型的好坏。而且一般我们在特定的场景也会有一个auc和线上效果的大致转化关系。例如,我们会有这样的经验:线下auc提升一个点,线上的收入提升n个点。不同的广告平台会有很大差异。

但是随着广告效果的精细化,以及引入了更多的机制,这样的模式就会存在明显问题。例如对于cpc产品我们的rpm的预估收入公式是:ecpm=ctr*bid。这就要求我们不仅要保证预估ctr的排序正确,同时需要保证ctr预估的值也足够的准确。

这就是搜索推荐与广告在对于ctr预估的准确度上的区别:搜索推荐只考虑排序的正确性,但广告需要考虑ctr预估的准确性

解决广告ctr预估准确性的手段主要就是两种,第一就是让模型足够准确,狂怼模型预估能力;第二就是增加合理的校准逻辑。

这个地方再详细展开说一下,为什么广告中对于预估的准确性那么重要,主要由以下几个原因:

  1. 只有ctr足够准收入,收入预估才足够准, 如上 ecpm=ctr*bid
  2. 还是ecpm=ctr*bid,因为本质上广告主关注的还是效果,roi,所以如果转化率预估的足够准,我们是可以对好的流量进行提价的,也就是增加bid,同样可以提升收入。 具体参见:CVR优化的重要性
  3. 现在很多广告平台都同时支持cpc广告和ocpc广告混排,这就需要将不同模式的广告效果进行拉齐排序,也要求预估足够的准确,否则变现效果不可比.
  4. 自然结果和广告需要进行混排,而且很多时候收入和自然结果的体验会有对应的量化折算关系,也要求预估足够准确。具体参见:多目标广告混排机制在超级APP中的技术

具体如何让ctr预估模型更加准确,可以参见:推荐系统,变现系统CTR&CVR预估算法演进-模型,更多的是介绍如何让校准更加准确。

校准的要求

一般情况下,校准是在预估打分之后,机制之前进行的。因为线上的计算逻辑较重,所以一般都希望校准能够相对简单,并且可解释。同时,最好校准逻辑不要跟有业务逻辑绑定,需要通用。


图:预估校准阶段,在排序机制4(预估)之后,5(机制逻辑)之前

正所谓没法衡量,就不存在优化,所以和所有的算法逻辑一样,校准也有对应的标准来进行效果的衡量。目前经常使用的衡量指标有如下三种:

PCOC:该指标的基本思想就是平均预估值/统计真实值;该指标逻辑相对简单,但是不能反映分布的差异。

CAL-N:该思路对PCOC进行分桶统计,不同桶上的误差会累计,相当于一定程度上体现了分布的值。具体的计算逻辑为:

$CAL-N=\sqrt{\frac{\sum_{i=1}^N error_i^2}{N}}$

其物理含义,就是单独计算分桶的PCOC(或error), 然后求平均误差。

GC-N:该指标就更进一步,针对某一个特定的维度去进行加权,毕竟什么事物都有个优先级重要性。例如在广告中根据单元或者计划的pv或者收入去进行加权。具体计算逻辑为:

$GC-N=\frac{\sum_{j=1}^m w_j Cal-Nj}{\sum{j=1}^m w_j}$

其物理含义, 就是分某个维度后, 在维度上计算CAL-N,然后再进行加权汇总。 例如在广告系统中, 此处的维度可以是广告计划维度, 权重为该计划的PV或者消费。

具体实现

知乎上《阿里妈妈展示广告预估校准技术演进之路》 中介绍的已经非常详细,写的非常赞。我们团队也是借鉴了阿里妈妈的技术,所以这个地方就不详细展开,大家可以上知乎看看同学的文章写得非常详尽。 此处仅介绍传统的方法和我们团队借鉴的SIR方法。

传统校准方法

主要有以下3种:

Platt's Method
该方法的思路是对预估的值在使用实际的label进行一次参数化的映射,使用LR方式进行参数化学习。 校准函数为:

$f(x)=\frac{1}{1+e^{ax+b}}$

其中a,b为学习出来的参数。该方式优点是比较简单,且是学习出来的结果, 缺点是对于假设空间有过强的假设(认为是sigmoid函数)

Isotonic Regression
该方式的思路是使用一个单调函数来最小化预估值和label之间的square error,对结果进行保序的校准。 该方式隐含的假设, 是预估值至少能够保证预估顺序的正确性。 该方式的缺点,是处理不好预估值在突变的情况

Binning Method
该方式的思路, 是将预估值进行排序后分桶,然后统计正样本占比。


图:Smoothed Isotonic Regression(SIR)方法

具体的计算逻辑为:

  1. line 1-3进行排序分桶
  2. line 4-9对每个桶,计算预估样本上下界,以及正样本概率
  3. line 11-23构建每个分桶的线性插值函数。
    之后,对于任意x,使用x所落在的空间,使用该区间的线性差值函数即可进行预估数值的校准。

该方式可以按天分小时进行计算,以便体现时间上的ctr值得差异, 特别是在LBS场景, 中午餐饮行业, 下午晚上的休闲娱乐酒店的分布还是有较大差异的。

线上效果

进行SIR校准后, 在我们的场景, 效果有5%左右的相对提升, 另外理论上该机制也能够更好地平衡CPC & OCPC广告的混拍。 所以先不管提升是多少, 就是一个需要去做的正确的工作 。

末了附上一句阿里土话:if not now, when? if not me, who? -- 此时此刻,非你莫属

CVR优化的重要性

还是先插个招聘信息: 急招推荐,搜索,语音算法,数据挖掘,工程人才,阿里P5~P9,欢迎推荐和自荐,微信扫码关注以下二维码了解详细信息

背景

在广告这个领域,CTR的优化有较为悠久的历史, 这些年也出现了较多系统性的优化方法, 包括样本如何选取, 各种模型的出现和创新,在整个领域都有较深的研究沉淀。 从事这个行业的同学也都较为了解。

但当CTR优化达到较高的水平,因为预估的ecpm=ctr*bid,收入的优化会逐渐达到瓶颈,此时如果要继续优化广告的效果,就需要加入其他更多的优化链路和环节,从更多的维度,更高的视角去进行整个系统的优化,其中非常重要的一个环节, 就是CVR的优化。


图:广告cvr在检索端位置

CVR优化的重要性

那CVR优化为什么重要?

下面就详细说下这个问题。
先补充个背景:我们可以认为, 广告和搜索&推荐这样的自然信息分发有本质区别的地方: 搜索&推荐这样的自然信息分发的主体是平台,平台完全自主决定了分发的机制; 但广告不一样,广告的主体是广告主,广告主会对自己的广告,也就是广告平台分发的内容增加约束(例如出价,定向条件,时段等),而各个广告主的约束总体又形成了带约束的竞争环境。
这些约束条件,就是广告分发和搜索&推荐分发的本质区别。

而从广告平台的角度,传统上我们认为平台能够调整的因素, 主要是CTR, 因为 :

$ecpm = Q * Bid$

而且一般情况下,Q就是CTR,而Bid是广告主设定的,原则上Bid是广告主设定的,是不能改变的, 这就导致了广告平台能够直接影响的因素, 就是优化好CTR(其实也可以影响Bid,这个待会会介绍),将CTR预估做这也是为什么之前很长时间,大家提到搜推广,第一反应就是CTR预估。

但从本质上来说,广告平台的主体是广告主,广告平台需要满足广告主的目标诉求和约束, 广告主最终的目标还是转化和ROI(不同的投放任务可能还细微不同),而不是固定的出价, 所以近些年出现的各种智能出价,包括OCPC,OCPM,就开始考虑广告主的转化了: 如果认为对于广告主这个流量价值比较高,是可以动态调整Bid的,而流量价值如何判断,就依赖于准确的CVR预估。考虑了CVR后,流量的价值可以拆分为:

$ecpm=ctr\cdot cvr \cdot abid$

此处abid为广告主对一次转化的出价。

而CVR预估做准后有两个比较大的好处:

  1. 就是能够进行动态调价,调Bid,直接增加单次流量的收益
  2. 广告主转化/ROI得到保障后,会有更多预算的投入,让广告平台的整个竞争环境更加充分,有利于广告平台生态的良性循环

以上就是CVR预估为什么重要的原因。

CVR优化和CTR优化的异和同

相同点:都是标准的预估任务, 按照样本,特征,模型的思路死磕预估效果。 各种创新机制都可以搞。具体可以参见:推荐系统,变现系统CTR&CVR预估算法演进-模型

不同点:转化很多时候都不是立即发生的,都会有延迟,例如APP应用下载安装的归因,可能是7天,甚至更长; 淘宝的下单,也可能会有数天的延迟, 这就存在延迟归因的问题。 另外就是转化的数据一般都会比较稀疏,这就衍生出来不一样的建模方式, 例如阿里妈妈的

而对于延迟归因,主要的解决思路又是‘样本回补’策略,通过重要性采样(importance sampling)技术来进行样本的纠偏, 具体可参见老文章:移动端转化延迟相关CPI转化率模型建模方法,同时还有很多其他的方法来对转化样本进行纠偏。

参考文献

  1. 移动端转化延迟相关CPI转化率模型建模方法
  2. 推荐系统,变现系统CTR&CVR预估算法演进-模型
  3. Ma X, Zhao L, Huang G, et al. Entire space multi-task model: An effective approach for estimating post-click conversion rate[C]//The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval. 2018: 1137-1140.
  4. http://semocean.com

在高德吃喝玩乐!LBS信息的AI技术应用

还是先插个招聘信息: 急招推荐,搜索,语音算法,数据挖掘,工程人才,阿里P5~P9,欢迎推荐和自荐,微信扫码关注以下二维码了解详细信息

以下才是正文。。。。

从毕业步入职场到现在10年多的时间,就一直在搞两个技术领域:搜推广信息分发以及LBS。

搜推广不用说,近十年一直都是热门的领域,另一个是LBS的技术,可以说也是深入到我们生活的方方面面。过去既做LBS的信息分发,也做底层的实时路况,ETA以及RP算路,甚至更底层的地图匹配(或者叫抓路,绑路,map matching),目前,更多在做人地关系大数据,以及基于LBS的搜推广。相当于将两个领域结合到了一起。

更详细的LBS相关内容可参见:
GITC演讲-滴滴路况感知AI及应用
[LBS]地图Map-Matching流行算法及应用
[LBS]工业界ETA应用及滴滴WDR技术

《在高德如何吃喝玩乐!LBS信息分发的AI技术应用》就是团队的工作在高德技术开放日进行的介绍,感兴趣的同学可以在抖音,B站等平台观看交流。 具体B站的链接视频,参见‘阅读原文’

对于地图平台,无论是高德地图还是百度地图,腾讯地图,现阶段心智最强的功能还是出行。而在整个出行的用户交互过程当中,用户首先需要进行定位,确定自己所在的位置,然后进行POI的搜索,确定要去的目的地,之后就是怎么去的问题?包括路线规划导航ETA等相关技术。

随着地图平台的定位由出行工具逐渐转成吃喝玩乐相关的LBS本地生活平台,信息分发的范畴也在扩展:从原有的POI搜索,展到了交易的分发以及广告的分发。

同时,这个过程当中需要有非常多的内容的理解,包括文本,语音以及视频内容的建设。具体参见:ID+图像特征联合训练CTR模型

同时,分发的手段也有更多的扩展,由原来的搜索,扩展到推荐以及语音的更多的交互方式。包括搜前,搜中,搜后,语音主动提示等多种交互方式,和用户进行信息的交互。(完整的工业级搜索+推荐 用户交互机制实现参见:关键词推荐工具中的用户引导机制

同时,分发的形态,也由原来的单纯的POI list,扩展到视频,聚合榜单的更加丰富的模式。

对应的工作也包括最底层的数据建设,上层的引擎平台的建设,通用算法策略的建设,以及业务的定制。都是非常复杂的过程。

在这个过程当中,也会用到非常多机器学习相关的算法模型,当然,我们要时刻意识到,机器学习模型只是整个业务逻辑很小的一部分,虽然它起着无可替代的重要作用。

LBS的搜推广和传统的信息分发最大的区别,就是他会有很强的空间,时间的划分属性。

在LBS场景,每一个区域,或者每一个POI,都可以看成他是一个个的局域网,这些局域网之间其实是没有非常强的关系的,例如一个云南的用户,可能从来也不会去一个天津的饭馆吃饭,因为地域天然将这两个要素隔离开。 这和淘宝的信息分发是有本质的区别的,在淘宝上,一个云南的用户和一个天津的用户可能都会买同样一个商家的,同样一个商品,而且几乎代价是没有区别的。

因为地域,或者距离的差别,就会导致LBS的信息分发和传统的信息分发有本质的区别,这样就衍生出非常多的LBS信息分发独特的技术。

例如POI的别名挖掘,如何挖掘同一个地点的不同的别名。 以及反过来如何挖掘不同地点,有相同名称的POI,都是特有的结合LBS空间挖掘的技术。

同时,我们会依赖于用户的搜索,点击导航路线规划以及位置信息,去使用定制的序列模型挖掘用户的行为序列信息,去做更准确的用户个性化定向。

在地图场景,需要主动给用户展示信息的入口/场景非常多,而且不同的入口有不同的产品形态和定位,如果对每一个入口都定制一个推荐模型,那维护的成本是非常高的;同时,不同入口的信息无法共享,所以我们也是用了多任务的模型,对不同入口的推荐算法进行统一的建模。(具体ctr预估参见:推荐系统,变现系统CTR&CVR预估算法演进-模型

而且在地图场景,我们使用了丰富的LBS数据,却对用户的时间,空间,行为进行预测,例如,用户接下来会去的地点,区域和城市,并且取得了显著的效果。

这个领域的工作非常多,也非常有意思,而且LBS本地生活是非常重要,非常有前途的一个领域,也是目前各个大公司重兵投入的兵家必争之地。如果大家感兴趣,请联系我进行高德岗位的内推。

多目标广告混排机制在超级APP中的技术

先插个招聘信息: 急招推荐,搜索,语音算法,数据挖掘,工程人才,阿里P5~P9,欢迎推荐和自荐,扫码关注以下二维码了解详细信息

背景

近年大家会发现一个现象,行业中新的爆发性发展的创业公司在不断变少,最直接的原因应该是移动互联网的红利增长已经放缓,同时各个巨头也在使用不同的方式,将流量收口到自己的超级APP中,例如淘系的电商,社交的微信, 内容则为头条,线下服务则是美团。其他创业公司想通过某个领域切入,进行弯道超车,在技术缺少重大变革的情况下变得更加困难;另一方面,各个超级APP,无论是何种属性,解决用户的何种需求,也都在尝试着商业化,以便让自己的业务生态形成可造血的良性闭环。

当然各家超级APP在商业化的过程中,也都遵循着商业化一直的准则在构建良性生态,尽量避免使用吃药打兴奋剂的模式,伤害到生态中的任何一个环节。 总体上,在健康的商业生态中,都需要考虑C(Customer)端用户,B(Bussiness)端商家,以及P(Platform)端平台三方的利益平衡。其中C端重点要满足用户体验,解决用户痛点需求;B端主要是广告主的ROI,需要给他带来收益;P端在中间进行调整平衡,需要考虑生态的良性发展同时需要考虑收入。

同时目前的一个大趋势是超级APP中提供给用户的内容和服务已经多种多样,已经是多模态的内容提供,同时穿插着内容,服务和广告。 如何对这些内容进行最高效的多目标混合分发,就是需要重点解决的课题。
例如此处单独看自然结果和原生广告的混拍, 如何在保证体验不受影响(或者大的影响)的情况下提升广告收入,就是一个非常值得研究的课题。

本文会以作者在多个平台的广告经验,向大家进行目前的主流方案。原文参见semocean.com及微信公众号:semocean

混排问题分类

以出行超级APP高德为例,在高德中用户搜索后,会给用户展示匹配的POI list,该过程中,广告投放的POI会和自然结果的POI进行混排。此时就会面临自然结果和广告如何进行混排的问题。此时混排一般有两大类模式:定坑和非定坑。

  • 定坑,简单来说定坑就是具体展示广告的位置,以及数量是固定的。该方式的优点是广告的数量,收入可控,而且自然结果和广告结果可以相对独立地进行优化; 缺点是广告质量和自然结果质量不能同一拉起,可能出现自然结果质量较好但出的广告质量很差,或者反过来的情况,导致用户体验或者广告收入受损
  • 非定坑 ,非定坑则相反,逻辑会相对复杂,广告和自然结果需要统一优化,不管是工程架构上,还是算法上,要求都更高。但能够同时考虑广告和自然结果的质量,理论上收入上限会更高。 同时非顶坑也可以有多种方法,各种方法的复杂度也不尽相同。

    图:(1)为定坑3和6,(2)为动态定坑,隔2插1,(3)为加权混排广告A和B

具体方法

定坑

即广告坑位出现的位置,数量,都是事先根据业务需要,或者实验方式确定下来的。 属于计划经济类型。 类似百度凤巢说前3个坑位可以出广告, 或者某些超级APP上说放回结果list结果中第3,5,8位置上可以出广告。 当然这些位置上, 如果广告系统自己判定觉得在某些流量上广告总体放回结果较差,也可以不出,但这个判定也是广告系统自己进行的判定,主要会影响最终的PVR(出广告流量占总体流量占比)

动态定坑

动态坑位方式比定坑模式进了一部,相当于在出广告的时候,加入了一定的个性化因素,可以将问题定义为对于每次流量三个参数的优化[N,S,I],其中N:出广告的条数,S:广告开始的坑位位置,I:广告之间的间隔。 根据每个请求的个性化信息,以及召回后的广告质量,来动态确定参数三元组的具体值。该方式能够在广告质量较高的时候,多出广告,且能够将广告排的更靠前

加权混排

该方式需要对自然结果和广告结果进行综合考虑,拉通排序的标准进行混排。本质上相当于需要将自然结果和广告结果的价值进行统一度量。简单来说的建模方式如下:
$v=\beta \cdot rankscore+ecpm$
其中$v$为同一价值度量,$rankscore$为作为自然结果的质量分,$ecpm$为预期的广告收入。其中$rankscore$由LTR模型进行预估。$\beta$为自然结果rankscore的权重
所以:

  • 自然结果:相当于$ecpm=0$,仅考虑rankscore自然结果的质量分。
  • 广告结果:广告结果rankscore一般偏低,但$ecmp=Q\cdot Bid$,相当于对广告的商业价值进行加权,一般情况下按照$Q=pctr$进行计算
    使用该方式就可以将自然结果和广告的价值度量进行拉起,之后进行统一排序。

    具体操作

    加权混排,在具体操作的时候,会面临以下几个问题:

    1. rankscore和ecpm一般都不是相同分布的,具体的值不能直接线性加权计算
    2. $\beta$ 值如何确定
    3. 如何计费

调整具体分布
因为rankscore和ecpm是两套相对独立系统的打分,所以理论上二者分布肯定不一样


【图:rankscore&ecpm为不同分布】

所以在排序前,需要将二者的分布拉齐,否则仅简单调整$\beta$值并不能解决问题。所以我们需要找到一个函数$f$,使得$ecpm=f(randscore)$,具体对两个分布进行插值可以求解。

$\beta$求解
这个就比较考验超参数调整的经验了,当然目前超参数的调整有较多的方法和开箱即用的框架。 一般现在较为常用的方法是贝叶斯优化(Bayesian Optimization)。 一般具体应用场景中,广告的实效性较强(受广告供给,预算等的限定,甚至很多APP分发的场景,每天的广告变化可能超过20%),所以该超参数调整很多时候需要做到准实时化。

计费方式
业界目前最常使用的方式,还是GSP方式的二价计费。其原理是扣费并不是直接按照胜出的广告的报价进行扣费,而是按照下一位广告的报价进行扣费,该方式的好处主要是简单,以及能够让竞价者能够按照自己内心的真实性进行报价(相对来说VCG会更加复杂)
经典的$cpc=\frac{ecpm_{i+1}}{pctr_i}$ 但在自然结果和广告混排的场景中,下一位可能是自然结果, 那如何进行计费?

思路是看下一个广告, 例如下一个当前广告假设为$A$,下一个广告为$B$,则:
$v_A=\beta rankscore_A+ecpm_A$ $v_B=\beta rankscore_B+ecmp_B$,则我们设计 :
$cpc=\frac{v_B-\beta \cdot rankscore_A}{pctr_A}$
其物理含义为:大思路仍然是GSP,但在进行扣费的时候, 广告主按照下一位广告的出价进行扣费,但会扣除掉自身因为自然结果体验值带来的位置前移。 相当于当前广告为了保持当前的位置,仅需要付出将结果从下一位值,提升到当前位置的钱。

端到端多目标模型混排

理论上来说端到端的结果是最好的方式,但该方式会导致自然结果排序和广告结果完全耦合黑盒化,提升了系统不可控的风险。 所以很多商业系统中都还不是这种方式。
而且自然结果体验和商业化变现目标的平衡,最后还是一个商业上的决策,并不是一个一尘不变的优化问题,例如如果一个上市公司有财报的压力,则可能会加大商业化的粒度,提升广告占比,或者在某段时间反过来更加注重用户的体验。

总结

总结下几种模式的优缺点:

模式 效果天花板 自然&广告结果耦合 系统风险
定坑 解偶
动态定坑 解偶
加权混排 耦合
端到端混拍 较耦合