今日头条的核心技术细节

参考网页:
https://www.zhihu.com/question/21220336

今日头条推荐算法的原理:通过算法,一边提取内容的特征,一边提取用户兴趣的特征,然后让内容与用户的兴趣匹配。

1. 推荐冷启动:Cold Start

推荐系统里面的冷启动一直是一个很大的问题。当新用户加入时,一般需要给用户一个初始兴趣值。比较常见的做法,比如quora,zhihu,pinterest是让人手选感兴趣的话题;另外一个做法是给一些初始歌曲或者电影让人选喜欢或者不喜欢,然后生成一个初始值。无论哪一个做法,用户的行为数据都不足以产生高质量的推荐。以pinterest为例,因为主要用户是女性,所以初始值大部分推荐的内容都是女装时尚的。

我大约认真pin了两个月,才把推荐内容洗到直男的科技建筑。而头条将微博账户和兴趣绑定在一起,所以当用微博帐号登录的时候,一开始的初始兴趣分布就和人的微博记录匹配上了。

初始兴趣分布与QQ空间、微信朋友圈、玩的腾讯产品内容绑定:

今日头条则选择了另一种解决方案——通过对用户微博账号的分析建立一个“兴趣图谱”,即根据用户在微博上发布的内容及其所属类别、用户自标签、社交关系、社交行为、参与的群组、机型、使用时间等来数据源来推断出用户的兴趣点有哪些。社交关系、社交行为即用户和用户之间的交流状况,可以根据二者间的共同好友数、相互评论熟、@数等来做度量。

泛阅读产品“今日头条”是如何基于微博兴趣图谱做个性化推荐的

  • 举个例子,拿我的微博ID接入今日头条后,系统后台便会对我的兴趣作出分析,建立初始的DNA数据,并根据这些兴趣的权重来进行推荐。当然,因为这只是第一步,所以我们称之为冷启动。
  • 在冷启动后,今日头条会根据初始的兴趣模型从三个维度呈现内容:第一个是“推荐”,即会从抓取到的每条信息(包括图片信息)中提取几十个到几百个高维特征,并进行降维、相似计算、聚类、分类等处理,然后根据用户的兴趣模型进行推荐的内容,团队创始人张一鸣告诉我,他们每天会采用Visual-based抓取技术处理超过100万个网页, 以保证内容来源足够准确;第二个是“热门”,即互联网和社交网站上出现最多的内容;第三个是好友动态中,可查看好友的评论、转发、收藏动作。
  • 当然,与现在大部分新闻类阅读产品相似,你也可以根据自己的喜欢对文章进行“顶”、“踩”、转发、收藏等操作,这些用户行为数据会实时性地被传送到后台,在用户每次操作后的30秒内,系统就会对用户模型进行更新。所以,在冷启动的基础上,随着用户行为数据的积累,系统为每个用户建立的兴趣模型就越精确,你会感觉到这款产品越来越懂你,这也是所有个性化推荐系统的基本原理。
  • 张一鸣认为,除了推送文章内容本身,精彩的评论也是不可或缺的一部分,所以在产品中,用户不仅可以自己对文章做评论,还可以看到互联网上对于相同内容的评论,它们将依照用户的社交关系、评论人的影响力等条件进行排序。
  • 目前个性化推荐主要面临的挑战来自于对海量数据的筛选、处理、冷启动、在产品上如何更好地收集用户数据、对用户数据的挖掘和利用……

2. 阅读内容的原始积累

今日头条本身并没有产生新闻的媒体部门,所以将整个互联网的新闻都纳入了自己的信息源。虽然这一块惹来很多版权纠纷,但是个人觉得并不是所有的网站都排斥被今日头条抓取了内容,因为给很多网站带去了流量。值得商榷的是网页重构,虽说提高了用户体验,但是侵犯了那些媒体公司的利益。

3. 平衡热文章与新文章

