当前位置:聪少自媒体网 > 今日头条 > 正文

今日头条推荐算法原理解析

2020-10-05 今日头条 聪少自媒体

Abstract:这篇是1月份头条首次公开的算法原理的笔记记录。

”你关心的,才是头条“

本质要解决的问题:用户、环境和资讯的匹配,即?

实质:推荐系统其实是一个拟合用户对内容满意度的函数,这个函数需要输入3个维度的变量。

? (内容):内容形式多元化,不同内容的特征也不同,需要考虑怎样提取不同内容类型的特征做好推荐

?(用户):怎样提取用户特征

?(环境):用户在不同场景下的信息偏好不同

结合这3个维度,推荐模型会给出1个预估:预测推荐内容在这一场景下对用户是否合适。

人的特征:兴趣,职业,年龄,性别,机型,用户行为

环境特征:地理位置,时间,网络,天气

文章特征:主题词,兴趣标签,热度,时效性,质量,作者来源,相似文章

广告&特型内容频控:特型内容比如问答卡片,其推荐目标不完全是让用户浏览,还要考虑吸引用户回答为社区贡献内容,这些内容和普通内容如何混排,怎样控制频控都需要考虑

低俗内容打压&频控

标题党、低质、恶心内容打压

重要新闻置顶&强插&加权

低级别账号内容降权

出于内容生态和社会责任的考量(算法无法完成,需要人工干预)

Logistic Regression

协同过滤

DNN:深度神经网络

Factorization Machine

GBDT

? 是经典的监督学习问题,以上5种算法均可实现

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

现在很流行将LR和DNN结合

今日头条旗下几款产品都在沿用同一套强大的算法推荐系统,但根据业务场景不同,模型架构会有所调整

相关性特征:即评估内容的属性与用户是否匹配,包括关键词匹配,分类匹配,主题匹配,来源匹配

环境特征:地理位置,时间

热度特征:全局热搜,分类热度,主题热度,关键词热度(热度信息在冷启动时非常有效)

协同特征:点击相似用户,兴趣分类相似用户,兴趣主题相似用户,兴趣词相似用户(部分程度上解决算法推荐内容窄化问题,通过用户行为分析不同用户间相似性,比如点击相似、兴趣分类相似、主题相似、兴趣词相似,甚至向量相似,从而扩展模型的探索能力)

基于storm集群实时处理样本数据:包括点击、展现、收藏、分享等动作类型

实时训练模型:省资源且反馈快,用户需要行为信息可以被模型快速捕捉并反馈至下一刷的推荐效果

每收集一定量用户数据就更新推荐模型

模型参数存储在高性能服务器集群,包含几百亿原始特征和数十亿向量特征

整体训练过程:

线上服务器记录实时特征导入文件队列导入集群拼接用户完整数据,构造样本根据最新样本,更新模型参数线上模型获取新知识

目的:使用召回策略高效从海量内容中筛选出一小部分符号要求的内容库(选出数千内容后进行大规模机器学习排序,再基于场景去重、多样性控制、加权,生成最终的推荐列表;线上实时产生并更新)

不可能所有内容都由模型评估(计算开销太大),利用一些召回策略可有效平衡计算成本和效果。

兴趣分类召回:根据用户兴趣标签拉取相应文章,并rank top结果

Tag: 显式兴趣标签 & 隐式兴趣标签

特征抽取:需要用户侧和内容侧的各种标签

召回策略:需要内容侧和用户侧的各种标签

内容分析和用户标签挖掘:搭建推荐系统的基石

内容分析:文本分析,图片分析,音视频分析

用户兴趣建模(user profile):比如,给喜欢阅读“人工智能”文章的用户打上“人工智能”标签

帮助内容推荐:“Apple”的内容推荐给关心“Apple”的用户,“Dota”的内容推荐给“Dota”的用户

生成频道内容:“Dota”的内容分进“Dota频道”

用户标签和内容标签的先后顺序:先有内容标签,然后用户阅读了内容,才给用户打上相应标签;

若出现推荐窄化,则可返回子频道阅读,再回主频道,推荐效果会更好。

子频道的重要性:子频道探索空间较小,更容易满足用户需求。

文本特征对内容推荐的重要性

无文本特征则推荐引擎无法工作:资讯类基本上是消费当天内容,无文本特征的话新内容冷启动会很困难

协同类特征无法解决文章冷启动问题(无文本特征的内容无法被定位推荐给何种用户)

粒度越细的 文本特征。冷启动能力越强(eg.Dota vs 游戏)

文本特征包括

(显式)语义标签类特征:由人预定义的具有明确意义的标签;要求覆盖全,希望每篇文章都找到其合适的分类,精确性要求不高

语义标签需要人持续标注,如网络热词;

有一些产品上的需要,比如频道需要有明确定义的分类内容和容易理解的文本标签体系;语义标签的效果是检测公司NLP水平的试金石。

