推荐系统技术演进趋势:召回->排序->重排(二)

简介: 推荐系统技术演进趋势:召回->排序->重排(二)

❺ 图神经网络模型召回



0d2ebb9baf49ea5bca455d72284a1b34.png


严格来说,知识图谱其实是图神经网络的一个比较特殊的具体实例,但是,知识图谱因为编码的是静态知识,而不是用户比较直接的行为数据,和具体应用距离比较远,这可能是导致两者在推荐领域表现差异的主要原因。图神经网络中的图结构,可以是上面介绍知识图谱时候说过的 “用户-物品” 二部图,也可以是我们常见的有向图或者无向图,图中的节点是各种不同类型的物品及用户,边往往是通过用户行为建立起来的,可以是具体用户的具体行为,也可以是所有用户的群体统计行为,比如物品1—>物品2可以有边,边还可以带上权重,如果越多的用户对物品1进行行为后对物品2进行行为,则这条边的权重越大。而且对于用户或者物品来说,其属性也可以体现在图中,比如对于一个微博,它的文本内容、图片内容、发布者等等属性都可以引入到图中,比如挂接到物品上,或者建立独立的节点也是可以的,这取决于具体的做法。


022a247fdce6250b81f732f6298a5b3c.png


图神经网络的最终目的是要通过一定技术手段,获得图中节点的 embedding 编码。最常用的 embedding 聚合工具是 CNN,对于某个图节点来说,它的输入可以有两类信息,一类是自身的属性信息,比如上面举的微博的例子;另外一类是图结构信息,就是和当前节点有直接边关联的其它节点信息。通过 CNN,可以对两类信息进行编码和聚合,形成图节点的 embedding。通过 CNN 等信息聚合器,在图节点上进行计算,并反复迭代更新图节点的 embedding,就能够最终获得可靠的图节点 embedding 信息,而这种迭代过程,其实体现的是远距离的节点将信息逐步通过图结构传递信息的过程,所以图结构是可以进行知识传递和补充的。


我们可以进一步思考下,图节点因为可以带有属性信息,比如物品的 Content 信息,所以明显这对于解决物品侧的冷启动问题有帮助;而因为它也允许知识在图中远距离进行传递,所以比如对于用户行为比较少的场景,可以形成知识传递和补充,这说明它也比较适合用于数据稀疏的推荐场景;另外一面,图中的边往往是通过用户行为构建的,而用户行为,在统计层面来看,本质上是一种协同信息,比如我们常说的 “A 物品协同 B 物品”,本质上就是说很多用户行为了物品 A 后,大概率会去对物品 B 进行行为;所以图具备的一个很好的优势是:它比较便于把协同信息、用户行为信息、内容属性信息等各种异质信息在一个统一的框架里进行融合,并统一表征为 embedding 的形式,这是它独有的一个优势,做起来比较自然。另外的一个特有优势,就是信息在图中的传播性,所以对于推荐的冷启动以及数据稀疏场景应该特别有用。


因为图神经网络,最终获得的往往是图中节点的 embedding,这个 embedding,就像我们上面说的,其实融合了各种异质信息。所以它是特别适合用来做召回的,比如拿到图网络中用户的 embedding 和物品 embedding,可以直接用来做向量召回。当然,物品和用户的 embedding 也可以作为特征,引入排序模型中,这都是比较自然的。有些推荐场景也可以直接根据 embedding 计算 user to user/item to item 的推荐结果,比如看了又看这种推荐场景。


早期的图神经网络做推荐,因为需要全局信息,所以计算速度是个问题,往往图规模都非常小,不具备实战价值。而 GraphSAGE 则通过一些手段比如从临近节点进行采样等减少计算规模,加快计算速度,很多后期改进计算效率的方法都是从这个工作衍生的;而 PinSage 在 GraphSAGE 基础上 ( 这是同一拨人做的 ),进一步采取大规模分布式计算,拓展了图计算的实用性,可以计算 Pinterest 的30亿规模节点、180亿规模边的巨型图,并产生了较好的落地效果。所以这两个工作可以重点借鉴一下。


总体而言,图模型召回,是个很有前景的值得探索的方向。


典型工作:


GraphSAGE: Inductive Representation Learning on Large Graphs


PinSage: Graph Convolutional Neural Networks for Web-Scale Recommender Systems


——排序模型技术演进趋势——


排序环节是推荐系统最关键,也是最具有技术含量的部分,目前大多数推荐技术其实都聚焦在这块。下面我们从模型表达能力、模型优化目标以及特征及信息三个角度分述推荐排序模型的技术发展趋势。


