关于大数据:抖音推荐算法原理全文详解

109次阅读

共计 6098 个字符,预计需要花费 16 分钟才能阅读完成。

抖音举荐算法原理全文详解
本次分享将次要介绍今日头条举荐零碎概览以及内容分析、用户标签、评估剖析,内容平安等原理。

一、零碎概览

举荐零碎,如果用形式化的形式去形容实际上是拟合一个用户对内容满意度的函数,这个函数须要输出三个维度的变量。

 
 
 
第一个维度是内容。头条当初曾经是一个综合内容平台,图文、视频、UGC 小视频、问答、微头条,每种内容有很多本人的特色,须要思考怎么提取不同内容类型的特色做好举荐。
第二个维度是用户特色。包含各种趣味标签,职业、年龄、性别等,还有很多模型刻划出的隐式用户趣味等。
第三个维度是环境特色。这是挪动互联网时代举荐的特点,用户随时随地挪动,在工作场合、通勤、游览等不同的场景,信息偏好有所偏移。
联合三方面的维度,模型会给出一个预估,即揣测举荐内容在这一场景下对这一用户是否适合。
这里还有一个问题,如何引入无奈间接掂量的指标?

举荐模型中,点击率、浏览工夫、点赞、评论、转发包含点赞都是能够量化的指标,可能用模型间接拟合做预估,看线上晋升状况能够晓得做的好不好。
但一个大体量的举荐零碎,服务用户泛滥,不能齐全由指标评估,引入数据指标以外的因素也很重要。
比方广告和特型内容频控。像问答卡片就是比拟非凡的内容模式,其举荐的指标不齐全是让用户浏览,还要思考吸引用户答复为社区奉献内容。这些内容和一般内容如何混排,怎么管制频控都须要思考。
此外,平台出于内容生态和社会责任的考量,像低俗内容的打压,题目党、低质内容的打压,重要新闻的置顶、加权、强插,低级别账号内容降权都是算法自身无奈实现,须要进一步对内容进行干涉。
上面我将简略介绍在上述算法指标的根底上如何对其实现。

后面提到的公式 y = F(Xi ,Xu ,Xc),是一个很经典的监督学习问题。可实现的办法有很多,比方传统的协同过滤模型,监督学习算法 Logistic Regression 模型,基于深度学习的模型,Factorization Machine 和 GBDT 等。
一个优良的工业级举荐零碎须要非常灵活的算法试验平台,能够反对多种算法组合,包含模型结构调整。因为很难有一套通用的模型架构实用于所有的举荐场景。
当初很风行将 LR 和 DNN 联合,前几年 Facebook 也将 LR 和 GBDT 算法做联合。今日头条旗下几款产品都在沿用同一套弱小的算法举荐零碎,但依据业务场景不同,模型架构会有所调整。

模型之后再看一下典型的举荐特色,次要有四类特色会对举荐起到比拟重要的作用。
第一类是相关性特色,就是评估内容的属性和与用户是否匹配。显性的匹配包含关键词匹配、分类匹配、起源匹配、主题匹配等。像 FM 模型中也有一些隐性匹配,从用户向量与内容向量的间隔能够得出。
第二类是环境特色,包含地理位置、工夫。这些既是 bias 特色,也能以此构建一些匹配特色。
第三类是热度特色。包含全局热度、分类热度,主题热度,以及关键词热度等。内容热度信息在大的举荐零碎特地在用户冷启动的时候十分无效。
第四类是协同特色,它能够在局部水平上帮忙解决所谓算法越推越窄的问题。
协同特色并非思考用户已有历史。而是通过用户行为剖析不同用户间相似性,比方点击类似、趣味分类类似、主题类似、趣味词类似,甚至向量类似,从而扩大模型的摸索能力。

