AutoML如何实现智能推荐系统的自动上线和运维?

第四范式先荐在2050大会上召集了《新媒体结合人工智能后的裂变》主题的新生论坛,第四范式资深科学家王嘉磊博士在论坛上分享了如何经过AutoML实现智能推荐系统的自动上线和运维。如下是演讲实录:算法

演讲嘉宾简介:王嘉磊,第四范式资深科学家,负责设计实现第四范式 AutoML 产品算法,美国康奈尔大学运筹学博士,研究方向为贝叶斯优化及应用于自动化机器学习。数组

智能推荐系统领域出现了一些新技术——自动机器学习,即AutoML。接下来我主要讲一下AutoML的概念以及AutoML在智能推荐系统中的应用。网络

当咱们浏览了足够多的视频或文字,手机应用就必定会给咱们推荐一些相对符合咱们口味的内容,这个过程称之为推荐。运维

如今大多数推荐系统会采用机器学习技术。相较于以前的人工概括数据,机器学习可以从海量的数据中挖掘出数据之间的微妙联系,其粒度比人工概括得出的结果高好几个数量级,推荐的质量和精准度也大幅提升机器学习

AI在推荐系统中的应用函数

在推荐系统中,机器学习的流程通常以下:性能

最初,用户想要看手机应用中的某些内容,因而发出请求,打开IP,系统就须要给该用户推荐一些他比较感兴趣的内容。这时首先会通过召回策略阶段。这一阶段的主要任务是进行粗选。在这一阶段,系统中可供候选的内容不少。若是咱们想经过某些较为简单或快速的召回策略对内容进行初筛,能够从如下维度入手:新闻热点、用户兴趣、新内容分发……学习

接下来两个阶段主要运用机器学习模型完成:粗排和精排。所谓的粗排和精排,两者之间并没有严格的界限。大体看来,粗排模型通常是指能简单快速地作出预测的模型,其精准度相对低精排模型是指一些造价较为昂贵但精准度高的模型,如今更多的就是关于神经网络的模型优化

通过机器学习模型粗排后,接下来就是排序。所谓的排序就是根据候选内容与用户兴趣的相关度,从高到低进行排序,排序最高的内容与用户的兴趣最相关。在排序完成后,后续要作的就是过滤已经推荐过的内容、考虑到多样性后还须要打散推荐内容。最后一步就是返回给用户的推荐结果人工智能

在整个推荐过程当中,除了排序模型中涉及到机器学习以外,召回策略阶段也有机器学习的应用。

若是推荐系统中的候选内容是文本内容,那么须要天然语言处理(NLP)模型来理解文本内容中包含的信息

若是是图像或视频,那么须要借助计算机视觉(CV)的技术来理解视频或图像中包含的信息,或者给图像或视频打相应标签

利用机器学习来分析用户画像,其实更多的是用在排序模型中。首先要分析用户归属于哪一个用户群,这样才能推荐出用户比较感兴趣的内容,预测点击率和内容阅读时长

内容质量的评估也能够借助机器学习模型来实现自动化。若是评估出一部分较为优质的内容,那就须要分发,大力宣传。

如何构建模型?

刚才简单介绍了咱们可以利用AI、机器学习解决的一些点。在这些点里面,其实每个要解决的点,均可能须要一个或多个模型。那么该如何构建模型呢?

在咱们接入数据以后,须要对数据进行清洗。清洗事后,对数据作一些简单的处理,让这些数据可以适应某一个训练模型,从而很好地上线该模型的一个版本。

在推荐场景中,最原始的一个训练数据就是某一随机用户。若是给该用户推荐一篇文章,文章最终被点击或未被点击都是可能产生的行为。但若是只有该用户的ID和给该用户的推荐内容ID这两个信息的话,还远远不够。咱们还会收集一些用户的其余信息,好比说用户以前的浏览记录、用户曾经发表的评论等行为数据,这些行为数据会被概括到其余的表中。