315811e7cccc7401b083fd4fc1af6466.png


模型表达能力代表了模型是否具备充分利用有效特征及特征组合的能力,其中显示特征组合、新型特征抽取器、增强学习技术应用以及 AutoML 自动探索模型结构是这方面明显的技术进化方向;模型优化目标则体现了我们希望推荐系统去做好什么,往往跟业务目标有关联,这里我们主要从技术角度来探讨,而多目标优化以及 ListWise 最优是目前最常见的技术进化方向,ListWise 优化目标在排序阶段和重排阶段都可采用,我们把它放到重排部分去讲,这里主要介绍多目标优化;从特征和信息角度,如何采用更丰富的新类型特征,以及信息和特征的扩充及融合是主要技术进化方向,用户长短期兴趣分离、用户行为序列数据的使用、图神经网络以及多模态融合等是这方面的主要技术趋势,因为用户行为序列以及图神经网络在召回部分介绍过,这些点同样可以应用在排序部分,所以这里不再叙述这两点。


❶ 显式特征组合



12fcfb3381e98d5bf21985318e3fef16.png


如果归纳下工业界 CTR 模型的演化历史的话,你会发现,特征工程及特征组合的自动化,一直是推动实用化推荐系统技术演进最主要的方向,而且没有之一。最早的 LR 模型,基本是人工特征工程及人工进行特征组合的,简单有效但是费时费力;再发展到 LR+GBDT 的高阶特征组合自动化,以及 FM 模型的二阶特征组合自动化;再往后就是 DNN 模型的引入,纯粹的简单 DNN 模型本质上其实是在 FM 模型的特征 Embedding 化基础上,添加几层 MLP 隐层来进行隐式的特征非线性自动组合而已。所谓隐式,意思是并没有明确的网络结构对特征的二阶组合、三阶组合进行直接建模,只是通过 MLP,让不同特征发生交互,至于怎么发生交互的,怎么进行特征组合的,谁也说不清楚,这是 MLP 结构隐式特征组合的作用,当然由于 MLP 的引入,也会在特征组合时候考虑进入了特征间的非线性关系。


faca428467a4f2663f5823e3fbb7608b.png


明白了隐式特征组合,也就明白了什么是显式特征组合。就是在模型结构中,明确设计一些子网络或者子结构,对二阶特征组合、三阶特征组合,甚至更高阶的特征组合进行表征。比如说 DeepFM,Deep 部分就是个典型的 DNN 模型,这个大家基本都会用,而 FM 部分则是明确对特征二阶组合进行建模的子模型。这就是一个典型的显式二阶特征组合的模型。而如果进一步拓展的话,很自然想到的一个改进思路是:除了明确的把特征二阶组合做一个子结构,还可以把特征三阶特征组合,更高阶特征组合……分别做一个模型子结构。融合这些子结构一起来做预测。这就是显式特征组合的含义,其实这条线的发展脉络是异常清晰的。典型的对高阶特征组合建模的比如 Deep& Cross、XDeepFM 模型等,就是这么个思路。


在两年多前,我一直以为这个方向是 CTR 或者推荐模型的关键所在,而且可能如何简洁融入更多特征组合是最重要且最有前景的方向。但是后来发现可能错了,目前基本对这个方向改变了看法。目前我对这个方向的看法是:这个方向确实很重要,但是未来可挖掘的潜力和空间很有限,在这条路上继续行进,应该不会走得太远。原因在于,目前基本很多经验已经证明了,显式的二阶特征组合是非常重要的,三阶特征组合对不同类型任务基本都有帮助。四阶特征组合已经说不清楚是否有用了,跟数据集有关系,有些数据集合引入显式4阶特征组合有帮助,有些数据集合没什么用。至于更高阶的特征组合,明确用对应的子结构建模,基本已经没什么用了,甚至是负面作用。这说明:我们在实际做事情的时候,其实显式结构把三阶特征组合引入,已经基本足够了。这是为什么说这条路继续往后走潜力不大的原因。


典型工作:


Deep& Cross: Deep & Cross Network for Ad Click Predictions


XDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems


❷ 特征抽取器的进化



从特征抽取器的角度来看,目前主流的 DNN 排序模型,最常用的特征抽取器仍然是 MLP 结构,通常是两层或者三层的 MLP 隐层。目前也有理论研究表明:MLP 结构用来捕获特征组合,是效率比较低下的,除非把隐层神经元个数急剧放大,而这又会急剧增加参数规模。与自然语言处理和图像处理比较,推荐领域的特征抽取器仍然处于非常初级的发展阶段。所以,探寻新型特征抽取器,对于推荐模型的进化是个非常重要的发展方向。


