AutoML系列 | 04-AutoML系统中的元知识迁移应用

2020年10月22日 2点热度 0条评论 来源: 京东科技技术说

前言

在之前的一篇文章《AutoML系列 | 02-自动化机器学习系统设计》
中,我介绍了自动化机器学习(AutoML)系统构建的基本思路和具体方案,并且经过团队成员的通力协作,文中阐述的技术方案已经在KuAI平台产品化落地,目前处于内测阶段。通过对平台上AutoML能力评测案例的分析以及AutoML领域最新研究进展的调研,认为其仍有较大的优化空间。

本文提出一种基于元知识迁移的方法,以期改进AutoML系统的模型自动训练的效果和性能,希望与各位专家探讨、交流。

一、问题背景

人类在学习新的知识、技能的时候,往往会以已有的知识、经验为基础,借鉴在相关任务上总结的方式方法,而不是完全从头开始学习。随着知识、经验的积累,学习新的知识、技能会变得更加容易,也能够降低试错成本。我们能否类比人类迁移学习的机制,将其应用机器学习和深度学习领域呢?

在机器学习和深度学习领域,设计、训练一个解决生产应用中实际问题的高准确性和鲁棒性的算法模型,往往需要进行大量的超参数设置和调优工作,包括具体基础算法的选择和对应超参数的设置。为训练、调试出一个高准确性和鲁棒性的算法模型,当前主要采用以下技术和方法:

基于专家知识经验的方法

算法专家通过对待解决问题的定义和算法模型训练数据的探索分析,结合个人的专业知识和以往解决类似问题的经验,选择基础算法和相应的超参数,然后进行模型的训练和评估,分析结果,再进行基础算法或超参数的调整,直至找到一个在验证集上评估指标满足目标需求的模型。

该方法严重依赖于专家知识经验,经验停留在模型构建人员的大脑中,或者以经验总结的文字描述存在,难以以显式结构化的方式存储、积累和分享利用。模型超参数多轮调试既耗费大量硬件资源,又耗费人力成本,还可能由于耗时长影响产品落地速度。

基于网格搜索和随机搜索的方法

为了减少基于专家知识经验的方法中人工的反复尝试和对比分析工作,算法专家基于个人专业知识和以往解决类似问题的经验,设置比较可能出现最优超参数的范围,即超参数搜索空间,然后借助网格搜索或随机搜索工具从超参数搜索空间中逐个枚举或随机采样超参数组合,自动地进行模型的训练、评估,最后从结果集中选择评估效果最好的模型。

该方法未能利用历史相关任务上积累的先验知识,仅仅是穷举或随机采样,效率低。当基于专家知识经验设置的超参数搜索空间设置不合理或者过大时,难以在可接受的时间内找到满足目标需求的超参数组合,另外也难以以显式结构化的方式存积累、分享复用该过程积累的经验。

基于超参数搜索算法的方法

当前学界存在一些模型超参数搜索算法,模型构建人员可根据个人经验,定义一个超参数搜索空间,然后基于超参数搜索算法从搜索空间搜索超参数组合。

该方法除了未能利用历史相关任务上积累的先验知识,同时存在“冷启动”问题,可能导致超参数搜索算法中的代理模型在次优的搜索空间耗费较多时间,导致效率低下。同样的,对于耗费大量硬件资源训练出来的模型仅是解决了当次任务,本次模型训练过程中得到的经验知识没有以显式结构化的方式存储、沉淀。

二、系统优化构想

为解决上文提到的当前AutoML系统存在的问题,使AutoML系统具有元知识迁移学习的能力,本文提出以下构想:

1、我们能否设计一种将模型训练积累的经验知识以显式结构化方式进行采集、计算和保存的方法。使每一次模型训练过程不仅仅得到解决特定问题的模型,而且不断地积累、更新模型元知识库,用于指导后续模型的自动化训练,形成良性闭环?

