互联网时代最主要的三种获取信息方式业界
搜索、推荐和广告是互联网时代最主要的三种获取信息方式。如果你了解三个系统的具体实现,甚至自己还分别亲手做过,那么你应该有一种模模糊糊的印象:似乎有些底层的技术和数据是可以共享的啊,但是为什么我们公司是分属三个不同的团队在搞呢?有时候似乎还要打个架什么的。
如果你有这个模模糊糊的印象,那么我告诉你:你不是一个人!Hector Molina在Recsys’14上就提出了将搜索、推荐、广告三合一的观点[1]。同时,在国内的微博上,也因此掀起了一些讨论[2]。微博上的讨论先按下不表,我们先来看看为什么三合一是一种可能的趋势?如果要合,又有哪些困难呢?
不同与相似
搜索,推荐和广告本质上都在解决信息过载的问题,各自解决的手段、目标不相同,各自诞生在产品生命周期不同阶段,以至于系统实现不尽相同。
从几个维度对比一下,看看他们不同和相同在哪?
搜索要解决的是精确快速找到想要的结果。最重要的目标是降低延迟和提高相关性。搜索更关注内容消费者,用双手让他们爽。搜索引擎不会像社交网站或资讯网站那样变成time killer,人们依赖搜索而不沉迷搜索就与搜索引擎的目标有关。在搜索解决用户的信息获取需求时,很少给予用户一些惊喜,这也不是搜索的目的,也不会随随便便地利用集体智慧去扩充一些不那么直接相关的结果。
推荐系统则不同,首先很少有靠推荐系统撑起一款产品,大都是起一个“锦上添花”的作用,好的推荐系统都会变成一个time killer,让用户走进去就不想出来那是坠吼的。推荐系统通常不必须要明确表达需求的“query”,因此在给出的结果中就有很多发挥的余地,可以给用户制造一些惊喜,这一点和搜索很不一样。
根据策略不同,推荐系统有不同的实现方式。比如基于内容的推荐,很接近一个搜索引擎,实际上很多推荐引擎底层的技术实现,尤其是数据存储上大量借鉴了搜索相关技术,比如按照兴趣标签对推荐候选池做倒排索引。另外,搜索是针对个人用户的,一个用户发起一个请求,而推荐系统既可能真对单个用户进行推荐,也可能针对用户群进行推荐。
广告则是一个很特殊的存在,它在产品形式上很像推荐,总是“不请自来”,而在技术实现上又兼有推荐和搜索两者特点,而且它又是一个商业驱动的系统,所以更多关注商业利益最大化。
有一个很有意思的现象,搜索和推荐的信息对象理论上可以共用的,也就是说可以允许用户设置条件检索一堆候选对象,也可以把这些候选对象主动推荐给可能感兴趣的用户面前。但是广告的信息对象却是另一个隔离的存在,为什么不能让用户直接设置条件检索我们的广告库存呢,就像是一个通常的搜索引擎一样?也许是可能的。
抽象看三者
这三个系统有这些特点,对于大多数成熟公司,他们已经被把持在三个不同的团队部门手中,各自团队每天在同时填着大同小异的技术坑。
我们抽象一下三者的需求共性:本质上都是在匹配,匹配用户的兴趣和需求(看成context),但匹配的目标,条件和策略不尽相同。
进一步抽象下去,又可以分为三步:过滤候选(filter)+排序候选(ranking)+个性化输出(personalization)。
过滤候选这一步在搜索里面天经地义,query解析得到查询意图,或者更多结构化的搜索条件,用结构化的查询条件去倒排索引中获取搜索候选。
与之相似的是广告系统,搜索广告也是拿着query去获取候选广告,而联盟广告则是拿着用户标签去需求方获取广告候选。
filter在基于内容的推荐策略中也有类似的过程,而其它推荐策略,比如协同过滤或者隐因子模型,一般是提前计算好的,并没有明显的类似搜索一样的filter,不过我们仍然可以抽象地把各种不同召回策略视为filter这一步,只不过filter并不是同步进行的,而是异步进行的。
ranking这一步主要区别在于排序的目标和约束。搜索的排序目标是高相关性,无论BM25为代表的传统排序模型还是以Learn to rank为代表的机器学习排序,皆如此,用户每次在搜索上花费的时间是不是更少(而不是更多)来衡量搜索的效果。
推荐系统的ranking比较复杂,相关性只是很小的部分,根据推荐系统的产品形式不同,ranking时排序不同。通常推荐系统用CTR预估来融合各种召回策略得到的候选集,如果做得深入,还需要考虑Exploit-Explore问题。附加的约束则千变万化:电商中,当天买过的当天就不能再推了,新闻推荐里,重复的新闻不能再推了,某些场景需要推荐搭配,某些场景需要推荐相似,topN 推荐还需要考虑多样性,序列推荐要考虑前序和后续,etc。
广告系统的排序更多是从经济学角度去看,通常CPC广告的排序方式是结合预估CTR、出价、广告质量三者一起考虑。同时还要考虑很多别的因素,尤其是商业因素,平台方的要求,广告主的要求等等,是一个纯动态博弈,正如微软亚洲研究院的刘铁岩所介绍那样[4]。
personalization最被推荐系统看重,而且在某些场合,个性化一度成为推荐系统的代名词,然而个性化只是推荐系统的衡量指标之一而已,个性化的前提也一定是信息够丰富够垂直才行;搜索的personalization相对来说就粗浅一些,常见的是利用地域等人口统计学来做personalization,而且对于歧义较少的query,搜索如果太个性化既没意义又有风险。
三者的协同
虽然事实上三个系统目前是军阀割据,但其业务和技术上已经有很多重叠,也能够产生很多协同作用。
有一部分搜索需求是无法用搜索相关性满足的,比如“一个人的夜晚听什么歌”这样的query,需要推荐系统去满足,交互形式可能是眼下大热的bot,也可能是传统的流推荐等等。如果能够识别出这样的搜索请求,其实更应该交给推荐系统来响应。
推荐系统总体上滞后于用户的即时需求,所以强大如Amazon这样的推荐系统,也是有搜索引擎来与之配合的。一方面,搜索因为能够满足用户的主动寻找需求,所以能够化解一些推荐不力不及时的尴尬;另一方面,搜索可以积累用户兴趣数据;当二者结合起来考虑时,可以避免“搜什么推什么”的窘境,整个系统能够综合考虑哪些是即时快速需求,哪些是长期兴趣。
广告系统,在技术上和搜索跟推荐并无本质差异,差异在意图不同,功能不同。对用户的信息需求满足,搜索和推荐离真正得到满足之间总是有一定的鸿沟,要么是信息不足,要么是信息过载,这些鸿沟可以利用经济手段进行调配,也就是广告系统。
业界观点
以上分析只是基于纯粹技术和业务角度的简单分析,结束军阀割据,一统天下似乎是人民的殷殷期盼,然而,这个“人民”似乎只有你我这种站在“上帝视角”的人们。前面提到,之前在微博上,一众从业者集体讨论过这个问题[2][3],讨论总结为:
几乎所有人都觉得这个提法是意料之中,也承认三者有统一的概念基础,对此亦有共识;仅有少数公司(豆瓣)有成功的统一案例,并没有人提出业界还有类似案例;少数前辈(@清风运文,@张栋_机器学习) 三个系统都经历过,认为实际上困难重重,困难不在框架上,在细节上,各自优化需求差别很大;还有一些人调侃说来自人的困难大于技术上的困难,这个自己体会不一样,没法写论文。
总之,从这篇微博看到的讨论来说,几乎都持悲观态度。
我的看法
基于以上的讨论观点及事实,虽然业界很悲观,但并不是毫无希望,总结几点:
1. 三者有统一的可能性,而且不低;
2. 在已经被割据的公司里,再重新一统天下非常困难,投入产出比会很低;
如果要统一,从0就开始,所以更适合创业公司或中小公司,可能这也是为什么豆瓣有成功案例的原因;
3. 由于人的因素很重,所以从一开始就应该把三者划归一个团队来统一规划,人员配置上:技术上统一,业务上分开。
4. 必须用数据证明统一之后比统一之前好,而不是工程师自己“感觉不错”,这个“好”可以体现在实际上的业务指标提升,也可以体现在开发效率提升。
【来源:人人都是产品经理 作者:陈开江】
1. 遵循行业规范,任何转载的稿件都会明确标注作者和来源;2. 的原创文章,请转载时务必注明文章作者和"来源: ",不尊重原创的行为 或将追究责任;3.作者投稿可能会经 编辑修改或补充。