转载

关于 Facebook NewsFeed,看这一篇就够了!

NewsFeed 怎么来的

2004年,Facebook 问世,两年后的9月份,NewsFeed 问世,同时问世的还有MiniFeed(个人动态)。今年是 NewsFeed 上线十周年了,这10年里,Facebook 是怎么一步一步把 NewsFeed 打造成了日收入几千万美金的现金牛的?不管你对这充满铜臭的问题感不感兴趣,反正我很感兴趣。

今天我们都已经习惯了把照片、文字等内容主动分享给好友,但是当时 Facebook 上线了这个功能时,引起了广泛的争议,焦点就是“隐私”问题,用户认为我发的动态怎么能让别人看见呢[1]?用户一直不停质疑和抗议,又忍不住继续使用,Facebook 就这样在争议声中增加了最初的隐私控制,比如隐藏自己的动态,而 NewsFeed 就这样坚持了下来。看来,小扎真是一个撩妹高手,看穿了用户们“嘴上说不要,身体却诚实”的内在。

随着用户们渐渐地爱上了浏览好友的分(xuan)享(yao)了,2009年,Facebook 加上了赞(like)功能(FriendFeed 在2007年发明了赞按钮,FriendFeed 后来于2009年被 Facebook 收购,并将赞这个功能整合进来),开始按照热门程度对 Feed 重排序,不出意外,这又引起了用户们的反抗,因为大家已经习惯按照时间顺序阅读。

伴随这么多争议,为什么 Facebook 一直坚持做兴趣feed?从数据上看,平均每个用户每天待看的新鲜事有1500条之多,但平均每个用户每天只能阅读300条;从商业角度,将 Feed 排序交给上帝的做法,非常不利于商业化且有损用户体验,公共主页可以使用很多伎俩吸引用户关注,然后肆无忌惮发广告。

10年来,NewsFeed 有数不清的改进,甚至每天线上会同时部署很多算法版本进行AB测试。但 EdgeRank 是这条优化迭代之路上的一个标志性建筑。我们可以将 NewsFeed 排序策略按照 EdgeRank 分为 PreEdgeRank 时代、InEdgeRank 时代、PostEdgeRank 时代。

EdgeRank 算法

EdgeRank,顾名思义,就是对边(Edge)进行排序(Rank)[2]。

每一个朋友的每一个操作(Action)都可能以新鲜事(News)的方式呈现在用户面前,比如朋友发布了一条新鲜事,朋友赞了朋友的朋友一条新鲜事,朋友评论了朋友的朋友一条新鲜事,朋友给自己的照片加了一个标签,等等。稍微用脚后跟想一想就知道,按照这样罗列的话,每个用户得看多少新鲜事?于是 FB 就想在一条动态呈现给一个用户之前,先预估一下这个用户对这条新鲜事感兴趣程度。在 FB 的定义下,一个 Action 就是一个 Edge,所以这套量化兴趣的算法就叫做 EdgeRank。

别看今天 Facebook 各种高大上,又是深度学习又是人工智能,要知道,在 EdgeRank 提出之前,FB 也是有过刀耕火种时代的,FB 的首席产品官 Chris Cox 谈及早期 NewsFeed 是这样说的[3]:

“In the beginning, News Feed ranking was turning knobs. Turn up photos a little bit, turn down platform stories a little bit.”(最初,NewsFeed 排序就是在主观拍脑袋,给照片加点权重,给平台动态消息降点权重)

“a photo might be worth 5 points, while joining a group was worth 1 point” (把照片权重定为5,把加群权重定为1)

关于 Facebook NewsFeed,看这一篇就够了!

国内算法工程师们听到这些,想必都要会心地笑了:原来 FB 也是从这个时代走过来的。但 Facebook 不同的是,这只是暂时的情形,他们已经走到更高级的阶段了。

Serkan Piantino 在2010年左右领导并开发了第一版 EdgeRank 算法[4]。下面说说大名鼎鼎的 EdgeRank 是怎么回事。

