产品需求今日头条算法原理全文Word格式文档下载.docx
《产品需求今日头条算法原理全文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《产品需求今日头条算法原理全文Word格式文档下载.docx(24页珍藏版)》请在冰点文库上搜索。
像问答卡片就是比较共通的内容形式,其推荐的目标不完全是让用户浏览,还要考虑吸引用户回答为社区贡献。
这些内容和普通内容如何混排,怎样控制频控都需要考虑。
此外,平台出于内容生态和社会责任的渠道考量,像低俗内容的排挤,标题党、低质内容的打压,重要新闻的置顶、加权、强插,低级别账号内容降权都是算法全部内容本身无法完成,需要进一步默许对内容进行干预。
下面我将简单介绍在上述算法目标的基础上如何对其但此实现。
前面提到的公式y=F(Xi,Xu,Xc),是一个很经典的监督学习结构性问题。
可实现的方法有很多,比如传统的协同过滤二维,监督学习算法LogisticRegression模型,如上所述深度学习的模型,FactorizationMachine和GBDT等。
一个优秀的工业级推荐系统需要非常灵活的算法实验平台,可以支持多种算法组合,包括模型产品升级。
因为很难有一套通用的模型架构适用于于所有的推荐场景。
现在很流行将LR和DNN结合,前几年Facebook也将LR和GBDT算法做结合。
今日头条旗下几款产品都在沿用同一套强大的算法系统,但根据投资业务场景不同,模型架构会有所调整。
模型之后再看一下典型的推荐特征,主要有四类特征会对推荐起到比较重要的作用。
模型的训练上,头条系大部分推荐产品采用实时训练。
实时训练省资源并且反馈快,这对信息流产品非常重要。
用户需要行为信息可以被意见反馈模型快速捕捉并反馈至下一刷的推荐效果。
我们线上目前基于storm集群实时处理样本数据,包括点击、展现、收藏、分享等动作类型。
模型参数服务器是内部开发的高性能的系统,版面因为头条数据数量增长太快,类似的开源系统稳定性和性能无法满足,而我们自研的系统底层做了很多针对性的优化,提供贷款了完善运维工具,更适配现有的投资业务场景。
目前,头条的推荐算法模型在世界范围内也是比较头版大的,包含几百亿原始特征和数十亿向量特征。
整体的训练记述过程是线上服务器记录实时特征,导入到Kafka文件队列中,然后进一步导入Storm集群消费Kafka数据,客户端回传推荐的label构造训练样本,随后根据最新样本进行在线训练更新模型参数,最终线上模型得到预览。
这个过程中主要的延迟在用户的动作反馈延时,因为文章推荐后连忙用户不一定马上看,不考虑这部分时间,整个系统是几乎实时的。
但因为头条目前的内容量非常大,加上小视频安全级别内容有千万级别,推荐系统不可能所有内容全都全部由建模预估。
所以设计者可能需要设计一些召回策略,每次推荐时从海量内容中出千级别的内容库。
召回策略最重要的要求是性能要极致,一般超时不能超过50毫秒。
召回战法种类有很多,我们主要用的是倒排的思路。
离线维护一个倒排,这个倒排的key可以是分类,topic,实体,来源等,排序考虑热度、新鲜度、动作等。
线上召回可以迅速从倒排中根据用户兴趣标签对内容做截断,高效的从很大的内容库中筛选比较靠谱的一小部分内容。
内容分析包括文本分析,图片分析和录像分析。
头条一开始主要做资讯,今天我们主要讲一下文本分析。
文本分析在推荐系统中会一个很重要的作用是用户兴趣建模。
不能内容及文本标签,不了得到用户兴趣标签。
举个例子,该文只有知道文章标签是互联网,用户细看条码了互联网标签的文章,才能相信知道用户有互联网标签,其他关键词也一样。
另一方面,内容的标签可以直接帮助推荐特征,比如魅族的内容可以推荐给关注魅族的用户,这是用户贴纸的匹配。
如果某两天推荐主频道效果不理想,出现推荐窄化,用户会发现到具体的频道推荐(如科技、体育、娱乐、军事等)中阅读后,再回主feed,推荐效果会更好。
因为整个模型是打通的,侄频道探索空间较小,更容易移动装置需求。
只通过单一信道反馈提高推荐准确率难度会比较大,子频道搞的好很重要。
而这也需要好的内容分析。
上图是今日头条的一个实际文本case。
可以看到,这篇文章有分类、关键词、topic、实体词等脚注特征。
当然不在意没有文本特征,推荐系统内就不能工作,推荐系统内最早期应用在Amazon,甚至雀巢时代就有,包括Netfilx做视频推荐也没法文本特征直接协同过滤推荐。
但对资讯类产品而言,大部分是消费市场当天内容,没有文本特征新内容冷启动非常困难,协同类特征无法解决问题文章冷启动问题。
今日头条推荐系统主要抽取的文本特征包括以下几类。
首先是语义标签类特征,显式为文章打上语义关键字。
这部分标签是由人定义的特征,每个标签有明确的意义,标签体系是预定义的。
此外还有隐式语义构造,主要是topic特征和释义特征,其中topic特征是对于术语概率分布的描述,无明确意义;
而关键词特征会基于一些专有统一特征描述,无明确集合。
另外文本相似度特征也非常重要。
在头条,曾经用户反馈最大就是问题之一的为什么总推荐重复的内容。
这个弊病的难点在于,每个人对重复的定义不一样。
举个例子,有人觉得这篇讲到皇马和巴萨的文章,昨天已经看过类似以下内容,今天还说这两个队那就是重复。
但对于一个耳聋球迷而言,尤其是尤文的球迷,恨不得所有路透社都看一遍。
解决这一问题根据判断相似文章的主题、行文、主体等内容,根据这些特征做线上时策略。
同样,还有时空特征,分析内容的发生地点以及可读性。
比如武汉限行的事情给北京用户可能就没有意义。
最后还要权衡质量相关机构相关特征,判断内容是否低俗,色情,是否是软文,鸡汤?
上图是头条语义标签的特征和使用场景。
他们相互关系层级不同,要求不同。
分类的目标是覆盖逐次,希望每篇内容每段视频都有分类;
而实体保障体系要求精准,相同或内容要能明确区分究竟指代哪一个人或物,但不用覆盖很全。
范式体系则负责解决负责比较精确又属于抽象概念的语义。
这是我们最初的定义,实践中发现分类和概念在技术上能类别互换,后来统一用了一套技术架构。
目前,隐式语义特征已经可以委命很好的协助推荐,而语义标签需要持续标注,新名词新概念不断遭遇,标注也要不断迭代。
其做好的难度和耗损资源耗用要远大于隐式语义特征,那为什么还需要语义表情符号?
有一些产品上所的需要,比如需要有明确定义的分类内容和容易理解的文本标签体系。
语义标签的效果是检查一个公司NLP技术水平的卵蛤属。
今日头条推荐系统的线上分类采用典型的层次化文本分类算法。
最上面Root,下面第一层的分类是像微电子、体育、财经、娱乐,体育这样的大类,再下面细分足球、篮球、乒乓球、网球、田径、游泳…,足球再细分国际足球、中国足球,中国足球又细分河南建业、中超、国家队…,相比单独的分类器,利用层次化文本分类编程语言能更好地解决数据倾斜的问题。
有一些例外是,如果要提高召回,可以看到我们连接了一些飞线。
这套架构通用,但根据不同的问题可能性,每个元分类器可以异构,像有些分类SVM效果很好,有些要结合CNN,有些要结合RNN再处理一下。
上图是一个实体词识别算法的case。
基于分词结果和语素标注选取词性候选,期间可能需要有根据知识库做一些拼接,有些实体是几个词汇的组合,要确定哪几个词结合在一起能映射实体的描述。
如果结果映射实体还要通过词向量、topic分布甚至词频本身等去歧,最后计算一个相关性数据模型。
内容分析和用户标签是推荐系统的两大基石。
内容分析涉及到机器学习的内容多一些,相比而言,用户标签工程挑战元洋。
今日头条常用的用户标签包括用户感兴趣可选的类别和主题、关键词、来源、基于兴趣的用户聚类以及各种垂直兴趣特征(车型,体育球队,股票等)。
还有性别、年龄、地点等信息。
性别信息通过用户第三方社交账号登录得到。
年龄信息通常由模型估算,通过机型、阅读时间分布等预估。
常驻地点来自用户授权访问位置信息,在位置信息的基础上通过传统聚类的方法拿到常驻点。
常驻点结合其他信息,可以断定用户的工作地点、出差地点、旅游地点。
这些用户标签非常有助于推荐。
当然最简单的标签是浏览过的内容标签。
但这里涉及到一些数据处理策略。
主要包括:
消费者标签挖掘总体总体比较简单,主要前不久还是刚刚提到的工程挑战。
头条用户标签第一版是批量计算框架,流程比较简单,每天抽取每星期昨天的日活用户过去两个年的动作数据,在Hadoop集群上批量计算结果。
但问题在于,随着用户高速增长速度,好奇心兴趣仿真种类和其他批量处理任务都在增加,涉及到的求解量太大。
2021年,批量后处理任务先期几百万用户标签更新的Hadoop任务,当天完成已经开始勉强。
集群计算资源紧张很容易影响其它工作,集中写入分布式存储系统的压力也开始增大,包装并且用户兴趣标签更新延迟越来越高。
面对这些挑战。
2021年底今日头条上线面市了用户条形码Storm集群流式计算系统。
改成流式之后,只要有用户动作更新就更新标签,CPU代价比较小,可以节省80%的CPU时间,大大降低了系统资源开销。
同时,移动用户只需几十台机器就可以支撑每天数千万用户的兴趣模型更新,并且构造更新速度非常快,基本可以做到准实时。
这套系统内从上线一直使用至今。
当然,我们也发现并非所有用户标签都需要流式系统。
像用户的性别、年龄、常驻地点这些信息,不需要实时重复计算,就仍然保留daily更新。
上面介绍了延揽系统的整体性整体架构,那么清晰度如何评估推荐效果好不好?
有一句我认为非常有智慧的话,“一个事情没法评估就没法想法提高效率”。
对推荐系统内也是一样。
事实上,干扰很多因素都会影响推荐效果。
比如侯选集合变化,召回模块的改进或不断增加,推荐特征的增加,模型架构的改进在,算法参数的不断完善等等,不一一举例。
评估的内涵就在于,很多优化可能最终可能是效应器效果,并不是效果不断完善上线后效果就会改进。
全面的评估推荐系统,需要完备的评估体系、强大客户端的实验平台以及易用的经验分析工具。
所谓完备的就是并非单一指标衡量,不能只看点击率点击数或者停留时长等,需要综合评估。
过去几年我们一直在科腔,能不能综合尽可能多的指标合成唯一的更进一步评估指标,但仍在探索中。
目前,后上线还是要由各业务比较资深的同学组成评审委员会深入讨论我们决定。
很多公司算法做的不好,并非是工程师能力不够,而是需要一个强大可以的实验平台,还有便捷的实验分析工具,可以智能分析数据指标的置信度。
一个良好的评估体系建立需要遵循几个原则,首先中长线是兼顾短期指标与长期指标。
我在前公司负责电商方向的时候观察观察到,很多战法调整短期内用户觉得新鲜,但是长期看其实没有任何助益。
其次,分项要相配合用户指标和生态指标。
今日头条作为内容分创作平台,以下内容既要为内容创提供价值,让他当更有尊严的创作,也有义务跨平台,这两者要平衡。
还有广告主利益也要考虑,这是多番博弈和平衡的过程。
另外,要注意协同效应的影响。
实验中严格的流量隔离量很难做到,要注意外部效应。
强大的开放平台实验平台非常直接的好处是,当实验同时在线的实验十分多时,可以由电子商务平台自动分配流量,无需人工沟通,并且实验结束终了流量立即回收,提高管理效率。
这能能够帮助公司降低分析成本,扎实推进算法迭代效应,使整个系统的算法优化工作快速往前推进。
这是头条A/BTest实验子系统的基本原理。
首先我们会做在离线状态下作好用户分桶,然后线上分配实验流量,将桶里用户打上标签,分给实验组。
举个例子,开一个10%流量的实验,两个实验组各5%,一个5%是基线,策略和线上以大盘一样,另外一个是新的策略。
实验过程中用户动作会被搜集,基本上是准实时,每十五分钟都可以看到。
但因为小时数据有市场波动,通常是以天为时间节点来看。
动作收集整理后会有日志处理、分布式统计、写入数据库,非常便捷。
在这个系统下工程师只需要项目经理设置流量需求、实验时间、定义特殊过滤条件,自定义实验组ID。
系统可以自动生成:
实验数据对比、实验数据置信度、实验结论总结以及实验优化阐发建议。
当然,只有实验平台是远远不够的。
线上实验平台只能通过数据指标变化推测用户的变化,但数据指标和长期存在用户体验存在差异,很多指标不能全然量化。
很多改进虽然建模要通过人工分析,重大改进需要人工评估二次认定。
最后要介绍今日头条在文章内容安全上的一些举措。
才刚头条现在已经是国内最大的内容创作与分发凭条,必须越来越重视社会责任和行业领导者的责任。
如果1%的所推荐内容出现问题,就会产生较少的影响。
创办因此头条从创立伊始就把内容安全放在公司最高优先级队列。
成立之初,已经专门设有审核团队掌理专门针对内容安全。
当时研发所有客户端、后端、算法的同学一共才不到40人,新闻标题非常重视内容审核。
现在,今日头条的内容主要来源于两部分,商业化一是具有成熟内容技术储备的PGC平台
一是UGC用户内容,如问答、用户评论、微头条。
这两部分内容四需要通过统一的审核机制。
如果是供应量相对少的PGC内容,会直接进行系统性风险审核,没有问题会大范围推荐。
UGC风险因素内容需要经过一个风险模型的填充,有进入问题的会进入二次道德风险审核。
审核通过后,内容会被真正进行挑选。
这时如果收到一定量以上的评论或者举报负向反馈,还会再以回到复审环节,有问题直接下架。
整个机制相对而言比较完备,作为行业领先者,在内容安全上,今日头条一直用最高的标准要求自己。
分享内容识别技术主要鉴黄模型,谩骂模型以及低俗模型。
今日头条的低俗模型通过学习算法训练,样本库非常大,图片、文本同时分析。
这部分模型更注重召回六百人,精确度甚至可以牺牲一些。
谩骂模型的样本库同样超过百万,召回率高达95%+,准确率80%+。
如果用户经常出言不讳或者不当的,我们有一些惩罚协调机制。
泛低质识别涉及的个别情况非常多,像假新闻、黑稿、题文不符、标题党、内容质量低等等,这部分内容由机器理解是非常难的,需要大量反馈内部信息,主要包括其他样本信息比对。
目前低质模型的准确率和召回率都不是特别高,还需要结合工厂化复审,将阈值提高。
公司目前最终的召回已达到95%,这部分其实还有非常多的工作可以做。
头条人工智能实验室李航老师目前也在和密歇根大学共建科研项目,设立阴谋论识别平台。
少于所推荐是头条推荐系统的原理分享,希望未来得到更为多的建议,帮助我们更好改进组织工作。