• 基于任意深度学习+树状全库搜索的新一代推荐系统


    首先要感谢阿里,分享了这个美妙的技术。

    以下是我结合了阿里技术对基于任意深度学习+树状全库搜索的新一代推荐系统的一些看法。


    Part 0 背景

    随着时代日新月异,推荐技术对各大互联网公司都起着越来越重要的作用,阿里针对大规模候选集上的匹配推荐问题,自主创新提出了一套崭新的、完整的基于树结构的匹配和推荐算法框架,希望借此赋能任意深度学习模型在推荐匹配中的使用,实现面向全量大规模候选集的精准匹配和推荐。

    推荐、搜索、广告投放是互联网内容提供商进行流量分配的核心业务,也是大数据和机器学习技术的典型应用场景。无论是推荐,搜索,还是广告投放问题,都可以描述为从大规模候选中给用户提供有限的展现结果以获取用户的正向反馈(广告投放还需额外考虑广告主意愿和体验)。

    Part 1 理论及概念

    首先我们要明确一点:

    推荐=匹配+排序(Recommend=Match+Rank)

    从上面公式不难看出,推荐问题可归纳为匹配阶段和排序阶段的问题。

    推荐系统的核心就在于从全量Items中根据Users的behavior,召回TopK候选集的问题。

    一、

    先从排序来说,排序部分由于候选集较小,故可使用各类复杂模型(例如DL等)来优化TopK的选取,来达到最终效果,例如广告投放收益等。业界对此方面的研究进展很深,例如阿里就将排序阶段的CTR预估利用了基于Attention结构的深度兴趣模型,收益很大。

    PS: 

    Attention模型最初应用于图像识别,模仿人看图像时,目光的焦点在不同的物体上移动。当神经网络对图像或语言进行识别时,每次集中于部分特征上,识别更加准确。如何衡量特征的重要性呢?最直观的方法就是权重,因此,Attention模型的结果就是在每次识别时,首先计算每个特征的权值,然后对特征进行加权求和,权值越大,该特征对当前识别的贡献就大。

    二、

    再从匹配方面,匹配方面由于问题规模较大,复杂模型在此阶段有局限性,所以业界在这方面的研究尚处于发展阶段。回到上述关于两阶段的描述,可以看出匹配阶段产生的候选集的质量会成为最终效果的天花板因此如何创新和发展匹配技术是对业务有着重大意义的问题,也一直是业界和学术界关注的重点问题。

    三、

    以推荐为例,在工业级的推荐系统中,匹配阶段往往面临很多技术挑战。例如当候选集非常大的时候,要从全量候选集中挑选TopK集合我们无法接受随着全量候选集大小而线性增长的时间复杂度,这使得一些学术界研究的需要计算全量{User,Item} 兴趣度的方法并不能真正应用于实际推荐系统中的匹配阶段。在有限的计算资源下,如何根据用户信息从全量候选集中快速得到高质量的TopK候选集,需要在计算效率和计算准确性上做精巧的平衡。作为真实应用的推荐系统,其匹配阶段的计算时间需要被限制,简单用以下公式表示:

     
    公式1

    其中T表示单次计算的时间消耗N可以认为是为单个用户召回TopK需要的总体计算次数。在上述公式的约束下,围绕如何提升匹配效果,工业界的技术发展也经历了几代的演进,从最初的基于统计的启发式规则方法,逐渐过渡到基于内积模型的向量检索方法。然而这些方法在技术选型上都在上述计算效率约束下对匹配效果进行了很大的牺牲。如何在匹配阶段的计算效率约束下引入更先进的复杂深度学习模型成为了下一代匹配技术发展的重要方向。

    Part 2 相关技术

    如上文所述,结合工业级推荐系统的约束,匹配技术经历了从基于统计的启发式规则方法到基于内积模型的向量检索方法的转变,具体描述如下:

    I)第一代——基于统计的启发式规则方法

     

    这一类方法的经典代表就是Item-based Collaborative Filtering(以下简称Item-CF)基于物品的协同过滤,也是业界应用最广的推荐算法之一。Item-CF的算法原理是:首先通过统计计算得到Item to Item(I2I)的相似关系,其次启发式地获取用户近期行为作为Trigger Item集合,用它们进行I2I扩展最后以某种打分规则对扩展后的Item集合进行排序截断得到TopK作为候选集进行后续排序流程。结合公式(1),我们可以知道这种方法有效的控制了总体计算次数N,因为用户的Trigger Item集合是有限的,相似关系圈定的候选集合也是有限的,从而避免了对全量候选集的计算,同时简单的打分规则可以有效地控制单次计算时间T,两者使得最终整体方法的计算量较少,满足了在线应用的要求。

    这类方法简单有效,应用也比较广泛,但从算法原理不难看出,这种方法天然存在一大弊端:它限制了尝试推荐给用户未曾行为过但可能感兴趣的Item的可能性。这种将候选限定在历史兴趣相似范畴内的启发式规则对推荐效果的提升有限它降低了用户体验(尤其是推荐结果的惊喜度),也制约了系统整体的可持续发展能力。尽管后续的排序环节可以引入复杂的机器学习方法,例如MLR(混合逻辑回归)FM(因子分解)或者深度学习,但它们都依赖于匹配给出的候选结果,所以无论如何复杂的模型都突破不了匹配给定的上限

    II)第二代——基于内积模型的向量检索方法

    引入机器学习方法提升匹配能力是业界共识和趋势机器学习本质上是一个衡量模型,可以衡量用户对商品的兴趣度。这种基于模型的匹配方法理论上要衡量一个用户对所有商品的兴趣度,从而挑选出最优的推荐结果。这就带来了问题:对于大规模商品候选集的场景是计算不可行的

    如何化解计算不可行的问题?研究人员提出了以向量距离的方式衡量用户和商品兴趣度的方法用户商品表示成向量形式,并以此为基础建立基于向量聚类的索引结构进一步加速衡量效率,于是这个计算问题变成了在有限时间内是可解的(近似求解),具体实现也落到了向量引擎的范畴。结合公式(1),T代表简单的向量内积计算时间而N则通过建立向量索引结构从而控制在O(桶候选集规模)的较小范围内

    所以内积式模型向量引擎成为了最近几年匹配领域技术革新的最重要技术(图像检索问题最早就是采用的这种方法)。尤其是去年Facebook的Faiss框架开源,极大降低了业界尝试向量引擎的难度,对行业发展起到了极大的促进作用。至此,基于内积模型的向量检索方法引领了第二代匹配和推荐技术的潮流,在各类学术会议和工业实践中大放异彩。

     然而问题是,这类方法并未实现充分利用机器学习解决匹配问题的初衷对机器学习模型的限制太大。高阶深度学习大部分都不可划成内积形式,比如CTR预估里用户和商品特征交叉非常有用,大部分不可用内积表示。而在现有深度学习中内积模型的表达能力被证明是有限的,比如将内积模型中最后的内积运算直接换成多层感知机能大幅提升模型能力,而多层PNN内外积神经网络 ,DIN等对用户兴趣更有洞察力的复杂模型效果被证明能极大的超越内积模型。

    与此同时,我们也发现在具体实践中,向量检索算法要求User和Item能够映射到统一的向量空间。User输入信息和Item输入信息一般并不同质,如何保证映射到统一目标向量空间下的检索精度对映射算法提出了严格的要求,换言之,统一的向量空间映射对运用向量检索来解决推荐问题带来了精度损失的风险。

    III)下一代匹配和推荐技术

    结合上文的描述,匹配技术发展的核心点在于系统性能限制下尽可能提升兴趣的衡量精度(从规则算法到引入先进模型)和覆盖范围(从限定候选集到全量候选集)。为此我们尝试对下一代匹配和推荐技术进行研究,自主提出了一种更通用的匹配和推荐算法框架,它允许容纳任意先进模型而非限定内积形式,并且能够对全量候选集进行更好的匹配无论在公开数据集还是在阿里数据集上,新方法的召回率和新颖性对比前两代技术都有飞跃性的提高。我们的方法以推荐问题为例进行展开,实验也是在推荐应用的场景下进行的。值得指出的是,匹配问题本身作为推荐、搜索、广告投放业务中的核心模块,使得我们的方法具有很强的普适性。

    Part 3 技术方案

    (I)最大堆树的提出和构建:

    我们需要构建一套全新的方法体系来实现树结构的构建基于树的训练采样TopK检索、以及节点兴趣度计算的统一。回到匹配问题本身,假定全量候选集中的每一个商品都是一个叶子节点,当前用户对所有叶子节点背后都存在一个真实的兴趣度,用Pi(u)表示。我们并不知道其具体值,只有根据概率采样出来的样本(用户真实反馈)。对于一般的模型,我们可以对叶子节点的概率建模,但是要找TopK需要遍历所有节点,计算量太大。因此我们创新性的提出了兴趣最大堆树(Max-heap like Tree)的概念,其定义树上节点的概率如下:

     
    图片2

    即用户对第j层父亲节点兴趣的偏好概率正比于用户对第j+1层孩子节点兴趣的偏好概率最大值,其中a(j)是第j层节点兴趣概率的归一化因子。根据最大堆树的定义,如果已知这棵树上的每层节点概率之间的序(同层内),我们可以快速找到全局TopK,即从根节点出发找当前层的TopK,然后在上层TopK节点对应的下层孩子节点集合中继续找TopK,递归向下直至叶子。

    然而问题是这棵树上的节点概率我们现在并不知道,但是我们可以想办法得到符合树节点概率的序的样本,然后用深度学习在这个样本上进行拟合也即得到了节点概率之间的序。具体地,对于任意一个用户有行为的叶子节点采样i,隐含了叶子层的序:

     
    图片3

    根据我们的树节点概率定义(最大堆性质),可以向上递归推出每层节点概率的序。根据这个序我们进行负样本采样,用深度学习模型基于这个采样去学习,以逼近最大堆树上每层的序。

    (II)最大堆树背后的方法论:

    最大堆树结构定义背后描述的直观意义是用户兴趣的层次结构,如果用户对具体的商品感兴趣,例如iPhone,那么用户对更高层的节点,例如iPhone所在的类别--手机,也是感兴趣的。用户的兴趣结构具有天然的层次性,最大堆树结构定义了用户从细粒度兴趣到粗粒度兴趣的传递过程,也在刻画用户的这种兴趣的层次结构。当然描绘用户的兴趣层次结构不限于最大堆树结构,但是阿里提出的最大堆树结构在方法上具有独到之处,其从方法论层面统一了树结构的构建过程,树节点的兴趣建模和采样方式,兴趣树背后的TopK检索流程。

    综上所述,从最大堆树结构定义出发,阿里提出了Tree-based Deep Match(以下简称TDM)算法框架(图1)。TDM以淘宝商品体系为初始化依托,自顶向下构造从粗到细的兴趣层次树(Tree),并在此基础上应用深度学习网络进行用户兴趣的推荐建模,赋能单点计算上的复杂模型,运用层次检索方法实现全量候选上的用户TopK商品兴趣推荐。

     
    图4 Tree-base Deep Match算法框架

    基于如上的设计和实现,TDM的贡献包含以下几点:

    (i)创新的最大堆树检索结构使得使用任意高级深度学习模型变得可能,带来推荐效果的极大提升

    TDM采用树来组织用户兴趣层次,并将之做为兴趣推荐的层次检索结构载体,良好的亚线性O(log(候选集规模))时间复杂度使得TDM的检索过程非常高效,这种高效为TDM引入先进复杂模型提升检索精度提供了强大支持。在单独计算每个兴趣节点的偏好时,TDM不局限于特定的模型结构(如内积等),可以引入更加切合数据特性的复杂模型结构来优化预测结果,例如基于用户历史行为的Attention结构,树节点Embedding下沉到输入层,用户和树节点的历史交叉信息引入等等。无论上述哪种复杂计算的引入,在TDM的对比实验中都取得了更优的推荐效果。

    (ii)全库检索能力可以有效提升召回准确度和新颖性

    TDM实现了面向全量候选集的检索能力,通过对用户兴趣进行层次切分和逐层圈选,TDM避免了直接在全量候选集上的超大计算,它采用将大问题切割成多个小问题递归求解的方式实现全库检索。受益于全库检索的实现,TDM可以提升结果的新颖比例并保持了召回效果,而借助于先进模型计算能力的引入TDM可以达到新颖性指标提升的同时进一步优化召回的准确度。

    (iii)再创新的树-模型联合训练实现树结构和模型能力的双优化,进一步大幅提升效果

    在基础TDM算法框架之上,我们继续创新性地建立了树-模型联合训练框架,通过初始树-模型训练-树重建-模型再训练的循环迭代,树的结构随着模型的演进不断得到优化,使得树更契合用户的兴趣组成和分布,而模型训练也受益于优化后的树结构,进一步降低Loss提升测试效果。联合训练为TDM带来了10%以上的测试效果提升。

    Part 4 总结与展望

    Tree-based Deep Match(TDM)自主创新提出了一套完整的基于树的复杂深度学习推荐匹配算法框架,它通过建立用户兴趣层次树结构实现了高效的全库检索,并以此为基础赋能深度模型引入Attention等更先进的计算结构,达到了在精度、召回率以及新颖性等指标上相对于传统推荐方法的显著效果提升。进一步的,TDM设计实现了一套完整的初始树-模型训练-树重建-模型再训练的联合训练迭代框架,更加促进了效果的提升。联合训练赋予了TDM算法框架较好的通用性,为TDM向新场景、新领域的迁移扩展提供了良好的理论基础和极大的工程可行性。

    由阿里自主创新提出的这套TDM框架是对学术界和工业界关于匹配和推荐理论技术发展的一次重大促进,它为解决匹配问题提出了一套崭新的、完整的支持任意深度学习的树状全库检索方案,取得了算法效果的巨大提升,并为广泛的行业、领域迁移提供了极大的可行性。

    TDM建立了一套完整的基于树结构的深度学习推荐匹配理论和技术,并在阿里妈妈广告业务上取得了初步的成果和进展。但相对来说TDM还处于开端阶段,后续还有较多可改进的地方,比如在树学习方法上暂时采用的是无监督学习的KMeans聚类,未来可以考虑采用有监督的方式对树进行调枝、剪枝等调整来实现树结构的进一步优化。



    作者:谨慎卑微的野心家
    链接:https://www.jianshu.com/p/88e3fba82e39
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    android 颜色值参考,(有颜色图
    Virtual address cache memory, processor and multiprocessor
    VUEJS2.0源码理解--优
    qlserver、Mysql、Oracle三种数据库的优缺点总结
    三层与MVC
    数据结构 常用定义
    c语言 typedef
    C动态内存分配
    c 指针(一)
    stdlib 头文件
  • 原文地址:https://www.cnblogs.com/waj2018/p/9716718.html
Copyright © 2020-2023  润新知