首页 / 微型机器学习

微型机器学习实质审查 发明

技术领域

[0001] 本发明涉及人工智能的机器学习和深度学习领域,特别地涉及微型机器学习(mini‑machine learning)算法。

相关背景技术

[0002] 本节中描述的方法是可以采用的方法,但不一定是先前已经设想或采用的方法。因此,除非另有说明,否则不应仅由于将本节中所述的任何方法包括在本节中而认为本节中的任何方法有资格作为现有技术。
[0003] 机器学习技术现在被用于各种各样的应用中。数十年的研究已经创造了可应用于这些应用的各种算法和技术。为应用选择最佳算法可能很困难,而且会占用大量资源。例如,可以通过几种算法来完成分类任务,诸如支持向量机(SVM)、随机森林、决策树、人工神经网络等。这些算法中的每一个都有许多变体和配置,并且对不同的数据集执行不同。选择最佳算法通常是由具有多年经验的数据科学家或机器学习专家执行的手动任务。
[0004] 另一方面,如果在数据上自动探索各种机器学习技术,那么会产生大量的计算开销,以至于它甚至可能延迟基于机器学习的产品进入市场。因此,自动训练和验证每种机器学习算法以找到性能最佳的算法可能是不可行的。
[0005] 为了避免探索每一种机器学习技术,选择性训练的自动方法通常最终使用单个回归器/分类器来预测算法性能,而无需训练或验证算法。例如,这样的回归器/分类器可以是“界标”(landmark)算法,其被应用于数据集(或其样本)以预测不相关的机器学习算法的性能。界标算法,诸如朴素贝叶斯型算法、具有一个邻居的k最近邻算法、决策树桩或基于主成分分析(PCA)的算法,可以用于预测神经网络、决策树或神经网络算法的性能。
[0006] 但是,由于使用了界标算法的机器学习算法与界标算法本身不同,因此预测的准确度较低。因此,即使可以基于界标选择机器学习算法,但实际上它可能不表示用于预测结果的最佳机器学习算法。
[0007] 此外,界标算法方法也没有考虑相同算法的变体,这会显著影响算法的性能和行为。无论是使用自动算法选择还是使用任何其它方法来选择特定算法,所选择的算法的性能都可能基于同一算法中的变体而变化。界标算法由于自身与要选择的机器学习算法不同,因此不能指示特定机器学习算法的哪个变体将产生更高或更低的准确度。界标算法没有特定的机器学习算法的信息且与特定的机器学习算法没有关联,因此无法为特定的机器算法的变体提供任何实质性信息。

具体实施方式

