抖音推荐算法原理全文详解

阅读目录

抖音推荐算法原理全文详解

本次分享将主要介绍今日头条推荐系统的概况以及内容分析、用户标签、评价分析、内容安全等原理。

1. 系统概述

如果用形式化的方式来描述推荐系统,它实际上是一个拟合用户对内容满意度的函数。 该函数需要输入三维变量。

第一个维度是内容。 今日头条现已成为集图文、视频、UGC短视频、问答、微今日头条为一体的综合性内容平台。 每个内容都有自己的特点。 需要考虑如何提取不同内容类型的特征来进行推荐。

第二个维度是用户特征。 包括各种兴趣标签、职业、年龄、性别等,以及很多模型勾画出来的隐含的用户兴趣。

第三个维度是环境特征。 这是移动互联网时代推荐的一个特点。 用户随时随地移动,其信息偏好在工作、通勤、旅行等不同场景中发生变化。

结合三个维度,模型会给出一个估计,即推测推荐的内容是否适合这个场景下的这个用户。

这里还有一个问题,如何引入无法直接衡量的目标?

在推荐模型中,点击率、阅读时长、点赞、评论、转发、包括点赞都是可量化的目标,可以用模型直接拟合预测。 通过查看网上的进步情况就可以知道自己做得好不好。

然而,大规模的推荐系统服务于众多用户,并不能完全用指标来评价。 引入数据指标以外的元素也很重要。

比如广告和特殊内容的频率控制。 问答卡是一种特殊的内容形式。 推荐的目的并不完全是让用户浏览,还要吸引用户回答,为社区贡献内容。 这些内容如何与普通内容混合以及如何控制频率控制都需要考虑。

此外,出于内容生态和社会责任的考虑,对低俗内容、头条党、低质量内容的打压,重要新闻的置顶、权重、强行插播,低级账号内容的减少等。所有算法本身无法完成的事情。 ,需要对内容进行进一步干预。

下面我就根据上述算法目标简单介绍一下如何实现。

上述公式 y = F(Xi ,Xu ,Xc) 是一个经典的监督学习问题。 可以实现的方法有很多,比如传统的协同过滤模型、监督学习算法模型、基于深度学习的模型、GBDT等。

一个优秀的工业级推荐系统需要一个非常灵活的算法实验平台,能够支持多种算法组合,包括模型结构调整。 因为很难有一个适合所有推荐场景的通用模型架构。

现在很流行LR和DNN的结合,前几年也做了LR和GBDT算法的结合。 今日头条旗下的几款产品都使用同一套强大的算法推荐系统,但模型结构会根据不同的业务场景进行调整。

说完模型,我们来看看典型的推荐特征。 有四种主要类型的特征在推荐中发挥着重要作用。

第一类是相关性特征,用于评估内容的属性以及是否与用户匹配。 显式匹配包括关键词匹配、类别匹配、来源匹配、主题匹配等。FM模型中还存在一些隐式匹配,可以通过用户向量与内容向量之间的距离来获得。

第二类是环境特征,包括地理位置和时间。 这些都是偏置特征,也可以用来构造一些匹配特征。

第三类是散热功能。 包括全局流行度、类别流行度、主题流行度、关键词流行度等。内容流行度信息在大型推荐系统中非常有效,尤其是当用户冷启动时。

第四类是协同特征,可以部分帮助解决所谓算法越来越窄的问题。

协作功能不考虑用户的现有历史记录。 而是通过用户行为来分析不同用户之间的相似性,例如相似的点击、相似的兴趣类别、相似的主题、相似的兴趣词,甚至相似的向量,从而扩展模型的探索能力。

在模型训练方面,今日头条的推荐产品大多采用实时训练的方式。 实时训练节省资源,反馈快,这对于信息流产品来说非常重要。 用户需要能够被模型快速捕获并反馈到下次刷的推荐效果的行为信息。

目前我们正在基于storm集群实时在线处理样本数据,包括点击、展示、采集、分享等动作类型。

模型参数服务器是一套内部开发的高性能系统。 由于头条数据规模增长过快,同类开源系统的稳定性和性能无法满足要求。 不过我们自研的系统底层做了很多有针对性的优化,提供了完善的运维工具,更好的适应现有的业务场景。