单纯的热门(文章),会让一些新文章没有机会。单纯的随机(推荐),(文章)质量当然不好,所以考虑一些简单方法,比如算一下威尔逊置信区间,来平衡热与新的问题。”

威尔逊置信区间

  • 第一步,计算每个项目的"好评率"(即赞成票的比例)。
  • 第二步,计算每个"好评率"的置信区间(以95%的概率)。
  • 第三步,根据置信区间的下限值,进行排名。这个值越大,排名就越高。

这样做的原理是,置信区间的宽窄与样本的数量有关。比如,A有8张赞成票,2张反对票;B有80张赞成票,20张反对票。这两个项目的赞成票比例都是80%,但是B的置信区间(假定[75%, 85%])会比A的置信区间(假定[70%, 90%])窄得多,因此B的置信区间的下限值(75%)会比A(70%)大,所以B应该排在A前面。

置信区间的实质,就是进行可信度的修正,弥补样本量过小的影响。如果样本多,就说明比较可信,不需要很大的修正,所以置信区间会比较窄,下限值会比较大;如果样本少,就说明不一定可信,必须进行较大的修正,所以置信区间会比较宽,下限值会比较小。

威尔逊置信区间

image_1c9bhr0fknruvhr1g0cdigqpm9.png-13.4kB

可以看到,当n的值足够大时,这个下限值会趋向。如果n非常小(投票人很少),这个下限值会大大小于。实际上,起到了降低"赞成票比例"的作用,使得该项目的得分变小、排名下降。

文章的首次推荐,如果点击率低,系统认为文章不适合推荐给更多的用户,会减少二次推荐的推荐量;如果点击率高,系统则认为文章受用户喜欢,将进一步增加推荐量。以此类推,文章新一次的推荐量都以上一次推荐的点击率为依据。此外,文章过了时效期后,推荐量将明显衰减,时效期节点通常为24小时、72小时和一周。例如,一篇文章首次推荐给了1000个用户,如果这批用户的点击率较高,系统判定用户非常喜欢这篇文章,将其扩大推荐给10000个用户,如果这轮推荐用户的点击率仍然维持在较高水平,那么系统会将文章再次扩大推荐给30000个用户、50000个用户、100000个用户······推荐量和阅读量便如滚雪球一般节节攀升。直到文章过了24小时时效期,新一轮推荐的推荐量才会逐渐衰减。

4. 通过协同过滤+基于内容推荐引入个性化推荐策略

“协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你。”

(协同过滤)是一个很好的方法,直到今天我们还一直使用。但缺点也很明显,对于没有行为(记录)的文章,没办法推荐,所以没办法用于文章的冷启动。所以我们引入了基于内容推荐的策略。比如计算文章的分类、文章的关键词,然后根据用户对文章的阅读、浏览等信息,细化用户的个人资料。——这样子,如果文章是和科技相关的,而用户的个人资料也显示科技相关,那么就算匹配。”

在之后的工作,是把特征、模型做得更加细化。比如,文章实体词的抽取。我们最近对文章的分析,已经做得很细,可以精确地提取实体词。我们近期引入了‘词嵌入’(word embedding)方法,做向量化的分析,还引入 LDA 的方法,进行 topic 分析等等。

5. 基于用户对内容的正负反馈来判断内容匹配是否精确

正反馈,包括用户点击了、看了很长时间、分享了、收藏了、评论了,都是正反馈。负反馈反而是比较难获取的,现在今日头条在内容上设置了一个小叉,点击之后,会咨询用户不感兴趣的理由,这种做法则会获取比较强的负反馈。但是通过这种方式收集到的数据还不多。

6. 如何平衡传统头条内容和用户感兴趣的新闻头条

“我们目前是增加非常少的运营干预一天只有零星几条,来增强传统头条新闻的推荐,避免机器推荐对这类内容推荐的不足。”但是,拿捏新闻推荐的平衡点,是整个业界都在钻研的问题。

7. 今日头条如何对用户进行分析

