掌桥专利:专业的专利平台
掌桥专利
首页

超参数调整方法、装置以及程序

文献发布时间:2023-06-19 11:00:24


超参数调整方法、装置以及程序

技术领域

本发明涉及信息处理技术。

背景技术

在执行程序时,用于规定程序的动作条件等的参数经常由外部设定。由于根据被设定为参数的值,程序的执行结果、性能受到影响,因此需要设定适当的参数。为了与在程序内部设定或更新的参数进行区別,有时这样由外部设定的参数也被称为超参数。

例如,在深度学习等的机器学习中,基于学习算法来学习表征学习对象的问题的机器学习模型的参数。另一方面,与这样的学习对象的参数分开地,超参数在机器学习模型的选择时、学习算法的执行时被设定。作为用于机器学习的超参数的具体例子,存在被特定的机器学习模型利用的参数(例如,在神经网络中,学习率、学习期间、噪声率、权重衰减系数等),另外,在利用若干个机器学习模型的情况下,存在机器学习模型的种类、用于构建各个种类的机器学习模型的参数(例如,神经网络中的层数、决策树中的树的深度等)等。通过设定适当的超参数,能够提高预测性能、泛化性能、学习效率等。

一般来说,超参数由用户手动设定,或者通过超参数调整软件等自动设定。例如,作为超参数调整软件,HyperOpt、SigOpt、Vizier、MOE、MetaOpt、SMAC、Spearmint等为人所知。

<现有技术文献>

<专利文献>

专利文献1:(日本)特开2017-49677号公报

专利文献2:(日本)特开2017-228068号公报

发明内容

<本发明要解决的问题>

根据上述既存的超参数调整软件,用户事先在超参数调整软件中定义调整对象的超参数以及各超参数的值的范围。超参数调整软件基于由用户定义的超参数以及各超参数的值的范围,在用于学习利用Chainer、TensorFlow等的机器学习库描述的机器学习模型的用户程序中,设定由超参数调整软件定义的超参数的值,并且按照设定的超参数来使机器学习模型进行学习。

但是,在既存的超参数调整软件中,调整对象的超参数在与用于进行机器学习模型的学习等的用户程序不同的位置被定义,并且设定的超参数被伴随机器学习模型的学习等的用户程序利用。即,定义超参数的程序与利用超参数的程序分离,有可能使基于用户的程序的维护困难。

另外,在神经网络、决策树等的机器学习模型的种类被超参数调整软件设定为超参数的情况下,其他的超参数需要根据设定的机器学习模型来设定。例如,权重衰减系数、丢码率等在设定神经网络的情况下作为超参数被利用,但是在设定决策树的情况下不作为超参数被利用。如此,应设定的其他的超参数根据特定的超参数的设定值而改变,但是在既存的超参数调整软件中,不能处理基于使这样的条件分支成为可能的控制构造的超参数的设定。另外,根据既存的超参数调整软件,也不能使与超参数的调整相关的源代码模块化。

鉴于上述问题点,本发明的课题在于,提供一种提高基于用户的编程的便利性的超参数调整方式。

<用于解决问题的手段>

为了解决上述课题,本发明的一个方式涉及超参数调整方法,其为由通过一个或多个处理器执行的步骤组成的超参数调整方法,该超参数调整方法包括:接收步骤,其接收按照用户程序中描述的超参数获取代码生成的超参数获取请求;以及提供步骤,其基于针对上述用户程序的超参数的应用历史而向上述用户程序提供上述超参数。

附图说明

图1是示出本发明的define-by-run方式的超参数的设定的概略图。

图2是示出本发明的一个实施例的超参数调整装置的硬件构成的框图。

图3是示出本发明的一个实施例的超参数调整处理的流程图。

图4是示出本发明的一个实施例的超参数调整处理的时序图。

图5是示出本发明的一个实施例的超参数获取代码的图。

图6是示出本发明的其他的实施例的超参数获取代码的图。

具体实施方式

在以下的实施例中,发明了用于设定程序执行时所利用的超参数的超参数调整装置以及方法。

若概括本发明,则超参数调整装置通过超参数调整程序或软件实现,若自用户程序接收超参数获取请求,则基于针对该用户程序的超参数的应用历史而向用户程序提供超参数。在此,用户程序生成用于获取按照该用户程序内描述的超参数获取代码应获取的超参数的超参数获取请求,并且根据生成的超参数获取请求向超参数调整程序依次请求应获取的超参数。

