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

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

1.头条推荐算法原理

1.1 系统概览

1.资讯推荐系统

”你关心的,才是头条“

本质要解决的问题:用户、环境和资讯的匹配,即$y=F(x{i},x{u},x_{c})$

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

  • $x_{i}$ (内容):内容形式多元化,不同内容的特征也不同,需要考虑怎样提取不同内容类型的特征做好推荐
  • $x_{u}$(用户):怎样提取用户特征
  • $x_{c}$(环境):用户在不同场景下的信息偏好不同

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

2.特征类型

  • 人的特征:兴趣,职业,年龄,性别,机型,用户行为
  • 环境特征:地理位置,时间,网络,天气
  • 文章特征:主题词,兴趣标签,热度,时效性,质量,作者来源,相似文章

3.如何引入无法直接衡量的目标?

  • 广告&特型内容频控:特型内容比如问答卡片,其推荐目标不完全是让用户浏览,还要考虑吸引用户回答为社区贡献内容,这些内容和普通内容如何混排,怎样控制频控都需要考虑
  • 低俗内容打压&频控
  • 标题党、低质、恶心内容打压
  • 重要新闻置顶&强插&加权
  • 低级别账号内容降权

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

4.典型推荐算法

  • Logistic Regression
  • 协同过滤
  • DNN:深度神经网络
  • Factorization Machine
  • GBDT

$y=F(x{i},x{u},x_{c})$ 是经典的监督学习问题,以上5种算法均可实现

5.推荐系统模型架构

  • 一个优秀的工业级推荐系统需要非常灵活的算法实验平台,可以支持多种算法组合,包括模型结构调整。因为很难有一套通用的模型架构适用于所有的推荐场景
  • 现在很流行将LR和DNN结合
  • 今日头条旗下几款产品都在沿用同一套强大的算法推荐系统,但根据业务场景不同,模型架构会有所调整

6.典型推荐特征

  • 相关性特征:即评估内容的属性与用户是否匹配,包括关键词匹配,分类匹配,主题匹配,来源匹配
  • 环境特征:地理位置,时间
  • 热度特征:全局热搜,分类热度,主题热度,关键词热度(热度信息在冷启动时非常有效)
  • 协同特征:点击相似用户,兴趣分类相似用户,兴趣主题相似用户,兴趣词相似用户(部分程度上解决算法推荐内容窄化问题,通过用户行为分析不同用户间相似性,比如点击相似、兴趣分类相似、主题相似、兴趣词相似,甚至向量相似,从而扩展模型的探索能力)

7.大规模推荐模型的在线训练

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

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

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

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

整体训练过程:

8.召回策略设计(match)

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

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

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

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

recall

典型召回策略架构

9.推荐系统的数据依赖

  • 特征抽取:需要用户侧和内容侧的各种标签
  • 召回策略:需要内容侧和用户侧的各种标签
  • 内容分析和用户标签挖掘:搭建推荐系统的基石

1.2 内容分析

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

1.文本分析在推荐系统的应用

  • 用户兴趣建模(user profile):比如,给喜欢阅读“人工智能”文章的用户打上“人工智能”标签
  • 帮助内容推荐:“Apple”的内容推荐给关心“Apple”的用户,“Dota”的内容推荐给“Dota”的用户
  • 生成频道内容:“Dota”的内容分进“Dota频道”

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

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

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

2.文本特征

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

  • 无文本特征则推荐引擎无法工作:资讯类基本上是消费当天内容,无文本特征的话新内容冷启动会很困难
  • 协同类特征无法解决文章冷启动问题(无文本特征的内容无法被定位推荐给何种用户)
  • 粒度越细的 文本特征。冷启动能力越强(eg.Dota vs 游戏)

文本特征包括

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

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

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

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

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

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

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

语义标签:

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

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

3.典型的层次化文本分类算法

典型的层次化文本分类算法

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

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

实体词识别算法

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

1.3 用户标签

1.头条用户标签

兴趣特征:

  • 感兴趣的类别和主题
  • 感兴趣的关键词
  • 感兴趣的来源
  • 基于兴趣的用户聚类
  • 各种垂直兴趣特征

身份特征

  • 性别:通过第三方登录社交账号获知
  • 年龄:模型预测、通过机型和阅读时间分布等预估
  • 地域:用户授权访问位置信息,然后基于位置信息再通过传统聚类得到常驻点

行为特征:晚上看视频