关于 Facebook NewsFeed,看这一篇就够了!

EdgeRank 主要有三个因素在起作用:

  • 亲密度(Affinity Score)

  • 边的权重(Edge Weight)

  • 新鲜程度(Time Decay)

想象一条内容诞生后,途经什么路径流动到你的面前?

  1. 首先经你的一个朋友(或者你的关注源)的之手产生了一条新鲜事(他发布、赞、加标签这些产生了新鲜事);

  2. 然后经过你这个朋友(或者你的关注源)的介绍,到了你家门口,你一开门(登录)就可能看见它;

  3. 内容不多时,开门一个一个寒暄可能还行,它们也等得起,也无所谓先来后到,内容太多时,就得考虑个先来后到了。

这三个步骤,就大致刻画了 EdgeRank 的思想了,其实还是很简单直接的。

亲密度对应了第二个步骤背后的思想,那么多人介绍过来,我们当然要优先照顾更“喜欢”的人了,亲密度的量化要考虑平常里你和这个朋友“走动”是否频繁,连接是否紧密。主要考虑下面几点:

  1. 你们连接的强度,点赞之交,还是评论之交,或是私信之交,连接方式不同,强度就不同;

  2. 你们连接的频繁程度,一日百赞,还是百日一赞,差别也很大;

  3. 你们有多久没有建立连接了,一年没有了,关系自然就更淡了;

  4. 亲密度是单向的,也就是说你对朋友的亲密度,和朋友对你的亲密度可能不一样哦。

你看,看似神秘的 EdgeRank 算法,其实跟大家不太待见的鸡汤居然意思是一样的,是不是觉得它竟然如此平易近人?

边的权重也很直接,其实它反映了产生一条新鲜事的成本,成本越高的,权重越大。点赞、评论、发一条文字、发一张照片、发一个链接,背后用户付出的成本不一样,反应在边的权重上也就不一样。显然,你点个赞的成本,和你发布一条新鲜事的成本差别很多。

最后,新鲜程度,也是一个符合直觉的自然假设:NewsFeed 总是青睐 New 一些的 Feed,新的新鲜事总体上更可能得到用户的临幸。FB 用了一个类似指数衰减的函数来量化动态的新旧程度。

三个分数,最终用相乘的方式共同作用于每一条新鲜事的分数,用于排序和筛选。

这个排序方法的确是很简单,基本上只考虑了社交方面的因素,而没有考虑太多内容本身对用户吸引力。

从公开的资料看 EdgeRank,并不是什么高深的算法,它只是量化了三个主要因素,然后主观地相乘,而没有任何目标优化思想在背后,根据 Facebook 披露的消息看,早期的 EdgeRank 的确没有引入机器学习,所以根本称不上是智能的算法。

为什么 EdgeRank 这么有名?因为它是在F8开发者大会上公开介绍过的,经过一知半解的媒体渲染,变成了一个神秘高深的存在。

后 EdgeRank 时代

2011年之后,Facebook 内部就不再提 EdgeRank 算法了,因为用户数和广告主的飞增,导致 NewsFeed 的排序算法必须要更上一层楼。如今月活跃超过10亿用户,约2000万的公共主页,移动设备贡献了大多数流量,复杂的上下文因素,必须引入机器学习才能 Hold 住整个场面。

在原来 EdgeRank 的基础上,更加细致地定义了不同层级的亲密度。用深度神经网络理解图片内容和文字内容[5],从而可以知道相片中的物体是不是用户感兴趣的,可以知道新鲜事的讨论话题。随着产品迭代,也加入了更多产品特征,诸如阅读时间长短、视频内容、链接内容等,取关、隐藏一个源。前前后后一共考虑了10万+的变量(模型的特征空间应该会更高),如果还按照原来的方式去调节权重,显然既不科学又很低效。

从 Facebook 的机器学习应用博客页面可以看到,2010年之后就开始逐渐有机器学习方面的文章出现了[5]。