2、我们能否设计一种模型元知识迁移应用方法,一方面基于元知识资源库中相似的元知识指导模型超参数组合的搜索,解决超参数搜索算法的“冷启动”问题和效率低下问题;另一方面,基于元知识资源库中的相似任务的训练曲线,通过模型训练早停控制方法,提前终止部分无效超参数组合的训练/评估过程,大幅减少了无效超参数组合训练/评估过程的硬件资源占用和时间消耗?

3、我们能否设计一套完整的元知识迁移应用系统及其架构设计方案,对元知识迁移策略设计、基于迁移的元知识进行模型自动训练等繁琐流程和环节进行了统一的管理,使AutoML系统更简单易用,减少模型构建过程对算法专业知识、丰富经验的依赖,从而让模型构建人员有更多的时间分析业务问题、定义问题或者从模型推测结果中提取洞见指导业务发展呢?

三、元知识迁移应用方法

系统架构设计

本文提出的元知识迁移应用系统的架构设计如图1所示,自下而上可分为“基础设施层”、“引擎框架与任务调度层”、“元知识管理与迁移组件层”、“应用层”四个层次。

“基础设施层”主要包括“CPU/GPU/FPGA异构集群”、“SSD/Ceph/HDFS存储服务”、“网络通信服务”等。“引擎框架与任务调度层”主要包括“机器学习/深度学习框架”、“自动机器学习引擎”、“模型训练/评估引擎”、“训练早停控制器”以及为模型元知识采集、更新和迁移任务提供运行基础的任务调度和服务编排引擎等。“元知识管理与迁移组件层”主要包括“元知识采集模块”、“元知识迁移模块”、“元知识更新模块”、“元知识资源库”、“超参数搜索空间仓库”、“模型仓库”等。“应用层”主要包括“模型训练任务设计器”、“元知识迁移策略设计器”、“模型训练任务监控面板”以其面向本系统使用用户的可视化界面Web UI。

各组件/模块之间基于微服务架构设计,有机整合,实现模型元知识的采集、更新和迁移应用。

图1 元知识迁移应用系统的架构图

该系统包含的各功能模块的设计以及模块之间相互协作关系如下文所述:

(A)CPU/GPU/FPGA异构集群:属于基础设施,为模型训练/评估、模型元知识采集、更新和迁移应用以及系统其它基础服务任务提供稳健的运行环境。

(B)HBase/Ceph/HDFS等存储服务:属于基础设施,为模型训练/评估的数据集、(H)元知识资源库、(I)搜索空间管理模块、(J)模型仓库、镜像仓库以及系统其它基础服务所依赖和产生的数据等提供存储服务。

(C)网络通信服务:属于基础设施,为系统中各组件/模块之间的数据传输、信号传递提供基础网络通信服务。

(D)机器学习/深度学习框架:是模型元知识迁移应用和模型训练/评估的软件框架基础,包括Tensorflow/Pytorch/Caffe/Keras/MxNet/Scikit-Learn等,系统后台根据用户在(N)模型训练任务设计器中配置的对基础框架的偏好基于容器技术自动将对应的框架和依赖的软件包打包成独立、差异化的镜像文件,并将镜像文件及其元信息保存至镜像仓库中;在(E)自动机器学习引擎和(F)模型训练/评估引擎需要进行启动机器学习和模型训练/评估之前,从镜像仓库中获取对应的镜像文件启动启动1个或多个容器执行超参数搜索和模型训练/评估任务,而无需运维搭建运行环境。

(E)自动机器学习引擎:是指根据用户在(N)模型训练任务设计器中配置的模型自动训练任务,以(L)元知识迁移模块从(H)元知识资源库提取匹配的元知识为指导,进行模型超参数的搜索和模型训练的引擎。(E)自动机器学习引擎的实现原理和技术方案详见之前的一篇文章《AutoML系列 | 02-自动化机器学习系统设计》,本方案中的(E)自动机器学习引擎以该技术方案为基础,在超参数搜索时以元知识为指导,解决超参数搜索的“冷启动”问题,减少不必要的超参数搜索次数,并通过(G)模型训练早停控制器来提前终止部分无效超参数组合的训练/评估,从而加快模型的训练,介绍硬件资源占用。

