无来

不管你来还是不来
我都在这里,夜夜点亮
不是为了守候
只是为了做好我自己

0%

今日头条、抖音推荐算法原理全文详解--笔记

原文: (今日头条、抖音推荐算法原理全文详解) https://mp.weixin.qq.com/s/e0KgNOn3vIKn-nc1l-XBqw

1、系统概览

1.1)推荐系统

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

  • 内容特征:提取不同内容类型的特征做好推荐。
  • 用户特征:兴趣标签,职业、年龄、性别等。
  • 环境特征:在工作场合、通勤、旅游等不同的场景,信息偏好有所偏移。推荐系统匹配函数

1.2)推荐系统的目标

  • 可量化目标:点击率、阅读时间、点赞、评论、转发包括点赞
  • 无法直接衡量的目标
    • 广告&特型内容频控
    • 低俗内容打压&频控
    • 标题党,低质,恶心内容打压
    • 重要新闻置顶&强插&加权
    • 低级别账号内容降权

1.3)典型推荐算法

  • 协同过滤模型
  • 监督学习算法Logistic Regression模型
  • 基于深度学习的模型
  • Factorization Machine
  • GBDT

注:需要非常灵活的算法实验平台,可以支持多种算法组合,包括模型结构调整。

1.4)推荐特征

  • 第一类是相关性特征

评估内容的属性和与用户是否匹配.显性的匹配包括关键词匹配、分类匹配、来源匹配、主题匹配等.隐性匹配从用户向量与内容向量的距离可以得出,如FM模型。

  • 第二类是环境特征

包括地理位置、时间。这些既是bias特征,也能以此构建一些匹配特征。

  • 第三类是热度特征

包括全局热度、分类热度,主题热度,以及关键词热度等。内容热度信息在大的推荐系统特别在用户冷启动的时候非常有效。

  • 第四类是协同特征

它可以在部分程度上帮助解决所谓算法越推越窄的问题。通过用户行为分析不同用户间相似性,比如点击相似、兴趣分类相似、主题相似、兴趣词相似,甚至向量相似,从而扩展模型的探索能力。

1.5)模型训练

  1. 线上服务器记录实时特征
  2. 导入到Kafka文件队列中
  3. 客户端回传推荐的label构造训练样本
  4. 根据最新样本进行在线训练更新模型参数
  5. 线上模型得到更新

1.6)召回策略

  • 为什么需要召回策略?
    • 内容量非常大,加上小视频内容有千万级别,推荐系统不可能所有内容全部由模型预估。
    • 召回策略,每次推荐时从海量内容中筛选出千级别的内容库
    • 召回策略最重要的要求是性能要极致,一般超时不能超过50毫秒
  • 召回策略的方案
    • 离线维护一个倒排。key可以是分类,topic,实体,来源等。
    • 排序考虑热度、新鲜度、动作等
    • 线上召回可以迅速从倒排中根据用户兴趣标签对内容做截断,高效的从很大的内容库中筛选比较靠谱的一小部分内容

1.7)推荐系统的数据依赖

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

2、内容分析

2.1 文本分析

  • 推荐系统的应用
    • 用户兴趣建模(user profile): 如:给喜欢阅读”互联网”文章打上“互联网”标签。
    • 帮助内容推荐: “魅族”的内容推荐给关心“魅族”的用户
    • 生成频道内容: “德甲”的内容进“德甲频道”
  • 今日头条抽取的文本特征
    • 语义标签类特征
      • 显式语义特征: 为文章打上语义标签。这部分标签是由人定义的特征,每个标签有明确的意义,标签体系是预定义的。
      • 隐式语义特征:主要是topic特征和关键词特征,其中topic特征是对于词概率分布的描述,无明确意义;而关键词特征会基于一些统一特征描述,无明确集合。
    • 文本相似度特征: 用户反馈最大的问题之一就是为什么总推荐重复的内容。这个问题的难点在于,每个人对重复的定义不一样。
    • 质量相关特征: 判断内容是否低俗,色情,是否是软文,鸡汤?

2.2 头条语义标签的 特征 & 使用场景

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

2.3 标签分层

  • 每个层级粒度不一样,要求也有区别
  • 分类体系要求覆盖全,希望任何一篇文章,总能找到合适的分类,精确性要求不高
  • 实体体系不要求覆盖全,只要覆盖每个领域人们的人物、机构,作品,产品即可
  • 概念体系负责表达比较精确,但是有属于抽象概念的语义,也不要求覆盖全

分类的目标是覆盖全面,希望每篇内容每段视频都有分类;而实体体系要求精准,相同名字或内容要能明确区分究竟指代哪一个人或物,但不用覆盖很全。

