IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社Preferred Networksの特許一覧

特開2023-123636ハイパーパラメータチューニング方法、装置及びプログラム
<>
  • 特開-ハイパーパラメータチューニング方法、装置及びプログラム 図1
  • 特開-ハイパーパラメータチューニング方法、装置及びプログラム 図2
  • 特開-ハイパーパラメータチューニング方法、装置及びプログラム 図3
  • 特開-ハイパーパラメータチューニング方法、装置及びプログラム 図4
  • 特開-ハイパーパラメータチューニング方法、装置及びプログラム 図5
  • 特開-ハイパーパラメータチューニング方法、装置及びプログラム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023123636
(43)【公開日】2023-09-05
(54)【発明の名称】ハイパーパラメータチューニング方法、装置及びプログラム
(51)【国際特許分類】
   G06N 20/00 20190101AFI20230829BHJP
【FI】
G06N20/00
【審査請求】有
【請求項の数】1
【出願形態】OL
(21)【出願番号】P 2023101841
(22)【出願日】2023-06-21
(62)【分割の表示】P 2020151465の分割
【原出願日】2018-10-09
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.TENSORFLOW
(71)【出願人】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】秋葉 拓哉
(57)【要約】
【課題】ユーザによるプログラミングの利便性を向上させるハイパーパラメータチューニング方式を提供することである。
【解決手段】本開示の一態様は、プロセッサにより実行されるステップからなるハイパーパラメータチューニング方法であって、ユーザプログラムに記述されたハイパーパラメータ取得コードに従って生成されたハイパーパラメータ取得要求を受信するステップと、前記ユーザプログラムに対するハイパーパラメータの適用履歴に基づき前記ユーザプログラムに前記ハイパーパラメータを提供するステップと、前記ハイパーパラメータが適用されたユーザプログラムの評価結果を取得するステップと、を有するハイパーパラメータチューニング方法に関する。
【選択図】図3
【特許請求の範囲】
【請求項1】
ユーザプログラムに適用されるハイパーパラメータチューニング方法において、
前記ユーザプログラムに適用される複数のハイパーパラメータの一部の取得要求
と、当該取得要求に係る当該一部のハイパーパラメータの定義と、を受信するステッ
プと、
前記取得要求の受信に応じて、当該定義に基づき、前記取得要求に係る前記一部の
ハイパーパラメータを提供するステップと、
を有する、ハイパーパラメータチューニング方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理技術に関する。
【背景技術】
【0002】
プログラムを実行する際、プログラムの動作条件等を規定するパラメータが、しばしば外部から設定される。パラメータに設定される値によって、プログラムの実行結果や性能は影響を受けるため、適切なパラメータの設定が必要とされる。このような外部から設定されるパラメータは、プログラム内部で設定又は更新されるパラメータと区別するため、ハイパーパラメータとして呼ばれることもある。
【0003】
例えば、ディープラーニングなどの機械学習では、学習対象の問題を特徴付ける機械学習モデルのパラメータが学習アルゴリズムに基づき学習される。一方、このような学習対象のパラメータとは別に、ハイパーパラメータが機械学習モデルの選択時や学習アルゴリズムの実行時に設定される。機械学習のためのハイパーパラメータの具体例としては、特定の機械学習モデルに利用されるパラメータ(例えば、ニューラルネットワークでは、学習率、学習期間、ノイズ率、重み減衰係数など)があり、また、いくつかの機械学習モデルが利用される場合、機械学習モデルのタイプ、個々のタイプの機械学習モデルを構築するためのパラメータ(例えば、ニューラルネットワークではレイヤ数、決定木ではツリーの深さなど)などもある。適切なハイパーパラメータを設定することによって、予測性能、汎化性能、学習効率などを向上させることができる。
【0004】
一般に、ハイパーパラメータはユーザによって手動によって設定されたり、あるいは、パイパーパラメータチューニングソフトウェアなどによって自動設定される。例えば、ハイパーパラメータチューニングソフトウェアとして、HyperOpt、SigOpt、Vizier、MOE、MetaOpt、SMAC、Spearmintなどが知られている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2017-49677号公報
【特許文献2】特開2017-228068号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したような既存のハイパーパラメータチューニングソフトウェアによると、ユーザが、チューニング対象のハイパーパラメータ及び各ハイパーパラメータの値の範囲をハイパーパラメータチューニングソフトウェアに予め定義する。ハイパーパラメータチューニングソフトウェアは、ユーザによって定義されたハイパーパラメータ及び各ハイパーパラメータの値の範囲に基づき、Chainer、TensorFlowなどの機械学習ライブラリを利用して記述された機械学習モデルを学習するためのユーザプログラムに、ハイパーパラメータチューニングソフトウェアに定義されたハイパーパラメータの値を設定し、設定されたハイパーパラメータに従って機械学習モデルが学習される。
【0007】
しかしながら、既存のハイパーパラメータチューニングソフトウェアでは、チューニング対象のハイパーパラメータは機械学習モデルの学習等を行うユーザプログラムとは異なる場所に定義され、設定されたハイパーパラメータは機械学習モデルの学習等を伴うユーザプログラムによって利用される。すなわち、ハイパーパラメータが定義されるプログラムと、ハイパーパラメータを利用するプログラムとが分離されており、ユーザによるプログラムのメンテナンスを困難にしうる。
【0008】
また、ニューラルネットワーク、決定木などの機械学習モデルのタイプがハイパーパラメータチューニングソフトウェアによってハイパーパラメータとして設定される場合、他のハイパーパラメータは、設定された機械学習モデルに応じて設定される必要がある。例えば、重み減衰係数やドロップアウト率などは、ニューラルネットワークが設定された場合にはハイパーパラメータとして利用されるが、決定木が設定された場合にはハイパーパラメータとして利用されない。このように、特定のハイパーパラメータの設定値に応じて設定されるべき他のハイパーパラメータが変わるが、既存のハイパーパラメータチューニングソフトウェアでは、このような条件分岐を可能にする制御構造によるハイパーパラメータの設定は扱うことができない。また、既存のハイパーパラメータチューニングソフトウェアによると、ハイパーパラメータのチューニングに関するソースコードをモジュール化することもできない。
【0009】
上述した問題点を鑑み、本開示の課題は、ユーザによるプログラミングの利便性を向上させるハイパーパラメータチューニング方式を提供することである。
【課題を解決するための手段】
【0010】
上記課題を解決するため、本開示の一態様は、プロセッサにより実行されるステップからなるハイパーパラメータチューニング方法であって、ユーザプログラムに記述されたハイパーパラメータ取得コードに従って生成されたハイパーパラメータ取得要求を受信するステップと、前記ユーザプログラムに対するハイパーパラメータの適用履歴に基づき前記ユーザプログラムに前記ハイパーパラメータを提供するステップと、前記ハイパーパラメータが適用されたユーザプログラムの評価結果を取得するステップと、を有するハイパーパラメータチューニング方法に関する。
【発明の効果】
【0011】
本開示によると、ユーザによるプログラミングの利便性を向上させるハイパーパラメータチューニング方式を提供することができる。
【図面の簡単な説明】
【0012】
図1】本開示によるdefine-by-run方式によるハイパーパラメータの設定を示す概略図である。
図2】本開示の一実施例によるハイパーパラメータチューニング装置のハードウェア構成を示すブロック図である。
図3】本開示の一実施例によるハイパーパラメータチューニング処理を示すフローチャートである。
図4】本開示の一実施例によるハイパーパラメータチューニング処理を示すシーケンス図である。
図5】本開示の一実施例によるハイパーパラメータ取得コードを示す図である。
図6】本開示の他の実施例によるハイパーパラメータ取得コードを示す図である。
【発明を実施するための形態】
【0013】
以下の実施例では、プログラム実行時に利用されるハイパーパラメータを設定するハイパーパラメータチューニング装置及び方法が開示される。
【0014】
本開示を概略すると、ハイパーパラメータチューニング装置は、ハイパーパラメータチューニングプログラム又はソフトウェアによって実現され、ユーザプログラムからハイパーパラメータ取得要求を受信すると、当該ユーザプログラムに対するハイパーパラメータの適用履歴に基づきユーザプログラムにハイパーパラメータを提供する。ここで、ユーザプログラムは、当該ユーザプログラム内に記述されたハイパーパラメータ取得コードに従って取得すべきハイパーパラメータを取得するためのハイパーパラメータ取得要求を生成し、生成したハイパーパラメータ取得要求によってハイパーパラメータチューニングプログラムに取得すべきハイパーパラメータを順次要求する。
【0015】
以下の実施例は、機械学習モデルの学習処理に利用されるハイパーパラメータに着目するが、本開示によるハイパーパラメータは、これに限定されず、ユーザプログラムの実行結果や性能に影響を与える可能性がある任意のハイパーパラメータであってもよい。
【0016】
本開示によるハイパーパラメータ取得コードは、if文などの条件分岐やfor文など繰り返し処理を実行可能な制御構造により記述可能である。具体的には、図1に示されるように、ユーザプログラム10はまず、ハイパーパラメータとして"機械学習モデルのタイプ"をハイパーパラメータチューニングプログラム20に要求し、ユーザプログラム10からのハイパーパラメータ取得要求に応答して、ハイパーパラメータチューニングプログラム20は、"機械学習モデルのタイプ"として、例えば、"ニューラルネットワーク"を返す。"機械学習モデルのタイプ"として"ニューラルネットワーク"が選択されると、ユーザプログラム10は、ハイパーパラメータ取得コードの制御構造に従って、"ニューラルネットワーク"に必要とされる各種ハイパーパラメータ(例えば、レイヤ数、学習率など)を要求する。このように、本開示によると、ハイパーパラメータは、define-by-run方式で設定される。
【0017】
学習処理に必要なハイパーパラメータの組み合わせが設定されると、ユーザプログラム10は、取得したハイパーパラメータの組み合わせを適用して機械学習モデルを学習し、学習された機械学習モデルの予測性能などの精度をハイパーパラメータチューニングプログラム20に提供する。所定の終了条件が充足されるまで、上述した処理が繰り返される。
【0018】
まず、図2~4を参照して、本開示の一実施例によるハイパーパラメータチューニング処理を説明する。本実施例では、ハイパーパラメータチューニング装置100が当該処理を実行し、より詳細には、ハイパーパラメータチューニング装置100のプロセッサが、ハイパーパラメータチューニングプログラム20を実行することによって当該処理を実行する。
【0019】
ここで、ハイパーパラメータチューニング装置100は、例えば、図2に示されるように、CPU (Central Processing unit)、GPU (Graphics Processing Unit)などのプロセッサ101、RAM (Random Access Memory)、フラッシュメモリなどのメモリ102、ハードディスク103及び入出力(I/O)インタフェース104によるハードウェア構成を有してもよい。
【0020】
プロセッサ101は、ハイパーパラメータチューニング装置100の各種処理を実行すると共に、ユーザプログラム10及び/又はハイパーパラメータチューニングプログラム20を実行する。
【0021】
メモリ102は、ユーザプログラム10及び/又はハイパーパラメータチューニングプログラム20と共に、ハイパーパラメータチューニング装置100のための各種データ及びプログラムを格納し、特に作業用データ、実行中のプログラムなどのためのワーキングメモリとして機能する。具体的には、メモリ102は、ハードディスク103からロードされたユーザプログラム10及び/又はハイパーパラメータチューニングプログラム20を格納し、プロセッサ101によるプログラムの実行中にワーキングメモリとして機能する。
【0022】
ハードディスク103は、ユーザプログラム10及び/又はハイパーパラメータチューニングプログラム20を格納する。
【0023】
I/Oインタフェース104は、外部装置との間でデータを入出力するためのインタフェースであり、例えば、USB (Universal Serial Bus)、通信回線、キーボード、マウス、ディスプレイなどのデータを入出力するためのデバイスである。
【0024】
しかしながら、本開示によるハイパーパラメータチューニング装置100は、上述したハードウェア構成に限定されず、他の何れか適切なハードウェア構成を有してもよい。例えば、上述したハイパーパラメータチューニング装置100によるハイパーパラメータチューニング処理の一部又は全ては、これを実現するよう配線化された処理回路又は電子回路により実現されてもよい。
【0025】
図3は、本開示の一実施例によるハイパーパラメータチューニング処理を示すフローチャートである。当該ハイパーパラメータチューニング処理は、例えば、Chainer、TensorFlowなどの機械学習ライブラリを利用して記述されたユーザプログラム10が起動されると、ハイパーパラメータチューニングプログラム20を実行するハイパーパラメータチューニング装置100によって実現される。
【0026】
図3に示されるように、ステップS101において、ハイパーパラメータチューニングプログラム20は、ハイパーパラメータ取得要求を受信する。
【0027】
具体的には、ユーザプログラム10は、ユーザプログラム内に記述されたハイパーパラメータ取得コードに従って取得すべきハイパーパラメータを決定し、当該ハイパーパラメータに対するハイパーパラメータ取得要求を生成し、生成したハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム20に送信し、ハイパーパラメータチューニングプログラム20は、ユーザプログラム10から当該ハイパーパラメータ取得要求を受信する。
【0028】
一実施例では、ハイパーパラメータ取得コードは、例えば、順次構造、選択構造及び/又は反復構造から構成される制御構造を利用して記述されうる。具体的には、ハイパーパラメータ取得コードは、if文やfor文などを利用して記述可能である。例えば、ハイパーパラメータチューニングプログラム20が、ハイパーパラメータとして"機械学習モデルのタイプ"を"ニューラルネットワーク"に設定した場合、ユーザプログラム10は、ハイパーパラメータ取得コードの制御構造に従って"ニューラルネットワーク"に特有のハイパーパラメータ(例えば、レイヤ数、レイヤのノード数、重み減衰係数など)を次に取得すべきハイパーパラメータとして決定する。あるいは、ハイパーパラメータチューニングプログラム20が、ハイパーパラメータとして"機械学習モデルのタイプ"を"決定木"に設定した場合、ユーザプログラム10は、ハイパーパラメータ取得コードの制御構造に従って"決定木"に特有のハイパーパラメータ(例えば、ツリーの深さ、ノードから分岐するエッジ数など)を次に取得すべきハイパーパラメータとして決定する。このようにして、ユーザプログラム10は、ユーザプログラム10内に記述された制御構造に従って次に取得すべきハイパーパラメータを決定し、決定されたハイパーパラメータに対するハイパーパラメータ取得要求を生成することができる。
【0029】
ステップS102において、ハイパーパラメータチューニングプログラム20は、ハイパーパラメータの適用履歴に基づきハイパーパラメータを提供する。
【0030】
具体的に、ユーザプログラム10からあるハイパーパラメータに対するハイパーパラメータ取得要求を受信すると、ハイパーパラメータチューニングプログラム20は、ユーザプログラム10に対して過去に適用されたハイパーパラメータの適用履歴に基づき、要求されたハイパーパラメータの値を決定し、決定したハイパーパラメータの値をユーザプログラム10に返す。例えば、ハイパーパラメータ取得要求が学習率に対するものである場合、ハイパーパラメータチューニングプログラム20は、ユーザプログラム10に対して過去に設定した学習率の値及び/又は他のハイパーパラメータの値を参照して次に適用すべき学習率の値を決定し、決定した学習率の値をユーザプログラム10に返す。当該学習率の値を取得すると、ユーザプログラム10は、ハイパーパラメータ取得コードに従って更なるハイパーパラメータが機械学習モデルに対して学習処理を実行するのに必要であるか判断し、更なるハイパーパラメータ(例えば、学習期間、ノイズ率など)が必要である場合、当該ハイパーパラメータに対するハイパーパラメータ取得要求を生成し、生成したハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム20に送信する。ユーザプログラム10は、必要とされるハイパーパラメータの組み合わせを取得するまでハイパーパラメータ取得要求を送信し続け、受信したハイパーパラメータ取得要求に応答して、ハイパーパラメータチューニングプログラム20は、上述したステップS101,S102を繰り返す。
【0031】
一実施例では、ハイパーパラメータチューニングプログラム20は、所定のハイパーパラメータ選択アルゴリズムに従って選択されたハイパーパラメータを提供してもよい。
【0032】
具体的には、当該ハイパーパラメータ選択アルゴリズムは、ハイパーパラメータの適用履歴の下で取得した機械学習モデルの精度を利用したベイズ最適化に基づくものであってもよい。後述されるように、学習処理に必要とされるハイパーパラメータの組み合わせを取得すると、ユーザプログラム10は、ハイパーパラメータチューニングプログラム20によって設定されたハイパーパラメータの組み合わせを適用して機械学習モデルを学習する。そして、ユーザプログラム10は、設定されたハイパーパラメータの組み合わせの下で学習された機械学習モデルの予測性能などの精度を決定し、決定した精度をハイパーパラメータチューニングプログラム20に提供する。ハイパーパラメータチューニングプログラム20は、過去に設定したハイパーパラメータの各組み合わせ及び当該組み合わせに対して取得された精度を適用履歴として格納し、格納された適用履歴を事前情報として利用して、ベイズ最適化又はベイズ推定に基づき次に設定すべきハイパーパラメータを決定してもよい。ベイズ最適化を利用することによって、適用履歴を事前情報として利用して、より適切なハイパーパラメータの組み合わせを設定することが可能になる。
【0033】
あるいは、所定のハイパーパラメータ選択アルゴリズムは、ランダムサーチに基づくものであってもよい。この場合、ハイパーパラメータチューニングプログラム20は、適用履歴を参照して、過去に適用していないハイパーパラメータの組み合わせをランダムに設定する。ランダムサーチを利用することによって、シンプルなハイパーパラメータ選択アルゴリズムによってハイパーパラメータを設定することができる。
【0034】
また、ハイパーパラメータチューニングプログラム20は、上述したベイズ最適化とランダムサーチとを組み合わせてハイパーパラメータの組み合わせを決定してもよい。例えば、ベイズ最適化のみを利用した場合には、局所最適な組み合わせに収束する可能性があり、また、ランダムサーチのみを利用した場合には、最適な組み合わせから大きく乖離した組み合わせが選択される可能性がある。ベイズ最適化とランダムサーチとの2つのハイパーパラメータ選択アルゴリズムを組み合わせて適用し、上記のような問題を軽減する。
【0035】
しかしながら、本開示によるハイパーパラメータ選択アルゴリズムは、ベイズ最適化及びランダムサーチに限定されず、進化計算、グリッドサーチなどを含む他の何れか適切なハイパーパラメータ選択アルゴリズムであってもよい。
【0036】
ステップS103において、ハイパーパラメータチューニングプログラム20は、適用されたハイパーパラメータによるユーザプログラムの評価結果を取得する。具体的には、ユーザプログラム10は、学習処理を実行するのに必要とされるハイパーパラメータの組み合わせを取得すると、当該ハイパーパラメータの組み合わせを適用して機械学習モデルに対して学習処理を実行する。学習処理が終了すると、ユーザプログラム10は、結果として得られた機械学習モデルの予測性能などの精度を算出し、算出した精度を評価結果としてハイパーパラメータチューニングプログラム20に提供する。
【0037】
ステップS104において、終了条件が充足されているか判断され、終了条件が充足されている場合(S104:YES)、当該ハイパーパラメータチューニング処理は終了される。他方、終了条件が充足されていない場合(S104:NO)、当該ハイパーパラメータチューニング処理はステップS101,S102に戻り、ユーザプログラム10は、新たなハイパーパラメータの組み合わせを取得する。ここで、当該終了条件は、例えば、ハイパーパラメータの組み合わせの適用回数が所定の閾値に達したことであってもよい。また、ステップS104における処理は、典型的には、ユーザプログラム10及びハイパーパラメータチューニングプログラム20を制御するメインプログラムに記述されてもよい。
【0038】
図4は、本開示の一実施例によるハイパーパラメータチューニング処理を示すシーケンス図である。ここでは、図3を参照して上述したハイパーパラメータチューニング処理を、ユーザプログラム10とハイパーパラメータチューニングプログラム20との間のデータのやりとりの観点から説明する。
【0039】
図4に示されるように、ステップS201において、ユーザプログラム10が起動され、機械学習モデルにおける更新対象のパラメータが初期化される。
【0040】
ステップS202において、ユーザプログラム10は、ユーザプログラム10内に記述されたハイパーパラメータ取得コードに従って取得すべきハイパーパラメータP1を決定し、ハイパーパラメータP1に対するハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム20に送信する。当該ハイパーパラメータ取得要求を受信すると、ハイパーパラメータチューニングプログラム20は、ハイパーパラメータP1の値を決定し、決定したハイパーパラメータP1の値をユーザプログラム10に返す。ハイパーパラメータP1の値を取得すると、ユーザプログラム10は、同様にハイパーパラメータ取得コードの制御構造に従って更に取得すべきハイパーパラメータP2を決定し、ハイパーパラメータP2に対するハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム20に送信する。当該ハイパーパラメータ取得要求を受信すると、ハイパーパラメータチューニングプログラム20は、ハイパーパラメータP2の値を決定し、決定したハイパーパラメータP2の値をユーザプログラム10に返す。以下同様にして、機械学習モデルを学習するのに必要なハイパーパラメータの組み合わせ(P1,P2,...,PN)を取得するまで、ユーザプログラム10及びハイパーパラメータチューニングプログラム20は、上述したやりとりを繰り返す。
【0041】
なお、図示されたハイパーパラメータ取得要求は1つずつハイパーパラメータを要求しているが、本開示によるハイパーパラメータ取得要求は、これに限定されず、複数のハイパーパラメータをまとめて要求してもよい。例えば、学習率、学習期間、ノイズ率などのハイパーパラメータは互いに独立に設定可能であるため、これらのハイパーパラメータは、まとめて1つのハイパーパラメータ取得要求によって要求されてもよい。他方、機械学習モデルのタイプ、学習アルゴリズムなどのハイパーパラメータは、他のハイパーパラメータの選択に影響を与えるため、単独のハイパーパラメータ取得要求により要求される。
【0042】
ステップS203において、ユーザプログラム10は、取得したハイパーパラメータの組み合わせを適用して機械学習モデルを学習する。学習処理が終了すると、ユーザプログラム10は、結果として得られた機械学習モデルの予測性能などの精度を算出する。
【0043】
ステップS204において、ユーザプログラム10は、算出した精度を評価結果としてハイパーパラメータチューニングプログラム20に提供する。ハイパーパラメータチューニングプログラム20は、適用されたハイパーパラメータの組み合わせと関連付けて過去に取得した精度を適用履歴として保存し、以降のハイパーパラメータの選択に利用する。
【0044】
ステップS202~S204が、例えば、所定の回数が実行されたなどの終了条件が充足されるまで繰り返される。
【0045】
一実施例では、ハイパーパラメータ取得要求は、制御構造に従って機械学習モデルのタイプと、機械学習モデルの個々のタイプに特有のハイパーパラメータとを要求してもよい。
【0046】
例えば、ハイパーパラメータ取得要求は、図5に示されるようなハイパーパラメータ取得コードに従って生成されうる。まず、"機械学習モデルのタイプ"又は"分類器(classifier)のタイプ"がハイパーパラメータとして取得される。図示された例では、ユーザプログラム10は、"サポートベクターマシーン分類(SVC)"と"ランダムフォレスト(RandomForest)"との何れが適用されるべきかハイパーパラメータチューニングプログラム20に照会する。
【0047】
ハイパーパラメータチューニングプログラム20が"SVC"を選択した場合、ユーザプログラム10は、更なるハイパーパラメータとして"svc_c"に対するハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム20に送信する。他方、ハイパーパラメータチューニングプログラム20が"RandomForest"を選択した場合、ユーザプログラム10は、更なるハイパーパラメータとして"rf_max_depth"に対するハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム20に送信する。
【0048】
その後、ユーザプログラム10は、取得したハイパーパラメータを適用して機械学習モデルに対して学習処理を実行し、結果として得られた機械学習モデルの精度(accuracy)又は誤差を算出し、ハイパーパラメータチューニングプログラム20に送信する。試行回数(n_trial)はメインプログラムに規定され、図示された例では、上述した処理が100回繰り返される。
【0049】
このようにして、本開示によると、既存のハイパーパラメータチューニングソフトウェアと比較して、取得すべきハイパーパラメータを定義するハイパーパラメータ取得コードが、ハイパーパラメータチューニングソフトウェアの代わりに、ハイパーパラメータを利用するユーザプログラム10に記述でき、ユーザによるプログラムのメンテナンス性を向上させることが可能になる。また、条件分岐などの複雑な制御構造を利用して、逐次選択されるハイパーパラメータに対応して適切なハイパーパラメータを要求及び取得することが可能になる。
【0050】
また、一実施例では、ハイパーパラメータ取得コードは、機械学習モデルの構造を規定するハイパーパラメータを設定するためのモジュールと、機械学習モデルの学習処理を規定するハイパーパラメータを設定するためのモジュールとを含んでもよい。例えば、ハイパーパラメータ取得コードにおいて、図6に示されるように、機械学習モデルの構築に関するモジュール(def create_model)と、機械学習モデルのハイパーパラメータを設定するためのモジュール(def create_optimizer)とが別々に記述可能である。
【0051】
このようにして、本開示によると、ハイパーパラメータ取得コードが異なるモジュールによってモジュール化可能であり、複数のプログラマが協働してハイパーパラメータ取得コードを作成することが容易になる。
【0052】
上述した実施例は、機械学習モデルを学習するためのユーザプログラムに対してハイパーパラメータを設定するハイパーパラメータチューニング手法について説明した。しかしながら、本開示によるユーザプログラムは、これに限定されず、任意のプログラムであってもよい。すなわち、本開示によるハイパーパラメータチューニング手法は、ユーザプログラムの実行結果や性能に影響を与えうる任意のハイパーパラメータの設定に適用可能である。例えば、機械学習以外の適用例として、プログラムの高速化やユーザインタフェースの改善などが考えられる。例えば、プログラムの速度に関して、利用するアルゴリズムやバッファサイズのような値をハイパーパラメータとし、速度が向上するようにハイパーパラメータを最適化することによりプログラムを高速化することができる。ユーザインタフェースの設計にあたっても、ボタンの配置やサイズといったものをハイパーパラメータとし、ユーザの挙動が向上するようにハイパーパラメータを最適化することにより、ユーザインタフェースの改善をすることができる。
【0053】
以上、本発明の実施例について詳述したが、本発明は上述した特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0054】
10 ユーザプログラム
20 ハイパーパラメータチューニングプログラム
100 ハイパーパラメータチューニング装置
101 プロセッサ
102 メモリ
103 ハードディスク
104 I/Oインタフェース
図1
図2
図3
図4
図5
図6