zz阿里妈妈深度树检索技术(TDM)及应用框架的探索实践

 

 

分享嘉宾:何杰 阿里妈妈 高级算法专家git

编辑整理:孙锴github

内容来源:DataFun AI Talk算法

出品社区:DataFun性能优化

注:欢迎转载,转载请注明出处网络

 

导读:阿里妈妈是阿里巴巴集团旗下数字营销的大中台,2018年广告营收超过1500亿,近乎占据中国广告市场收入的半壁江山。如何驱动这艘商业航母不断前行,阿里妈妈技术团队始终坚持技术创新驱动业务增加的战略,而 TDM 正是在这一战略指导下,由阿里妈妈精准定向广告算法团队自主研究、设计、应用从而创造巨大商业价值的创新算法典型表明。架构

今天的主要内容分为四个部分:框架

1. 从互联网推荐业务看检索技术发展示状函数

2. 深度树检索 ( TDM ) 的设计原理和具体实现 性能

3. 深度树检索技术对于线上业务场景的适配应用学习

4. 咱们对下一代检索技术将来发展的思考

▌从互联网推荐业务看检索技术发展示状

检索技术,是互联网推荐、搜索、广告的通用底层技术组成。

一提到检索技术,你们首先会想到搜索引擎,可是从另一个视角来看,搜索、推荐、广告其实是一脉相承的,他们的检索能够统必定义为:从全量的物品里面,挑选出来用户感兴趣的物品。不一样的是,搜索中 Query 词显式表达了用户意图,而在推荐中每每利用的是用户隐式表达如历史行为、用户属性等,而广告则是在搜索/推荐上进一步施加了广告出价的影响。

咱们认为检索技术的发展是数据、算力、算法相辅相成,协同做用的结果,具体表现为:

最初,数据少因此候选 Items 规模比较小,用很小的算力和简单的算法,就能够一步到位(如全量过一遍候选)计算出来用户感兴趣的 Items 是什么;

然而,数据在不断膨胀,尤为是随着近些年移动互联网的发展和移动设备的普及,使得咱们的数据开始呈现爆炸式的增加,从而致使咱们的候选 Items 规模也大幅增大,一步到位或者说原来的检索方式已经没法支撑这种量级的数据。

怎么办?在如此大规模数据下,算力和算法如何适应性设计呢?咱们首先来看一下算力的发展,在十几年前咱们的算力主要仍是以 CPU 通用计算为主的算力体系,算力相对比较有限。大数据+有限算力,就要求咱们对算法进行适应性设计,因而 Match+Rank 分段漏斗的算法架构被引入:从超大规模候选集中,先 Match 出小规模候选集,再经过 Rank 的方式排序出最终用户最感兴趣的 Items。逐渐地,Match+Rank 的模式成为了现在检索体系的主流架构。

数据在发展,算力体系也在发展,尤为是随着近十年来 GPU 大规模应用的兴起,造成了 CPU+GPU 异构计算的算力大融合。在大数据+大算力的现状下,咱们开始思考,检索算法架构是否是能够再升级?相似于历史中的“合久必分,分久必合”:咱们是否是能够突破 Match+Rank 的分段漏斗模式,将检索问题做为一个端到端总体去设计和联合优化?这就是咱们今天要探讨和思考的问题,也是 TDM 的由来。

咱们怎么来思考检索架构升级呢?首先须要对检索自己进行深刻分析,而做为检索的第一阶段,咱们先从 Match 入手。Match 的核心任务是从全量的超大规模的候选集中高效的检索相关 TopK,而后交给后链路好比 Rank 作进一步处理。好比在电商场景,咱们有大规模商品库,大概是十亿量级,咱们会作 Match 召回千到万级别的 TopK,送给后链路作 Rank。

相似于受算力局限下检索 Match+Rank 两阶段的设计,Match 自己也受到算力局限的影响,因此它的经典实现也是两段式的,好比:

  • 搜索场景下,两段式的表现,就是 User 到 Query-rewrite,Query-rewrite 到 Doc;

  • 推荐场景下,两段式的表现,就是 User 到 Interest-tag(如品牌),Interest-tag 到 Item。

