流动的推荐系统——兴趣Feed技术架构与实现

作者:陈开江@刑无刀,金融科技公司天农科技CTO,曾任新浪微博资深推荐算法工程师,考拉FM算法主管,先后负责微博反垃圾、基础数据挖掘、智能客服平台、个性化推荐等产品的后端算法研发,为考拉FM从零构建了个性化音频推荐系统。
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2017年《程序员》

流动的推荐系统

我们经常谈论的推荐系统(Recommender System),从形式上看是比较“静态”的推荐,通常位于网页主要信息的周边,比如电商网站的“看了又看”、“买了又买”。这种推荐系统在大多数场景下无法独立撑起一款产品。

依据维基百科Recommender System词条的定义:“推荐系统是信息过滤系统的子类,专门用于预测用户对一个项目偏好或者评分进行预测”,则兴趣Feed也是一种推荐系统:它预测用户对社交网络中相邻节点动态内容喜好程度,并根据喜好程度决定这些动态内容的展示顺序。

Feed是一种信息流,就是我们看到的“动态”、“新鲜事”。当用户与一些内容源建立了连接(如关注、赞、收藏等)之后,这些内容源产生的新动作,就会源源不断地通过连接流向用户,不同内容源产生的动态被聚合后呈现在用户面前,就是Feed。

传播社交网络动态的Feed,通常默认按照动态产生的时间顺序出现在你面前,称为时间线(timeline)。国外的Twitter、Instagram,一开始都是时间线形式的Feed;国内的微博、QQ空间、微信朋友圈至今仍然是时间线。

但是一些老牌时间线Feed都有计划要切换成依据算法排序的个性化兴趣Feed,微博在2012年尝试过智能排序,Twitter在去年上线了一个叫做“当你不在时发生了什么”的功能,Facebook甚至早就放弃对其NewsFeed的时间线排序。

出现这种情况的原因主要有两个。一方面,智能手机的普及和移动网络的提速,使得UGC越来越容易,用户动态的产生和浏览越来越碎片化,数量和频度陡增,以前用户消费无压力的时间线Feed,开始出现信息过载或者错过一些更感兴趣的内容的情况。Instagram说他们的用户平均错过了70%的内容,Facebook也曾说每个用户每天只能看完1500条新鲜事中的300条而已。另一方面,时间线Feed不利于商业化的开展,商业账号肆无忌惮地以动态的方式发布广告,不仅影响用户体验,还完全绕过平台方进行商业活动,形成一种“公共资源悲剧”。

所以,Feed的发展趋势必然是从时间线到利用算法重排序,按照用户兴趣的相关程度展示Feed,一方面要帮用户解决信息过载问题,另一方面要平衡好平台上的商业价值和用户体验。

成功的兴趣Feed——NewsFeed

一个成功的兴趣Feed,就是Facebook的NewsFeed。那是2006年9月,Facebook上线了朋友新鲜事,与之同时问世的还有MiniFeed(个人动态)。上线至今十周年,NewsFeed已经成为日收入几千万美元的现金牛。

Facebook刚上线这个功能时,曾引发广泛的争议,焦点就是“隐私”问题——我的动态怎么能让别人看见呢?用户不停质疑和抗议,又忍不住继续使用,Facebook就在争议声中增加了最初的隐私控制功能,比如隐藏自己的动态,而NewsFeed就这样坚持了下来。

2009年,Facebook在收购FriendFeed之后,将其赞(like)功能整合进了NewsFeed中,并开始按照热门程度对Feed重排序,这又引起了用户们的反抗,因为大家已经习惯按照时间顺序阅读。

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

在EdgeRank前时代,按照Facebook首席产品官Chris Cox的说法:“最初,NewsFeed排序就是在拍脑袋,给照片加点权重,给系统消息降点权重。”我们的算法工程师们读到这些,想必要会心一笑:今天高大上的Facebook,又是人工智能又是深度学习,竟然也是从这个时代走过来的。

之后,Serkan Piantino(现任Facebook人工智能研究院工程总监)在2010年左右领导开发了第一版EdgeRank算法。

EdgeRank算法

了解大名鼎鼎的EdgeRank是怎么回事,先看朋友的一条新鲜事(动态)诞生后怎么流动到你的面前:

  • 首先你的一个朋友产生了一条新鲜事,比如他发布一条想法、赞了一个主页、给一张照片加了标签。
  • 然后经过你这个朋友的介绍,到了你的家门口(你的首页),你一开门(登录或者刷新)就可能看见它。
  • 总体来说,新的还是比旧的更能得到你的接见。
  • 新鲜事不多时,开门一个一个寒暄可能还行,它们也等得起,内容太多时,就得考虑个先来后到了。

这几个步骤,大致刻画了EdgeRank的思想,简单直接。基于这个假设,EdgeRank排序算法主要考虑了三个因素:

  • 亲密度。它对应了第二个步骤背后的思想,那么多人介绍过来,我们当然要优先照顾更“喜欢”的人了,亲密度的量化要考虑平日里你和这个朋友“走动”是否频繁、连接是否紧密。
  • 边权重。这也是EdgeRank名字含义所在:不同的动态权重不同,点赞动态和发布照片显然不一样。
  • 新鲜度。既然是NewsFeed,那么新一些(New)的动态就更受青睐。

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

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Transformer是一种用于自然语言处理任务的重要技架构,它在机器翻译、文本生成和文本分类等领域取得了很大的成功。Transformer的技术架构主要包括以下几个关键组件: 1. 注意力机制(Attention Mechanism):注意力机制是Transformer的核心组件之一。它通过计算输入序列中每个位置与其他位置之间的相关性得分,从而为每个位置分配不同的权重。这样,模型可以更加关注与当前位置相关的信息,从而提高模型的表达能力。 2. 编码器-解码器结构(Encoder-Decoder Architecture):Transformer采用了编码器-解码器结构,其中编码器负责将输入序列编码成一系列高维特征表示,而解码器则根据编码器的输出和上下文信息生成目标序列。这种结构使得Transformer可以同时处理输入和输出序列的不同长度和顺序。 3. 自注意力机制(Self-Attention Mechanism):自注意力机制是Transformer中的一种注意力机制,它允许模型在编码器和解码器中同时考虑输入序列中的所有位置。通过自注意力机制,模型可以根据输入序列中的每个位置与其他位置之间的相关性来计算每个位置的表示。 4. 多头注意力机制(Multi-Head Attention):为了进一步提高模型的表达能力,Transformer引入了多头注意力机制。多头注意力机制通过将注意力机制应用于不同的投影空间,从而允许模型在不同的表示子空间中学习不同的相关性。 5. 前馈神经网络(Feed-Forward Neural Network):Transformer中的编码器和解码器都包含了前馈神经网络层。前馈神经网络层由两个全连接层组成,通过非线性激活函数(如ReLU)将输入映射到更高维的表示空间,并通过另一个全连接层将其映射回原始维度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值