以下的实施例着眼于机器学习模型的学习处理中利用的超参数,但是本发明的超参数不限于此,其可以是存在对用户程序的执行结果、性能产生影响的可能性的任意的超参数。

本发明的超参数获取代码能够通过if语句等的条件分支、for语句等能够执行重复处理的控制结构来描述。具体而言,如图1所示,用户程序10首先作为超参数向超参数调整程序20请求“机器学习模型的种类”,超参数调整程序20回应来自用户程序10的超参数获取请求而作为“机器学习模型的种类”返回例如“神经网络”。若作为“机器学习模型的种类”选择“神经网络”,则用户程序10按照超参数获取代码的控制结构请求“神经网络”中必要的各种超参数(例如,层数、学习率等)。如此,根据本发明,超参数由define-by-run方式设定。

若设定学习处理中必要的超参数的组合,则用户程序10应用获取的超参数的组合来使机器学习模型进行学习,并且将学习的机器学习模型的预测性能等的精度提供给超参数调整程序20。重复上述处理,直至满足规定的结束条件。

首先,参照图2~4,对本发明的一个实施例的超参数调整处理进行说明。在本实施例中,超参数调整装置100执行该处理,更详细而言,超参数调整装置100的处理器通过执行超参数调整程序20来执行该处理。

在此,如图2所示,超参数调整装置100可以具有例如基于CPU(CentralProcessing unit)、GPU(Graphics Processing Unit)等的处理器101、RAM(Random AccessMemory)、闪存等的存储器102、硬盘103以及输入输出(I/O)接口104的硬件构成。

处理器101执行超参数调整装置100的各种处理,并且执行用户程序10和/或超参数调整程序20。

存储器102储存用户程序10和/或超参数调整程序20、以及用于超参数调整装置100的各种数据和程序,其特别是作为用于作业用数据、执行中的程序等的工作存储器起作用。具体而言,存储器102储存自硬盘103加载的用户程序10和/或超参数调整程序20,并且在基于处理器101的程序的执行中作为工作存储器起作用。

硬盘103储存用户程序10和/或超参数调整程序20。

I/O接口104是用于在与外部装置之间输入输出数据的接口,其是例如USB(Universal Serial Bus)、通信线路、键盘、鼠标、显示器等的用于输入输出数据的设备。

但是,本发明的超参数调整装置100不限于上述硬件构成,其可以具有其他的任何适当的硬件构成。例如,基于上述超参数调整装置100的超参数调整处理的一部分或全部可以由以实现该超参数调整处理的一部分或全部的方式布线化的处理电路或电子电路来实现。

图3是示出本发明的一个实施例的超参数调整处理的流程图。例如,若利用Chainer、TensorFlow等的机器学习库描述的用户程序10启动,则该超参数调整处理通过执行超参数调整程序20的超参数调整装置100实现。

如图3所示,在步骤S101中,超参数调整程序20接收超参数获取请求。

具体而言,用户程序10按照用户程序内描述的超参数获取代码来决定应获取的超参数,生成针对该超参数的超参数获取请求,并且将生成的超参数获取请求发送至超参数调整程序20,超参数调整程序20自用户程序10接收该超参数获取请求。

在一个实施例中,超参数获取代码能够利用例如由顺序结构、选择结构和/或反复结构构成的控制结构来描述。具体而言,超参数获取代码能够利用if语句、for语句等来描述。例如,在超参数调整程序20作为超参数将“机器学习模型的种类”设定为“神经网络”的情况下,用户程序10按照超参数获取代码的控制结构将“神经网络”中特有的超参数(例如,层数、层的节点数、权重衰减系数等)决定为接下来应获取的超参数。或者,超参数调整程序20作为超参数将“机器学习模型的种类”设定为“决策树”的情况下,用户程序10按照超参数获取代码的控制结构将“决策树”特有的超参数(例如,树的深度、自节点分支的边数等)决定为接下来应获取的超参数。如此,用户程序10能够按照用户程序10内描述的控制结构来决定接下来应获取的超参数,并且生成针对决定的超参数的超参数获取请求。

在步骤S102中,超参数调整程序20基于超参数的应用历史来提供超参数。