目前,今日头条的推荐算法模型在全球范围内是比较庞大的,包括数百亿的原始特征和数十亿的向量特征。

整体训练过程是,在线服务器记录实时特征,导入到Kafka文件队列中,然后进一步导入Storm集群消费Kafka数据,客户端发回推荐标签构建训练样本,然后根据最新样本进行在线训练更新模型参数。 最终在线模型得到更新。

这个过程中主要的延迟是用户的动作反馈延迟,因为用户在推荐文章后可能不会立即阅读该文章。 不管这部分时间,整个系统几乎是实时的。

但由于目前头条的内容量非常大,而小视频内容有千万级别,推荐系统不可能通过模型​​预测所有的内容。

因此,需要设计一些召回策略,每次推荐时从海量内容中选择千级内容库。 召回策略最重要的要求就是性能要极致,一般超时时间不要超过50毫秒。

回忆策略有很多种,我们主要采用逆演的思想。 离线维护倒排列表。 这个倒排列表的key可以是类别、主题、实体、来源等。

排序会考虑流行度、新鲜度、行动度等。 在线召回可以根据用户的兴趣标签快速从倒排列表中截断内容,高效地从庞大的内容库中筛选出一小部分更可靠的内容。

2.内容分析

内容分析包括文本分析、图像分析和视频分析。 最初,今日头条主要以资讯为主。 今天我们主要讲文本分析。 文本分析在推荐系统中的一个非常重要的作用是用户兴趣建模。

没有内容和文本标签,就无法获取用户兴趣标签。 例如,只有当用户知道文章标签是互联网抖音推荐算法,并且用户阅读了带有互联网标签的文章时,才能知道用户具有互联网标签,其他关键词也是如此。

另一方面,文本内容的标签可以直接帮助推荐特征,例如可以将魅族的内容推荐给关注魅族的用户,这就是用户标签的匹配。

如果在某段时间内主频道推荐效果不理想,推荐范围缩小,用户会发现在阅读了特定频道推荐(如科技、体育、娱乐、军事等)后,然后返回对于主feed来说,推荐效果会更好。

由于整个模型是连通的,子渠道的探索空间较小,更容易满足用户需求。 仅通过单渠道反馈来提高推荐准确率会比较困难,做好分渠道的工作非常重要。 这也需要良好的内容分析。

上图是今日头条的真实文字案例。 可以看出,这篇文章具有分类、关键词、主题、实体词等文本特征。

当然,并不是没有文本特征,推荐系统就无法发挥作用。 推荐系统最早的应用甚至是在沃尔玛时代,包括视频推荐和没有文本特征的直接协同过滤推荐。

但对于信息产品来说,大部分都是当天消费的内容,没有文本特征很难冷启动新内容,而协同特征无法解决文章的冷启动问题。

今日头条推荐系统提取的主要文本特征包括以下几类。 第一个是语义标签功能,它明确地为文章打上语义标签。

这部分标签是人们定义的特征,每个标签都有明确的含义,标签系统是预定义的。

另外,还有隐含的语义特征,主要是主题特征和关键词特征,其中主题特征描述了单词的概率分布,没有明确的含义; 关键词特征是基于一些统一的特征描述,没有明确的设定。

此外,文本相似度特征也非常重要。 在今日头条,用户反映的最大问题之一是为什么他们总是推荐重复的内容。 这个问题的难点在于每个人对重复的定义不同。

比如,有人认为这篇关于皇马和巴萨的文章昨天读过类似的内容,今天又说这两支球队在重复。

但对于一个忠实的球迷,尤其是巴塞罗那球迷来说,他迫不及待地想阅读所有的报道。 要解决这个问题,就需要判断相似文章的主题、正文、主题等内容,并根据这些特征制定上线策略。

同样,还有时空特征,分析内容发生的位置以及时间敏感性。 例如,将武汉的旅行限制推送给北京用户可能没有意义。

最后还要考虑质量相关特征来判断内容是否低俗、色情、软文、鸡汤?

上图展示了今日头条语义标签的特点和使用场景。 他们有不同的层次和不同的要求。