edcc113d1420a628e8eb4276c78297a8.png


目前其它 AI 领域里,常用的特征抽取器包括图像领域的 CNN、NLP 领域的 RNN 和 Transformer。这些新型特征抽取器,在推荐领域最近两年也逐步开始尝试使用,但是宏观地看,在推荐领域,相对 MLP 结构并未取得明显优势,这里的原因比较复杂。CNN 捕获局部特征关联是非常有效的结构,但是并不太适合做纯特征输入的推荐模型,因为推荐领域的特征之间,在输入顺序上并无必然的序列关系,基本属于人工定义随机顺序,而 CNN 处理这种远距离特征关系能力薄弱,所以并不是特别适合用来处理特征级的推荐模型。当然,对于行为序列数据,因为本身带有序列属性,所以 CNN 和 RNN 都是非常适合应用在行为序列结构上的,也是有一定应用历史的典型工具,但是对于没有序关系存在的特征来说,这两个模型的优势不能发挥出来,反而会放大各自的劣势,比如 CNN 的捕获远距离特征关系能力差的弱点,以及 RNN 的不可并行处理、所以速度慢的劣势等。


Transformer 作为 NLP 领域最新型也是最有效的特征抽取器,从其工作机制来说,其实是非常适合用来做推荐的。为什么这么说呢?核心在于 Transformer 的 Multi-Head Self Attention 机制上。MHA 结构在 NLP 里面,会对输入句子中任意两个单词的相关程度作出判断,而如果把这种关系套用到推荐领域,就是通过 MHA 来对任意特征进行特征组合,而上文说过,特征组合对于推荐是个很重要的环节,所以从这个角度来说,Transformer 是特别适合来对特征组合进行建模的,一层 Transformer Block 代表了特征的二阶组合,更多的 Transformer Block 代表了更高阶的特征组合。但是,实际上如果应用 Transformer 来做推荐,其应用效果并没有体现出明显优势,甚至没有体现出什么优势,基本稍微好于或者类似于典型的 MLP 结构的效果。这意味着,可能我们需要针对推荐领域特点,对 Transformer 需要进行针对性的改造,而不是完全直接照搬 NLP 里的结构。


典型工作:


AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks


DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction


❸ AutoML 在推荐的应用



AutoML 在17年初开始出现,最近三年蓬勃发展,在比如图像领域、NLP 领域等都有非常重要的研究进展,在这些领域,目前都能通过 AutoML 找到比人设计的效果更好的模型结构。AutoML 作为算法方向最大的领域趋势之一,能否在不同领域超过人类专家的表现?这应该不是一个需要回答 “会不会” 的问题,而是应该回答 “什么时间会” 的问题。原因很简单,AutoML 通过各种基础算子的任意组合,在超大的算子组合空间内,寻找性能表现最好的模型,几乎可以达到穷举遍历的效果,而人类专家设计出来的最好的模型,无非是算子组合空间中的一个点而已,而且人类专家设计的那个模型,是最好模型的可能性是很低的。如果设计精良的 AutoML,一定可以自己找到超过目前人类专家设计的最好的那个模型,这基本不会有什么疑问,就像人类就算不是2017年,也会是某一年,下围棋下不过机器,道理其实是一样的,因为 AutoML 在巨大的算子组合空间里寻找最优模型,跟围棋在无穷的棋盘空间寻找胜利的盘面,本质上是一个事情。无非,现在 AutoML 的不成熟,体现在需要搜索的空间太大,比较消耗计算资源方面而已,随着技术的不断成熟,搜索成本越来越低,AutoML 在很多算法方向超过人类表现只是个时间问题。


efef9c2b288ba27e52c43b8a1708cc1a.png6150dd2cd11b4280dfbda7ccf2259f63.png63c7432795a890f37bca65c8c2b2ab46.png

在推荐领域,采用 AutoML 做网络结构的工作还很少,这里面有很多原因。由于我一直以来特别看好这个方向,所以在18年的时候,我们也尝试过利用 AutoML 来自动探索推荐系统的网络结构,这里非常简略地介绍下过程及结果 ( 参考上面三图 )。我们用 ENAS 作为网络搜索工具,设计了推荐领域网络结构自动探索的尝试。ENAS 是个非常高效率的 AutoML 工具,可以做到单 GPU 半天搜索找到最优的网络结构,但是它定义的主要是 CNN 结构和 RNN 结构搜索。我们对 ENAS 进行了改造,包括算子定义,优化目标以及评价指标定义等。DNN 排序模型因为模型比较单一,所以算子是比较好找的,我们定义了推荐领域的常用算子,然后在这些算子组合空间内通过 ENAS 自动寻找效果最优的网络结构,最终找到的一个表现最好的网络结构如下图所示:


