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

1.1 系统概览

“你关心的,才是头条”

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

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

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

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

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

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

  • 低俗内容打压&频控
  • 标题党、低质、恶心内容打压
  • 重要新闻置顶&强插&加权
  • 低级别账号内容降权

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

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

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

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

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

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

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

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

  • 每收集一定量用户数据就更新推荐模型
  • 模型参数存储在高性能服务器集群,包含几百亿原始特征和数十亿向量特征

整体训练过程:

线上服务器记录实时特征导入文件队列导入集群拼接用户完整数据,构造样本

根据最新样本,更新模型参数线上模型获取新知识

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

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

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

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

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

1.2 内容分析

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

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

用户标签和内容标签的先后顺序:先有内容标签,然后用户阅读了内容,才给用户打上相应标签;
若出现推荐窄化,则可返回子频道阅读,再回主频道,推荐效果会更好。
子频道的重要性:子频道探索空间较小,更容易满足用户需求。

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

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

文本特征包括

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

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

  • (隐式)语义特征:topic特征和关键词特征(topic特征是对于词概率分布的描述,无明确含义;关键词特征是基于一些统一特征描述,无明确集合);不要求覆盖全,但要求精确性(只要求覆盖每个领域的热门文章、机构、产品等即可)
  • 文本相似度特征:包括主题、行文、主体等(根据相似度特征可避免给用户推送重复内容)
  • 时空特征:分析内容的发生地点和时效性(eg.武汉限行的新闻推给北京的用户就没有什么意义)
  • 质量特征:判断内容是否低俗、色情、暴力,或者是否是软文、鸡汤等

语义标签:

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

层次化:即大类分中类,中类分小类。
有几条”飞线”的作用/目的:?

实体词识别算法

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

1.3 用户标签

兴趣特征:

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

身份特征

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

行为特征:晚上看视频

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

用户标签批量计算框架

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

批量计算用户标签的问题

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

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

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

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

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

1.4 评估分析

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

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

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

评估需要

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

评估需要注意

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

1.5 内容安全

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

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

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

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

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

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

REFERENCE

Original: https://blog.csdn.net/qq_40006058/article/details/83506706
Author: 十三吖
Title: 今日头条推荐算法原理解析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/8031/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部