具体而言,若自用户程序10接收针对某个超参数的超参数获取请求,则超参数调整程序20基于过去针对用户程序10应用的超参数的应用历史,来决定被请求的超参数的值,并且将决定的超参数的值返回用户程序10。例如,在超参数获取请求是针对学习率的情况下,超参数调整程序20参照过去针对用户程序10设定的学习率的值和/或其他的超参数的值来决定接下来应应用的学习率的值,并且将决定的学习率的值返回用户程序10。若获取了该学习率的值,则用户程序10按照超参数获取代码来判断针对机器学习模型执行学习处理是否进一步需要超参数,在进一步需要超参数(例如,学习期间、噪声率等)的情况下,生成针对该超参数的超参数获取请求,并且将生成的超参数获取请求发送至超参数调整程序20。用户程序10持续发送超参数获取请求,直至获取必要的超参数的组合,超参数调整程序20回应接收的超参数获取请求,重复上述步骤S101、S102。

在一个实施例中,超参数调整程序20可以按照规定的超参数选择算法提供选择超参数。

具体而言,该超参数选择算法可以是基于利用在超参数的应用历史之下获取的机器学习模型的精度的贝叶斯优化的选择算法。如后所述,若获取学习处理所必要的超参数的组合,则用户程序10应用由超参数调整程序20设定的超参数的组合来对机器学习模型进行学习。并且,用户程序10决定在设定的超参数的组合之下学习的机器学习模型的预测性能等的精度,并且将决定的精度提供给超参数调整程序20。超参数调整程序20可以将过去设定的超参数的各组合以及针对该组合获取的精度作为应用历史进行储存,并且将储存的应用历史作为事先信息加以利用,从而基于贝叶斯优化或贝叶斯推定来决定接下来应设定的超参数。通过利用贝叶斯优化,将应用历史作为事先信息加以利用,能够设定更适当的超参数的组合。

或者,规定的超参数选择算法也可以是基于随机搜索的选择算法。在该情况下,超参数调整程序20参照应用历史,随机设定过去未应用的超参数的组合。通过利用随机搜索,能够通过简单的超参数选择算法对超参数进行设定。

另外,超参数调整程序20可以组合上述贝叶斯优化和随机搜索来决定超参数的组合。例如,在仅利用贝叶斯优化的情况下,有可能收敛于局部最佳的组合,另外,在仅利用随机搜索的情况下,有可能选择从最佳的组合大幅背离的组合。通过组合应用贝叶斯优化和随机搜索这两个超参数选择算法,从而减轻上述问题。

但是,本发明的超参数选择算法不限于贝叶斯优化以及随机搜索,也可以是包括进化计算、网格搜索等的其他的任何适当的超参数选择算法。

在步骤S103中,超参数调整程序20获取基于应用的超参数的用户程序的评价结果。具体而言,若用户程序10获取为了执行学习处理所必要的超参数的组合,则应用该超参数的组合而针对机器学习模型执行学习处理。若学习处理结束,则用户程序10对作为结果获得的机器学习模型的预测性能等的精度进行计算,并且将计算的精度作为评价结果提供给超参数调整程序20。

在步骤S104中,判断是否满足结束条件,在满足结束条件的情况下(S104:YES),该超参数调整处理结束。另一方面,在不满足结束条件的情况下(S104:NO),该超参数调整处理返回步骤S101、S102,用户程序10获取新的超参数的组合。在此,该结束条件可以为例如超参数的组合的应用次数到达规定的阈值。另外,步骤S104中的处理典型地可以描述在用于控制用户程序10以及超参数调整程序20的主程序中。

图4是示出本发明的一个实施例的超参数调整处理的时序图。这里,参照图3,从用户程序10与超参数调整程序20之间数据的交换的观点对上述超参数调整处理进行说明。

如图4所示,在步骤S201中,用户程序10启动,机器学习模型中的更新对象的参数初始化。

在步骤S202中,用户程序10按照用户程序10内描述的超参数获取代码来决定应获取的超参数P1,并且将针对超参数P1的超参数获取请求发送至超参数调整程序20。若接收到该超参数获取请求,则超参数调整程序20决定超参数P1的值,并且将决定的超参数P1的值返回用户程序10。若获取超参数P1的值,则用户程序10同样按照超参数获取代码的控制结构决定应进一步获取的超参数P2,并且将针对超参数P2的超参数获取请求发送至超参数调整程序20。若接收到该超参数获取请求,则超参数调整程序20决定超参数P2的值,并且将决定的超参数P2的值返回用户程序10。以下相同地,用户程序10以及超参数调整程序20重复上述过程,直至获取用于学习重复机器学习模型所必要的超参数的组合(P1、P2、...、PN)。