2.用户标签的主要处理策略

  • 过滤噪声: 过滤停留时间短的点击,打击标题党
  • 惩罚热点:用户在热门文章上的动作做降权处理
  • 时间衰减:随用户动作增加,老的特征权重会随时间衰减,新动作贡献的特征权重会更大
  • 惩罚展现:如果一篇推荐给用户的文章未被点击,则相关特征会被惩罚(类别、关键词、来源)
  • 考虑全局背景:考虑给定特征的人均点击比例(是不是相关内容推送比较多,以及相关的关闭和dislike信号等)

3.用户标签计算

用户标签批量计算框架

  • 每天抽取昨天日活用户
  • 抽取这些用户过去2个月的动作数据
  • 在Hadoop集群上批量计算结果

批量计算用户标签的问题

  • 计算量太大:用户增长 & 兴趣种类增加 & 其他批量处理任务增加
  • 导致:集群计算资源紧张,开销增加,用户兴趣标签更新延迟变高

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

  • 用storm集群实时处理用户动作数据
  • 每收集一定量用户数据就重新计算一次用户兴趣模型
  • 用大规模+高性能存储系统支持用户兴趣模型的读写

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

  • 大部分user profile采用流式计算
    • 各个粒度的兴趣标签
    • 垂直领域profile
  • 对时效性不敏感的user profile采用batch计算
    • 性别、年龄
    • 常驻地点

1.4 评估分析

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

  • 候选内容集合的变化
  • 召回模块的改进和增加
  • 推荐特征的增加
  • 推荐系统架构的改进
  • 算法参数的优化
  • 规则策略的改变

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

评估需要

  • 完备的评估体系:尝试将尽可能多的综合指标合成唯一的评估指标
  • 强大的实验平台
  • 易用的实验分析工具

评估需要注意

  • 注重短期指标和长期指标
  • 注重用户指标和生态指标
  • 注重协同效应的影响,有时需要做彻底的统计隔离

1.5 内容安全

1.头条风险评估流程

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

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

头条的内容安全

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

2.风险内容识别技术

  • 鉴黄模型:构建了千万张图片数据集,通过深度学习算法(Resnet)训练,召回率99%
  • 低俗模型:对文本和图片同时分析,对文章和评论都做低俗识别;召回率90%+,准确率80%+(更注重召回率,可牺牲一定的准确率)
  • 谩骂模型:净化评论氛围;样本库超过百万,召回率高达95%+,准确率80%+

3.泛低质内容识别技术

  • 低质模型:通过对评论做情感分析,结合用户其它的负反馈信息(举报、不感兴趣、踩)等信息,来解决很多语义上的低质问题,诸如题文不符、有头无尾、拼凑编造、黑稿谣言等。
  • 目前低质模型的准确率为70%,召回率为60%,结合人工复审召回率能做到95%。

Reference

今日头条算法原理全&version=12020810&nettype=WIFI&lang=zh_CN&fontScale=100&pass_ticket=jvoWvMRVU%2BYHiDejcgEmd1GUFu2Q2n1fDkx3UkGD76QJZlqopG9SiXfMtvAA96e8)

2.头条产品相关

做最懂用户的信息平台

  • 算法比编辑更懂用户,甚至比用户自己更懂他们真正想要什么

    以前把关人是编辑,现在是算法,此即规模化的产品思维。

  • 提升1个编辑的写作水平很难,但提升算法的推荐效率却是一直在进行

盈利:精准需求广告

  • 广告信息化:信息流广告
  • 分发自动化:今日头条可根据大数据给同一个广告做几十版素材,真正做到不同的人给不同的需求
  • 信息视频化:短视频广告

产品思路

  • 推荐引擎
  • 稳固内容生产
  • 垂直内容服务化
  • 内容大拓展:综合信息平台,内容类型、内容形态拓展
  • 社交化

推荐冷启动:

通过对用户微博账号的分析建立一个“兴趣图谱”,即根据用户在微博上发布的内容及其所属类别、用户自标签、社交关系、社交行为、参与的群组、机型、使用时间等来数据源来推断出用户的兴趣点有哪些。社交关系、社交行为即用户和用户之间的交流状况,可以根据二者间的共同好友数、相互评论熟、@数等来做度量。

广泛的信息分发平台:

通过人工智能识别内容最大的难点在于攻克语义的复杂性,涉及到对逻辑推理和因果关系的上下文分析。通俗理解就是,人工智能可以鉴别色情内容,但在区别色情、性感、艺术等照片上还存在很大难度。

Thanks!