模型的训练上,头条系大部分举荐产品采纳实时训练。实时训练省资源并且反馈快,这对信息流产品十分重要。用户须要行为信息能够被模型疾速捕获并反馈至下一刷的举荐成果。
咱们线上目前基于 storm 集群实时处理样本数据,包含点击、展示、珍藏、分享等动作类型。
模型参数服务器是外部开发的一套高性能的零碎,因为头条数据规模增长太快,相似的开源零碎稳定性和性能无奈满足,而咱们自研的零碎底层做了很多针对性的优化,提供了欠缺运维工具,更适配现有的业务场景。
目前,头条的举荐算法模型在世界范畴内也是比拟大的,蕴含几百亿原始特色和数十亿向量特色。
整体的训练过程是线上服务器记录实时特色,导入到 Kafka 文件队列中,而后进一步导入 Storm 集群生产 Kafka 数据,客户端回传举荐的 label 结构训练样本,随后依据最新样本进行在线训练更新模型参数,最终线上模型失去更新。
这个过程中次要的提早在用户的动作反馈延时,因为文章举荐后用户不肯定马上看,不思考这部分工夫,整个零碎是简直实时的。

但因为头条目前的内容量十分大,加上小视频内容有千万级别,举荐零碎不可能所有内容全副由模型预估。
所以须要设计一些召回策略,每次举荐时从海量内容中筛选出千级别的内容库。召回策略最重要的要求是性能要极致,个别超时不能超过 50 毫秒。

 
 
 
召回策略品种有很多,咱们次要用的是倒排的思路。离线保护一个倒排,这个倒排的 key 能够是分类,topic,实体,起源等。
排序思考热度、新鲜度、动作等。线上召回能够迅速从倒排中依据用户趣味标签对内容做截断,高效的从很大的内容库中筛选比拟靠谱的一小部分内容。

二、内容分析

内容分析包含文本剖析,图片剖析和视频剖析。头条一开始次要做资讯,明天咱们次要讲一下文本剖析。文本剖析在举荐零碎中一个很重要的作用是用户趣味建模。
没有内容及文本标签,无奈失去用户趣味标签。举个例子,只有晓得文章标签是互联网,用户看了互联网标签的文章,能力晓得用户有互联网标签,其余关键词也一样。

另一方面,文本内容的标签能够间接帮忙举荐特色,比方魅族的内容能够举荐给关注魅族的用户,这是用户标签的匹配。
如果某段时间举荐主频道成果不现实,呈现举荐窄化,用户会发现到具体的频道举荐(如科技、体育、娱乐、军事等)中浏览后,再回主 feed, 举荐成果会更好。
因为整个模型是买通的,子频道摸索空间较小,更容易满足用户需要。只通过繁多信道反馈进步举荐准确率难度会比拟大,子频道做的好很重要。而这也须要好的内容分析。

上图是今日头条的一个理论文本 case。能够看到,这篇文章有分类、关键词、topic、实体词等文本特色。
当然不是没有文本特色,举荐零碎就不能工作,举荐零碎最晚期利用在 Amazon, 甚至沃尔玛时代就有,包含 Netfilx 做视频举荐也没有文本特色间接协同过滤举荐。
但对资讯类产品而言,大部分是生产当天内容,没有文本特色新内容冷启动十分艰难,协同类特色无奈解决文章冷启动问题。

今日头条举荐零碎次要抽取的文本特色包含以下几类。首先是语义标签类特色,显式为文章打上语义标签。
这部分标签是由人定义的特色,每个标签有明确的意义,标签体系是预约义的。
此外还有隐式语义特色,次要是 topic 特色和关键词特色,其中 topic 特色是对于词概率分布的形容,无明确意义;而关键词特色会基于一些对立特征描述,无明确汇合。

另外文本类似度特色也十分重要。在头条,已经用户反馈最大的问题之一就是为什么总举荐反复的内容。这个问题的难点在于,每个人对反复的定义不一样。
举个例子,有人感觉这篇讲皇马和巴萨的文章,昨天曾经看过相似内容,明天还说这两个队那就是反复。
但对于一个重度球迷而言,尤其是巴萨的球迷,巴不得所有报道都看一遍。解决这一问题须要依据判断类似文章的主题、行文、主体等内容,依据这些特色做线上策略。
同样,还有时空特色,剖析内容的产生地点以及时效性。比方武汉限行的事件推给北京用户可能就没有意义。
最初还要思考品质相干特色,判断内容是否低俗,色情,是否是软文,鸡汤?

上图是头条语义标签的特色和应用场景。他们之间层级不同,要求不同。