相关资料显示[6],2011年之后的 NewsFeed 排序算法,全面转向了机器学习,用优化理论来决定每个因素的权重,将人从繁杂的策略量化中解放出来。

在被机器学习接管后的 NewsFeed,很多地方都更加细致。

用机器学习预估新鲜事的质量[7]。通过构造了一份问卷调查,访问了若干用户来收集数据,用收集的数据构建了一个机器学习模型,用于 NewsFeed 排序时预测一条动态的质量,将预测的质量分数作为最终排序的一个特征。 用树模型构造离散特征,结合最常见的LR模型预估广告点击率[8]。

除了全面转向机器学习之外,NewsFeed 团队也在重新思考人和算法的关系。他们要关心的是到底“如何把用户真正最关心的找出来”,而不仅仅是“提高点击率”。Facebook 一直是数据驱动的,也是他们能够在争议中把 NewsFeed 坚持下来的信念来源,而是不是唯数据马首是瞻,团队内部有很多思考,也有很多变化。

仅举几例:

  • 团队发现有85%的隐藏新鲜事操作来自5%的人,经过与这些用户沟通才发现,原来这5%的人把“隐藏”当作邮件里的“标记已读”了,对喜不喜欢的新鲜事只要看过就会点击隐藏。

  • 对于悲伤的事情,用户可能关心但不会点赞的。

  • 对于有些点赞,用户可能并不是真的感兴趣,只是“点赞狂魔”发狂而已。

  • 用户阅读一篇长帖子,读到一半不读了,也并不能说明他对这篇帖子不感兴趣。

这些 case,都让他们开始关注到机器学习和数据的局限[9]。

于是,在算法团队之外,Facebook 搭建了一个遍布全球的人肉评测小组。人肉评测小组不是简单地对算法筛选结果进行喜欢/不喜欢的标注,而是会非常深入地阐述为什么喜欢/不喜欢算法筛选结果,而且会与工程师详细交流评测结果,因为这种人肉评测方式可以有效地拆穿数据说谎,让产品远离一味追求提高数据指标的怪圈。

除此之外,产品上还加强了过滤器功能(Filter):你可以选择你的动态给谁看,你可以选择不看谁的动态(Hide),你也可以选择优先看到谁的动态(See first),当然你可以取消关注一些人或者公共主页,将这些控制权交给用户,一方面安抚了用户被算法接管的不安,另一方面也是一项重要的数据来源。事实上,如今的过滤器已经复杂到大多数用户都不会使用这些控制权。

“如何衡量用户真的感兴趣”这个问题也许远远没有最终答案,为什么?因为人的非理性占据了绝大多数时候,而“不一致性”又是非理性的最重要表现,根据心情不同,用户有不同的感兴趣的标准,而且这些标准也许还是相互矛盾的。

NewsFeed 的配套设施

NewsFeed 存在的前提是要依赖用户建立大量的社交联系,这样才会出现信息过载,因此 NewsFeed 的一个重要的配套设施就是“你可能感兴趣的人”(People you may like)推荐系统。

这是一个我们在产品形式上比较熟悉的推荐系统,它是一套大规模矩阵分解算法[10],利用已有的协同矩阵为你推荐你可能想建立联系的新Item,包括用户、app、公共主页等。

NewsFeed 还有另一个配套设施,也是它为什么每天能吸金几千万刀的原因:广告系统。Facebook 的广告形态多样[11]:

  • Suggested Page (你可能喜欢的公众页)

  • Page Post (公众号帖子推广)

  • Suggested App (你可能喜欢的应用)

  • Video Ads (视频广告)

现在,每一次 NewsFeed 调整算法都会引来广告主们的抗议,他们都是在 FB 上拥有公共主页的商业机构。

在以前,FB 鼓励这些商业机构花钱投广告增加粉丝,彼时的 NewsFeed 算法允许随意发广告(以原生的新鲜事形式)。而现在,FB 严格限制商业广告和普通用户的触达。商业机构感觉自己被耍了,花钱买粉之后却不能发原生广告,无独有偶,根据微博 CEO(@来去之间)在微博上的披露,现在微博企业号也是被限制博文达到粉丝 feed 次数的[12]。