需要说明的是,图示的超参数获取请求一个一个地请求超参数,但是本发明的超参数获取请求不限于此,可以一并请求多个超参数。例如,由于学习率、学习期间、噪声率等的超参数能够彼此独立设定,因此这些超参数可以一并通过一个超参数获取请求来进行请求。另一方面,由于机器学习模型的种类、学习算法等的超参数影响其他的超参数的选择,因此其通过单独的超参数获取请求来进行请求。

在步骤S203中,用户程序10应用获取的超参数的组合来使机器学习模型进行学习。若学习处理结束,则用户程序10作为结果计算得到的机器学习模型的预测性能等的精度。

在步骤S204中,用户程序10将计算出的精度作为评价结果提供给超参数调整程序20。超参数调整程序20将过去获取的精度与应用的超参数的组合建立关联地作为应用历史进行保存,从而在以后的超参数的选择中加以利用。

步骤S202~S204重复执行,直至满足例如执行了规定的次数等的结束条件。

在一个实施例中,超参数获取请求可以按照控制结构来请求机器学习模型的种类、以及机器学习模型的各个种类中特有的超参数。

例如,超参数获取请求可以按照图5所示超参数获取代码进行生成。首先,作为超参数获取“机器学习模型的种类”或“分类器(classifier)的种类。在图示例子中,用户程序10向超参数调整程序20询问应应用“支持向量机分类(SVC)”和“随机森林(RandomForest)”中的哪一者。

在超参数调整程序20选择“SVC”的情况下,用户程序10作为进一步的超参数而将对于“svc_c”的超参数获取请求发送至超参数调整程序20。另一方面,在超参数调整程序20选择“RandomForest”的情况下,用户程序10作为进一步的超参数而将对于“rf_max_depth”的超参数获取请求发送至超参数调整程序20。

之后,用户程序10应用获取的超参数对于机器学习模型执行学习处理,作为结果计算出得到的机器学习模型的精度(accuracy)或误差,并将其发送至超参数调整程序20。试行次数(n_trial)在主程序中规定,在图示例子中,上述处理重复100次。

如此,根据本发明,与既存的超参数调整软件相比较,通过将用于定义应获取的超参数的超参数获取代码在利用超参数的用户程序10中进行描述以代替在超参数调整软件中进行描述,能够使用户的程序的维护性提高。另外,能够利用条件分支等的复杂的控制结构,与逐次选择的超参数相应地请求以及获取适当的超参数。

另外,在一个实施例中,超参数获取代码可以包括用于设定规定机器学习模型的结构的超参数的模块、以及用于设定规定机器学习模型的学习处理的超参数的模块。例如,在超参数获取代码中,如图6所示,与机器学习模型的构筑相关的模块(defcreate_model)、以及用于设定机器学习模型的超参数的模块(defcreate_optimizer)可以分别描述。

如此,根据本发明,超参数获取代码可以通过不同的模块而模块化,从而多个程序员协同制作超参数获取代码变得容易。

上述实施例对于对用于使机器学习模型进行学习的用户程序设定超参数的超参数调整手法进行了说明。但是,本发明的用户程序不限于此,可以为任意的程序。即,本发明的超参数调整手法能够应用于能够对用户程序的执行结果、性能产生影响的任意的超参数的设定。例如,作为机器学习之外的应用例,可以考虑程序的高速化、用户接口的改善等。例如,关于程序的速度,可以将利用的算法、缓冲区大小这样的值作为超参数,并且通过以提升速度的方式对超参数进行最优化,从而使程序高速化。对于用户接口的设计,也可以将按键的配置、尺寸等作为超参数,并且通过以提升用户的举动的方式对超参数进行最优化,从而改善用户接口。

以上,对本发明的实施例进行了详述,但是本发明不限于上述特定的实施方式,在权利要求书中记载的本发明的要旨的范围内,可以进行各种变形/变更。

本申请要求基于2018年10月9日申请的日本国专利申请2018-191250号的优先权的利益,并且在本申请中引用2018-191250号的全部内容。

附图标记说明

10 用户程序

20 超参数调整程序

100 超参数调整装置

101 处理器

102 存储器

103 硬盘

104 I/O接口

相关技术
  • 音响参数调整装置、音响参数调整方法及音响参数调整程序
  • 处理装置、参数调整方法和存储参数调整程序的记录媒体
技术分类

06120112768935