分类的指标是笼罩全面,心愿每篇内容每段视频都有分类;而实体体系要求精准,雷同名字或内容要能明确辨别到底指代哪一个人或物,但不必笼罩很全。
概念体系则负责解决比拟准确又属于抽象概念的语义。这是咱们最后的分类,实际中发现分类和概念在技术上能互用,起初对立用了一套技术架构。

目前,隐式语义特色曾经能够很好的帮忙举荐,而语义标签须要继续标注,新名词新概念一直呈现,标注也要一直迭代。其做好的难度和资源投入要远大于隐式语义特色,那为什么还须要语义标签?
有一些产品上的须要,比方频道须要有明确定义的分类内容和容易了解的文本标签体系。语义标签的成果是查看一个公司 NLP 技术水平的试金石。

今日头条举荐零碎的线上分类采纳典型的层次化文本分类算法。
最下面 Root,上面第一层的分类是像科技、体育、财经、娱乐,体育这样的大类,再上面细分足球、篮球、乒乓球、网球、田径、游泳…,足球再细分国际足球、中国足球,中国足球又细分中甲、中超、国家队…,相比独自的分类器,利用层次化文本分类算法能更好地解决数据歪斜的问题。
有一些例外是,如果要进步召回,能够看到咱们连贯了一些飞线。这套架构通用,但依据不同的问题难度,每个元分类器能够异构,像有些分类 SVM 成果很好,有些要联合 CNN,有些要联合 RNN 再解决一下。

上图是一个实体词辨认算法的 case。基于分词后果和词性标注选取候选,期间可能须要依据知识库做一些拼接,有些实体是几个词的组合,要确定哪几个词联合在一起能映射实体的形容。
如果后果映射多个实体还要通过词向量、topic 散布甚至词频自身等去歧,最初计算一个相关性模型。

三、用户标签

内容分析和用户标签是举荐零碎的两大基石。内容分析波及到机器学习的内容多一些,相比而言,用户标签工程挑战更大。

今日头条罕用的用户标签包含用户感兴趣的类别和主题、关键词、起源、基于趣味的用户聚类以及各种垂直趣味特色(车型,体育球队,股票等)。还有性别、年龄、地点等信息。
性别信息通过用户第三方社交账号登录失去。年龄信息通常由模型预测,通过机型、浏览工夫散布等预估。
常驻地点来自用户受权拜访地位信息,在地位信息的根底上通过传统聚类的办法拿到常驻点。
常驻点联合其余信息,能够揣测用户的工作地点、出差地点、游览地点。这些用户标签十分有助于举荐。

当然最简略的用户标签是浏览过的内容标签。但这里波及到一些数据处理策略。
次要包含:
一、过滤噪声。通过停留时间短的点击,过滤题目党。
二、热点惩办。对用户在一些热门文章(如前段时间 PG One 的新闻)上的动作做降权解决。实践上,流传范畴较大的内容,置信度会降落。
三、工夫衰减。用户趣味会产生偏移,因而策略更偏差新的用户行为。因而,随着用户动作的减少,老的特色权重会随工夫衰减,新动作奉献的特色权重会更大。
四、惩办展示。如果一篇举荐给用户的文章没有被点击,相干特色(类别,关键词,起源)权重会被惩办。当然同时,也要思考全局背景,是不是相干内容推送比拟多,以及相干的敞开和 dislike 信号等。

用户标签开掘总体比较简单,次要还是刚刚提到的工程挑战。头条用户标签第一版是批量计算框架,流程比较简单,每天抽取昨天的日活用户过来两个月的动作数据,在 Hadoop 集群上批量计算结果。

但问题在于,随着用户高速增长,趣味模型品种和其余批量解决工作都在减少,波及到的计算量太大。
2014 年,批量解决工作几百万用户标签更新的 Hadoop 工作,当天实现曾经开始勉强。集群计算资源缓和很容易影响其它工作,集中写入分布式存储系统的压力也开始增大,并且用户趣味标签更新提早越来越高。

 
 
 
面对这些挑战。2014 年底今日头条上线了用户标签 Storm 集群流式计算零碎。改成流式之后,只有有用户动作更新就更新标签,CPU 代价比拟小,能够节俭 80% 的 CPU 工夫,大大降低了计算资源开销。
同时,只需几十台机器就能够撑持每天数千万用户的趣味模型更新,并且特色更新速度十分快,根本能够做到准实时。这套零碎从上线始终应用至今。