据国外某专门做 NewsFeed 推广的公司追踪,1000个公共主页的50000条内容以原生方式触达用户的比例,从2012年16%降低到了2014年的6.51%,降了一倍还多,这当然也可能因为用户平均关注的公共主页增多了[13]。

关于 Facebook NewsFeed,看这一篇就够了!

世界上最遥远的距离,就是:手握大把粉丝,却不能随心所欲地曝光自己的产品。

当然,所有的公共主页们,不要灰心,并不是没有办法,NewsFeed 的广告系统大门永远向你们敞开。

对 NewsFeed 的展望

具体 NewsFeed 会怎么发展,无法预测,但是可以肯定的有三点:

  1. NewsFeed 的算法会一直进化下去。

  2. NewsFeed 团队把人和算法的关系处理得更好,从数据驱动(Data-Driven)到数据启示(Data-Informed)。

  3. 越来越多的 Feed 型产品会效仿 NewsFeed,加入到兴趣feed的潮流中去。

本篇完。敬请期待下一篇《 Pinterest 的 Smart Feed 架构与算法》。

[1] https://en.wikipedia.org/wiki/Criticism_of_Facebook#News_Feed_and_Mini-Feed

[2] http://edgerank.net/

[3] http://marketingland.com/edgerank-is-dead-facebooks-news-feed-algorithm-now-has-close-to-100k-weight-factors-55908

[4] https://research.facebook.com/serkan-piantino

[5] https://research.facebook.com/publications/machinelearning

[6] http://www.dailydot.com/technology/facebook-news-feed-algorithm-edgerank/

[7] https://www.facebook.com/business/news/News-Feed-FYI-Showing-More-High-Quality-Content

[8] https://pdfs.semanticscholar.org/daf9/ed5dc6c6bad5367d7fd8561527da30e9b8dd.pdf

[9] http://www.slate.com/articles/technology/cover_story/2016/01/how_facebook_s_news_feed_algorithm_works.html

[10] https://code.facebook.com/posts/861999383875667/recommending-items-to-more-than-a-billion-people/

[11] http://zhihu.com/question/20553088/answer/78721851

[12] http://weibo.com/1111681197/D0qNcDlcc

[13] http://techcrunch.com/2014/04/03/the-filtered-feed-problem/

本文为系列文章之一,包括:

  1. 为什么应该关注兴趣Feed?
    http://mp.weixin.qq.com/s?__biz=MzA4OTk5OTQzMg==&mid=301747344&idx=1&sn=e34dbb820115995eac7502c98e894e05#rd

  2. 说一说 Facebook 的 NewsFeed(本篇)

  3. Pinterest 的 Smart Feed 架构与算法

  4. 通用兴趣Feed的技术要点

作者简介:陈开江@刑无刀

  1. 2013年之前在新浪微博搜索部和商业产品部任资深算法工程师,先后负责过微博反垃圾、基础数据挖掘、智能客服平台、个性化推荐等产品的后端算法。

  2. 2012-2013领导翻译了《机器学习:实用案例解析》一书。

  3. 2013年末加入传统媒体公司车语传媒,任算法主管,负责从零打造公司转型产品考拉FM的个性化推荐系统,如今个性化推荐已成为考拉FM与其他FM之间最大差异化特性。

  4. 2015年初,离职创业,公司拿到IDG和晨兴资本的天使投资,产品几经调整,如今专注在用视频分享购物经验,App名称:边逛边聊。

微信公众号【 ResysChina 】,中国最专业的个性化推荐技术社区。

点击阅读原文,可以查看上一篇《 为什么应该关注兴趣Feed?

原文  http://mp.weixin.qq.com/s?__biz=MzA4OTk5OTQzMg==&mid=301747355&idx=1&sn=afc8439c0f7e1404620b2e2c9b0c7fef
正文到此结束
Loading...