咱们须要把这些表作一个拼接,最后成行,造成一张比较全面的表单。表单中的每一行都是一次行为事件,这一行的每个数据都是用来描述该事件的具体状况:内容是什么样的?用户是什么样的?用户是否点击了内容?多表拼接和特征工程这两个操做有必定相关性,作拼接的时候其实也是在作特征。

接下来就涉及到训练模型。咱们把一个模型训练出来,它的产出须要就变成待上线的模型。构建模型的过程很复杂,其中的每个环节都须要人工的参与。一些建模科学家会凭借本身丰富的背景知识或实战经验来作出选择。

咱们但愿能训练出一个AI模型,让这个AI模型帮助数据科学家在每一个环节中作出对应的选择。其实我刚才介绍的就是用机器学习构建机器学习模型的一个流程。这个模型的具体模式(下图),其实和刚才的机器学习流程图一一对应。两者基本上是在作同一件事情,只不过咱们但愿,由AutoML完成这条链中要作的选择。

在这个链条中,Feature为特征工程,Model涉及到在多个模型之间的选择,Optimization涉及到模型的优化。假设如今咱们有一个模型并在其中作出了选择,那我怎么才能知道此次选择的好坏呢?这里比较关键的一个环节,也是人工建模时不必定会用到的一个环节,就是最后的AI模型。

也就是说,在这链条中,咱们所作的每一次操做,均可以经过评估这一步来检验此次操做。以特征工程为例,假设咱们想在已有特征的基础上尝试某个新的特征,那么能够在加了新特征之后,经过评估这一步骤来检验此次操做是不是好的操做。若是咱们还但愿给AutoML一些反馈,告诉它此次操做是好是坏,那么接下来AutoML就能知道咱们以后可能须要的一些其余操做,什么样的操做是较好的操做,或什么样的操做是差的操做。

从本质上来说,AutoML是一个搜索的过程

咱们看这幅图,一开始,这条链是一个很是简单的排列。在拿到数据后,咱们会作一些简单的特征工程(包括随机选取某个模型),等到把模型训练好后,经过评估即可得知这条机器学习管道目前的效果。

机器学习要达到的目标就是,经过不断的改变或者增长操做,让这条链最终的效果有所提高。这就是自动机器学习要作的主要工做。咱们能够把优化的过程也称为搜索的过程。

至于搜索,最简单的方法就是随机尝试。无论是选择模型仍是训练模型,其中都包含一些已知的、有限的操做。咱们从中随机挑选,挑选完后进行评估,评估完后继续去作新的尝试。最后把作过的全部尝试进行排序,挑选其中最好的或者次好的一个机器学习管道做为最终结果。但这样作存在的问题是,随着机器学习管道愈来愈长,或是这当中的操做愈来愈复杂,能作的选择呈指数性增加,并立刻就会变成上万种或者数十种万种操做。以后,对每一次操做进行评估还要花费大量时间。这时候就要用到搜索策略。

所谓的搜索策略,就是怎么样可以把搜索的过程尽量地加速,尽量作得更快。我总结了四种主要的方法:

第一种搜索策略叫进化算法。这种算法和达尔文进化论较为类似。假设有一个种群,所谓的种群即多个机器学习管道,这些机器学习管道有好有坏。经过不断的迭代,让好的机器学习管道和另外一个好的机器学习管道变换或结合,逐步取代坏的,从而产生下一代机器学习管道。评估结果好的机器学习管道会被继续保留在群组中,评估结果差的则会被剔出群组。通过不断的更新迭代,最终留在这个群组中的都是好的机器学习管道。

第二种搜索策略叫贪心法。假设你身处一个山谷中,但愿以尽快的速度爬出山谷,但你的视线范围可能就只在附近的10米之内。你能作的事情就是经过目测10米的范围之内,哪一个方向多是上升最快的方向,等走到以后继续作下一个选择。所谓的贪心法就是指在局部环境中不断地作出咱们认为最好的决策,经过对局部不断的迭代,从而找到全局最优解

第三种搜索策略叫贝叶斯优化。贝叶斯优化是基于数据使用贝叶斯定理估计目标函数的后验分布,而后再根据分布选择下一个采样的超参数组合。它充分利用了前一个采样点的信息,其优化的工做方式是经过对目标函数形状的学习,并找到使结果向全局最大提高的参数

