推荐算法研究
推荐理论概述
理解
如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,节约大量用户与内容和服务连接的时间和成本。
如果把推荐系统简单拆开来看,推荐系统主要是由数据、算法、架构三个方面组成。
- 数据提供了信息。数据储存了信息,包括用户与内容的属性,用户的行为偏好例如对新闻的点击、玩过的英雄、购买的物品等等。这些数据特征非常关键,甚至可以说它们决定了一个算法的上限。
- 算法提供了逻辑。数据通过不断的积累,存储了巨量的信息。在巨大的数据量与数据维度下,人已经无法通过人工策略进行分析干预,因此需要基于一套复杂的信息处理逻辑,基于大量的数据学习返回推荐的内容或服务。
- 架构解放了双手。架构保证整个推荐自动化、实时性的运行。架构包含了接收用户请求,收集、处理,存储用户数据,推荐算法计算,返回推荐结果等。一个推荐系统的实时性要求越高、访问量越大,那么这个推荐系统的架构会越复杂。
框架
推荐的框架主要有以下几个模块
- 协议调度:请求的发送和结果的回传。在请求中,用户会发送自己的ID,地理位置等信息。结果回传中会返回推荐系统给用户推荐的结果。
- 推荐算法:算法按照一定的逻辑为用户产生最终的推荐结果,不同的推荐算法基于不同的逻辑与数据运算过程。
- 消息队列:数据的上报与处理。根据用户的ID,拉取例如用户的性别、之前的点击、收藏等用户信息。而用户在APP中产生的新行为,例如新的点击会储存在存储单元里面。
- 存储单元:不同的数据类型和用途会储存在不同的存储单元中,例如内容标签与内容的索引存储在mysql里,实时性数据存储在redis里,需要进行数据统计的大量离线数据存储在hivesql里。
用户画像
用户标签
**标签是我们对多维事物的降维理解,抽象出事物更具有代表性的特点。**我们永远无法完全的了解一个人,所以我们只能够通过一个一个标签的来刻画他,所有的标签最终会构建为一个立体的画像,一个详尽的用户画像可以帮助我们更好的理解用户。
用户画像的分类
原始数据
原始数据一共包含四个方面(以游戏内容推荐为例)。
- **用户数据:**例如用户的性别、年龄、渠道、注册时间、手机机型等。
- **内容数据:**例如游戏的品类,对游戏描述、评论的爬虫之后得到的关键词、标签等。
- **用户与内容的交互:**基于用户的行为,了解了什么样的用户喜欢什么样的游戏品类、关键词、标签等。
- **外部数据:**单一的产品只能描述用户的某一类喜好,外部数据标签可以让用户更加的立体。
事实标签
事实标签可以分为静态画像和动态画像。
- **静态画像:**用户独立于产品场景之外的属性,例如用户的自然属性,这类信息比较稳定,具有统计性意义。
- **动态画像:**用户在场景中所产生的显示行为或隐式行为:
- 显示行为:用户明确的表达了自己的喜好,例如点赞、分享、评分、评论(可以通过NLP来判断情感的正负向)等。
- 隐式行为:用户没有明确表达自己的喜好,但用户会用实际行动,例如点击、停留时长等隐性的行为表达自己的喜好。隐式行为的权重小于显性行为,但是在实际业务中,用户的显示行为都比较稀疏,所以需要依赖大量的隐式行为。
模型标签
模型标签是由事实标签通过加权计算或是聚类分析所得。通过一层加工处理后,标签所包含的信息量得到提升,在推荐过程中效果更好。
- **聚类分析:**例如按照用户的活跃度进行聚类,将用户分为高活跃-中活跃-低活跃三类。
- **加权计算:**根据用户的行为将用户的标签加权计算,得到每一个标签的分数,用于之后推荐算法的计算。
内容画像
内容画像
推荐内容与场景通常可以分为以下几类,根据所推荐的内容不同,其内容画像的处理方式也不同。
- 文章推荐:例如新闻内容推荐,需要利用NLP的技术对文章的标题,正文等提取关键词、标签、分类等。
- 视频推荐:除了对于分类、标题关键词的抓取外,还依赖于图片与视频处理技术,例如识别内容标签、内容相似性等。
环境变量
内容画像外,环境画像也非常重要。例如在短视频的推荐场景中,用户在看到一条视频所处的时间、地点以及当时所浏览的前后内容、当天已浏览时间等也是非常重要的信息,但由于环境变量数据量较大、类型较多,对推荐架构以及工程实现能力的要求也较高。
算法构建理论
推荐算法构建流程
推荐算法其实本质上是一种信息处理逻辑,当获取了用户与内容的信息之后,按照一定的逻辑处理信息后,产生推荐结果。热度排行榜就是最简单的一种推荐方法,它依赖的逻辑就是当一个内容被大多数用户喜欢,那大概率其他用户也会喜欢。但是基于粗放的推荐往往会不够精确,想要挖掘用户个性化的,小众化的兴趣,需要制定复杂的规则运算逻辑,由机器完成。
推荐算法主要分为以下几步:
- 召回:当用户以及内容量比较大的时候,往往先通过召回策略,将百万量级的内容先缩小到百量级。
- 过滤:对于内容不可重复消费的领域,例如实时性比较强的新闻等,在用户已经曝光和点击后不会再推送到用户面前。
- 精排:对于召回并过滤后的内容进行排序,将百量级的内容按照顺序推送。
- 混排:为避免内容越推越窄,将精排后的推荐结果进行一定修改,例如控制某一类型的频次,EE问题处理等。
- 强规则:根据业务规则进行修改,例如在活动时将某些文章置顶以及热点内容的强插等。
召回
召回层与业务场景的结合
除了常规召回方式外,召回可以更多的与实际业务目标与场景结合,例如在飞猪业务场景中,其存在几类行业特点:1. 订单类型较多(涉及到交通、酒店、景区、周边游),且业务之间具有一定的相关性和搭配性。2. 用户存在周期性复购情况。3. 用户订单的稀疏性较大。针对这些问题,其召回层会结合以下解决方案:
1. 相关性&搭配性问题
- 协同往往只能召回相似的商品,而考虑到推荐目标的替代性和互补性,更多挖掘反应搭配关系的行为集合。
- 数据稀疏且噪音较大,仅仅基于数据构建图,bad case较多,所以需要利用行业的知识图谱。
- 结合行为序列:行为序列挖掘->构件图(通过知识图谱来增加约束)->序列采样(降低噪音,抑制热门问题)->训练。
2. 周期性复购问题
- 部分用户存在固定的购买模式。利用Poission-Gamma分布的统计建模。计算在某个时间点,购买某个商品的概率,在正确的时间点给用户推出合适的复购商品。
粗排策略
- 粗排层目的:为后续链路提供集合。
- 粗排层特点:打分量高于精排,但有严格的延迟约束。
- 粗排层方法:主要分为两种路线
- 集合选择:以集合为建模目标,选出满足后链路需求集合。其可控性较弱,算力消耗较小。(多通道、listwise、序列生成)
- 精准预估:以值为建模目标,直接对系统目标进行值预估。可控性较高,算力消耗较大。(pointwise)
- **粗排层发展历史:**质量分->LR等传统机器学习->向量内内卷积(双塔模型)->COLD全链路(阿里)
精排策略
精排目标
- 精排层多目标融合原则
- 用户的效用需要通过多个指标反馈:例如用户对视频的喜好,会通过停留时长、完播、点赞等多个动作反应。
- 产品的目标需要通过多个指标衡量:例如短视频产品不仅需要考虑用户效用,也需要考虑作者效用、平台目标与生态影响。
- 精排层多目标融合实例
以短视频行业为例,推荐目标主要由几个方面组成:
- 对用户价值。
- 对作者价值,包括给作者的流量、互动、收入等。
- 对内容生态价值,包括品牌价值、内容安全、平台收入。
- 间接价值,非直接由视频产生,例如用户的评论提醒,会改善用户的留存率。
精排层多目标融合方法
改变样本权重/多模型分数融合:(1)改变样本权重:先通过权重构造目标值,再进行模型拟合。(2)多模型分数融合:先进行模型拟合在进行加权融合。缺点:依赖规则设计,依赖人工调参,且经常面临以A目标换取B目标的问题。
精排模型分类
精排模型基本原理
精排模型优缺点
逻辑回归——最简单Model-based模型
原理介绍
概念:逻辑回归通过sigmoid函数,将线性回归变为可以解决二分类的方法,它可用于估计某种事物发生的可能性。
计算公式**:**Y根据目标设计:例如是否点击(是:1,否:0,最后预测一个0-1之间的点击概率);X根据特征工程设计:这一块就涉及到了前面提到的用户画像与内容画像,所有的画像都是对样本的特征的刻画。特征工程需要根据业务场景选择合适的特征并进行一定的加工;W由模型训练得到。
构建流程
基于我们的目标,需要进行样本的收集(样本是对客观世界的具体描述),通过对已收集到的样本进行特征构造,并对其进行训练,最终求出模型参数的具体数值。
- 建立样本
逻辑回归为有监督模型,因此需要有已经分类好的样本。正样本:用户曝光过某物品并点击。负样本:用户曝光过某物品并且没有点击。如果正负样本差距过大,可以将负样本随机抽样后与正样本一起训练。或只保留有点击行为的用户作为样本,将曝光但是没有被点击的物品作为负样本。
- 特征工程
特征工程是对收集到的样本进行更加深度的特征刻画。虽然作为算法人员与用户接触较少,但对身边使用该产品的同学,进行深入的观察与访谈,了解他们对于所推荐内容的反馈,往往可以得到意料之外的特征开发方向。主要分为以下几个维度。
基础数据 趋势数据 时间数据 交叉数据
不同交叉方法得到的不同的参数数量
深度学习——当前最新发展方向
1. 深度学习基础 Embedding+MLP 模型
Embedding+MLP 模型结构:微软在 2016 年提出 Deep Crossing,用于广告推荐中。
从下到上可以分为 5 层,分别是 Feature 层、Embedding 层、Stacking 层、MLP 层和 Scoring 层。对
于类别特征,先利用 Embedding 层进行特征稠密化,再利用 Stacking 层连接其他特征,输入 MLP (多层神经元网络),最后用 Scoring 层预估结果。
2.深度学习主要特点
(1)embedding技术在召回层的应用:embedding,即用一个数值向量来表示一个对象的方法,对于处理稀疏特征有比较重要的应用,其将稀疏高维特征向量转换为稠密低维特征向量,可以融合大量价值信息。其主要方法有基于文本的Word2Vec, 基于物品的Item2Vec, 基于图结构(社交关系、知识图谱、行为关系等)的 deep walk、Node2Vec(增加了随机过程中跳转概率的倾向性)等。
(2)深度学习模型在排序层的应用:深度学习模型以MLP为基础结构,embedding+MLP是最经典结合,google在此基础上提出的Wide&Deep在业界得到了广泛的应用。
3. 目前主要的衍化方向
- 改变神经网络的复杂程度。
- 改变特征交叉方式。
- 多种模型组合应用。
- 与其他领域的结合,例如自然语言处理,图像处理,强化领域等。
来源:王哲-深度学习推荐系统实战
4. 深度学习模型举例
Wide&Deep模型
2016年谷歌发表的Wide&Deep模型与YouTube深度学习推荐模型,引领推荐算法走向了对深度学习的应用。
相比传统机器学习推荐模型,深度学习具有更加复杂的模型结构,而使其具备了理论上拟合任何函数的能力。同时深度学习的结构灵活性可以让其模拟出用户兴趣的变迁过程。左侧传统推荐模型与右侧深度学习推荐模型对比,其模型复杂度增加:
重排层策略
EE问题
MBA问题:所有的选择都要同时考虑寻找最优解以及累计收益最大的问题。
**解决方案:**Bandit算法,衡量臂的平均收益,收益越大越容易被选择,以及臂的方差,方差越大越容易被选择。
常用算法:汤普森采样算法,UCB算法,Epsilon贪婪算法,LinUCB算法,与协同过滤结合的COFIBA。
多样性问题
- 多样性问题
- 多样性过差:用户探索不够,兴趣过窄,系统泛化能力以及可持续性变差;流量过于集中在少数item上,系统缺乏活力。
- 多样性过强:用户兴趣聚焦程度弱;item流量分配平均,对优质item激励不足。
- 多样性解法:1. 根据内容的相关性以及相似性进行打散。2. 保持用户以及内容探索比例。3. 人工规则控制。
上下文问题
pointwise排序中,仅考虑item与user之间的相关性,而较少考虑前序item对后续item的影响,主要的解决方案有两种。
listwise排序
- Pointwise考虑单点目标/Pairwise考虑一个pair/Listwise考虑整个集合的指标。
- Listwise 对视频组合进行transformer建模,刻画视频间的相互影响,前序视频对后续视频观看有影响,前后组合决定总收益。
强化学习
考虑序列决策,从前向后依次贪心的选择动作概率最大的视频。
Reward = f(相关性,多样性,约束)。
冷启动
用户冷启
其主要几个方向为:加强特征与信息的补充、EE问题平衡、实时化加强。
信息补充
- side information 补充:例如商品类目、领域知识图谱、第三方公司数据的补充。
- Cross domain:利用共同的用户在不同地方的数据进行冷启。
- 用户填写兴趣。
- 元学习:利用多任务间具有泛化能力的模型,进行少样本学习(few-shot learning)。
快速收敛
- 主动学习、在线学习、强化学习:快速收集数据,且反馈到特征与模型中。
- 增强模型实时化以及收敛能力。
内容冷启
以短视频推荐为例,平台常常采用大小池逻辑,对内容进行不同流量的探索,并根据实际的反馈数据来决定内容可以进入的推荐范围。其中表现优质的内容将不断的进入更大的流量池中,最终进入推荐池,形成精品召回池。
当前发展
因果与推荐结合
- 推荐系统中的特征向量和用户最终的反馈(比如点击、点赞等)之间的关系是由因果关系和非因果关系共同组成。因果关系是反应物品被用户偏好的原因,非因果关系仅反应用户和物品之间的统计相关性,比如曝光模式、公众观念、展示位置等。而现有推荐算法缺乏对这两种关系的区分。
- A Model-Agnostic Causal Learning Framework for Recommendation using Search Data。论文提出了一个基于工具变量的模型无关的因果学习框架 IV4Rec,联合考虑了搜索场景和推荐场景下的用户行为,利用搜索数据辅助推荐模型。即将用户的搜索行为作为工具变量,来帮助分解原本推荐中 特征( treatments),使用深度神经网络将分离的两个部分结合起来,来完成推荐任务。
序列/会话推荐
- 推荐系统倾向于学习每个用户对物品的长期和静态的偏好,但一个用户的所有的历史交互行为对他当前的偏好并非同等重要,用户的短期偏好和跟时间相关的上下文场景所包含的信息更加实时也更加灵敏。基于会话的推荐系统从一个用户的最近产生的会话中捕获他的短期偏好,以及利用会话和会话间的偏好变化,进行更精准和实时推荐。
- TKDE 2022 | Disentangled Graph Neural Networks for Session-based Recommendation。用户选择某个物品的意图是由该物品的某些因素驱动的,本文的方法建模了这种细粒度的的兴趣来生成高质量的会话嵌入。
图神经网络与推荐结合
- 大部分的信息本质上都是图结构,GNN能够自然地整合节点属性信息和拓扑结构信息,来减少特征处理中的信息折损。
- ICDE 2021 | Multi-Behavior Enhanced Recommendation with Cross-Interaction Collaborative Relation Modeling。利用图神经网络建模Multi-Behavior 推荐。
知识图谱与推荐结合
- 先验的知识图谱可以对推荐系统进行很好的信息补充和信息约束,特别是在数据较为稀疏的场景下。(1)知识图谱中的结构化知识可以在冷启动场景中提供更多的信息。(2)对于数据稀疏,方差过大的情况下,增加有效约束。(3)先验知识纠正数据偏差。(4)增强推荐算法可解释性。
- Conditional Graph Attention Networks for Distilling and Refining Knowledge Graphs in Recommendation 由于知识图谱的泛化性和规模性,大多数知识关系对目标用户-物品预测没有帮助。为了利用知识图谱来捕获推荐系统中特定目标的知识关系,需要对知识图谱进行提取以保留有用信息,并对知识进行提炼以捕获更准确的用户偏好。这篇文章提出了Knowledge-aware Conditional Attention Networks(KGAN)网络,对于给定target(即用户-物品对),基于知识感知的注意力自动从全局的知识图谱中提取出特定于target的子图。通过在子图上应用条件注意力机制进行邻居聚合,以此实现对知识图谱的细化,进而获得特定target的节点表示。
强化学习
- 与传统推荐算法不同,其主要描述和解决智能体在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。
- CIKM 2021 | Supervised Advantage Actor-Critic for Recommender Systems。现有的RL+(self-)supervised sequential learning方式由于缺乏负奖励信号,q值的估计往往偏向于正值。此外,q值还严重依赖于序列的特定时间戳。本文提出负采样策略来训练RL分量,并将其与有监督序列学习相结合。
多模态内容推荐
- 短视频推荐业务中,涉及的上下文信息包含图像,语音,文本,社交网络,知识图谱,将不同的上下文特征进行融合。
- Arxiv 2021 | MultiHead MultiModal Deep Interest Recommendation Network。在DIN模型的基础上,增加了多头多模态模块(MultiHead MultiModal),丰富了模型可以使用的特征集,同时增强了模型的交叉组合和拟合能力。
对话系统
主要分为两种方向(1)通过NLP的方式来构建对话机器人。(2)交互式的意图挖掘,利用用户少量交互行为,快速得到用户偏好以完成推荐任务。
算法衡量标准
指标选择
硬指标:对于大多数的平台而言,推荐系统最重要的作用是提升一些“硬指标”。例如新闻推荐中的点击率,但是如果单纯以点击率提升为目标,最后容易成为一些低俗内容,“标题党”的天下。
软指标:除了“硬指标”,推荐系统还需要很多“软指标”以及“反向指标”来衡量除了点击等之外的价值。好的推荐系统能够扩展用户的视野,发现那些他们感兴趣,但是不会主动获取的内容。同时推荐系统还可以帮助平台挖掘被埋没的优质长尾内容,介绍给感兴趣的用户。
推荐效果
如何去获得推荐效果。可以分为离线实验、用户调查、在线实验三种方法。
**离线效果:**通过反复在数据样本进行实验来获得算法的效果。通常这种方法比较简单、明确。但是由于数据是离线的,基于过去的历史数据,不能够真实的反应线上效果。同时需要通过时间窗口的滚动来保证模型的客观性和普适性。
**白板测试:**当在离线实验阶段得到了一个比较不错的预测结果之后,就需要将推荐的结果拿到更加真实的环境中进行测评,如果这个时候将算法直接上线,会面临较高的风险。因为推荐结果的好坏不能仅仅从离线的数字指标衡量,更要关注用户体验,所以可以通过小范围的反复白板测试,获得自己和周围的人对于推荐结果的直观反馈,进行优化。
**在线测试(AB test):**实践是检验真理的唯一标准,在推荐系统的优化过程中,在线测试是最贴近现实、最重要的反馈方式。通过AB测试的方式,可以衡量算法与其他方法、算法与算法之间的效果差异。
除了算法本身之外
推荐算法是否会导致信息不平等和信息茧房?
推荐系统并非导致信息不平等和信息茧房的根本原因。
- **内容的不平等或许更多的产生于用户天性本身,而推荐算法的作用更像是帮助用户“订阅”了不同的内容。**用户天然的会对信息产生筛选,并集中在自己的兴趣领域。在过去杂志订阅的阶段,虽然每个杂志和报纸的内容都是完全相同的,但是用户通过订阅不同的杂志实际接受到了完全不同的消息。而今天的内容APP提供了各种话题,各种类型的内容,但用户通过推荐算法,在无意识的情况下“订阅”了不同的“杂志”。
- **人们更加集中于垂直的喜好是不可逆转的趋势。从内容供给的角度来讲,从内容的匮乏到繁荣,从中心化到垂直聚群,用户的选择更贴近自己的喜好是不可逆转的趋势。**在没有提供太多选项的时候,人们会更多的集中在某几个内容上面,而当今天层出不穷的内容出现,人们开始追逐更加个性化,精细化的内容。
但不可否认的是,推荐系统的便捷性、自动化、实时性会加重这些问题。在这样的情况下,我们能做些什么?
- 产品价值与数据指标的平衡:推荐算法是对短期数据指标的高度拟合,一定阶段后会发现对推荐系统的人工干扰往往会造成负向的指标波动。但推荐算法往往只能带来短期的局部最优解。产品仍需要从本质出发,来看待产品给用户带来的本质价值。对产品方向的判断、以及对产品价值的坚持才是产品寻找全局最优解的方式。
算法可能产生的蝴蝶效应
在很多场景中,并非只有机器算法一种推荐方式。以视频号为例,除公域机器推荐外,也存在私域(朋友圈、群聊、单聊)、半公域(朋友tab社交推荐)等推荐方式,但推荐对整个产品体验、内容生态、作者生态的影响都是巨大的。
推荐算法对feed传播的影响
从feed传播来看,推荐算法给予其冷启流量,提升传播速率,利于其对抗时间衰减,快速达到社交裂变拐点,进而大规模传播
一个feed在传播过程中,主要影响因素有:
- feed特性:优质度、传播性、普适性,这三点决定其传播速度、传播稳定性以及天花板。
- feed发表时间:feed与时间的“对抗性”。因为(1)feed无法重复消费且一段时间内目标受众有限(2)由于环境背景、文化潮流、热点等feed具有一定时效性(3)不确定性,时间越长影响其传播的因素越多,受众的注意力发生转移的可能越大。
热门对头部内容的最重要影响集中在冷启期、拐点期与加速时期。在前几个小时的冷启动时期,社交推荐无法达到其裂变点,对其传播的效果影响非常有限。feed要对抗漫长的时间影响来达到裂变点,对feed本身质量要求非常高。而通过热门的传播可以直接给到较大的冷启量,以及更快的传播速度、在feed受时间影响衰退前迎来社交裂变拐点,社交传播开始作为主场景进行下一轮传播。(社交推荐具有积累慢,但达到拐点可进行网络裂变传播,速度快、衰减慢。因此头部feed在视频号同时享受算法推荐早期爆发性强,热度积累快,又享受社交推荐,传播范围大、热度衰减慢的双重优势。)
推荐算法对平台的影响
- 推荐算法作为最初的内容筛选器,对视频号的内容分布以及产品体验有较大影响
推荐算法对feed的影响是巨大的,若无法被推荐算法识别,其获得较高热度的可能性较低,最终导致产品的流量主要集中在被推荐算法识别并推荐的feed上。其短期内对内容生态、浏览者体验有较为重要的决定作用;长期来看,对内容氛围、作者反馈、浏览者长期留存都有较大的影响**。**
- 推荐算法的影响需要进行全局评估,而非局部评估
每个场景具有不同的特点,可能存在某类内容(或比例)更适合推荐场景而不适合社交场景,在达到推荐场景最优后传导进入其他场景,导致其他场景该类内容过少或过多。例如某类内容在一定比例下,推荐场景有收益,而社交场景收益为负。在此类情况下,当该类内容在热门达到最优比例后传到进入社交场景,在社交场景会而产生负向影响,仅评估推荐场景将无法衡量其对产品的整体效果。
内容参考:
2、《阿里飞猪个性化推荐:召回篇》
3、推荐与广告最新论文追踪
-bsx8p88u-1724501801816)]
- 推荐算法的影响需要进行全局评估,而非局部评估
每个场景具有不同的特点,可能存在某类内容(或比例)更适合推荐场景而不适合社交场景,在达到推荐场景最优后传导进入其他场景,导致其他场景该类内容过少或过多。例如某类内容在一定比例下,推荐场景有收益,而社交场景收益为负。在此类情况下,当该类内容在热门达到最优比例后传到进入社交场景,在社交场景会而产生负向影响,仅评估推荐场景将无法衡量其对产品的整体效果。
[外链图片转存中…(img-roQueAwR-1724501801816)]
内容参考:
2、《阿里飞猪个性化推荐:召回篇》
3、推荐与广告最新论文追踪