Facebook在2006年推出的News Feed可以看作是信息流产品的开端,而国内的移动互联网经过10多年的发展,信息流也早已成为主流形态,更发展出了以今日头条为代表的资讯信息流单列模式,以淘宝、小红书为代表的电商/社区内容双列模式,以抖音为代表的短视频沉浸式模式。
信息流形态的优势,不仅体现在沉浸式体验和交互方式上,还在于对消费者行为心理学的研究:在信息流中,用户的反馈操作被简化为“傻瓜式”的上下滑动,更加适合碎片化的消费方式,“自动播放”模式下用户的感官体验更少被打断,情景代入感成倍增加,同时,上下滑动内容呈现的多样性还增加了用户对“下一个”未知内容的期待感,更容易“上头”。
因此,信息流产品对功能模块的弱化和对内容表达的强化也给个性化推荐算法提供了更加广阔的发挥空间,也由此衍生出了更多的算法和建模思想,《信息流推荐算法》这本书就是在这样的背景下诞生。
本书的两位作者历经过阿里、腾讯等国内一线大厂和多家独角兽级公司的实战洗礼,在淘宝、微视、腾讯视频、QQ短视频等大规模信息流推荐系统有着10多年的实践经验,同时对于创业公司强约束小数据条件下的冷启挑战也有着第一手的深刻体会。
本书核心内容涵盖:
● 从算法工程师和产品经理的双重视角切入,介绍了信息流产品的内容生态、对用户体验和商业价值的重构。
● 结合实践经验介绍了如何通过系统性的产品运营分析、用户画像分析、行为路径分析挖掘算法优化线索。
● 全面总结了推荐链路上最近几年主要的建模范式的迭代更新,包括,精排到混排链路上的深度多任务学习+进化学习、强化学习,破除列表页时代的单任务重CTR预估的建模范式,以及端云协同、图学习、多目标融合、生态建设、Debias的全面升级和应用。
● 信息流产品中的经典问题,比如信息茧房、冷启动、消偏等,具体分析这些问题在信息流中的前因后果以及综合性的解决方案。
本书受到了包括腾讯PCG AI委员会负责人、阿里数据大学(前)校长、新华智云(前)首席科学家、数据智能开发者社区DataFun创办人等业界专家的一致推荐。
本书的内容不仅可以让读者体系化地理解信息流推荐算法全链路细节,更不失为面试互联网大厂推荐算法岗的全面攻略
现对书中的部分核心内容作概要摘抄,期望了解详细内容的读者可以通过阅读本书深入了解,目前《信息流推荐算法》已在淘宝、京东上架。
01 多任务学习
多任务学习对信息流的意义在于内容多元化,用户和内容的交互行为越来越丰富,因此,与推荐核心指标关系密切的精排模型也呈现多元化优化目标的趋势。比如,在新闻、短视频等信息流产品中,通常有观看、点赞、评论、分享和关注等行为,用户在这些行为上的活跃度从多个维度体现了产品的用户体验,因此都是信息流产品所需要提升的业务目标,为此,精排模型需要同时考虑优化多个行为目标。
1.1 Shared Bottom
Shared Bottom是一种最直接和基础的多任务学习,所有的任务共享底层的参数,然后在上层增加任务独立的tower分支结构,并获取相应任务的输出。
然而,这种直接共享底层参数的建模方法并不是最好的选择的,它的共享方式不一定能带来1+1>2的效果,模型的学习效果容易受到任务之间关系紧密度的影响,比如将几个关系很小的任务放到一起训练可能会出现在参数的更新上相互冲突的情况,导致多个任务都没有训练好。因此,多任务学习需要妥善处理任务之间的相关性,尽可能地提高信息共享带来的收益。
1.2 MMOE
多任务学习算法容易受到业务数据分布差异、多任务之间关系等因素的影响,多任务之间差异引起的内在冲突对于其中的某一个或者某几个任务都可能带来负向的效果,一个典型例子就是,我们在阅读知乎内容的时候,对于技术类文章我们往往会选择“收藏”,在特定的时间内仔细阅读,但对于娱乐类文章我们往往会在碎片时间内沉浸式阅读,而且很少会“收藏”文章,所以“收藏”目标和“阅读时长”目标在参数的收敛方向上存在不一致。
为了缓解任务间差异导致的冲突、更好地建模任务间的相关性,Google提出了经典的多任务学习算法MMoE。
和Shared Bottom的方式相比,MMoE替换了任务间共享的Bottom部分。将输入input接入到任务间共享的多个专家网络和任务间独立的gate网络,tower部分的输入是专家网络输出的加权和。Gate网络的约束为多任务学习的参数共享提供了一种灵活、弹性的方式。这种弹性的共享方式使得MMoE可以为每一任务分别学习gate,并通过gate之间的区别来捕获任务之间的差异。
1.3 PLE
我们在实践中发现,现有的多任务学习方法常常可以在部分任务上有正向收益,但同时在另外一部分任务上是负向的,提升了部分指标的同时降低了另一部分指标,也就是所谓的跷跷板现象。
MMoE基于样本输入生成的门控网络来融合不同的专家网络,可以在一定程度上建模任务间的差异性,但是由于专家网络是在所有任务共享的,这使得MMoE仍然难以同时建模差异较大的任务,仍可能对某些任务带来负向效果,而且MMOE还忽略了专家之间的不同和关联,这也限制了联合优化所带来的效果提升。PLE的提出主要是为了解决多任务学习跷跷板现象,其核心思想包括:
(1) 将专家网络分为任务共享的和任务独立的两种,通过这种方式在共享部分特征表达的基础上更好地建模任务之间的不同。
(2) 引入多层的专家和门控网络来获取更抽象的表示。
MMoE相比,PLE中移除了一个任务与其他任务独享的专家网络之间的关系,这种设计可以降低专家网络之间的干扰,更专注于各自类型专家知识的学习。
1.4 MFH
TikTok、微信视频号等沉浸式短视频相比于电商、社区等单双列的信息流,用户互动行为更加丰富多样,通常包含了完播、快滑、点赞、评论、分享、关注等,而且不同的用户群体往往存在不同的反馈习惯和偏好,因此对推荐精排建模带来的困扰是,沉浸式短视频场景中多任务学习需要建模的目标任务数更多,并且如果更细的粒度去区分人群或者内容资源新热程度等因素,多任务学习需要建模的任务数就会有一个笛卡尔积形式的增长。
为应对这类问题,MFH首先从一个新的视角来分析多任务学习的模型结构,分为微观和宏观两个层级结构。为了阐述多任务学习的中微观结构,MFH定义了深度模型中的一个新的概念:Switcher。
Switcher抽象为一种多分支输出的结构。其中,Switcher的输入可以是任意类型的表示,比如说可以是拼接后的Embedding,也可以是网络的中间层输出。Switcher的输出可以作为上层模块的输入。
基于Switcher,MFH的作者们提出了更加全面的MFH网络,第0层的Switcher网络先抽象出2个维度的综合表示,输出接入2个维度对应的MLP。从第1层开始对每一个维度作细粒度地建模,每一个子结构和H-MTL中的结构类似。MFH的1、2层可以看作是2个H-MTL网络的结合体。对于上层的tower部分来说,在第2层可以得到2个不同路径的抽象提取,任务可以从网络左边抽象播放行为然后按照用户分群细化,也可以从网络右边抽象用户分群再细化播放行为,这两个路径的输出都会连接到相应的tower网络。
MFH在离线评测和在线评测中均取得了最好的效果,并且在一些细分方向上的优势更加明显,比如说对于新用户和新物品的预测更加准确。MFH目前已经在腾讯的短视频精排场景上有广泛的应用。
02 多目标融合
多目标融合是精排多任务建模之后紧跟的下一个模块,读者对多目标融合的直观意义往往是:前序的多任务学习同时建模了多个精排目标,但最终模型的排序结果只有一个,因此需要融合多个目标的得分使得系统可以产出统一的排序结果。
但实际上,我们还要再往下一层更深入地理解多目标融合,在实际业务场景中,产品的核心业务目标往往是一些比较宏观的指标,直接进行建模有很大的难度。以短视频信息流为例,业务目标通常是用户当天的人均播放总时长,这个目标的反馈延迟很大(要等一天过完之后才能得到完整的样本),所以无法在流式数据的环境中被实时更新的精排模型当作学习目标。而能被精排模型建模优化的目标通常是较快能够得到反馈的信息,比如用户单次观看视频的播放时长、点赞概率、评论概率等,这些信息一般在数秒、最多数分钟就能有反馈信号。
所以,为了优化产品的核心业务目标,工业界常见方法是用多任务学习的方法对多个短时反馈的目标进行建模,再用某种公式或模型将多个模型预测分融合成一个最终的排序,而这个最终排序的目标通常就是核心业务目标。这就是多目标融合建模的由来。
2.1 启发式多目标融合
所谓启发式算法(heuristic algorithm)是相对于最优化算法提出的:一个问题的最优算法由该问题每个实例的最优解得到。也就是设计一个基于直观或经验构造的算法,在可接受的计算成本下给出待解决组合优化问题每一个实例的一个可行解。在多目标融合中,通过探索搜索的方式得到多目标融合的最优解就是一种典型的启发式算法。
2.1.1 Grid Search
Grid Search是一种常用的穷举搜参方法,很多学术论文中的超参都是通过这种方式得到的。假设有m个参数,每一个参数的取值可能性为k个,Grid Search需要遍历k^m个参数组合,计算出相应的评价指标从而挑选效果最好的参数。由于搜参空间是指数级,需要消耗的计算资源也是指数级的,非常耗时,因此实际应用中通常应用于小规模的数据集和少量参数的情况。
2.1.2 Random Search
Random Search也是一种使用广泛的搜参方法,它在参数空间中采用随机采样参数来代替Grid Search中的暴力搜索。对于连续型的参数,Random Search可以基于数据分布进行采样,搜参空间具有一定的随机性,这个是Grid Search不具有的,它的搜参空间是执行搜索前已经预先定义好了,通常可以根据程序的执行效率设置一个耗时可接受的搜索空间的值。
Grid Search和Random Search在实践中通常会遵循如下的流程:
2.2 贝叶斯优化
不管是Grid Search还是Random Search,所需的搜索次数都很多,对下一次搜索方向的效果也无法预期,而且对于用户的体验损害较大不适合做在线评测。因此,基于启发式多目标融合的缺陷,业界提出了贝叶斯优化的方法。
贝叶斯优化的主要思想是根据已有的样本数据获取一定的先验,预估一下可能是极值的样本点,获取真实评估结果,并不断重复该过程。
贝叶斯优化的核心思想包括概率代理函数和采集函数两个概念。其中,概率代理函数,顾名思义,用于代理难以建模的目标函数,逼近真实的f,在优化过程中持续更新以获得更准确的真实值预估。常见的概率代理函数有高斯过程、随机森林、深度神经网络等。而采集函数的作用是,基于概率代理模型的结果采集下一次探索的参数向量x。常用的采集函数有:置信区间上限(Upper Confidence Bound, UCB)、提升概率(Probability of Improvement,PI)、提升期望(Expected Improvement,EI)等。
贝叶斯优化的整体执行流程如下:
初始参数的生成可以参考业务的先验知识,也可以借助离线的Grid Search或者Random Search结果。接下来上线A/B实验,获取这些参数对应的真实业务效果。A/B实验的周期和流量占比要保证真实业务效果是置信的。然后用这些真实样本更新概率代理模型。最后,基于概率代理模型的预估结果,采集函数给出下一次探索的多组参数。重复上面的过程,直到找到最优的一组参数后推全实验。
2.3 进化策略(ES)
进化策略是另一种多目标融合中的参数学习方法。进化算法的提出主要受到达尔文进化论的影响,利用优胜劣汰的思想来不断地演进和淘汰,直到寻找到最优的参数。
“(1+1)-ES”是一种进化策略的简单形式。其求解思路为:随机初始化待学习参数,接下来生成一个新的参数(变异强度或者噪声方差固定),然后比较2个参数的优劣程度,如果新参数更好就会替换老参数。
上述的进化策略算法中,子代的变异方式为增加高斯噪声,而高斯噪声的强度通常为一个固定值,无论当前的取值距离最优值有多远,变异强度都是一样的,这种固定的方式对于优化来说不是最优的,理想的情况下当前取值距离最优值较远时,变异强度大一些可以加速收敛,当前取值距离最优值较近时,变异强度低一些可以细粒度地探寻最优值。因此,业界也衍生出了实现了自适应变异强度的CMA-ES,以及增加了参数化模型(支持个性化建模)的OpenAI ES等方法。
完善的进化策略参数学习方法,包含如下流程:
输入用户侧特征,对参数加入不同的高斯噪声扰动,计算多目标的融合权重及其对应的奖励,接下来向着奖励大的方向更新。
ES算法是一种轻量级的个性化搜参方法,可以根据用户行为兴趣以及线上分布的变化而作出自适应的调整,灵活性和实时性更好。除此之外,相比贝叶斯优化,ES算法的可优化空间更大,可以像普通的机器学习模型一样优化样本、特征和模型,拓展能力更强。
2.4 强化学习
强化学习是受行为心理学启发的一个新兴的机器学习领域,近年来受到了广泛的关注和应用。强化学习的基本建模中包含智能体(agent)和环境(environment),算法研究的核心是智能体如何在一个环境获得最大化的收益。
将强化学习推广到推荐场景,推荐系统可以看作智能体,推荐系统给出分发视频的策略表示动作,用户观看视频后的兴趣状态表示环境状态,用户群体的消费时长等业务指标表示奖励。从这个角度来看,利用强化学习进行推荐交互过程的建模是非常符合强化学习本身的建模逻辑的。
以BatchRL-MTF算法为例,基于强化学习的多目标融合框架的整体结构如下图所示,主要包含在线服务和离线训练两个阶段:
(1) 在线服务(Online Serving)阶段:用户请求(Request)发生之后,从用户数据库(User Database)中获取用户的基础属性(User profile)和相关日志行为(User logs)构造用户状态(User State),然后多目标融合模块(MTF Module)接收用户状态输出动作参数得到最终的排序得分(Ranking Score),生成下发的推荐列表(Recmd list)。接下来用户浏览之后给出相应的反馈(User feedback)并上报到数据库中。
(2) 离线训练(Offline Training)阶段:数据处理(Data Processor)模块从数据库中获取近期的用户数据,包含用户基础属性和各种反馈数据,并将数据处理成序列化的结构数据,接下来将这些数据送入BatchRL-MTF模型训练。训练完成后,模型参数(Model Parameters)推送到线上。
具体的BatchRL-MTF算法的设计细节在书中有详细描述,因篇幅有限不在这里详细展开,感兴趣的读者可以阅读本书了解细节,从最终的实验的分析结果来看,相比于贝叶斯优化和进化策略,基于强化学习的多目标融合方法获得了更好的效果,在App停留时长和正向互动率上都有显著的提高。
03 更多内容
本文摘录了《信息流推荐算法》中跟信息流目标建模紧密相关的多任务学习和多目标融合的部分内容,但事实上,从全链路进行推荐建模优化相关的内容远不止于此。
1、 如何更全面感知用户在信息流消费中兴趣的变化?
● 在第3章召回建模中,我们通过图网络、通过多兴趣/长短期兴趣建模,挖掘用户的兴趣广度。
● 在第7章重排建模中,我们通过list-wise方法下的DLCM、Seq2slate、GRN等方法挖掘推荐列表整体的转化率提升方法。
● 在端云一体建模介绍中,通过EdgeRec、DCCL等端上模型更实时地响应用户的兴趣变化。
2、 信息流中,如何更好兼顾不同群体的需求?
● 在第9章冷启动建模中,通过DroupoutNet、Cold & Warm Net方法,通过用户表征“迁移”的思想,更好的挖掘冷启用户兴趣信号。
● 在消偏建模中,通过对抗学习的思想消除流行度偏置,通过曝光建模消除位置偏置等方法,使得模型不被热门样本“绑架”,让个性化学习更加充分。
3、 如何综合评估推荐算法价值?
● 在第10章推荐算法评估中,介绍了宏观和微观视角下的推荐算法评估方法。
● 通过设计离线评估指标、A/B实验策略具象化算法评估
通过本书的阅读,可以更全面的理解信息流推荐算法的框架和精要,并有效指导日常的算法优化工作
04 最后
本书内容既有理论公式的推导,又有业务建模的实践介绍,非常适合在推荐建模领域有一定经验的互联网算法工程师,以及对个性化推荐算法有浓厚兴趣,期望未来从事搜推广行业的广大在校学生朋友,期望这本书对大家的日常工作和学习能有所帮助,也期望未来能和大家有更加深入的探讨和交流。