分类的目标是覆盖全面。 希望每个内容、每个视频都有一个分类; 而实体系统要求精确,相同的名称或内容必须能够清楚地区分所指的是哪个人或物体,但不需要完全覆盖。

概念系统负责解决更精确和抽象概念的语义。 这是我们最初的分类。 在实践中我们发现分类和概念在技术上是可以互通的,后来统一了一套技术架构。

目前隐式语义特征已经可以很好的用于推荐,而语义标签需要不断标注,新的术语和概念不断出现,标注必须迭代。 难度和资源投入远远大于隐含的语义特征,那么为什么需要语义标签呢?

有一些产品要求,例如频道需要有明确定义的内容类别和易于理解的文本标签系统。 语义标签的效果是检验一个公司NLP技术水平的试金石。

今日头条推荐系统的在线分类采用的是典型的层次化文本分类算法。

根在最上面,下面第一级分为科技、体育、金融、娱乐、运动等类别,再细分为足球、篮球、乒乓球、网球、田径、游泳……足球是细分为国际足球、中国足球、中国足球细分为中甲联赛、中超联赛、国家队……与单独的分类器相比,采用分层文本分类算法可以更好地解决问题数据倾斜。

有一些例外,如果你想提高召回率,你可以看到我们连接了一些飞线。 这套架构是通用的,但是根据不同问题的难度,各个元分类器可以是异构的。 比如有的分类SVM效果很好,有的需要和CNN结合,有的需要和RNN结合进一步处理。

上图是实体词识别算法的一个案例。 根据分词结果和词性标注选择候选词。 在这个过程中,可能需要根据知识库进行一些拼接。 有些实体是几个单词的组合。 有必要确定可以组合哪些词来映射实体的描述。

如果结果映射多个实体,则需要通过词向量、主题分布、甚至词频本身进行消歧,最后计算出相关性模型。

3、用户标签

内容分析和用户标签是推荐系统的两个基石。 内容分析涉及更多的机器学习。 相比之下,用户标签工程更具挑战性。

今日头条常用的用户标签包括用户感兴趣的类别和主题、关键词、来源、基于兴趣的用户聚类以及各种垂直兴趣特征(汽车模型、运动队、股票等)。 还有性别、年龄、地点等信息。

通过用户第三方社交账号登录获取性别信息。 年龄信息通常由模型预测、模型估计、阅读时间分布等。

永久位置来自于用户对位置信息的授权访问,永久位置是在位置信息的基础上通过传统的聚类方法得到的。

居住点结合其他信息可以推断出用户的工作地点、出差地点、旅游地点。 这些用户标签对于推荐非常有帮助。

当然,最简单的用户标签就是浏览的内容标签。 但这里涉及到一些数据处理策略。

主要包括:

1.过滤噪音。 通过停留时间短的点击来过滤标题方。

2.热点惩罚。 降低用户对一些热门文章的操作(比如前段时间PG One的新闻)。 理论上,对于传播范围较大的内容,置信度会降低。

三、时间衰减。 用户兴趣会发生变化,因此策略更偏向于新的用户行为。 因此,随着用户动作的增加,旧的特征权重会随着时间的推移而衰减,而新动作贡献的特征权重会更大。

四是惩罚展示。 如果推荐给用户的文章没有被点击,相关特征(类别、关键词、来源)权重就会受到惩罚。 当然,同时也要考虑整体的背景,是否有更多的相关内容推送,以及相关的闭包和信号。

用户标签挖掘一般比较简单,主要是因为刚才提到的工程挑战。 今日头条用户标签的第一个版本是一个批量计算框架,流程相对简单。 每天都会提取昨天的日活跃用户近两个月的操作数据,并在集群上批量计算结果。

但问题是,随着用户的快速增长,兴趣模型等批处理任务的种类不断增多,涉及的计算量过大。

2014年,百万用户标签更新的批量处理任务已经开始当天勉强完成。 集群计算资源的短缺很容易影响其他工作,集中写入分布式存储系统的压力也开始增大,用户兴趣标签的更新延迟越来越高。