这里存在的问题是两段式相互隔离,好比咱们对 User 到 Query-rewrite 进行优化造成各类匹配算法,而后对 Query-rewrite 到 Doc 优化造成倒排索引。这种两段式缺乏联合优化,而且受限于线上性能影响,两段式的各个阶段的标签数量是有截断的,效果(如全量发现能力)上就存在局限。

Match 两段式的经典实现如图中 Item-CF 所示,这里不作过多论述。如前述说的,它的优点是模型比较简单,实现成本较低,劣势是两段式没法联合优化,各阶段的标签截断致使效果受限。由此,咱们天然会想到一个问题:两段式有缺陷,那咱们是否能够改成一段式?

答案是确定的,那么一段式要怎么作?

在推荐和相关领域,简单的一段式全库检索的经典表明,其实借鉴了图像检索的算法,即:内积模型的向量检索。它经过各类方式学到了 Item 的 Embedding,而后经过 PQ 方式构建分库索引,检索时实时计算 User Embedding,作最近邻 TopK Item 检索。内积模型向量检索在 Facebook 17年开源了 FAISS 库后,获得了普遍的应用。这种一段式全库检索,在发现能力上具备必定优点,但缺点是模型比较简单,能力有限。这里以 PCTR 预估为例,内积模式的 DQM、Attention 的 DIN、Attention+GRU 的 DIEN 作比较来看,内积模式的 AUC 是最低的,间接证实了内积模型是存在能力局限的。

另外,这种模式下索引构建和模型优化的目标存在不一致。积量化索引的优化目标是最小化近似偏差,而向量检索(召回问题)的优化目标是最大化 TopK 召回率。因此因为二者优化的目标不一致,这会致使最终效果并非最优的。

咱们总结一下 Match 中检索技术的发展历程,不难发现,检索技术是模型能力和索引效能的融合:

  • 基于商品的协同过滤(Item-CF),模型能力:启发式统计规则,没有学习成分;索引效能:分离两段式;问题:非学习模型,非面向全库索引;

  • 内积模型向量检索,模型能力:内积模型;索引效能:全库一段式;问题:内积模型相对简单(问题:为何是内积而不能是其余更复杂的模型如 DNN?留给读者思考);索引和目标之间没有联合优化。

那么面对这样的现状,下一代模型,咱们要如何发展?答案是:更先进的模型、更先进(高效)的索引。

深度树检索 ( TDM ) 的设计原理和具体实现 

应用先进模型,咱们天然想到了深度学习模型,但它的引入会带来额外的问题:

① 深度学习的单点计算消耗 T 较大,在性能有界的状况下,咱们的计算次数 N 不能过大;

② 要实现面向全库的检索,N 越大越好(最大时即为候选集 size),在性能有界的状况下,与上述 ① 产生了矛盾;

如何解决这一矛盾?仍是“检索技术=模型能力+索引效能”,也即模型的升级须要索引结构的升级来适配,因而咱们的核心任务变为:创建一个高效的索引结构来承载先进的模型能力。高效索引有不少,散列表、图等都有一些弊端,最终咱们选择了树这一层次结构(如图所示)。

以十亿商品为例咱们能够构建一棵30层的树,检索 Top1 咱们只须要计算30次。

基于以上这些考量,咱们提出了 Tree-based Deep Match(TDM)这个算法,具体咱们须要进一步解决如下四个问题:

① 如何基于树实现高效检索?

② 如何作兴趣建模保证树检索有效性?

③ 如何学习兴趣模型?

④ 如何构建和优化树索引结构?

接下来,咱们会以淘宝的商品推荐为例,作一个关于 TDM 设计和实现的详细介绍,来帮助你们理解。

如何作高效检索?不失通常性,假定咱们的树是一棵彻底二叉树,所有叶子节点表明所有商品,中间节点表明某种意义上的粗粒度聚合(例如“iPhone”是商品,做为叶子,“手机”是该商品的类别,做为父节点;可是这里须要说明,在一般的 TDM 树中,咱们并不要求中间节点必定存在具体物理意义)。