当然,咱们也发现并非所有用户标签都须要流式零碎。像用户的性别、年龄、常驻地点这些信息,不须要实时反复计算,就依然保留 daily 更新。

四、评估剖析

下面介绍了举荐零碎的整体架构,那么如何评估举荐成果好不好?
有一句我认为十分有智慧的话,“一个事件没法评估就没法优化”。对举荐零碎也是一样。

事实上,很多因素都会影响举荐成果。比方侯选汇合变动,召回模块的改良或减少,举荐特色的减少,模型架构的改良在,算法参数的优化等等,不一一举例。
评估的意义就在于,很多优化最终可能是负向成果,并不是优化上线后成果就会改良。

全面的评估举荐零碎,须要齐备的评估体系、弱小的试验平台以及易用的教训剖析工具。
所谓齐备的体系就是并非繁多指标掂量,不能只看点击率或者停留时长等,须要综合评估。
很多公司算法做的不好,并非是工程师能力不够,而是须要一个弱小的试验平台,还有便捷的试验剖析工具,能够智能剖析数据指标的置信度。

一个良好的评估体系建设须要遵循几个准则,首先是兼顾短期指标与长期指标。我在之前公司负责电商方向的时候察看到,很多策略调整短期内用户感觉陈腐,然而长期看其实没有任何助益。
其次,要兼顾用户指标和生态指标。既要为内容创作者提供价值,让他更有尊严的创作,也有任务满足用户,这两者要均衡。
还有广告主利益也要思考,这是多方博弈和均衡的过程。
另外,要留神协同效应的影响。试验中严格的流量隔离很难做到,要留神内部效应。

弱小的试验平台十分间接的长处是,当同时在线的试验比拟多时,能够由平台主动调配流量,无需人工沟通,并且试验完结流量立刻回收,进步管理效率。
这能帮忙公司升高剖析老本,放慢算法迭代效应,使整个零碎的算法优化工作可能疾速往前推动。

这是头条 A /B Test 试验零碎的基本原理。首先咱们会做在离线状态下做好用户分桶,而后线上调配试验流量,将桶里用户打上标签,分给实验组。
举个例子,开一个 10% 流量的试验,两个实验组各 5%,一个 5% 是基线,策略和线上大盘一样,另外一个是新的策略。

试验过程中用户动作会被收集,基本上是准实时,每小时都能够看到。但因为小时数据有稳定,通常是以天为工夫节点来看。动作收集后会有日志解决、分布式统计、写入数据库,十分便捷。

在这个零碎下工程师只须要设置流量需要、试验工夫、定义非凡过滤条件,自定义实验组 ID。零碎能够主动生成:试验数据比照、试验数据置信度、试验论断总结以及试验优化倡议。

当然,只有试验平台是远远不够的。线上试验平台只能通过数据指标变动揣测用户体验的变动,但数据指标和用户体验存在差别,很多指标不能齐全量化。
很多改良依然要通过人工剖析,重大改良须要人工评估二次确认。

五、内容平安

最初要介绍今日头条在内容平安上的一些动作。头条当初曾经是国内最大的内容创作与散发凭条,必须越来越器重社会责任和行业领导者的责任。如果 1% 的举荐内容呈现问题,就会产生较大的影响。

今日头条的内容次要来源于两局部,一是具备成熟内容生产能力的 PGC 平台
一是 UGC 用户内容,如问答、用户评论、微头条。这两局部内容须要通过对立的审核机制。如果是数量绝对少的 PGC 内容,会间接进行危险审核,没有问题会大范畴举荐。
UGC 内容须要通过一个危险模型的过滤,有问题的会进入二次危险审核。审核通过后,内容会被真正进行举荐。这时如果收到一定量以上的评论或者举报负向反馈,还会再回到复审环节,有问题间接下架。
 

 


TiToData:业余的短视频数据接口服务平台。

更多信息请分割:TiToData
笼罩支流平台:抖音,快手,小红书,TikTok,Zynn,YouTube,1688,拼多多,淘宝,美团,饿了么,淘宝,微博

正文完
 0