(隐式)语义特征:topic特征和关键词特征(topic特征是对于词概率分布的描述,无明确含义;关键词特征是基于一些统一特征描述,无明确集合);不要求覆盖全,但要求精确性(只要求覆盖每个领域的热门文章、机构、产品等即可)

文本相似度特征:包括主题、行文、主体等(根据相似度特征可避免给用户推送重复内容)

时空特征:分析内容的发生地点和时效性(eg.武汉限行的新闻推给北京的用户就没有什么意义)

质量特征:判断内容是否低俗、色情、暴力,或者是否是软文、鸡汤等

语义标签:

特征使用场景分类体系user profile;过滤频道内容;推荐召回;推荐特征概念体系过滤频道内容;标签搜索;推荐召回(Like)实体体系过滤频道内容;标签搜索;推荐召回(Like)

每个层级粒度不一样,要求也有区别。

层次化:即大类分中类,中类分小类。

有几条“飞线”的作用/目的:?

实体词识别算法

流程:分词&词性标注——> 抽取候选——>去歧(通过词向量、topic分布、词频本身等)——> 计算相关性模型

兴趣特征:

感兴趣的类别和主题

感兴趣的关键词

感兴趣的来源

基于兴趣的用户聚类

各种垂直兴趣特征

身份特征

性别:通过第三方登录社交账号获知

年龄:模型预测、通过机型和阅读时间分布等预估

地域:用户授权访问位置信息,然后基于位置信息再通过传统聚类得到常驻点

行为特征:晚上看视频

过滤噪声: 过滤停留时间短的点击,打击标题党

惩罚热点:用户在热门文章上的动作做降权处理

时间衰减:随用户动作增加,老的特征权重会随时间衰减,新动作贡献的特征权重会更大

惩罚展现:如果一篇推荐给用户的文章未被点击,则相关特征会被惩罚(类别、关键词、来源)

考虑全局背景:考虑给定特征的人均点击比例(是不是相关内容推送比较多,以及相关的关闭和dislike信号等)

用户标签批量计算框架

每天抽取昨天日活用户

抽取这些用户过去2个月的动作数据

在Hadoop集群上批量计算结果

批量计算用户标签的问题

计算量太大:用户增长 & 兴趣种类增加 & 其他批量处理任务增加

导致:集群计算资源紧张,开销增加,用户兴趣标签更新延迟变高

用户标签流式计算框架【头条:2014年上线】

用storm集群实时处理用户动作数据

每收集一定量用户数据就重新计算一次用户兴趣模型

用大规模+高性能存储系统支持用户兴趣模型的读写

流式计算和批量计算混合使用

大部分user profile采用流式计算

各个粒度的兴趣标签

垂直领域profile

对时效性不敏感的user profile采用batch计算

性别、年龄

常驻地点

对推荐效果可能产生影响的因素

候选内容集合的变化

召回模块的改进和增加

推荐特征的增加

推荐系统架构的改进

算法参数的优化

规则策略的改变

评估的意义:很多优化最终可能是负向效果

评估需要

完备的评估体系:尝试将尽可能多的综合指标合成唯一的评估指标

强大的实验平台

易用的实验分析工具

评估需要注意

注重短期指标和长期指标

注重用户指标和生态指标

注重协同效应的影响,有时需要做彻底的统计隔离

如果1%的内容出现问题,就会产生较大的社会影响。因此头条从创立伊始就把内容安全放在公司最高优先级队列。

成立之初,已经专门设有审核团队负责内容安全。当时研发所有客户端、后端、算法的同学一共才不到40人,头条非常重视内容审核。

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

鉴黄模型:构建了千万张图片数据集,通过深度学习算法(Resnet)训练,召回率99%

低俗模型:对文本和图片同时分析,对文章和评论都做低俗识别;召回率90%+,准确率80%+(更注重召回率,可牺牲一定的准确率)

谩骂模型:净化评论氛围;样本库超过百万,召回率高达95%+,准确率80%+

低质模型:通过对评论做情感分析,结合用户其它的负反馈信息(举报、不感兴趣、踩)等信息,来解决很多语义上的低质问题,诸如题文不符、有头无尾、拼凑编造、黑稿谣言等。

目前低质模型的准确率为70%,召回率为60%,结合人工复审召回率能做到95%。

今日头条算法原理全

聪少爱学堂聪少
聪少爱学堂创始人,梅州市鹏鑫网络科技有限公司CEO,09年开始踏入互联网,10年互联网行业经验,资深自媒体人,自媒体优秀导师,咪挺微商团对营销引流顾问,业务包含:精准引流技术/代引流精准粉,专业小红书,知乎,微博代运营。
  • 38988文章总数
  • 1491135访问次数
  • 建站天数
  • 合作伙伴