(F)模型训练/评估引擎:基于K8S进行模型训练/评估任务调度和资源分配,提供模型训练/评估所需的弹性硬件资源和基于(N)模型训练任务设计器中配置的容器镜像启动的容器,接收(E)自动机器学习引擎分发的模型训练/评估任务,从(B)HBase/Ceph/HDFS等存储服务中加载(N)模型训练任务设计器中配置的训练集和验证集,进行模型的训练和权重参数的更新,并将模型训练过程的监控信息(包括具体模型采用的超参数组合、模型迭代更新过程中模型在训练集和验证集上的性能表现、运行时长、运行状态等)反馈至(P)元知识迁移策略设计器。最后,将模型性能最优的N个模型、权重参数及模型元数据信息保存至(J)模型仓库中。

(G)模型训练早停控制器:是指根据用户在(O)元知识迁移策略设计器中配置的早停控制策略,通过将模型训练/评估过程中实时采集的训练曲线与(H)元知识资源库中的详细任务的训练曲线进行计算对比,从而决定是否提前终止部分无效超参数组合的训练/评估过程的控制单元。

(H)元知识资源库:是指对(K)元知识采集模块根据元特征指标体系在历史模型训练任务中计算、采集的元知识进行统一保存和管理的仓库,是(L)元知识迁移模块的核心基础。

(I)搜索空间管理模块:对机器学习基础算法各超参数搜索空间的范围进行管理,一方面为(E)自动机器学习引擎中的超参数搜索任务提供空间搜索范围;另一方面,也可用于用户在(N)模型训练任务设计器中选择高级选项进行搜索空间的定义、编辑、可视化对比等。

(J)模型仓库:是指具体自动机器学习任务学习得到的模型性能最优的N个模型、权重参数及模型元数据信息的管理仓库,提供模型元数据信息的预览对比、模型的多维度分类、排序、搜索等功能。

(K)元知识采集模块:包括元特征指标体系、元特征计算单元和元特征采集、存储单元等,将模型训练过程中基于元特征指标体系计算、采集的元知识保存至(H)元知识资源库。

(L)元知识迁移模块:包括元知识相似性度量算法库、相似元知识匹配排序单元和元知识迁移单元等,该模块负责两方面的元知识迁移:1)根据用户在(O)元知识迁移策略设计器中配置元知识迁移策略,从元知识相似性度量算法库选择相应的算法,从(H)元知识资源库中匹配出相似的元知识指导模型超参数组合的搜索;2)将模型训练/评估过程中实时采集的训练曲线与(H)元知识资源库中的相似任务的训练曲线进行计算对比,并将结果反馈给(G)模型训练早停控制器,用于减少无效超参数组合训练/评估过程的硬件资源占用和时间消耗。

(M)元知识更新模块:包括元知识多样性度量指标库、元知识多样性计算单元和元知识资源增删改单元等。该模块负责基于元知识多样性度量指标对元知识资源库进行元知识多样性的度量和更新,包括增加新的元知识、剔除重复或低质的元知识和元知识的合并更新等。

(N)模型训练任务设计器:为模型构建人员提供设计自动机器学习任务的直观、可视化配置界面,配置内容包括:1)模型训练需要的加工好的训练集和验证集,包括特征变量和目标变量的配置;2)自动模型训练任务运行的硬件资源类型(CPU/GPU)和数量、运行终止条件(迭代次数、运行时长阈值、模型精度阈值等)、期望保存的性能最优模型文件以及超参数组合结果的数量等等;3)(可选的)在(I)搜索空间管理模块中根据具体任务自定义的超参数搜索空间;4)(可选的)超参数优化算法,系统默认会根据学术界的公开评测选择当前最优算法。

(O)元知识迁移策略设计器:包括两方面元知识迁移策略的设计:1)模型训练早停策略,系统内置多种早停控制方法,用户可选择其中一种或多种,系统将模型训练/评估过程中实时采集的训练曲线与(H)元知识资源库中的相似任务的训练曲线进行计算对比,然后根据选定的早停控制方法决定是否提前终止部分无效超参数组合的训练过程;2)元知识相似性度量和排序策略,系统内置多种相似性度量和排序算法,用户可选择其中一种或多种,也可以根据统一接口自定义相似性度量和排序算法。