最后一种搜索策略叫强化学习。AlphaGo用到的主要策略就是强化学习。它的本质是解决 decision-making 问题,即自动进行决策,而且能够作连续决策。

自动特征工程

作出好的特征工程通常对模型的效果提高比较明显,所以咱们作自动机器学习的工做也涉及这部分。对于自动特征工程,咱们要先定义特征应该怎么生成,咱们认为特征是原始数据通过一系列操做后产出的变换后的数据,咱们将操做大体分为unary operation, binary, aggregation等几类操做。

有了这些操做后,咱们经过算法来决策如何经过这些操做生成优质的特征。这里面咱们对于特征重要性评估,也就是评价一个特征多好或者多坏,以及决策算法都有较深刻的研究。

模型超参数优化

作完特征工程以后,咱们就到了模型训练环节。这个过程当中,因模型算法而异,可能会存在一些须要人提早去设置的参数,咱们称之为超参数。

这些超参数决定了这个模型训练过程当中的行为,而且会直接影响到这个模型最终的效果,并且最优超参数的选择又是和输入的数据息息相关的,它的设定须要根据不一样场景、不一样数据进行调节。

咱们经过研发自动调参算法来使这个过程自动化,在无人干预的状况下咱们在多个数据集上发现最终模型效果能和专家至关甚至更好。 方法上咱们一方面把它当作一个黑盒优化问题,经过贝叶斯优化来决策超参数的选择,另外一方面咱们也顾及到模型训练自己不是一个黑盒,经过利用训练过程当中产生的数据来加速超参数优化。

神经网络结构搜索

在神经网络结构搜索这个方向上,咱们主要作的工做一方面是如何可以让搜索变得更加的高效,另外一方面咱们会去考虑专用的硬件和性能的优化。

第一个方面比较清楚,因为最初的NAS算法动辄须要几百个GPU运行近一周的时间才能搜索出在某些任务上效果优质的网络结构,以后通过改进搜索结构的资源消耗依然是巨大的。这使网络结构搜索很难普遍应用起来。咱们的研究方向但愿经过高效的搜索算法和模型参数共享来尽量下降搜索对计算资源的要求。

第二个方面咱们发现实际应用中,之前设计出来的神经网络,它并不会关心这个模型最终是在什么样的机器上运行。然而若是训练完的模型是放在手机上,或者一些边缘计算设备上,因为这些设备的内存和运行速度都有很大限制,未经调试的模型极可能在这些设备上跑不起来或者性能有很大的影响。因此咱们在作神经网络搜索的时候,但愿可以把这些关于性能或者关于硬件的限制加进去,让它去作一个更加有针对性的优化。

最后,当咱们有了训练好的模型之后,咱们须要将模型作成一个服务而且不断为其余应用提供预估服务。然而随着时间推移,模型不可避免地会出现性能衰减这样一个问题。

为何呢?由于咱们的数据分布实际上是不断变化的。在推荐场景中,用户的兴趣,你们关注的内容是会不断变化的。对于单一模型,咱们能够经过不断使用新的数据训练和更新模型来保持效果。然而整个推荐系统是一个由不少模型组成的复杂系统,在系统创建之初,专家经过调试各模型之间分配的权重使系统在当时达到较优的状态。随着数据和模型的更新,先前的配置再也不是最优状态,须要花费人力从新调优系统。咱们使用自动化在线调优算法将人力解放了出来。咱们把在线调优看做经典的多臂老虎机问题,并使用兼顾exploration和exploitation的算法实现实时的优化系统配置。

咱们作的另外一个尝试叫作多任务贝叶斯优化。因为系统的最优解在不断地缓慢变化。变化以后,咱们会认为当前优化目标和以前的优化目标,或者以前一系列的不一样的优化目标,是一系列相关的任务。那么咱们能够在优化当前目标时把以前优化过程当中得到的信息复用过来,以热启动的方式实现当前优化任务的加速。

我今天分享的就是这些,谢谢。

相关文章
相关标签/搜索