官方服务微信:dat818 购买与出租对接

今日头条算法原理揭秘:曹欢欢博士详解推荐系统与内容安全

4万

主题

2

回帖

12万

积分

管理员

积分
120677
发表于 2025-1-1 23:39:31 | 显示全部楼层 |阅读模式
    如今,算法分发已经成为信息平台、搜索引擎、浏览器、社交软件等几乎所有软件的标配功能。但与此同时,算法也开始面临质疑、挑战和误解。今日头条的推荐算法自2012年9月第一版开发运行以来,经历了四次较大的调整和修改。

    今日头条委托高级算法架构师曹欢欢博士公开今日头条的算法原理,以推动全行业的算法咨询和建议。通过让算法变得透明,消除各界对算法的误解,逐步推动整个行业让算法变得更好。造福社会。

    以下为《今日头条算法原理》全文。

    曹欢欢,今日头条高级算法架构师

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

    一、系统概述

    如果用形式化的方式描述推荐系统,它实际上是拟合用户对内容满意度的函数。该函数需要输入三个维度的变量。第一个维度是内容。今日头条现已成为集图、文、视频、UGC短视频、问答、微头条于一体的综合性内容平台。每种类型的内容都有其自身的许多特征。需要考虑如何提取不同内容类型的特征来进行推荐。第二个维度是用户特征。包括各种兴趣标签、职业、年龄、性别等,以及很多模型勾画出来的隐含的用户兴趣。第三个维度是环境特征。这是移动互联网时代推荐的一个特点。用户随时随地移动,其信息偏好在工作、通勤、旅行等不同场景中发生变化。结合三个维度,模型将给出推荐内容是否适合该场景下该用户的估计。

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

    在推荐模型中,点击率、阅读时长、点赞、评论、转发、点赞都是可量化的目标。模型可以直接用来拟合和估计,通过看网上的改进就可以知道自己做得好不好。然而,服务众多用户的大规模推荐系统并不能完全用指标来评价。引入数据指标以外的因素也很重要。

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

    此外,平台还考虑了内容生态和社会责任,比如对低俗内容的打压,对抢头条和低质量内容的打压,对重要新闻的置顶、权重、强行插播,对低俗内容的降级等。级别的账户内容,这些都是算法本身无法完成的。 ,需要对内容进行进一步的干预。

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

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

    一个优秀的工业级推荐系统需要一个非常灵活的算法实验平台,能够支持多种算法组合,包括模型结构的调整。因为很难有一个适合所有推荐场景的通用模型架构。现在很流行将LR和DNN结合起来。前几年也将LR和GBDT算法结合起来。今日头条的几款产品都采用了同样强大的算法推荐系统,但模型架构会根据不同的业务场景进行调整。

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

    在模型训练方面,今日头条的推荐产品大多采用实时训练的方式。实时训练节省资源,反馈快,这对于信息流产品来说非常重要。用户需要能够被模型快速捕获并反馈到下一个推荐效果的行为信息。目前我们基于storm集群在线实时处理样本数据,包括点击、展示、收藏、分享等动作类型。模型参数服务器是内部开发的高性能系统。由于今日头条数据规模增长过快,同类开源系统的稳定性和性能无法满足要求。但我们在自研系统底层做了很多针对性的优化,提供完善的运维工具,更好的适应现有的业务场景。

    目前,今日头条的推荐算法模型在全球范围内是比较庞大的,包含数百亿个原始特征和数十亿个向量特征。整体训练过程是在线服务器记录实时特征,导入到Kafka文件队列中,然后进一步导入Storm集群来消费Kafka数据。客户端返回推荐标签构建训练样本,然后基于最新样本进行在线训练,更新模型参数。最终在线模型已更新。这个过程中主要的延迟是用户动作反馈的延迟,因为用户不一定会在文章被推荐后立即阅读。不管这部分时间,整个系统几乎是实时的。

    但由于目前今日头条的内容量非常大,小视频内容有上千万条,推荐系统不可能通过模型​​预测所有内容。因此,需要设计一些召回策略,在每次推荐时从海量内容中筛选出千级内容库。召回策略最重要的要求就是性能必须极致,一般超时时间不能超过50毫秒。

    召回策略有很多种,我们主要采用倒装思想。离线保持反演。这种倒排的关键可以是分类、主题、实体、来源等。排名考虑了流行度、新鲜度、动作等。在线召回可以根据用户兴趣标签从倒排列表中快速截断内容,并高效地选择一小部分来自大型内容库的相对可靠的内容。

    2.内容分析

    内容分析包括文本分析、图像分析和视频分析。今日头条一开始主要以资讯为主。今天我们主要讲文本分析。文本分析在推荐系统中一个非常重要的作用就是用户兴趣建模。没有内容和文本标签,就无法获取用户兴趣标签。例如,只有知道文章标签是互联网,并且用户阅读了带有互联网标签的文章,才能知道用户具有互联网标签,其他关键词也是如此。

    另一方面,文本内容的标签可以直接帮助推荐特征。例如,可以向关注魅族的用户推荐魅族内容。这是用户标签的匹配。如果某段时间主频道推荐效果不理想,推荐范围缩小,用户会发现在特定频道推荐(如科技、体育、娱乐、军事等)阅读完后又返回对于主feed来说,推荐效果会更好。由于整个模型是连通的,子通道探索空间更小,更容易满足用户需求。仅通过单一渠道反馈很难提高推荐准确率,做好子渠道非常重要。而这也需要良好的内容分析。

   


    上图是今日头条的真实文字案例。

    可以看到,这篇文章有分类、关键词、主题、实体词等文本特征,当然,这并不意味着推荐系统没有文本特征就无法工作。推荐系统最早的应用是在沃尔玛时代,包括做视频推荐,没有文本特征就没有直接的协同过滤推荐。但对于信息产品来说,大多是在当天消费内容。没有文本特征,冷启动新内容是非常困难的。协作功能无法解决文章冷启动问题。

    今日头条推荐系统提取的主要文本特征包括以下几类。第一个是语义标签特征,它用语义标签明确地标记文章。这些标签是人类定义的特征。每个标签都有明确的含义,并且标签系统是预定义的。此外,还有隐含的语义特征,主要是主题特征和关键词特征。主题特征是对词概率分布的描述,没有明确的含义;而关键词特征会基于一些统一的特征描述,没有明确的设定。

    此外,文本相似度特征也非常重要。在今日头条,用户反映的最大问题之一是为什么总是推荐重复的内容。这个问题的难点在于每个人对重复的定义不同。比如,有人认为这篇关于皇马和巴萨的文章昨天已经看到类似的内容,今天谈论这两支球队是重复的。但对于一个忠实的球迷,尤其是巴塞罗那球迷来说,我迫不及待地想阅读所有的报道。为了解决这个问题,我们需要判断相似文章的主题、写作、主体等内容,并根据这些特征制定上线策略。

    同样,还有时空特征、分析内容的地点和时效性。例如,将武汉的旅行限制推送给北京的用户可能没有意义。最后,还要考虑质量相关特征来判断内容是低俗、色情、软文还是鸡汤?

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

    分类的目标是全面,每一条内容、每一个视频都希望被分类。实体系统要求精度。相同的名称或内容必须能够清楚地区分所指的是哪个人或物,但不必是全面的。概念系统负责解决更精确和抽象概念的语义。这是我们最初的分类。在实践中我们发现分类和概念在技术上是可以互通的,后来我们统一了一套技术架构。

    目前,隐式语义特征已经可以对推荐有很大帮助,而语义标签则需要不断标注。新的术语和概念不断出现,注释必须不断迭代。做好它的难度和资源投入比隐含的语义特征要大得多,那么为什么我们需要语义标签呢?对产品有一些要求。例如,频道需要有明确定义的类别内容和易于理解的文本标签系统。语义标签的效果是检验一个公司NLP技术水平的试金石。

    今日头条推荐系统的在线分类采用了典型的层次化文本分类算法。最上面是Root,下面第一层分为科技、体育、金融、娱乐、体育等各大类。以下又细分为足球、篮球、乒乓球、网球、田径、游泳等,足球又细分为国际足球。 ,中国足球,中国足球细分为中国足球甲级联赛、中超联赛、国家队等,与单独的分类器相比,使用分层文本分类算法可以更好地解决数据倾斜的问题。有一些例外,如果你想提高召回率,你可以看到我们连接了一些飞线。这种架构是通用的,但根据问题的难度,每个元分类器可以是异构的。比如有的分类SVM效果很好,有的需要和CNN结合起来,有的需要和RNN结合起来进行处理。

    上图是实体词识别算法的一个案例。根据分词结果和词性标注来选择候选者。在这个过程中,可能需要根据知识库进行一些拼接。有些实体是几个单词的组合。有必要确定可以组合哪些词来映射实体的描述。如果结果映射多个实体,则必须通过词向量、主题分布、甚至词频本身来消歧,最后计算出相关性模型。

    3、用户标签

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

    今日头条常用的用户标签包括用户感兴趣的类别和主题、关键词、来源、基于兴趣的用户聚类以及各种垂直兴趣特征(车型、球队、股票等)。还有性别、年龄、所在地等信息,性别信息是通过用户第三方社交账号登录获取的。年龄信息通常通过模型进行预测、通过机器模型估计、阅读时间分布等。驻留位置来自于用户授权的位置信息,基于位置信息通过传统的聚类方法得到驻留点。结合其他信息,可以通过常驻点推断用户的工作地点、出差地点、出行地点。这些用户标签非常适合推荐。

    当然,最简单的用户标签是查看的内容标签。但这里涉及到一些数据处理策略。主要包括:

    当然,同时也要考虑整体背景,是否有大量相关内容在推送,以及相关的闭包和信号等。

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

    但问题是,随着用户的快速增长,兴趣模型等批处理任务的种类不断增多,涉及的计算量过大。 2014年,数百万用户批量处理标签更新的任务勉强在当天完成。集群计算资源的短缺很容易影响其他工作,集中写入分布式存储系统的压力也开始增大,更新用户兴趣标签的延迟越来越高。

    面对这些挑战。 2014年底,今日头条推出用户标签Storm集群流式计算系统。改为流式传输后,只要有用户操作更新,标签就会更新。 CPU成本相对较小,可以节省80%的CPU时间,大大降低计算资源开销。同时,只需几十台机器就可以支撑每天数千万用户的兴趣模型更新,而且特征更新速度非常快,基本实现了准实时。该系统自推出以来一直在使用。

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

    四、评价与分析

   


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

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

    事实上,很多因素都会影响推荐效果。比如候选集的改变、召回模块的改进或增加、推荐特征的增加、模型架构的改进、算法参数的优化等等,我就不一一举例了。评估的意义在于,很多优化最终可能会产生负面效果,但并不意味着优化上线后效果就会改善。

    一个全面的评价推荐系统需要完整的评价体系、强大的实验平台、易用的体验分析工具。所谓完整的体系,就是不是用单一的指标来衡量的。不能只看点击率或者停留时间等,而是需要综合评估。在过去的几年里,我们一直在尝试是否可以将尽可能多的指标组合成一个独特的评价指标,但我们仍在探索。目前我们上线的决定还是需要由各业务高年级学生组成的审核委员会深入讨论后做出。

    很多企业在算法上表现不佳,并不是因为工程师能力不够,而是因为他们需要一个强大的实验平台和便捷的实验分析工具,能够智能分析数据指标的置信度。

    建立良好的评价体系需要遵循几个原则。首先是要兼顾短期和长期指标。我在之前公司负责电商方向的时候就观察到,很多战略调整短期来看对用户来说可能很新奇,但从长远来看其实没有什么好处。

    其次,要兼顾用户指标和生态指标。今日头条作为内容创作平台,不仅要为内容创作者提供价值,让他们更有尊严地创作,更有义务让用户满意。两者必须保持平衡。广告商的利益也需要考虑。这是一个多方博弈和平衡的过程。

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

    强大的实验平台很直接的好处是,当有多个实验同时在线时,平台可以自动分配流量,无需人工沟通,并且实验完成后流量会立即回收,提高管理效率。这可以帮助企业降低分析成本,加速算法迭代效果,使整个系统的算法优化快速推进。

    这就是今日头条A/B Test实验系统的基本原理。首先,我们在线下将用户划分为桶,然后在线上分配实验流量,对桶中的用户进行标签,并将其分配到实验组。例如,以10%流量开始实验,两个实验组各5%,一组5%为基线,策略与线上市场相同,另一组为新策略。

    实验过程中,会采集用户的行为,基本上是准实时的,每小时都可以看到。不过,由于每小时数据都有波动,因此通常是按天查看。 收集后,就会有日志处理、分布式统计、写入数据库,非常方便。

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

    当然,仅有一个实验平台是不够的。线上实验平台只能通过数据指标的变化来推断用户体验的变化。但数据指标与用户体验存在差异,很多指标无法完全量化。很多改进仍然需要人工分析,重大改进需要人工评估和二次确认。

    5. 内容安全

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

    因此,今日头条从成立之初就将内容安全作为公司的重中之重。成立之初,就已经成立了审核小组,专门负责内容安全。当时开发所有客户端、后端、算法的学生不到40人,头条非常重视内容审核。

    如今,今日头条的内容主要来自两部分,一是拥有成熟内容生产能力的PGC平台,二是UGC用户内容,如问答、用户评论、微头条等。这两部分内容需要通过统一的审核机制。如果是比较少量的PGC内容,会直接进行风险审核。如果没有问题,将会广泛推荐。 UGC内容需要通过风险模型进行过滤,任何有问题的内容都会进入二次风险审核。审核通过后,才会对内容进行实际推荐。这个时候,如果我们收到超过一定数量的评论或者举报差评,我们就会回到审核流程,如果有问题,我们会直接下架。整个机制比较健全。作为行业领导者,今日头条在内容安全方面始终坚持最高标准。

    共享内容识别技术主要识别色情款、辱骂款、低俗款。今日头条的低俗模型是通过深度学习算法训练的。样本库非常大,图文同步分析。这部分模型更注重召回率,甚至可以牺牲准确率。诅咒模型的样本库也超过百万,召回率95%+,准确率80%+。如果用户经常发表直言不讳或不当的评论,我们会制定一些惩罚机制。

    一般低质量识别涉及到的情况有很多,比如假新闻、黑稿、标题不一致、假标题、低质量内容等,这部分内容对于机器来说是非常难以理解的,需要大量的反馈信息,包括其他样本信息。比较。目前低质量模型的准确率和召回率还不是特别高,需要人工审核来提高门槛。目前,最终召回率已达到95%。其实这部分还有很多工作可以做。今日头条人工智能实验室李航先生目前正在与密歇根大学合作开展一个科研项目,建立谣言识别平台。

    以上就是今日头条推荐系统原理的分享。希望今后能得到更多的建议,帮助我们更好地改进工作。
您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|关于我们

Copyright © 2001-2025, Tencent Cloud.    Powered by Discuz! X3.5    京ICP备20013102号-30

违法和不良信息举报电话:86-13718795856 举报邮箱:hwtx2020@163.com

GMT+8, 2025-7-10 14:29 , Processed in 0.093282 second(s), 18 queries .