新用户能够得到的信息(历史行为)非常有限。我们尽量通过一下其它途径想办法获取信息,比如说,如果通过微博登录,那么就可以拿到很多信息,解决冷启动的难题。再比如,手机机型、手机在什么城市等信息,基本也可以知道。当用户积累了一定的行为数据之后,就可以算出他们的兴趣特征。总之,尽量通过有限的信息,来猜测用户的兴趣。

今日头条通过机器匹配用户阅读兴趣,与内容本身的特征之后,这对他们的商业有怎样的影响?

广告界有一句名言,“企业所投放的广告费总有一半是浪费掉的,但是却没有办法知道被浪费掉的是哪一部分。”今日头条目前的商业模式也是以广告为主,因此在产品上所产生的巨大流量,可否与广告内容精确匹配,进而进行更加精准的转化。

根据今日头条所提供的案例,此前海尔旗下卡萨帝选择在今日头条的动态开屏和信息流中投放广告,最后开屏广告的转化率达 11.93%。

8. 考虑环境的特征进行推送

推荐是一个情景化的事。比如我自己早上,会看一看科技新闻。周末晚上会看搞笑视频。还有网络环境,你要有wifi的话,给你多推视频。

9. 用户兴趣图谱

建立用户兴趣标签树,每篇收录的文章都有标签,然后给予用户标签树的喜好程度进行概率推荐
配合协同推荐、热门新闻推荐和人工运营推荐达到目的

10. 消除重复算法

读者视角,如果出现两篇相同标题或图片的文章,用户体验会很不好。而且浪费了今日头条的资源。

消重机制:三个方面:

  1. 内容消重
  2. 标题与预览图片消重:有可能一个简单战报,一个是详细报道。
  3. 相似主题消重

11. 说明PPT

image_1c9bimjboa6s1ffqjomuh61tglm.png-263.8kB
image_1c9bin4kv1pgpeesgul1eeu1qjq13.png-150kB
image_1c9binqm21aot0d1crr9pl12161g.png-184.9kB
image_1c9biomvkq3v6vr1h4q17et1frp1t.png-139.4kB
image_1c9bip3l6100l1uk216c61o3vmmd2a.png-217.5kB
image_1c9biq37312h4r5er651e4b1cgk2n.png-180kB
image_1c9biqfm0keb1ocahq3no11cr34.png-224.4kB
image_1c9birsj5cvi185f1srr1crsii33h.png-184.6kB
image_1c9bivjehhnq6ni1ks21etj1kop3u.png-225.2kB
image_1c9bj42g21ubn2js1bf91ebe1s8r4r.png-192.2kB
image_1c9bj4kco1an8akv1uam1u8q1c1h58.png-237.9kB
image_1c9bj7d72f4ukji1ad8cqcal5l.png-159.7kB
image_1c9bj7p15f8g199p19aarq0uno62.png-102.8kB
image_1c9bja4gf1il31ufb8p72c4e346f.png-178.9kB
image_1c9bjanaeoni1d9udia1gd8usd6s.png-219.5kB
image_1c9bjb6fvbdlbugtvj2ch1oqd79.png-247.3kB
image_1c9bjbood113u1odgfgi7211uo17m.png-298.6kB
image_1c9bjc90qs3ubf4bnbtsp138k83.png-142.4kB
image_1c9bjcjac1dtl1km61pst1suvifo8g.png-208.7kB
image_1c9bjcrrchb91vhn17p816901ds88t.png-237.8kB
image_1c9bjdl0hda7lsq1jmj1rpgpfj9a.png-173kB
image_1c9bje229caq1qsb12trr961dpi9n.png-258.1kB
image_1c9bjefcvf3n1rlhj8u164e1f58a4.png-171.7kB
image_1c9bjf81p4a45331ma917r61p08ah.png-166.6kB
image_1c9bjfg731qjv1sv6du55u01gunau.png-241.3kB
image_1c9bjfr2v1tmh14l8vk41oru17b0bb.png-246.6kB