概念体系则负责解决比较精确又属于抽象概念的语义。

2.4 为什么要语义标签

优点:

  • 隐式语义特征已经可以很好的帮助推荐
  • 语义标签做好的难度和资源投入远大于隐式语义特征
    缺点:
  • 频道,兴趣表达等重要产品功能需要有一个有明确定义,容易理解的文本标签体系。
  • 语义标签的效果是检查一个公司NLP技术水平的试金石

语义标签的效果是检查一个公司NLP技术水平的试金石。

  • 元分类器类型: SVM、CNN、RNN

2.2 图片分析

2.3 视频分析

3、用户标签

3.1 兴趣特征

  • 感兴趣的类别和主题
  • 感兴趣的关键词
  • 感兴趣的来源
  • 基于感兴趣额的用户聚类
  • 各种垂直兴趣特征(车型,体育球队,股票等)

3.2 身份特征

  • 性别

性别信息通过用户第三方社交账号登录得到

  • 年龄

年龄信息通常由模型预测,通过机型、阅读时间分布等预估。

  • 常驻点

常驻地点来自用户授权访问位置信息,在位置信息的基础上通过传统聚类的方法拿到常驻点。
常驻点结合其他信息,可以推测用户的工作地点、出差地点、旅游地点。

3.3 行为特征

  • 晚上才看电视
  • 打开手机时间

3.4 对浏览内容标签进行数据处理策略

  • 过滤噪声。通过停留时间短的点击,过滤标题党。
  • 热点惩罚。对用户在一些热门文章(如前段时间PG One的新闻)上的动作做降权处理。理论上,传播范围较大的内容,置信度会下降。
  • 时间衰减。用户兴趣会发生偏移,因此策略更偏向新的用户行为。因此,随着用户动作的增加,老的特征权重会随时间衰减,新动作贡献的特征权重会更大。
  • 惩罚展现。如果一篇推荐给用户的文章没有被点击,相关特征(类别,关键词,来源)权重会被惩罚。当然同时,也要考虑全局背景,是不是相关内容推送比较多,以及相关的关闭和dislike信号等。

3.5 用户标签挖掘

  • 第一版: 用户标签批量计算框架

    1. Scribe收集原始日志
    2. 导入Kafka文件队列
    3. 导入Hadoop集群
    4. MapReduce Job批量计算
    5. 写入高性能分布式存储系统
    6. 线上读取高性能分布式存储系统
  • 第二版: 用户标签流式计算框架

    1. Scribe收集原始日志
    2. 导入Kafka文件队列
    3. 导入Storm集群
    4. 从高性能存储系统读取base
    5. 基于动作bath更新用户模型
    6. 线上直接读取高性能存储系统
  • 流式计算和批量计算混合使用

    • 大部分user profile采用流式计算

      • 各个粒度的兴趣标签
      • 垂直领域profile
    • 对时效性不敏感的user profile采用Batch计算

      • 性别,年龄
      • 常驻地点

4、评估更新

一个事情没法评估就没法优化

4.1 对推荐系统产生影响的因数

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

4.2 评估系统要求

  • 完备的评估系统
  • 强大的实验平台
  • 易用的实验分析工具

4.3 推荐系统评估需要注意的问题

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

4.4 强大实验平台的优点

  • 同时在线的实验多: 每天数百个
  • 高效管理和分配实验流量
  • 降低实验,分析成本,提高算法迭代效率

4.5 人工抽样评估分析

  • 线上实验平台只能通过指标变化推测用户体验
  • 数据指标和用户体验存在差异
  • 重大改进需要人工评估二次确认
  • 头条利用内部和外包团队进行例行的人工抽样评估

5 内容安全

5.1 头条内容安全机制

内容安全机制

5.2 分享内容识别技术

  • 鉴黄模型
  • 谩骂模型
  • 低俗模型
1
注重召回率,准确率甚至可以牺牲一些。谩骂模型的样本库同样超过百万,召回率高达95%+,准确率80%+。如果用户经常出言不讳或者不当的评论,我们有一些惩罚机制。

5.3 泛低质内容识别技术

1
像假新闻、黑稿、题文不符、标题党、内容质量低等等,这部分内容由机器理解是非常难的,需要大量反馈信息,包括其他样本信息比对
  • 低质模型是通过对评论做情感分析,结合用户其它的负反馈信息(举报、不感兴趣、踩)等信息,来解决很多语义上的低质问题,诸如题文不符、有头无尾、拼凑编造、黒稿谣言等
  • 目前低质模型的准确率为70%,召回率为60%,结合人工复审召回率能做到95%