(P)模型训练任务监控面板:主要提供具体自动机器学习任务模型训练过程信息(模型采用的超参数组合、模型迭代更新过程中模型在训练集和验证集上的性能表现、运行时长、运行状态、对硬件资源的使用率等等)的可视化展示、对比,模型构建人员可结合自身专业知识,通过对模型性能表现及其对应的超参数组合、超参数搜索空间分析,从中提取见解,指导(D)超参数搜索空间管理模块中超参数搜索空间的定义优化以及(C)自动机器学习任务设计器中相关参数的设置。

元知识采集方法

图2 元知识采集流程示意图

人类在开展一项工作时,会借鉴自己或其他人之前在相似工作上积累的经验知识。类似的,机器学习模型构建人员在具体数据集上训练一个机器学习模型时,往往有许多超参数需要设置和调整,也会参照自己之前的经验或其他人在相似任务上分享的经验总结。本文提出,将这种隐式的能够指导相似机器学习模型训练和调优的经验知识,即元知识,以结构化的形式进行计算和采集,以系统的、自动化的方式指导如何更好更快的构建机器学习模型。

表1 元特征指标体系

元知识的采集流程如图2所示,包含以下环节:

(1)关于模型训练任务属性和数据集特征方面元知识的采集

如图2左图,模型训练任务属性包括二分类、多分类、回归等,描述数据集的特征如表1所示的元特征指标体系。对于用于训练模型的数据集,将其按类别保存至(B)Hbase/Ceph/HDFS等存储服务上的数据集仓库中,然后从表1中配置需要计算的元特征指标,初始化元特征计算模块,启动元特征计算任务,并对输出结果基于元特征处理模块进行进一步处理,例如主成分分析降维、AutoEncoder、标准化等。

最后将处理的结果与数据集ID(全局唯一)、模型训练任务属性(从元数据对目标变量的描述中获取)一起构成以结构化形式刻画模型训练任务属性和数据集特征的数据元特征,表示为(ID,Vd),其中Vd为多维向量。

模型训练数据集的来源包括社区公开数据集(如UCI、OpenML、Kaggle竞赛等的数据集)和系统使用用户训练模型时使用的业务数据集。社区公开数据集上数据元特征的采集采用异步、离线的方式进行计算、处理,一般用于(H)元知识资源库的初始化阶段;业务数据集上的数据元特征在系统用户进行模型训练过程中已经进行计算、处理,系统自动将其保存。

(2)模型训练/评估过程中模型元特征的采集

如图2右图所示,对于上一环节采集了数据元特征的每个数据集,以参数网格的方式在模型训练设计器配置批量的模型训练任务,即等间隔地设置硬件资源类型(CPU/GPU)和数量、迭代次数、模型训练运行时长阈值、模型精度阈值等Vc以及等间隔的设置超参数搜索空间中各超参数的初始化值Vsp,从而得到海量在不同条件配置下的模型训练任务;然后启动这些任务,对模型训练/评估状态进行实时采集,包括模型在训练集/验证集上的损失函数变化曲线Vlc、精度评估指标变化曲线Vac等,并基于元特征处理模块进行进一步处理,例如曲线在不同位点的一阶/二阶导数、不同滑动窗口内损失函数值和评估指标的平均值、中位数等。

最后将数据集ID(全局唯一)、每次模型训练配置的硬件资源类型(CPU/GPU)和数量、迭代次数、模型训练运行时长阈值、模型精度阈值等以及各超参数的初始化值、损失函数变化曲线、精度评估指标变化曲线、模型训练结束是的精度评估指标Vm以及元特征处理模块处理后结果以结构化形式保存,表示为(ID,Vsp,Vc, Vlc, Vac, Vm),其中Vsp,Vc, Vlc, Vac, Vm均为多维向量。