树上如何作高效检索呢?咱们采用了 BeamSearch 这种方式,自顶向下,作快速剪枝。

BeamSearch 检索方式如图中右侧流程所示:假设要寻找最优 Top2 个 Item,第一层有两个子节点,打分排序选出 Top2(只有2个,全取);扩展出第二层四个子节点,打分排序选出 Top2;扩展出第三层四个子节点,打分排序选出 Top2,达到叶子层,最终返回 Top2 个 Items,查找复杂度为 O(2*K*log2N),K 为返回个数,N 为叶子个数。

衍生问题:为何该检索策略检索出来的 Top2,必定会是用户感兴趣的 Top2呢?即 BeamSearch 的有效性要如何保证?

有效的检索背后蕴藏了有效的兴趣建模,也即,要如何建模,使得 BeamSearch 检索有效。

为此咱们提出了兴趣最大堆树的概念:用户对 n 节点兴趣的偏好,是用户对 n 节点的孩子节点们的兴趣偏好,取 max 后,在 n 所在的节点层作归一化。如图中右侧树所示,SN4 的兴趣偏好:

PSN4=normalization(LayerSN, max(PItem7, PItem8)) 

在这样的假设下,有个很好的性质:最大堆树下,当前层最优 TopK 节点的父亲,必定属于上一层的最优 TopK。

以右图举例:若是 Item8 和 Item6 是叶子层最优 Top2,那么根据咱们以前的描述,SN4 和 SN3 是 SN 层的最优 Top2。

所以,最大堆树的定义是 BeamSearch 有效的充分条件。因此咱们能够从根节点递归向下,逐层挑选 TopK,而后扩展至叶子层。

咱们如何学习最大堆树的模型?BeamSearch 检索本质上要求具有对每一层进行 TopK 排序的能力。咱们的作法是:构建符合这样性质的样本,让样本牵引模型学习,去逼近最大堆。

  • 具体思路:

叶子层的节点兴趣比较容易构建,由于用户对叶子层的节点是有行为产生的,有行为/没有行为对应感兴趣/不感兴趣,以此来构建序标签;中间节点,用最大堆递归上述的方式去推导每一层的序标签;当咱们有了每一层的序标签,就能够用深度学习去拟合序标签的样本

在实际操做中,咱们没有用序样本去构建序模型,而是把序估计还原成点估计,此处能够理解为把排序模型转换成分类模型。

有了分类样本以后,就可让模型去拟合,牵引模型学习逼近最大堆性质。

  • 采样方案:

咱们认为绿色表明正样本,红色表明负样本,若是用户对 Item6 节点有访问,那咱们认为用户对 Item6 节点是一个正兴趣,咱们在当前的叶子层作随机的负采样,那么上一层怎么作呢?正样本上溯路径的祖先仍然为正样本,而后每一层再作负采样,因此这样就固定出来每一层的正负样本,这样整个树的样本都已经固定完毕。

有了正负样本,咱们就能够用任意复杂模型去拟合 label。能够看到这样模式的优势:

咱们刚刚一直在提要用先进模型或者深度模型,这里发现最大堆树的训练模式和检索阶段的效率保证了能够基于在线检索的性能约束(上界)来决定能够用多复杂的模型达到最高的检索效果。

上图为具体的模型结构,能够看到:

  • 先进模型网络结构:采用以 Attention 为核心的多层深度神经网络,实现对多峰兴趣的强大判别,F1(Precision 和 Recall 的调和平均数)提高了16%。

  • 时空兼顾特征表征:以序列化建模用户特征的时序表达,对时序特征进行树上溯(Hierarchical Representation)实现用户特征的层上空间归约,F1 又提高了18%。

树结构在 TDM 算法中所扮演的关键角色:树不只决定了检索的索引结构,更是决定了用于模型学习的样本分布,因此树结构的“好坏”直接决定了最大堆树模型学习的效果上界。