19679d570dc4048396940be5d0ec39f3.png


首先是特征 onehot 到 embedding 的映射,我们把这层固定住了,不作为模型结构探索因子。在特征 embedding 之上,有三个并行结构,其中两个是包含两个隐层的 MLP 结构,另外一个是特征双线性组合模块 ( Each Fields Type,具体含义可以参考下面的 FibiNet )。其表现超过了 DeepFM 等人工结构,但是并未超过很多。( 感谢黄通文同学的具体尝试 )


总体而言,目前 AutoML 来做推荐模型,还很不成熟,找出的结构相对人工设计结构效果优势也不是太明显。这与 DNN Ranking 模型比较简单,算子类型太少以及模型深度做不起来也有很大关系。但是,我相信这里可以有更进一步的工作可做。


典型工作:


ENAS 结构搜索:AutoML 在推荐排序网络结构搜索的应用


https://www.docin.com/p-2269372287.html


双线性特征组合: FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction


相关文章
|
6月前
|
存储 监控 搜索推荐
【业务架构】业务驱动的推荐系统相关技术总结
【业务架构】业务驱动的推荐系统相关技术总结
57 0
|
9月前
|
机器学习/深度学习 存储 搜索推荐
协同过滤推荐系统:原理、技术与Java实践
前言 在当今信息爆炸的时代,推荐系统已成为解决信息过载问题的有效工具。从电商网站的商品推荐到社交媒体的信息推送,推荐系统已经渗透到了我们生活的方方面面。而协同过滤(Collaborative Filtering,简称CF)算法是推荐系统领域的一种经典技术,通过分析用户之间的相似性或物品之间的相似性,为用户推荐与其兴趣相关的物品。
1173 1
|
10月前
|
数据采集 搜索推荐 API
"利用淘宝API接口实现智能化商品推荐系统技术探究"
随着电商行业的火爆发展,如何有效从海量商品中筛选出用户感兴趣的商品成为了每个电商平台必须面对的难题。而商品的精准推荐技术是解决该难题的重要手段之一。淘宝作为国内电商平台的龙头企业,其提供的API接口为开发者提供了打造智能化商品推荐系统的可能。
167 0
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习应用篇-推荐系统[12]:经典模型-DeepFM模型、DSSM模型召回排序策略以及和其他模型对比
深度学习应用篇-推荐系统[12]:经典模型-DeepFM模型、DSSM模型召回排序策略以及和其他模型对比
深度学习应用篇-推荐系统[12]:经典模型-DeepFM模型、DSSM模型召回排序策略以及和其他模型对比
|
机器学习/深度学习 自然语言处理 搜索推荐
推荐系统[八]算法实践总结V2:排序学习框架(特征提取标签获取方式)以及京东推荐算法精排技术实战
推荐系统[八]算法实践总结V2:排序学习框架(特征提取标签获取方式)以及京东推荐算法精排技术实战
推荐系统[八]算法实践总结V2:排序学习框架(特征提取标签获取方式)以及京东推荐算法精排技术实战
|
机器学习/深度学习 存储 开发框架
推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
|
机器学习/深度学习 SQL 存储
推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF_TDM_Airbnb Embedding_Item2vec等)、召回路径简介、多路召回融合]
推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF_TDM_Airbnb Embedding_Item2vec等)、召回路径简介、多路召回融合]
推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF_TDM_Airbnb Embedding_Item2vec等)、召回路径简介、多路召回融合]
|
机器学习/深度学习 Web App开发 人工智能
推荐系统专题 | 推荐系统架构与单域跨域召回模型
推荐系统专题 | 推荐系统架构与单域跨域召回模型
481 0
推荐系统专题 | 推荐系统架构与单域跨域召回模型
|
机器学习/深度学习 并行计算 搜索推荐
推荐系统专题 | 单域推荐系统模型汇总(召回与排序算法)
推荐系统专题 | 单域推荐系统模型汇总(召回与排序算法)
511 0
推荐系统专题 | 单域推荐系统模型汇总(召回与排序算法)
|
机器学习/深度学习 人工智能 算法
推荐系统召回算法及架构说明|学习笔记
快速学习推荐系统召回算法及架构说明
482 0
推荐系统召回算法及架构说明|学习笔记