(3)通过全局唯一的数据集ID将上述两个环节采集的数据元特征和模型元特征关联起来,表示为(ID,Vd, Vsp, Vc, Vlc,Vac, Vm)。

图3 元知识资源库更新流程示意图

对于按照3.2.2小节所述的元知识采集方法采集的元知识,并非毫无选择的追加到(H)元知识资源库中,而是基于元知识多样性度量指标对元知识资源库进行元知识多样性的度量和更新,包括增加能够增加元知识库多样性的新的元知识、剔除重复或低质的元知识和元知识的合并更新等,形成(H)元知识资源库的良性迭代更新闭环。

元知识资源库的更新流程如图3所示。包含以下环节:

(1)对于采集、处理后的每一条元知识,从元知识多样性度量算法库中选择多样性度量算法,计算该条元知识对于增加元知识资源库多样性的贡献值;

(2)判断贡献值是否超过设定阈值,如果是,则将该条元知识新增至元知识资源库,如果不是,则转到下一步;

(3)从元知识相似性度量算法库中选择相似性度量算法,从元知识资源库中筛选出N条相似的元知识,进行元知识的合并更新,或者剔除元知识库中低质的元知识。

元知识迁移应用方法

元知识迁移应用包括两个方面:

(1)根据用户在(O)元知识迁移策略设计器中配置元知识迁移策略,从元知识相似性度量算法库选择相应的算法,从(H)元知识资源库中匹配出相似的元知识指导模型超参数组合的搜索;

(2)将模型训练/评估过程中实时采集的训练曲线与(H)元知识资源库中的相似任务的训练曲线进行计算对比,并将结果反馈给(G)模型训练早停控制器,用于减少无效超参数组合训练/评估过程的硬件资源占用和时间消耗。

元知识迁移应用的具体流程如图4所示,图中用5种颜色的箭头线区分了5条数据流转和信息传递的主线。

图4 元知识迁移应用流程示意图

1、元知识指导的模型自动训练主线(图4红色箭头线)

① 系统使用用户在(N)模型训练任务设计器中配置:1)模型训练需要的加工好的训练集和验证集,包括特征变量和目标变量的配置;2)自动模型训练任务运行的硬件资源类型(CPU/GPU)和数量、运行终止条件(迭代次数、运行时长阈值、模型精度阈值等)、期望保存的性能最优模型文件以及超参数组合结果的数量等等;3)(可选的)在(I)搜索空间管理模块中根据具体任务自定义的超参数搜索空间;4)(可选的)超参数优化算法,系统默认会根据学术界的公开评测选择当前最优算法。

② 系统使用用户在(O)元知识迁移策略设计器中配置元知识相似性度量/排序策略和模型训练早停策略,用于下文(3)所述元知识迁移策略控制主线。

③ 系统元特征计算模块对用户配置的模型训练数据集计算表1所示元特征指标,并进行后处理(详细流程如图2左图所示),得到刻画用户配置模型训练任务的任务属性和数据集特征方面元特征向量vdi。

④ 基于元知识相似性度量算法,计算上一步得到的数据元特征向量vdi与元知识资源库对应类别下元知识<Vd,Vsp, Vc, Vlc, Vac, Vm>中Vd相似度,然后根据用户在(O)元知识迁移策略设计器中配置的排序策略(按照Vm的一个或多个维度进行排序,或者综合考虑模型训练所需的硬件资源、训练运行时长等指标)筛选出N个相似度高的元知识中对应的超参数组合Vsp。具体的相似度算法包括余弦相似度、闵可夫斯基距离(Minkowski distance)、VDM(Value DifferenceMetric)距离、KL散度(Kullback-LeiblerDivergence)等。此过程随着模型自动训练过程持续迭代进行。

⑤ 将上一步筛选得到的超参数组合Vsp用于(E)自动机器学习引擎中超参数的初始化,以解决超参数搜索算法的“冷启动”问题。

⑥ 选定超参数组合后,(E)自动机器学习引擎将模型的训练/评估任务分发到(F)模型训练/评估引擎中,进行模型的迭代训练和评估,并将结果反馈给(E)自动机器学习引擎,以指导下一轮的超参数组合搜索。