不失通常性假定咱们的树仍为彻底二叉树,叶子节点为 n 个,那树的本质其实就是如何将 n 个商品一一投射到 n 个叶子上去,也即树的形式化定义是找个一个 π 映射实现 n 对 n 的二部完美映射。那怎么样的树是好的树呢?也即何种 π 映射是最优的呢?从左下图能够看出来,右侧的树结构更优,由于它隐含了性别分类,可使得 TDM 模型学习得更好(上限更高)。

为了达到模型和树的联合最优化,咱们创建了统一的全局经验损失函数(如右上公式),并经过交替迭代的方式进行模型参数 θ 和映射函数 π 的联合优化。其中 π 的优化是一个带权二部图的最大匹配问题,复杂度比较高(O(n^3)),为此咱们创建了右下的贪心近似算法(Algorithm2)来优化 π。最终的效果是这种联合优化让 F1 提高近10%。

PS:这里有现场同窗提问

Q:前几页的最大堆树学习里有正负采样,为何“统一的全局经验损失函数”里面没有负样本项了?

A:为了实现统一 Loss,咱们这里对 TDM 模型进行了建模变换,从以前的二分类转换到了多分类,即将层上用户兴趣建模成用户对当前层上的所有树节点作多分类问题。上述统一 Loss 即为多分类建模下的标准交叉熵 Loss,其中的 p 为归一化几率。在实际实现方式上,咱们采用了负采样 + NCE 的方法来近似多分类 Softmax。因此上述统一 Loss 里面确实没有了负样本项,“负样本”是以 NCE 方法中的负采样方式表现了。

 

TDM 在 AmazonBooks 和 TaobaoUserBehavior 两个公开数据集上进行了测试。相对于基线的 ItemCF 和 Youtube 内积模型,TDM 的提高很是显著。咱们也对 TDM 各类优化作了单项拆分分析,Attention、HierarchicalRep. 和联合学习的效果如以前所说,其中三者的联合效果达到了1+1+1>3。

回到最初的图中,咱们再次发现:检索技术是模型能力和索引效能的融合。

从这个角度,你们思考一下,TDM 为何能够解决这个融合呢?咱们实现了对更先进模型,即深度学习模型的融合;其次,咱们实现了更先进索引,采用了树结构来作索引,有别于经常使用的倒排索引,而且咱们的树结构是一个与模型适配且联合学习的树。

总结一下 TDM 提出、设计和实现的脉络:

  • 目标:解决从超大规模全量商品库中高效检索 TopK 商品的问题

  • 思考:但愿由先进模型带来性能/效果的提高;为赋能先进模型,须要高效索引;由此产生最大堆树的理论建模

  • 探索:基于最大堆树,咱们连接了 BeamSearch 检索下深度学习模型和高效树索引联合学习的方式,造成了基于学习树的全库索引的检索框架。

深度树检索技术对于线上业务场景的适配应用

原生 TDM 是兴趣最优的检索方案,可是在实际业务中,有些业务目标不必定是兴趣最优。例如在广告业务中,咱们要考虑 ECPM 最优。那么,咱们要如何改造 TDM,使得其能够知足不一样的业务目标?

这里面有以下挑战:

  • 算法要从理论上进行升级适配,使得最大堆树的建模适配业务指标;检索也须要改造,在总体链路的设计上要考虑多目标融合,使得检索体系能够支持多个业务目标

  • 此外,克服性能瓶颈,实现检索功能的真正在线应用,也须要一段路要走。

“兴趣最大堆”改形成“任意指标最大堆”的过程当中,也存在一些问题,好比:“兴趣”是二值问题,即感兴趣/不感兴趣,能够抽象成分类问题;而在广告中,“ECPM”是一个连续问题,即 ECPM 是一个连续的数字,更适合抽象成回归问题。基于这个现状,咱们须要思考,如何构建这样的 TDM 模型。