[0016] 在下面的描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的透彻理解。但是,将明显的是,可以在没有这些具体细节的情况下实践本发明。在其它情况下,以框图形式示出了结构和设备,以避免不必要地使本发明模糊。
[0017] 训练机器学习模型
[0018] 机器学习技术包括在训练数据集上应用机器学习算法,对于该训练数据集,(一个或多个)结果是已知的,并且具有初始化参数,这些初始化参数的值在每次训练迭代中被修改以更准确地产生(一个或多个)已知结果(本文称为“(一个或多个)标签”)。基于这样的(一个或多个)应用,这些技术生成具有已知参数的机器学习模型。因此,机器学习模型包括模型数据表示或模型工件(artifact)。模型工件包括参数值,这些参数值由机器学习算法应用到输入,以生成预测输出。训练机器学习模型需要确定模型工件的参数值。参数值的结构和组织取决于机器学习算法。
[0019] 因此,术语“机器学习算法”(或简称为“算法”)在本文中是指在计算中要遵循的处理或一组规则,其中包括用于计算的一个或多个参数的模型工件是未知的,而术语“机器学习模型”(或简称为“模型”)在本文中是指计算中要遵循的处理或一组规则,其中包括一个或多个参数的模型工件是已知的,并且基于使用一个或多个训练数据集的相应机器学习算法的训练已被推导出。一旦被训练,输入就被应用于机器学习模型以进行预测,这在本文中也可以被称为预测结果或输出。
[0020] 在有监督的训练中,有监督的训练算法使用训练数据来训练机器学习模型。训练数据包括输入和“已知”输出,标签。在实施例中,有监督的训练算法是迭代过程。在每次迭代中,机器学习算法将模型工件和输入进行应用以生成预测输出。使用目标函数来计算预测输出和已知输出之间的误差或方差。实际上,目标函数的输出指示基于迭代中的模型工件的特定状态的机器学习模型的准确度。通过应用基于目标函数的优化算法,可以调整模型工件的参数值。可以重复这些迭代,直到达到期望的准确度或满足一些其它标准为止。
[0021] 在实施例中,为了迭代地训练算法以生成训练模型,训练数据集可以被布置为使得数据集的每一行被输入到机器学习算法,并且进一步存储该行的对应的实际结果,标签值。例如,成人收入数据集的每一行表示其结果已知的特定成人,诸如该成人的总收入是否超过500,000美元。成人训练数据集的每一列包含特定成人特性的数字表示(例如,成人是否具有大学学历、成人的年龄...),根据这些,当被训练时,该算法可以准确地预测是否有任何成人(甚至尚未被训练数据集描述的成人)的总收入超过500,000美元。
[0022] 训练数据集的行值可以被提供作为机器学习算法的输入,并且可以基于算法的一个或多个参数被修改以产生预测结果。行的预测结果与标签值进行比较,并且根据差值计算误差值。在统计汇总函数中使用该批行的一个或多个误差值来计算该批的误差值。“损失”术语是指一批行的误差值。
[0023] 在每个训练迭代处,基于计算出的一个或多个预测值,计算该迭代的对应损失值。对于下一次训练迭代,基于当前损失来修改一个或多个参数以减少损失。可以对训练数据集执行任意数量的迭代以减少损失。当迭代之间的损失变化在阈值内时,可以停止使用训练数据集的训练迭代。换句话说,当不同迭代的损失基本相同时,停止迭代。
[0024] 在训练迭代之后,所生成的机器学习模型包括具有产生了最小损失的模型工件的机器学习算法。
[0025] 例如,可以使用支持向量机(SVM)算法来迭代上述成人收入数据集,以针对该成人收入数据集训练基于SVM的模型。成人数据集的每一行被提供为SVM算法的输入,并将SVM算法的结果(预测结果)与该行的实际结果进行比较以确定损失。基于损失,修改SMV的参数。将下一行提供给具有修改后的参数的SVM算法,以产生下一行的预测结果。可以重复该处理,直到先前迭代和当前迭代的损失值的差低于预定义的阈值,或者在一些实施例中,直到实现的最小损失值与当前迭代的损失之间的差低于预定义的阈值。
[0026] 一旦确定了用于机器学习算法的机器学习模型,就可以将结果未知的新数据集用作该模型的输入,以计算该新数据集的(一个或多个)预测结果。
[0027] 在软件实现中,当机器学习模型被称为接收输入、被执行和/或生成输出或预测时,执行机器学习算法的计算机系统处理针对该输入应用模型工件以生成预测输出。计算机系统处理通过执行被配置为引起算法执行的软件来执行机器学习算法。
[0028] 机器学习算法和领域
[0029] 可以基于问题的领域和问题所需的结果的预期类型来选择机器学习算法。算法结果类型的非限制性示例可以是分类领域中的问题的离散值、回归领域中的问题的连续值、或聚类领域中的异常检测问题。
[0030] 但是,即使对于特定领域,也存在许多算法可供选择,以选择解决给定问题的最准确算法。作为非限制性示例,在分类领域中,可以使用支持向量机(SVM)、随机森林(RF)、决策树(DT)、贝叶斯网络(BN)、诸如遗传算法(GA)的随机算法、或者诸如人工神经网络(ANN)的连接主义拓扑。
[0031] 机器学习的实现可以依赖于矩阵、符号模型以及分层和/或关联性数据结构。最好种类的机器学习算法的参数化(即,可配置)实现可以在开源库中找到,诸如Google的TensorFlow for PythonandC++或Georgia理工学院的MLPack for C++。Shogun是开源C++ML库,带有用于几种编程语言(包括C#、Ruby、Lua、Java、MatLab、R和Python)的适配器。
[0032] 超参数、交叉验证和算法选择
[0033] 一种类型的机器算法可以基于一个或多个超参数具有无限的变体。术语“超参数”是指模型工件中的参数,该参数在机器算法模型的训练之前被设置,并且在模型的训练期间未被修改。换句话说,超参数是常数值,它影响(或控制)所生成的训练模型而与训练数据集无关。具有仅设置了超参数值的模型工件的机器学习模型在本文中被称为“机器学习算法的变体”或简称为“变体”。相应地,在模型的训练期间,相同类型的机器学习算法的不同超参数值可能会在相同的训练数据集上产生明显不同的损失值。
[0034] 例如,SVM机器学习算法包括两个超参数:“C”和“gamma”。“C”超参数可以被设置为‑3 5 ‑5 3从10 至10的任何值,而“gamma”超参数可以被设置为10 至10 。相应地,对于训练同一成人收入训练数据集,存在“C”和“gamma”参数的可能产生不同损失值的无穷排列。
[0035] 因此,为了选择算法的类型,或者此外为了选择算法的最佳执行变体,使用各种超参数选择技术来生成超参数值的独特集合。超参数值选择技术的非限制性示例包括贝叶斯优化,诸如用于超参数值选择的高斯处理、随机搜索、基于梯度的搜索、网格搜索、手动调整技术、基于树结构化的Parzen估计器(TPE)的技术。
[0036] 利用基于这些技术中的一种或多种技术而选择的超参数值的独特集合,在训练数据集上训练每个机器学习算法变体。测试数据集用作训练模型的输入,用于计算预测结果值。预测结果值与对应的标签值进行比较,以确定性能得分。可以基于计算预测结果相对于对应标签的误差率来计算性能得分。例如,在分类领域中,如果模型的10,000个输入中只有9,000个与该输入的标签匹配,那么性能得分被计算为90%。在非分类领域中,性能得分还可以基于标签值与预测结果值之间的差的统计汇总。
[0037] 术语“实验”在本文中是指使用超参数值的独特集合来训练机器学习算法,并使用至少一个测试数据集来测试机器学习算法。在实施例中,诸如k‑fold(k折)交叉验证之类的交叉验证技术被用于从原始训练数据集中创建许多对训练数据集和测试数据集。每对数据集一起包含原始训练数据集,但是这对数据集在训练数据集和测试数据集之间以不同的方式对原始数据集进行分区。对于每对数据集,训练数据集用于基于所选择的超参数集合来训练模型,并且对应的测试数据集用于利用经训练的模型计算预测结果值。基于将测试数据集输入到经训练的机器学习模型,计算该对(或折(fold))的性能得分。如果有不止一对(即,折),那么对性能得分进行统计汇总(例如,平均值、均值、最小值、最大值),以产生针对机器学习算法的该变体的最终性能得分。
[0038] 每个试验在计算上非常昂贵,因为它包括针对机器算法的变体的多次训练迭代,以针对该机器学习算法的超参数值的一个独特集合生成性能得分。因此,减少试验的次数可以大大减少调整所需的计算资源(例如,处理器时间和周期)。
[0039] 此外,由于生成了性能得分以选择最准确的算法变体,因此性能得分本身越精确,与其它变体相比,所生成的模型的预测相对准确度就越精确。实际上,一旦选择了机器学习算法及其基于超参数值的变体,就通过使用上述技术将算法变体应用于完整的训练数据集来训练机器模型。预期此生成的机器学习模型比该算法的任何其它变体的机器学习模型更准确地预测结果。
[0040] 性能得分本身的准确度取决于花费多少计算资源来调整算法的超参数。计算资源可能浪费在测试无法产生最终模型的期望的准确度的超参数值集合上。
[0041] 类似地,针对最有可能比另一种类型的算法更不准确的一种类型的算法调整那些超参数可以花费更少计算资源(或不花费计算资源)。相应地,对于打折算法的超参数,可以减少或消除试验次数,从而显著提高计算机系统的性能。
[0042] 微型机器学习算法概述
[0043] 本文中的方法描述了生成机器学习算法的变体,该变体预测相同类型的机器学习算法的对于训练在计算上更昂贵的变体的性能。“算法的参考变体”或简称为“参考变体”术语在本文中是指算法的比相同类型的机器学习算法的另一个变体对于训练在计算上更昂贵的变体。“微型机器学习算法变体”(或“微型ML变体”)术语是指机器学习算法的对于训练在计算上较不昂贵的变体。
[0044] 在实施例中,系统评估机器学习算法以确定超参数值的不同的独特集合的计算成本和准确度影响。被确定为产生可接受的准确度同时减少了算法的训练的计算成本的超参数值的独特集合被包含在微型ML变体中。
[0045] 在实施例中,与算法的参考变体相比,测量了准确度和计算成本。参考变体被选择作为机器学习算法的基准变体,其被修改以生成微型ML变体。通过对参考变体的各变体进行迭代评估,生成微型ML变体,并且在每次迭代中,修改参考变体的至少一个超参数值。使用训练数据集评估修改后的算法,以确定性能得分并确定用于使用该训练数据集训练该修改后的算法的计算成本。基于计算成本和性能得分,系统确定是否选择修改后的超参数值用于该算法的微型ML变体—计算成本越小,超参数值就越有可能被选择。
[0046] 在实施例中,选择具有最小计算成本的超参数值。选择还可以基于该性能得分满足针对微型ML变体的性能标准。性能标准可以基于参考变体的性能得分。
[0047] 生成机器学习算法的参考变体
[0048] 图1是描绘在实施例中用于生成参考变体的度量的处理的流程图。在实施例中,在步骤100处,计算机系统针对特定领域选择具有超参数的预定集合的参考变体。例如,基于先前的实验,已经表明,对于涉及三个或更少输入类型的分类领域问题,特定的“C”和“gamma”值产生最佳性能。然后选择SVM机器学习算法的这个变体作为参考变体,以生成微型ML变体。在步骤110处,选择训练数据集用于参考变体的交叉验证,并且在步骤120处,在所选择的数据集上执行参考变体的交叉验证。在一些实施例中,参考变体可能已经与用于数据集的预先记录的性能和成本度量相关联,所述预先记录的性能和成本度量被用于生成微型ML变体。例如,将基于OpenML.org数据集中的一个或多个数据集来生成微型ML变体,并且参考变体已经使用相同的数据集进行了交叉验证和训练。
[0049] 在实施例中,为了获得参考变体的性能得分,使用选择的训练数据集对参考变体进行交叉验证,该选择的训练数据集也用于生成算法的微型ML变体。可以通过对为每个数据集折验证而计算的各个性能得分进行统计汇总来计算性能得分。在步骤125处,如果存在其它训练数据集,那么使用每个其它训练数据集类似地执行交叉验证,以为每个其它训练数据集生成对应的性能得分。
[0050] 在另一个实施例中,在特定领域中基于在一个或多个训练数据集上调整特定类型的算法来生成参考变体。使用上述技术,在特定领域中可以使用超参数的不同的独特集合来对一个或多个数据集执行交叉验证。选择针对(一个或多个)训练数据集产生最高汇总性能得分的试验作为参考变体。
[0051] 例如,继续图1,在步骤100处,选择了机器学习算法的许多变体中的一个变体,但是这种算法尚未被指定为参考变体。在步骤110‑125处,使用算法的所选择的变体对训练数据集执行交叉验证。在步骤130处,系统使用超参数选择技术和来自交叉验证的性能得分,系统确定是否要执行对参考变体的超参数值的更多调整。如果是,那么在步骤133处,系统根据上述技术生成超参数值的新的独特集合,从而生成算法的新变体。对于新变体重复步骤100‑125,直到在步骤130处,系统基于生成的性能得分确定不需要进一步的调整。在步骤135处,选择具有最佳性能得分的机器学习算法作为参考变体。
[0052] 附加地或替代地,在步骤140处,不管选择参考变体的技术如何,都为参考变体生成计算成本度量。在一个实施例中,可以通过经由在训练数据集上训练参考变体而测量用于生成机器学习模型的持续时间来生成该计算成本度量。可以基于使用预定义的计算资源进行训练来测量持续时间。
[0053] 作为持续时间测量的补充或替代,生成计算成本度量的其它实施例包括基于存储器消耗、处理器利用率或I/O活动测量中的一项或多项的测量。
[0054] 每个训练数据集的计算成本度量可以被单独记录。例如,继续图1,在步骤145处,为每个训练数据集生成元组,该元组包含针对该数据集的计算成本度量和性能得分。
[0055] 生成算法的微型机器学习变体
[0056] 在实施例中,基于参考变体生成微型ML变体。对参考变体的(一个或多个)超参数值进行修改,以产生微型ML变体,该微型ML变体在预测结果方面与参考变体足够相似,但同时计算成本较低。换句话说,微型ML变体是算法的变体,它跟随参考变体的性能,但在(一个或多个)数据集上训练时计算上更便宜。
[0057] 图2是描绘在实施例中基于参考变体生成微型ML变体的处理的流程图。在步骤200处,选择准确度标准。术语“准确度标准”是指确定微型ML变体的准确度与参考变体的准确度之间的偏差的可接受测量的标准。在实施例中,准确度标准基于参考变体和微型ML变体的性能得分之间的差异、参考变体的(一个或多个)性能得分与微型ML变体的对应性能得分之间的差异。例如,准确度标准可以指示性能得分的差异必须在彼此的特定百分比之内,或在特定绝对值以下。
[0058] 在步骤205处,从参考变体中选择超参数以被修改来生成算法的新变体。在步骤210处,在参考变体中修改所选择的超参数的值,从而生成算法的新变体。
[0059] 在实施例中,与使用参考变体相比,修改超参数值以使得较少使用用于训练的计算资源。例如,减少神经网络算法中多个层的超参数的值使得神经网络的训练在计算上花费更少。类似地,减少表示神经网络第一层中的单元数的超参数值也实现减少神经网络算法的计算成本。
[0060] 在超参数值与训练模型的计算成本无关的实施例中,使用上述任何超参数值选择技术(例如,贝叶斯、随机搜索、梯度下降)来选择新的超参数值。
[0061] 在步骤215处,从多个训练数据集中选择训练数据集,以对包括新的超参数值的算法的新变体进行交叉验证。可在步骤215处用于选择的所述多个训练集是那些存在性能得分或将使用上述技术为参考变体计算性能得分的训练集。在步骤220处,系统对所选择的训练数据集执行交叉验证,从而计算所选择的训练数据集的性能得分。
[0062] 在步骤225处,将针对所选择的训练数据集的计算出的性能得分与参考变体针对相同训练数据集的性能得分进行比较。如果性能得分满足准确度标准,那么该处理继续到步骤230。如果性能得分不满足准确度标准,那么该处理返回到步骤205或步骤210。换句话说,如果算法的所选择的变体的性能得分与参考变体针对相同数据集的性能得分相似,那么该新变体有资格作为算法的微型ML变体的候选者。
[0063] 例如,准确度标准可以为修改后的算法指定最大10%测量的偏差。在这样的示例中,计算性能得分与参考变体的性能得分的差异,并将其与10%的准确度标准进行比较。如果计算出的比率不超过10%,那么满足该准确度标准。否则,该准确度标准对于该变体算法已失败。
[0064] 在准确度标准已失败的实施例中,该处理确定是要在步骤210处选择超参数的新值还是在步骤205处选择新的超参数本身。该确定基于对超参数值的值选择是否取决于性能得分。可以预期基于预测的计算成本的超参数值选择技术会反过来影响性能得分。
[0065] 例如,如果对于基于神经网络的参考变体,网络超参数中的层数在每次迭代中减少,那么一旦不满足准确度标准,该处理就将不执行为该超参数设置甚至更低值的实验。超参数的所述更低值被预期为产生更不准确的模型,并且因此保证未通过准确度标准。因此,该处理可以在步骤205处过渡到另一个超参数。
[0066] 换句话说,如果在步骤210处以以下这样的方式选择了当前超参数值,该方式可能导致比相同超参数的先前超参数值更低的性能得分,那么类似地,下一个超参数值将导致甚至比当前超参数值更低的性能得分。相应地,对于超参数值的下一个选择,也预期未通过准确度标准。在这种情况下,为了节省计算资源,该处理过渡到步骤205以为修改后的参考变体选择不同的超参数。
[0067] 对于在步骤225处满足准确度标准的修改后的参考变体,该处理过渡到步骤230。在步骤230处,在所选择的训练数据集上训练修改后的参考变体,并跟随针对该训练的成本度量。例如,可以记录在定义的计算资源配置上训练对应模型所需的持续时间。在一个实施例中,该处理可以确定针对参考变体存在的成本度量的类型,并针对修改后的算法测量相同的成本度量。
[0068] 在步骤235处,针对所选择的训练数据集比较参考变体和修改后的参考变体的(一个或多个)成本度量。如果修改后的参考变体的成本度量指示训练模型的计算成本低于参考变体,那么所选择的超参数值继续符合微型ML变体的资格。例如,如果针对所选择的训练数据集修改后的参考变体的先前描述的训练持续时间度量小于参考变体的相同度量,那么所选择的超参数值继续符合算法的微型ML变体的资格。
[0069] 在实施例中,仅当针对每个训练数据集的(一个或多个)成本度量指示较少的资源消耗时才选择该修改后的参考变体。在这样的实施例中,将参考变体针对每个训练数据集的(一个或多个)成本度量与修改后的参考变体针对相应数据集的(一个或多个)成本度量进行比较。在步骤235处,如果修改后的参考变体的成本度量指示即使对于单个数据集,用于训练的计算资源消耗也更多,那么该超参数值被拒绝用于微型ML变体。
[0070] 在相关的实施例中,修改后的参考变体必须实质上改善用于训练要选择的数据集的计算成本。在这样的实施例中,如果成本度量未能指示用于训练数据集的计算资源的阈值量的改善,那么在步骤235处拒绝修改后的参考变体。例如,可以将阈值定义为相对于参考变体成本上50%或更高的改善。参考变体的成本度量除以修改后的算法的成本度量,并且如果该除法按百分率计等于或大于50%,那么超参数值符合微型ML变体的资格。
[0071] 在另一个实施例中,除非每个和每一个所选择的训练数据集的成本度量都指示修改后的参考变体的计算成本更低,否则在步骤235处可能不会拒绝修改后的参考变体。在这样的实施例中,在步骤240处,如果对于阈值数量的数据集,基于修改后的超参数值的算法比参考变体的成本低,那么修改后的超参数值可以符合资格。可以基于可用于该处理的训练数据集的总数的百分比来确定该阈值数量。例如,如果阈值百分比为90%,那么如果对于10个训练数据集中的9个,基于修改后的超参数值的算法成本更低,那么该超参数值符合微型ML变体的资格。
[0072] 在步骤245处,如果一个以上的超参数值符合超参数的资格,那么修改后的算法针对其而已经产生最低成本度量(计算资源成本最低)的超参数值被选择用于微型ML变体。为了确定要选择用于超参数的超参数值,对用于每个超参数的成本度量进行统计汇总,并且选择具有最佳性能统计汇总成本度量的超参数值(例如,最低汇总成本度量值)。
[0073] 在实施例中,如果没有针对超参数的修改后的值符合微型ML变体的资格,那么将参考变体的原始超参数值用于微型ML算法中的特定超参数。
[0074] 图3A是描绘在实施例中算法的参考变体和微型ML变体针对多个训练数据集的性能得分的图。该图上的每个点对应于OpenML.org数据集中特定数据集的性能得分。参考数据集的行与微型ML变体的行重叠,表示微型ML变体紧密跟随参考变体的性能。
[0075] 图3B是描绘在实施例中图3A中的相同微型ML变体相对于图3A中的相同参考变体针对训练训练数据集的加速百分比的图。每个点是利用参考变体和对应的微型ML变体训练特定数据集的持续时间之差相对于训练相同数据集的参考变体的持续时间的百分比。如图所示,微型ML变体表示针对OpenML.org数据集在训练模型中相对于参考模型的相当大的加速,而不会丢失参考变体的准确度,如图3A中的性能得分所描绘的。
[0076] 微型机器学习算法的使用
[0077] 在实施例中,由于算法的微型机器学习变体在跟随参考变体的性能的同时比参考变体的训练成本低,因此,算法的微型机器学习用于确定参考变体在数据集上的性能。例如,不是针对新训练数据集对多个不同参考变体进行交叉验证以确定哪个参考变体将针对该新数据集性能最佳,而是将对应的微型ML变体用于这种确定。微型ML变体代替对应的参考变体被交叉验证,这节省了大量计算资源。基于来自微型ML的交叉验证中的计算出的性能得分,选择其微型ML变体得分已最高的参考变体。相应地,参考变体的选择处理是使用相应的微型ML变体来执行的,以节省计算资源。
[0078] 在另一个实施例中,在训练数据集上的微型ML变体的性能得分用于训练用于超参数值选择或机器算法选择的元模型。选择一个或多个参考变体,为这一个或多个参考变体调整超参数或考虑将这一个或多个参考变体用于算法选择。识别与参考变体对应的所生成的微型ML变体,以生成用于训练数据集的元特征值。在实施例中,该系统在生成微型ML变体时已经记录了各个训练数据集的性能得分,因此,该性能得分可以容易地在训练元模型时用作元特征。对于系统针对其没有用于微型ML变体的性能得分的训练数据集,将在该训练数据集上执行微型ML变体的交叉验证。
[0079] 图4是描绘在实施例中针对数据集生成基于微型ML变体的(一个或多个)元特征的流程图。在步骤410处,选择训练数据集,针对该训练数据集要生成基于微型ML变体的(一个或多个)元特征。在步骤420处,在所选择的训练数据集上对微型ML变体进行交叉验证,以生成微型ML变体针对该训练数据集的性能得分。如果在步骤430处,存在另一个微型ML变体,那么在所选择的数据集上对该另一个微型ML变体进行交叉验证,以产生另一个性能得分,直到针对所选择的训练数据集对所有微型ML变体进行交叉验证为止。在步骤440处,将所生成的性能得分指定为所选择的数据集的元特征。
[0080] 在一个或多个实施例中,作为训练数据集的现有元特征的补充或替代,基于微型ML变体的生成的元特征在训练(一个或多个)元模型中使用以调整超参数值和/或选择机器学习算法。
[0081] 这样的示例之一是机器学习模型和深度学习模型的可扩展和高效的分布式自动调整。在这样的示例中,可以使用基于梯度的自动调整算法,该算法包括以下三个主要步骤。首先,给定参数及其范围的列表(其形成要搜索的参数空间),通过并行运行(训练和评估)参数空间的边值的所有组合开始。其次,对于参数空间中的每个参数,通过使用梯度降低方法(稍后描述)并行地减小(通常宽的)输入参数范围。最后,利用所有参数的细化参数空间,对于每个参数在相应的参数空间中从最佳点进行简单的梯度下降。
[0082] 将元学习用于针对机器学习模型和深度学习模型的基于梯度的自动超参数最优化是训练(一个或多个)元模型的另一个示例,该元模型用于利用基于ML变体的所生成的元特征来调整超参数值和/或选择机器学习算法。在这样的示例中,提供了用于基于数据集元特征对机器学习算法超参数和其它预测的值范围进行最佳初始化的技术。在针对机器学习算法的每个特定超参数的实施例中,计算机基于推断数据集调用针对特定超参数的独特经训练的元模型,以检测针对特定超参数的可能值的改善的子范围。基于针对超参数的可能值的改善的子范围来配置机器学习算法。调用机器学习算法以获得结果。在实施例中,基于梯度的搜索空间减少(GSSR)在针对特定超参数的值的改善的子范围内找到最佳值。在实施例中,基于来自配置超空间的探索性采样(诸如通过GSSR)的数据集元特征和性能度量来训练元模型。在各种实施例中,基于附加的经训练的/可训练的元模型来优化或智能地预测其它值。
[0083] 使用特定于算法的神经网络体系架构进行自动机器学习模型选择是训练(一个或多个)元模型的另一个示例,该元模型用于利用基于微型ML变体的生成的元特征来调整超参数值和/或选择机器学习算法。在这样的示例中,提供了用于基于经训练的特定于算法的回归器的性能预测来最佳选择机器学习算法的技术。在实施例中,计算机通过对于每个元特征从推断数据集中导出相应的元特征值来从推断数据集中导出各元特征值。对于每个可训练的算法和分别与该算法相关联的每个回归元模型,通过基于以下至少一项调用元模型来计算相应得分:a)元特征值的相应子集,和/或b)该算法的超参数的相应子集的超参数值。基于相应的得分选择一个或多个算法。基于推断数据集,可以调用一个或多个算法以获得结果。在实施例中,经训练的回归器是被不同地配置的人工神经网络。在实施例中,经训练的回归器包含在特定于算法的集合体内。还提供了用于回归器和/或集合体的最佳训练的技术。
[0084] 将基于梯度的自动调整用于机器学习模型和深度学习模型是训练(一个或多个)元模型的另一个示例,该元模型用于利用基于微型ML变体的生成的元特征来调整超参数值和/或选择机器学习算法。在这样的示例中,提供了水平可扩展的技术,用于机器学习算法的高效配置,以实现最佳准确度而无需被通告的输入。在实施例中,对于不是类别超参数的每个特定超参数,以及对于历元序列中的每个历元,计算机如下处理该特定超参数。历元基于计算机生成的超参数元组来探索一个超参数。对于每个元组,基于该元组计算得分。超参数元组包含值的独特组合,每个值被包含在独特超参数的当前值范围中。属于特定超参数的超参数元组的所有值都是独特的。属于任何其它超参数的超参数元组的所有值在历元期间保持恒定,诸如到目前为止该其它超参数的最佳值。计算机根据基于得分的第一行和基于得分的第二行的交点来缩小特定超参数的当前值范围。基于重复缩小的超参数的值范围,最佳地配置机器学习算法。调用配置的算法以获得结果,诸如模式识别或多个可能模式之间的分类。
[0085] 在实施例中,对于任何新数据集,通过将新数据集的元特征作为输入应用于经训练的元模型来执行超参数值选择或机器算法模型选择。系统对新数据集执行微型ML变体的交叉验证,并将所得的性能得分用作元特征值。提供新数据集的元特征值,包括(一个或多个)微型ML变体的元特征值,作为元模型的输入。元模型的输出指示预测的最佳执行机器学习算法和/或预测的最佳执行的机器学习算法的一个或多个超参数值。
[0086] 微型ML变体作为元特征,由于微型ML变体跟随对应参考变体的性能,因此显著提高了元模型的准确度。因此,元学习算法具有准确的输入,该输入描述了各种机器学习算法的(一个或多个)数据集性能,因此产生了更准确的元模型。由于微型ML变体在数据集上进行训练或交叉验证的成本比参考变体低,因此只需少量的计算成本就可以实现元模型的改善的准确度。
[0087] 软件概述
[0088] 图5是可以用于控制图6的计算系统600的操作的基本软件系统500的框图。软件系统500及其组件,包括它们的连接、关系和功能,仅是示例性的,并且不意味着限制(一个或多个)示例实施例的实现。适合于实现(一个或多个)示例实施例的其它软件系统可以具有不同的组件,包括具有不同连接、关系和功能的组件。
[0089] 提供了用于指导计算系统600的操作的软件系统500。可以存储在系统存储器(RAM)606中和固定存储装置(例如,硬盘或闪存)610上的软件系统500包括内核或操作系统(OS)510。
[0090] OS 510管理计算机操作的低级方面,包括管理进程的执行、存储器分配、文件输入和输出(I/O)以及设备I/O。表示为502A、502B、502C……502N的一个或多个应用程序可以被“加载”(例如,从固定存储装置610传输到存储器606中),以由系统500执行。打算在计算机系统600上使用的应用或其它软件也可以被存储为一组可下载的计算机可执行指令,例如,用于从互联网位置(例如,Web服务器、应用商店或另一个在线服务)下载和安装。
[0091] 软件系统500包括图形用户界面(GUI)515,用于以图形(例如,“指示和点击”或“触摸手势”)的方式接收用户命令和数据。这些输入又可以由系统500根据来自操作系统510和/或(一个或多个)应用502的指令来起作用。GUI 515还用于显示来自OS 510和(一个或多个)应用502的操作结果,随后用户可以提供附加的输入或终止会话(例如,注销)。
[0092] OS 510可以直接在计算机系统600的裸硬件520(例如,(一个或多个)处理器604)上执行。替代地,可以在裸硬件520和OS 510之间插入管理程序或虚拟机监视器(VMM)530。在这个配置中,VMM 530充当OS 510与计算机系统600的裸硬件520之间的软件“缓冲”或虚拟化层。
[0093] VMM 530实例化并运行一个或多个虚拟机实例(“访客计算机”)。每个访客机器包括“访客”操作系统(诸如OS 510)和一个或多个应用(诸如(一个或多个)应用502),其被设计为在访客操作系统上执行。VMM 530向访客操作系统呈现虚拟操作平台,并管理访客操作系统的执行。
[0094] 在一些情况下,VMM 530可以允许访客操作系统像其直接在计算机系统600的裸硬件520上运行一样来运行。在这些情况下,被配置为直接在裸硬件520上执行的访客操作系统的相同版本也可以在VMM 530上执行而无需修改或重新配置。换句话说,在一些情况下,VMM 530可以向访客操作系统提供完整的硬件和CPU虚拟化。
[0095] 在其它情况下,客户操作系统可能被特殊设计或被配置为在VMM 530上执行以提高效率。在这些情况下,访客操作系统“知道”它在虚拟机监视器上执行。换句话说,在一些情况下,VMM 530可以向访客操作系统提供半虚拟化。
[0096] 计算机系统进程包括硬件处理器时间的分配和存储器(物理和/或虚拟)的分配,存储器的分配用于存储由硬件处理器执行的指令、用于存储由执行指令的硬件处理器生成的数据,和/或用于当计算机系统进程未在运行时在硬件处理器时间的分配之间存储硬件处理器状态(例如,寄存器的内容)。计算机系统进程在操作系统的控制下运行,并且可以在计算机系统上正在执行的其它程序的控制下运行。
[0097] 多个线程可以在进程内运行。每个线程还包括硬件处理时间的分配,但共享对分配给进程的存储器的访问。当线程未运行时,该存储器用于在分配之间存储处理器内容。术语“线程”还可以用于指代多个线程未运行时的计算机系统进程。
[0098] 硬件概述
[0099] 根据一个实施例,本文描述的技术由一个或多个专用计算设备来实现。专用计算设备可以是硬连线的以执行本技术,或者可以包括被永久性地编程以执行本技术的数字电子设备,诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA),或者可以包括被编程为根据固件、存储器、其它存储装置或组合中的程序指令执行本技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制的编程组合来实现本技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或结合硬连线和/或程序逻辑来实现技术的任何其它设备。
[0100] 例如,图6是图示可以在其上实现本发明的实施例的计算机系统600的框图。计算机系统600包括总线602或用于传送信息的其它通信机制以及与总线602耦合用于处理信息的硬件处理器604。硬件处理器604可以是例如通用微处理器。
[0101] 计算机系统600还包括耦合到总线602用于存储要由处理器604执行的指令和信息的主存储器606,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器606也可以用于存储在要由处理器604执行的指令的执行期间的临时变量或其它中间信息。当这种指令被存储在处理器604可访问的非暂态存储介质中时,这种指令使计算机系统600成为被定制用于执行指令中指定的操作的专用机器。
[0102] 计算机系统600还包括耦合到总线602用于存储静态信息和处理器604的指令的只读存储器(ROM)608或其它静态存储设备。诸如磁盘或光盘之类的存储设备610被提供并且被耦合到总线602,以用于存储信息和指令。
[0103] 计算机系统600可以经由总线602耦合到用于向计算机用户显示信息的显示器612,诸如阴极射线管(CRT)。包括字母数字键和其它键的输入设备614耦合到总线602,用于将信息和命令选择传送到处理器604。另一种类型的用户输入设备是光标控件616,诸如鼠标、轨迹球或光标方向键,用于向处理器604传送方向信息和命令选择并且用于控制显示器
612上的光标移动。这种输入设备典型地具有两个轴(第一轴(例如,x)和第二轴(例如,y))上的两个自由度,以允许设备在平面中指定位置。
[0104] 计算机系统600可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文描述的技术,所述定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑与计算机系统结合使计算机系统600成为专用机器或将计算机系统600编程为专用机器。根据一个实施例,本文的技术由计算机系统600响应于处理器604执行主存储器606中包含的一条或多条指令的一个或多个序列而执行。这些指令可以从另一个存储介质(诸如存储设备610)读取到主存储器606中。在主存储器606中包含的指令序列的执行使处理器604执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路系统代替软件指令或与软件指令组合使用。
[0105] 如本文使用的术语“存储介质”是指存储有使机器以特定方式操作的数据和/或指令的任何非暂态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备610。易失性介质包括动态存储器,诸如主存储器606。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁性数据存储介质、CD‑ROM、任何其它光学数据存储介质、具有孔模式的任何物理介质、RAM、PROM和EPROM、FLASH‑EPROM、NVRAM、任何其它存储器芯片或盒式磁带。
[0106] 存储介质与传输介质不同但可以与传输介质结合使用。传输介质参与在存储介质之间传递信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含有总线602的电线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信期间生成的那些。
[0107] 各种形式的介质可以涉及将一条或多条指令的一个或多个序列携带到处理器604以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统600本地的调制解调器可以在电话线上接收数据并使用红外线发射器将数据转换为红外线信号。红外线检测器可以接收红外线信号中携带的数据,并且适当的电路系统可以将数据放置在总线602上。总线602将数据携带到主存储器606,处理器604从主存储器606中检索并执行指令。由主存储器606接收的指令可以可选地在由处理器604执行之前或之后存储在存储设备
610上。
[0108] 计算机系统600还包括耦合到总线602的通信接口618。通信接口618提供耦合到网络链路620的双向数据通信,其中网络链路620连接到本地网络622。例如,通信接口618可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器、或向对应类型的电话线提供数据通信连接的调制解调器。作为另一个示例,通信接口618可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。也可以实现无线链路。在任何这种实现中,通信接口618发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
[0109] 网络链路620典型地通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路620可以通过本地网络622提供到主计算机624或到由互联网服务提供商(ISP)626操作的数据设备的连接。ISP 626又通过现在通常称为“互联网”628的全球分组数据通信网络提供数据通信服务。本地网络622和互联网628都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路620上并且通过通信接口618的信号是传输介质的示例形式,这些信号将数字数据携带到计算机系统600或携带来自计算机系统600的数字数据。
[0110] 计算机系统600可以通过(一个或多个)网络、网络链路620和通信接口618发送消息和接收数据,包括程序代码。在互联网示例中,服务器630可以通过互联网628、ISP 626、本地网络622和通信接口618传输对于应用程序的所请求代码。
[0111] 接收到的代码可以在它被接收时由处理器604执行,和/或存储在存储设备610或其它非易失性存储装置中以供以后执行。

当前第1页 第1页 第2页 第3页