⑦ 在某组超参数组合配置下,随着模型的训练迭代,系统计算模型在不同迭代次数处的损失函数值和模型精度评估指标值,即得到当前模型的损失函数曲线vlc和精度评估曲线vac,基于(O)元知识迁移策略设计器中配置元知识相似性度量/排序策略计算、匹配出元知识资源库中与vlc、vac通阶段相似的N条曲线Vlc, Vac,然后反馈给(G)模型训练早停控制器,并根据(O)元知识迁移策略设计器中配置早停控制策略决定是否提前停止对该组超参数组合下模型的继续训练和评估,用于减少无效超参数组合训练/评估过程的硬件资源占用和时间消耗。

2、训练状态采集、反馈主线(图4橙色箭头线)

① 在某组超参数组合配置下,随着模型的训练迭代,按图2右图所示详细流程实时采集模型训练/评估过程中的状态信息;

② 实时采集的状态信息用于三个方面:1)反馈给元知识相似性度量模块,用于从元知识资源库中匹配曲线相似的元知识;2)反馈给(P)模型训练任务监控面板进行训练状态的可视化,用于指导用户是否需求修改自己设定的元知识迁移策略;3)反馈给(K)元知识采集模块,用于元知识资源库的更新。

3、元知识迁移策略控制主线(图4紫色箭头线):
① 元知识相似度计算/排序策略。用于主线(1)步骤d)和g)中相似度算法的控制和排序方法的控制。

② 模型训练早停控制策略。用于主线(1)步骤g)中早停判定方法的控制,例如,如果根据筛选出来的损失函数曲线或精度评估曲线的后续趋势,损失值不会进一步降低或精度评估指标值不会进一步提升,则提前终止本轮的模型训练。

4、元知识采集、更新主线(图4蓝色箭头线):

① 按照图2所示流程采集两个方面的元特征;

② 按照图3所示流程更新元知识资源库。

5、模型入库主线(图4黑色箭头线):

将最终训练得到模型、权重参数以及模型元信息保存至(J)模型仓库。

四、总结

1.本文提出了一套完整的元知识迁移应用系统及其架构设计方案。
通过抽象出“自动机器学习引擎”、“模型训练/评估引擎”、“训练早停控制器”、“元知识采集模块”、“元知识迁移模块”、“元知识更新模块”、“元知识资源库”、“超参数搜索空间仓库”、“模型仓库”、“模型训练任务设计器”、“元知识迁移策略设计器”、“模型训练任务监控面板”以“可视化界面Web UI”等核心功能模块,并进行松耦合的连接交互,对模型元知识的采集、更新以及元知识迁移策略设计、基于迁移的元知识进行模型自动训练等繁琐流程和环节进行了统一的管理和优化。

2、本文提出了模型训练过程中元知识结构化表征、元知识采集/处理以及元知识资源库的构建、更新的具体流程和技术方法,有效地将以往模型构建人员积累的宝贵经验以显式结构化的、便于共享复用的方式保存至元知识资源库,是指导新模型进行高效超参数搜索和训练的巨大财富。

3、本文提出了从两个方面进行元知识迁移应用完整技术方案。

1)基于元知识资源库中相似的元知识指导模型超参数组合的搜索,解决超参数搜索算法的“冷启动”问题和效率低下问题;

2)基于元知识资源库中的相似任务的训练曲线,通过模型训练早停控制方法,提前终止部分无效超参数组合的训练/评估过程,大幅减少了无效超参数组合训练/评估过程的硬件资源占用和时间消耗。

本文作者:京东数科 黄绿君
文章来源:“京东数科技术说”微信公众号
原文链接: https://mp.weixin.qq.com/s/t7498tYWreq0JuA6gkxy7w.
更多技术干货欢迎关注“京东数科技术说”微信公众号,我们只凭技术说话!

    原文作者:京东科技技术说
    原文地址: https://blog.csdn.net/JDDTechTalk/article/details/109227749
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。