仍然以广告为例:因为叶子层是每个具体的 Item,那么这些 Item 的 ECPM 是能够计算的(因为 ECPM=PCTR*BID*1000,咱们能够经过其余的模型计算 Item 的 PCTR,BID 经过查找/统计的方式能够获得),因此咱们有叶子层的全部 Item 的 ECPM 值。因此咱们能够经过 max 上溯的方式,将其引入到咱们的最大堆树中来,也即:

PParent1= max(PItem1, PItem2)

上一层的节点值为该节点的孩子节点的最大值,此处不须要归一化。并以此方式递归上溯生成整棵树,并在检索的时候递归往下完成 TopK 检索。

因为一个模型并不能适配全部的场景,知足全部目标(例如:广告业务考虑广告收入的最大化;电商业务考虑电商成交最大化等),所以,咱们对检索模型作了另一个改造,也即:分模型联合检索框架,上层是公共部分,对通用的功能作抽象,下层是业务部分,根据业务现状作设计,两部分实现并行调用。

虽然 TDM 理论上能够支持任意深度模型,但实际应用中,咱们仍然须要考虑在线检索 Bound 的约束。在一开始上线之初,TDM 的 RT 增量达到了 60ms,对于阿里妈妈的在线广告链路彻底不可用。但经过后续的包括通讯、计算、链路等优化,最终 TDM 实现了上线后 RT 增长接近于 0ms 的良好性能。

现阶段 TDM 主要接入了阿里妈妈定向广告的 Match 阶段,包括 Shop/Node/Item 已经全量上线,覆盖了阿里妈妈定向广告主要场景的大部分流量,CTR 和 RPM 的效果提高都达到了两位数。

最后,从学习树全库索引的检索,咱们进一步把 TDM 扩展到了通用的业务应用框架。左边纵向为基于学习树全库索引的超大规模检索是如何设计的,右边纵向为如何应用 TDM 到线上业务,包括改形成业务最大堆树,而后面向业务的高性能优化和多层多模型的设计,最后真正应用于实际。

咱们对下一代检索技术将来发展的思考

对于将来,咱们但愿将创新推向一个新的高度,固然这只靠咱们一个团队是很难作到的。结合当前 TDM 在阿里妈妈的应用,咱们但愿能在下一个阶段,能够将 TDM 与现有技术作更深层的融合,好比在图检索、搜索业务等领域上面作一些优化和探索。

咱们也一直坚持开放、开源的态度。TDM 的离线训练、在线预测的代码已经在 github 开源:

  • 离线训练: 

https://github.com/alibaba/x-deeplearning/wiki/深度树匹配模型(TDM) 

  • 在线Serving:

https://github.com/alibaba/x-deeplearning/wiki/TDMServing 

咱们也正在集团内部推进 TDM 一站式服务化平台的建设,第一阶段实现 DIMO(Data In, Model Out),第二阶段实现 DISO(Data In, Service Out),以期将来能够实现:算法工程师提供场景内行为数据,咱们能够自动化构建 TDM 模型;算法工程师将 TDM 模型提交至云端,在线服务就能够自动加载运行,实现 TopK 检索。

TDM 也还在继续创新过程当中,包括:

  • 技术方面:实现千人千树、图空间加强、检索最优化;

  • 业务方面:可解释性,基于树结构的广告白盒透出等;

  • 生态建设:学术上正在承办 CIKM2019 比赛,工业上会持续开放、开源,增强云端建设能力。

“合久必分,分久必合”,受限于数据发展的爆炸式增加,和计算性能的限制,两段式 Match+Rank 统治了检索架构的主流,但在大数据+大算力的大环境下,咱们须要对算法作出改变,为此 TDM 突破了原有的架构约束,作出了部分创新工做,实现了端到端联合优化的一体化检索框架。

当前的 TDM 无论是技术创新仍是业务应用还处在发展初期,咱们相信随着技术和业务的持续创新,TDM 将来有望发展成为一个面向搜索、推荐、广告业务领域的通用的底层框架。咱们也很是欢迎各位能够一块儿来探讨、应用和改造 TDM 技术,实现更优的检索效果,取得更大的业务成果!今天的分享就到这里,谢谢你们。

相关文章
相关标签/搜索