面对这些挑战。 2014年底,今日头条推出用户标签Storm集群流计算系统。 更改为流模式后,只要有用户操作更新,标签就会更新。 CPU成本相对较小,可以节省80%的CPU时间,大大降低了计算资源开销。

同时,每天只需要几十台机器就可以支持数千万用户的兴趣模型的更新,而且特征更新速度非常快,基本上可以做到准实时。 该系统自诞生以来一直在使用。

当然,我们也发现并不是所有的用户标签都需要流媒体系统。 用户的性别、年龄、常驻地点等信息不需要实时重新计算,但仍保留每日更新。

4、评价与分析

上面介绍了推荐系统的整体结构,那么如何评价推荐效果好坏呢?

有一句话我认为非常明智,“如果你无法评估某件事,你就无法优化它”。 推荐系统也是如此。

事实上,很多因素都会影响推荐效果。 比如候选集的改变、召回模块的改进或增加、推荐特征的增加、模型架构的改进、算法参数的优化等等,就不一一列举了。

评估的意义在于,很多优化最终可能会产生负面效果,并不意味着优化上线后效果就会改善。

一个全面的评价推荐系统需要完整的评价体系、强大的实验平台和易于使用的实证分析工具。

所谓完整的体系并不是用单一的指标来衡量的。 不能只看点击率或者停留时长等,而需要综合评估。

很多公司在算法方面做得不好,并不是因为他们的工程师能力不够,而是因为他们需要一个强大的实验平台和方便的实验分析工具,能够智能分析数据指标的置信度。

建立良好的评价体系需要遵循几个原则。 首先是要兼顾短期指标和长期指标。 之前我负责公司电商方向的时候,我观察到很多战略调整短期内对用户来说感觉新鲜,但从长远来看并没有实际帮助。

其次,用户指标和生态指标都要兼顾。 既要为内容创作者提供价值,让他更有尊严地创作,也有让用户满意的义务。 两者必须保持平衡。

还应考虑广告商的利益。 这是一个多方博弈和平衡的过程。

此外,还要注意协同效应的影响。 严格的流量隔离在实验中很难实现,必须注意外部影响。

强大的实验平台非常直接的好处是,当有多个实验同时在线时,平台可以自动分配流量,无需人工沟通,并且实验结束后流量会立即回收,提高管理效率。

这可以帮助公司降低分析成本,加快算法迭代效果,使整个系统的算法优化工作快速推进。

这就是今日头条A/B Test实验系统的基本原理。 首先我们会线下做好用户的分桶工作,然后在线上分发实验流量,将桶中的用户打上标签,分发到实验组。

例如,开启一个10%流量的实验,两个实验组各5%,一组5%为基线,策略与线上市场相同,另一组为新策略。

实验过程中,会采集用户的行为,基本上是准实时的,每小时都可以看到。 但由于每小时的数据有波动,所以通常以日为时间节点来查看。 收集完毕后,就会有日志处理、分布式统计、写入数据库抖音推荐算法,非常方便。

在该系统下,工程师只需设置流量要求、实验时间、定义特殊过滤条件、自定义实验组ID即可。 系统可自动生成:实验数据对比、实验数据置信度、实验结论总结和实验优化建议。

当然,只有实验平台是不够的。 在线实验平台只能通过数据指标的变化来推断用户体验的变化,但数据指标和用户体验之间存在差异,很多指标无法完全量化。

很多改进仍然需要人工分析,重大改进需要人工评估进行二次确认。

5. 内容安全

最后我想介绍一下今日头条在内容安全方面采取的一些措施。 今日头条现在作为中国最大的内容创作和分发券,必须越来越重视社会责任和行业领袖的责任。 如果1%的推荐内容出现问题,就会产生很大的影响。

今日头条的内容主要来自两部分,一是拥有成熟内容生产能力的PGC平台

一是UGC用户内容,如问答、用户评论、微头条等。 这两部分都需要通过统一的审核机制。 如果是比较少量的PGC内容,会直接进行风险审核,没有问题的话会大规模推荐。

UGC内容需要经过风险模型的过滤,如果存在问题,就会进入第二次风险审核。 审核通过后,内容才会真正推荐。 这时,如果收到超过一定数量的评论或者举报差评,就会回到审核流程,如果有问题,会直接下架。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容