(57)【要約】【課題】ユーザによるプログラミングの利便性を向上させるハイパーパラメータチューニング方式を提供することである。【解決手段】本開示の一態様は、プロセッサにより実行されるステップからなるハイパーパラメータチューニング方法であって、ユーザプログラムに記述されたハイパーパラメータ取得コードに従って生成されたハイパーパラメータ取得要求を受信するステップと、前記ユーザプログラムに対するハイパーパラメータの適用履歴に基づき前記ユーザプログラムに前記ハイパーパラメータを提供するステップと、前記ハイパーパラメータが適用されたユーザプログラムの評価結果を取得するステップと、を有するハイパーパラメータチューニング方法に関する。【選択図】図３
2020060922.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサにより実行されるステップからなるハイパーパラメータチューニング方法であって、
ユーザプログラムに記述されたハイパーパラメータ取得コードに従って生成されたハイパーパラメータ取得要求を受信するステップと、
前記ユーザプログラムに対するハイパーパラメータの適用履歴に基づき前記ユーザプログラムに前記ハイパーパラメータを提供するステップと、
前記ハイパーパラメータが適用されたユーザプログラムの評価結果を取得するステップと、
を有するハイパーパラメータチューニング方法。
【請求項２】
前記ハイパーパラメータ取得コードは、制御構造を利用して記述される、請求項１記載のハイパーパラメータチューニング方法。
【請求項３】
前記ユーザプログラムは、前記記述された制御構造に従って前記提供されたハイパーパラメータの次に取得すべきハイパーパラメータを決定し、前記決定されたハイパーパラメータに対するハイパーパラメータ取得要求を生成する、請求項２記載のハイパーパラメータチューニング方法。
【請求項４】
前記ユーザプログラムは、機械学習モデルを学習するためのものである、請求項１乃至３何れか一項記載のハイパーパラメータチューニング方法。
【請求項５】
前記ハイパーパラメータ取得要求は、制御構造に従って前記機械学習モデルのタイプと、前記機械学習モデルの個々のタイプに特有のハイパーパラメータとを要求する、請求項４記載のハイパーパラメータチューニング方法。
【請求項６】
前記ハイパーパラメータ取得コードは、
前記機械学習モデルの構造を規定するハイパーパラメータを設定するためのモジュールと、
前記機械学習モデルの学習処理を規定するハイパーパラメータを設定するためのモジュールと、
を含む、請求項４又は５記載のハイパーパラメータチューニング方法。
【請求項７】
前記ハイパーパラメータを提供するステップは、所定のハイパーパラメータ選択アルゴリズムに従って選択されたハイパーパラメータを提供する、請求項４乃至６何れか一項記載のハイパーパラメータチューニング方法。
【請求項８】
前記所定のハイパーパラメータ選択アルゴリズムは、前記ハイパーパラメータの適用履歴の下で取得した前記機械学習モデルの精度を利用したベイズ最適化に基づく、請求項７記載のハイパーパラメータチューニング方法。
【請求項９】
前記所定のハイパーパラメータ選択アルゴリズムは、ランダムサーチに基づく、請求項７記載のハイパーパラメータチューニング方法。
【請求項１０】
前記ユーザプログラムの評価結果は、前記機械学習モデルの精度を含む、請求項４乃至９何れか一項記載のハイパーパラメータチューニング方法。
【請求項１１】
終了条件を充足するまで、前記受信するステップ、前記提供するステップ及び前記取得するステップを繰り返すステップを更に有する、請求項１乃至１０何れか一項記載のハイパーパラメータチューニング方法。
【請求項１２】
プロセッサと、
前記プロセッサに結合され、前記プロセッサのワーキングメモリとして機能するメモリと、
を有し、
前記プロセッサは、
ユーザプログラムに記述されたハイパーパラメータ取得コードに従って生成されたハイパーパラメータ取得要求を受信し、
前記ユーザプログラムに対するハイパーパラメータの適用履歴に基づき前記ユーザプログラムに前記ハイパーパラメータを提供し、
前記ハイパーパラメータが適用されたユーザプログラムの評価結果を取得するハイパーパラメータチューニング装置。
【請求項１３】
ユーザプログラムに記述されたハイパーパラメータ取得コードに従って生成されたハイパーパラメータ取得要求を受信する処理と、
前記ユーザプログラムに対するハイパーパラメータの適用履歴に基づき前記ユーザプログラムに前記ハイパーパラメータを提供する処理と、
前記ハイパーパラメータが適用されたユーザプログラムの評価結果を取得する処理と、
をプロセッサに実行させるハイパーパラメータチューニングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理技術に関する。
【背景技術】
【０００２】
プログラムを実行する際、プログラムの動作条件等を規定するパラメータが、しばしば外部から設定される。パラメータに設定される値によって、プログラムの実行結果や性能は影響を受けるため、適切なパラメータの設定が必要とされる。このような外部から設定されるパラメータは、プログラム内部で設定又は更新されるパラメータと区別するため、ハイパーパラメータとして呼ばれることもある。
【０００３】
例えば、ディープラーニングなどの機械学習では、学習対象の問題を特徴付ける機械学習モデルのパラメータが学習アルゴリズムに基づき学習される。一方、このような学習対象のパラメータとは別に、ハイパーパラメータが機械学習モデルの選択時や学習アルゴリズムの実行時に設定される。機械学習のためのハイパーパラメータの具体例としては、特定の機械学習モデルに利用されるパラメータ（例えば、ニューラルネットワークでは、学習率、学習期間、ノイズ率、重み減衰係数など）があり、また、いくつかの機械学習モデルが利用される場合、機械学習モデルのタイプ、個々のタイプの機械学習モデルを構築するためのパラメータ（例えば、ニューラルネットワークではレイヤ数、決定木ではツリーの深さなど）などもある。適切なハイパーパラメータを設定することによって、予測性能、汎化性能、学習効率などを向上させることができる。
【０００４】
一般に、ハイパーパラメータはユーザによって手動によって設定されたり、あるいは、パイパーパラメータチューニングソフトウェアなどによって自動設定される。例えば、ハイパーパラメータチューニングソフトウェアとして、ＨｙｐｅｒＯｐｔ、ＳｉｇＯｐｔ、Ｖｉｚｉｅｒ、ＭＯＥ、ＭｅｔａＯｐｔ、ＳＭＡＣ、Ｓｐｅａｒｍｉｎｔなどが知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−４９６７７号公報
【特許文献２】特開２０１７−２２８０６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したような既存のハイパーパラメータチューニングソフトウェアによると、ユーザが、チューニング対象のハイパーパラメータ及び各ハイパーパラメータの値の範囲をハイパーパラメータチューニングソフトウェアに予め定義する。ハイパーパラメータチューニングソフトウェアは、ユーザによって定義されたハイパーパラメータ及び各ハイパーパラメータの値の範囲に基づき、Ｃｈａｉｎｅｒ、ＴｅｎｓｏｒＦｌｏｗなどの機械学習ライブラリを利用して記述された機械学習モデルを学習するためのユーザプログラムに、ハイパーパラメータチューニングソフトウェアに定義されたハイパーパラメータの値を設定し、設定されたハイパーパラメータに従って機械学習モデルが学習される。
【０００７】
しかしながら、既存のハイパーパラメータチューニングソフトウェアでは、チューニング対象のハイパーパラメータは機械学習モデルの学習等を行うユーザプログラムとは異なる場所に定義され、設定されたハイパーパラメータは機械学習モデルの学習等を伴うユーザプログラムによって利用される。すなわち、ハイパーパラメータが定義されるプログラムと、ハイパーパラメータを利用するプログラムとが分離されており、ユーザによるプログラムのメンテナンスを困難にしうる。
【０００８】
また、ニューラルネットワーク、決定木などの機械学習モデルのタイプがハイパーパラメータチューニングソフトウェアによってハイパーパラメータとして設定される場合、他のハイパーパラメータは、設定された機械学習モデルに応じて設定される必要がある。例えば、重み減衰係数やドロップアウト率などは、ニューラルネットワークが設定された場合にはハイパーパラメータとして利用されるが、決定木が設定された場合にはハイパーパラメータとして利用されない。このように、特定のハイパーパラメータの設定値に応じて設定されるべき他のハイパーパラメータが変わるが、既存のハイパーパラメータチューニングソフトウェアでは、このような条件分岐を可能にする制御構造によるハイパーパラメータの設定は扱うことができない。また、既存のハイパーパラメータチューニングソフトウェアによると、ハイパーパラメータのチューニングに関するソースコードをモジュール化することもできない。
【０００９】
上述した問題点を鑑み、本開示の課題は、ユーザによるプログラミングの利便性を向上させるハイパーパラメータチューニング方式を提供することである。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本開示の一態様は、プロセッサにより実行されるステップからなるハイパーパラメータチューニング方法であって、ユーザプログラムに記述されたハイパーパラメータ取得コードに従って生成されたハイパーパラメータ取得要求を受信するステップと、前記ユーザプログラムに対するハイパーパラメータの適用履歴に基づき前記ユーザプログラムに前記ハイパーパラメータを提供するステップと、前記ハイパーパラメータが適用されたユーザプログラムの評価結果を取得するステップと、を有するハイパーパラメータチューニング方法に関する。
【発明の効果】
【００１１】
本開示によると、ユーザによるプログラミングの利便性を向上させるハイパーパラメータチューニング方式を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本開示によるｄｅｆｉｎｅ−ｂｙ−ｒｕｎ方式によるハイパーパラメータの設定を示す概略図である。
【図２】本開示の一実施例によるハイパーパラメータチューニング装置のハードウェア構成を示すブロック図である。
【図３】本開示の一実施例によるハイパーパラメータチューニング処理を示すフローチャートである。
【図４】本開示の一実施例によるハイパーパラメータチューニング処理を示すシーケンス図である。
【図５】本開示の一実施例によるハイパーパラメータ取得コードを示す図である。
【図６】本開示の他の実施例によるハイパーパラメータ取得コードを示す図である。
【発明を実施するための形態】
【００１３】
以下の実施例では、プログラム実行時に利用されるハイパーパラメータを設定するハイパーパラメータチューニング装置及び方法が開示される。
【００１４】
本開示を概略すると、ハイパーパラメータチューニング装置は、ハイパーパラメータチューニングプログラム又はソフトウェアによって実現され、ユーザプログラムからハイパーパラメータ取得要求を受信すると、当該ユーザプログラムに対するハイパーパラメータの適用履歴に基づきユーザプログラムにハイパーパラメータを提供する。ここで、ユーザプログラムは、当該ユーザプログラム内に記述されたハイパーパラメータ取得コードに従って取得すべきハイパーパラメータを取得するためのハイパーパラメータ取得要求を生成し、生成したハイパーパラメータ取得要求によってハイパーパラメータチューニングプログラムに取得すべきハイパーパラメータを順次要求する。
【００１５】
以下の実施例は、機械学習モデルの学習処理に利用されるハイパーパラメータに着目するが、本開示によるハイパーパラメータは、これに限定されず、ユーザプログラムの実行結果や性能に影響を与える可能性がある任意のハイパーパラメータであってもよい。
【００１６】
本開示によるハイパーパラメータ取得コードは、ｉｆ文などの条件分岐やｆｏｒ文など繰り返し処理を実行可能な制御構造により記述可能である。具体的には、図１に示されるように、ユーザプログラム１０はまず、ハイパーパラメータとして"機械学習モデルのタイプ"をハイパーパラメータチューニングプログラム２０に要求し、ユーザプログラム１０からのハイパーパラメータ取得要求に応答して、ハイパーパラメータチューニングプログラム２０は、"機械学習モデルのタイプ"として、例えば、"ニューラルネットワーク"を返す。"機械学習モデルのタイプ"として"ニューラルネットワーク"が選択されると、ユーザプログラム１０は、ハイパーパラメータ取得コードの制御構造に従って、"ニューラルネットワーク"に必要とされる各種ハイパーパラメータ（例えば、レイヤ数、学習率など）を要求する。このように、本開示によると、ハイパーパラメータは、ｄｅｆｉｎｅ−ｂｙ−ｒｕｎ方式で設定される。
【００１７】
学習処理に必要なハイパーパラメータの組み合わせが設定されると、ユーザプログラム１０は、取得したハイパーパラメータの組み合わせを適用して機械学習モデルを学習し、学習された機械学習モデルの予測性能などの精度をハイパーパラメータチューニングプログラム２０に提供する。所定の終了条件が充足されるまで、上述した処理が繰り返される。
【００１８】
まず、図２〜４を参照して、本開示の一実施例によるハイパーパラメータチューニング処理を説明する。本実施例では、ハイパーパラメータチューニング装置１００が当該処理を実行し、より詳細には、ハイパーパラメータチューニング装置１００のプロセッサが、ハイパーパラメータチューニングプログラム２０を実行することによって当該処理を実行する。
【００１９】
ここで、ハイパーパラメータチューニング装置１００は、例えば、図２に示されるように、CPU (Central Processing unit)、GPU (Graphics Processing Unit)などのプロセッサ１０１、RAM (Random Access Memory)、フラッシュメモリなどのメモリ１０２、ハードディスク１０３及び入出力(I/O)インタフェース１０４によるハードウェア構成を有してもよい。
【００２０】
プロセッサ１０１は、ハイパーパラメータチューニング装置１００の各種処理を実行すると共に、ユーザプログラム１０及び／又はハイパーパラメータチューニングプログラム２０を実行する。
【００２１】
メモリ１０２は、ユーザプログラム１０及び／又はハイパーパラメータチューニングプログラム２０と共に、ハイパーパラメータチューニング装置１００のための各種データ及びプログラムを格納し、特に作業用データ、実行中のプログラムなどのためのワーキングメモリとして機能する。具体的には、メモリ１０２は、ハードディスク１０３からロードされたユーザプログラム１０及び／又はハイパーパラメータチューニングプログラム２０を格納し、プロセッサ１０１によるプログラムの実行中にワーキングメモリとして機能する。
【００２２】
ハードディスク１０３は、ユーザプログラム１０及び／又はハイパーパラメータチューニングプログラム２０を格納する。
【００２３】
I/Oインタフェース１０４は、外部装置との間でデータを入出力するためのインタフェースであり、例えば、USB (Universal Serial Bus)、通信回線、キーボード、マウス、ディスプレイなどのデータを入出力するためのデバイスである。
【００２４】
しかしながら、本開示によるハイパーパラメータチューニング装置１００は、上述したハードウェア構成に限定されず、他の何れか適切なハードウェア構成を有してもよい。例えば、上述したハイパーパラメータチューニング装置１００によるハイパーパラメータチューニング処理の一部又は全ては、これを実現するよう配線化された処理回路又は電子回路により実現されてもよい。
【００２５】
図３は、本開示の一実施例によるハイパーパラメータチューニング処理を示すフローチャートである。当該ハイパーパラメータチューニング処理は、例えば、Ｃｈａｉｎｅｒ、ＴｅｎｓｏｒＦｌｏｗなどの機械学習ライブラリを利用して記述されたユーザプログラム１０が起動されると、ハイパーパラメータチューニングプログラム２０を実行するハイパーパラメータチューニング装置１００によって実現される。
【００２６】
図３に示されるように、ステップＳ１０１において、ハイパーパラメータチューニングプログラム２０は、ハイパーパラメータ取得要求を受信する。
【００２７】
具体的には、ユーザプログラム１０は、ユーザプログラム内に記述されたハイパーパラメータ取得コードに従って取得すべきハイパーパラメータを決定し、当該ハイパーパラメータに対するハイパーパラメータ取得要求を生成し、生成したハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム２０に送信し、ハイパーパラメータチューニングプログラム２０は、ユーザプログラム１０から当該ハイパーパラメータ取得要求を受信する。
【００２８】
一実施例では、ハイパーパラメータ取得コードは、例えば、順次構造、選択構造及び／又は反復構造から構成される制御構造を利用して記述されうる。具体的には、ハイパーパラメータ取得コードは、ｉｆ文やｆｏｒ文などを利用して記述可能である。例えば、ハイパーパラメータチューニングプログラム２０が、ハイパーパラメータとして"機械学習モデルのタイプ"を"ニューラルネットワーク"に設定した場合、ユーザプログラム１０は、ハイパーパラメータ取得コードの制御構造に従って"ニューラルネットワーク"に特有のハイパーパラメータ（例えば、レイヤ数、レイヤのノード数、重み減衰係数など）を次に取得すべきハイパーパラメータとして決定する。あるいは、ハイパーパラメータチューニングプログラム２０が、ハイパーパラメータとして"機械学習モデルのタイプ"を"決定木"に設定した場合、ユーザプログラム１０は、ハイパーパラメータ取得コードの制御構造に従って"決定木"に特有のハイパーパラメータ（例えば、ツリーの深さ、ノードから分岐するエッジ数など）を次に取得すべきハイパーパラメータとして決定する。このようにして、ユーザプログラム１０は、ユーザプログラム１０内に記述された制御構造に従って次に取得すべきハイパーパラメータを決定し、決定されたハイパーパラメータに対するハイパーパラメータ取得要求を生成することができる。
【００２９】
ステップＳ１０２において、ハイパーパラメータチューニングプログラム２０は、ハイパーパラメータの適用履歴に基づきハイパーパラメータを提供する。
【００３０】
具体的に、ユーザプログラム１０からあるハイパーパラメータに対するハイパーパラメータ取得要求を受信すると、ハイパーパラメータチューニングプログラム２０は、ユーザプログラム１０に対して過去に適用されたハイパーパラメータの適用履歴に基づき、要求されたハイパーパラメータの値を決定し、決定したハイパーパラメータの値をユーザプログラム１０に返す。例えば、ハイパーパラメータ取得要求が学習率に対するものである場合、ハイパーパラメータチューニングプログラム２０は、ユーザプログラム１０に対して過去に設定した学習率の値及び／又は他のハイパーパラメータの値を参照して次に適用すべき学習率の値を決定し、決定した学習率の値をユーザプログラム１０に返す。当該学習率の値を取得すると、ユーザプログラム１０は、ハイパーパラメータ取得コードに従って更なるハイパーパラメータが機械学習モデルに対して学習処理を実行するのに必要であるか判断し、更なるハイパーパラメータ（例えば、学習期間、ノイズ率など）が必要である場合、当該ハイパーパラメータに対するハイパーパラメータ取得要求を生成し、生成したハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム２０に送信する。ユーザプログラム１０は、必要とされるハイパーパラメータの組み合わせを取得するまでハイパーパラメータ取得要求を送信し続け、受信したハイパーパラメータ取得要求に応答して、ハイパーパラメータチューニングプログラム２０は、上述したステップＳ１０１，Ｓ１０２を繰り返す。
【００３１】
一実施例では、ハイパーパラメータチューニングプログラム２０は、所定のハイパーパラメータ選択アルゴリズムに従って選択されたハイパーパラメータを提供してもよい。
【００３２】
具体的には、当該ハイパーパラメータ選択アルゴリズムは、ハイパーパラメータの適用履歴の下で取得した機械学習モデルの精度を利用したベイズ最適化に基づくものであってもよい。後述されるように、学習処理に必要とされるハイパーパラメータの組み合わせを取得すると、ユーザプログラム１０は、ハイパーパラメータチューニングプログラム２０によって設定されたハイパーパラメータの組み合わせを適用して機械学習モデルを学習する。そして、ユーザプログラム１０は、設定されたハイパーパラメータの組み合わせの下で学習された機械学習モデルの予測性能などの精度を決定し、決定した精度をハイパーパラメータチューニングプログラム２０に提供する。ハイパーパラメータチューニングプログラム２０は、過去に設定したハイパーパラメータの各組み合わせ及び当該組み合わせに対して取得された精度を適用履歴として格納し、格納された適用履歴を事前情報として利用して、ベイズ最適化又はベイズ推定に基づき次に設定すべきハイパーパラメータを決定してもよい。ベイズ最適化を利用することによって、適用履歴を事前情報として利用して、より適切なハイパーパラメータの組み合わせを設定することが可能になる。
【００３３】
あるいは、所定のハイパーパラメータ選択アルゴリズムは、ランダムサーチに基づくものであってもよい。この場合、ハイパーパラメータチューニングプログラム２０は、適用履歴を参照して、過去に適用していないハイパーパラメータの組み合わせをランダムに設定する。ランダムサーチを利用することによって、シンプルなハイパーパラメータ選択アルゴリズムによってハイパーパラメータを設定することができる。
【００３４】
また、ハイパーパラメータチューニングプログラム２０は、上述したベイズ最適化とランダムサーチとを組み合わせてハイパーパラメータの組み合わせを決定してもよい。例えば、ベイズ最適化のみを利用した場合には、局所最適な組み合わせに収束する可能性があり、また、ランダムサーチのみを利用した場合には、最適な組み合わせから大きく乖離した組み合わせが選択される可能性がある。ベイズ最適化とランダムサーチとの２つのハイパーパラメータ選択アルゴリズムを組み合わせて適用し、上記のような問題を軽減する。
【００３５】
しかしながら、本開示によるハイパーパラメータ選択アルゴリズムは、ベイズ最適化及びランダムサーチに限定されず、進化計算、グリッドサーチなどを含む他の何れか適切なハイパーパラメータ選択アルゴリズムであってもよい。
【００３６】
ステップＳ１０３において、ハイパーパラメータチューニングプログラム２０は、適用されたハイパーパラメータによるユーザプログラムの評価結果を取得する。具体的には、ユーザプログラム１０は、学習処理を実行するのに必要とされるハイパーパラメータの組み合わせを取得すると、当該ハイパーパラメータの組み合わせを適用して機械学習モデルに対して学習処理を実行する。学習処理が終了すると、ユーザプログラム１０は、結果として得られた機械学習モデルの予測性能などの精度を算出し、算出した精度を評価結果としてハイパーパラメータチューニングプログラム２０に提供する。
【００３７】
ステップＳ１０４において、終了条件が充足されているか判断され、終了条件が充足されている場合（Ｓ１０４：ＹＥＳ）、当該ハイパーパラメータチューニング処理は終了される。他方、終了条件が充足されていない場合（Ｓ１０４：ＮＯ）、当該ハイパーパラメータチューニング処理はステップＳ１０１，Ｓ１０２に戻り、ユーザプログラム１０は、新たなハイパーパラメータの組み合わせを取得する。ここで、当該終了条件は、例えば、ハイパーパラメータの組み合わせの適用回数が所定の閾値に達したことであってもよい。また、ステップＳ１０４における処理は、典型的には、ユーザプログラム１０及びハイパーパラメータチューニングプログラム２０を制御するメインプログラムに記述されてもよい。
【００３８】
図４は、本開示の一実施例によるハイパーパラメータチューニング処理を示すシーケンス図である。ここでは、図３を参照して上述したハイパーパラメータチューニング処理を、ユーザプログラム１０とハイパーパラメータチューニングプログラム２０との間のデータのやりとりの観点から説明する。
【００３９】
図４に示されるように、ステップＳ２０１において、ユーザプログラム１０が起動され、機械学習モデルにおける更新対象のパラメータが初期化される。
【００４０】
ステップＳ２０２において、ユーザプログラム１０は、ユーザプログラム１０内に記述されたハイパーパラメータ取得コードに従って取得すべきハイパーパラメータＰ１を決定し、ハイパーパラメータＰ１に対するハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム２０に送信する。当該ハイパーパラメータ取得要求を受信すると、ハイパーパラメータチューニングプログラム２０は、ハイパーパラメータＰ１の値を決定し、決定したハイパーパラメータＰ１の値をユーザプログラム１０に返す。ハイパーパラメータＰ１の値を取得すると、ユーザプログラム１０は、同様にハイパーパラメータ取得コードの制御構造に従って更に取得すべきハイパーパラメータＰ２を決定し、ハイパーパラメータＰ２に対するハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム２０に送信する。当該ハイパーパラメータ取得要求を受信すると、ハイパーパラメータチューニングプログラム２０は、ハイパーパラメータＰ２の値を決定し、決定したハイパーパラメータＰ２の値をユーザプログラム１０に返す。以下同様にして、機械学習モデルを学習するのに必要なハイパーパラメータの組み合わせ（Ｐ１，Ｐ２，...，ＰＮ）を取得するまで、ユーザプログラム１０及びハイパーパラメータチューニングプログラム２０は、上述したやりとりを繰り返す。
【００４１】
なお、図示されたハイパーパラメータ取得要求は１つずつハイパーパラメータを要求しているが、本開示によるハイパーパラメータ取得要求は、これに限定されず、複数のハイパーパラメータをまとめて要求してもよい。例えば、学習率、学習期間、ノイズ率などのハイパーパラメータは互いに独立に設定可能であるため、これらのハイパーパラメータは、まとめて１つのハイパーパラメータ取得要求によって要求されてもよい。他方、機械学習モデルのタイプ、学習アルゴリズムなどのハイパーパラメータは、他のハイパーパラメータの選択に影響を与えるため、単独のハイパーパラメータ取得要求により要求される。
【００４２】
ステップＳ２０３において、ユーザプログラム１０は、取得したハイパーパラメータの組み合わせを適用して機械学習モデルを学習する。学習処理が終了すると、ユーザプログラム１０は、結果として得られた機械学習モデルの予測性能などの精度を算出する。
【００４３】
ステップＳ２０４において、ユーザプログラム１０は、算出した精度を評価結果としてハイパーパラメータチューニングプログラム２０に提供する。ハイパーパラメータチューニングプログラム２０は、適用されたハイパーパラメータの組み合わせと関連付けて過去に取得した精度を適用履歴として保存し、以降のハイパーパラメータの選択に利用する。
【００４４】
ステップＳ２０２〜Ｓ２０４が、例えば、所定の回数が実行されたなどの終了条件が充足されるまで繰り返される。
【００４５】
一実施例では、ハイパーパラメータ取得要求は、制御構造に従って機械学習モデルのタイプと、機械学習モデルの個々のタイプに特有のハイパーパラメータとを要求してもよい。
【００４６】
例えば、ハイパーパラメータ取得要求は、図５に示されるようなハイパーパラメータ取得コードに従って生成されうる。まず、"機械学習モデルのタイプ"又は"分類器（ｃｌａｓｓｉｆｉｅｒ）のタイプ"がハイパーパラメータとして取得される。図示された例では、ユーザプログラム１０は、"サポートベクターマシーン分類（ＳＶＣ）"と"ランダムフォレスト（ＲａｎｄｏｍＦｏｒｅｓｔ）"との何れが適用されるべきかハイパーパラメータチューニングプログラム２０に照会する。
【００４７】
ハイパーパラメータチューニングプログラム２０が"ＳＶＣ"を選択した場合、ユーザプログラム１０は、更なるハイパーパラメータとして"ｓｖｃ＿ｃ"に対するハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム２０に送信する。他方、ハイパーパラメータチューニングプログラム２０が"ＲａｎｄｏｍＦｏｒｅｓｔ"を選択した場合、ユーザプログラム１０は、更なるハイパーパラメータとして"ｒｆ＿ｍａｘ＿ｄｅｐｔｈ"に対するハイパーパラメータ取得要求をハイパーパラメータチューニングプログラム２０に送信する。
【００４８】
その後、ユーザプログラム１０は、取得したハイパーパラメータを適用して機械学習モデルに対して学習処理を実行し、結果として得られた機械学習モデルの精度（ａｃｃｕｒａｃｙ）又は誤差を算出し、ハイパーパラメータチューニングプログラム２０に送信する。試行回数（ｎ＿ｔｒｉａｌ）はメインプログラムに規定され、図示された例では、上述した処理が１００回繰り返される。
【００４９】
このようにして、本開示によると、既存のハイパーパラメータチューニングソフトウェアと比較して、取得すべきハイパーパラメータを定義するハイパーパラメータ取得コードが、ハイパーパラメータチューニングソフトウェアの代わりに、ハイパーパラメータを利用するユーザプログラム１０に記述でき、ユーザによるプログラムのメンテナンス性を向上させることが可能になる。また、条件分岐などの複雑な制御構造を利用して、逐次選択されるハイパーパラメータに対応して適切なハイパーパラメータを要求及び取得することが可能になる。
【００５０】
また、一実施例では、ハイパーパラメータ取得コードは、機械学習モデルの構造を規定するハイパーパラメータを設定するためのモジュールと、機械学習モデルの学習処理を規定するハイパーパラメータを設定するためのモジュールとを含んでもよい。例えば、ハイパーパラメータ取得コードにおいて、図６に示されるように、機械学習モデルの構築に関するモジュール（ｄｅｆ  ｃｒｅａｔｅ＿ｍｏｄｅｌ）と、機械学習モデルのハイパーパラメータを設定するためのモジュール（ｄｅｆ  ｃｒｅａｔｅ＿ｏｐｔｉｍｉｚｅｒ）とが別々に記述可能である。
【００５１】
このようにして、本開示によると、ハイパーパラメータ取得コードが異なるモジュールによってモジュール化可能であり、複数のプログラマが協働してハイパーパラメータ取得コードを作成することが容易になる。
【００５２】
上述した実施例は、機械学習モデルを学習するためのユーザプログラムに対してハイパーパラメータを設定するハイパーパラメータチューニング手法について説明した。しかしながら、本開示によるユーザプログラムは、これに限定されず、任意のプログラムであってもよい。すなわち、本開示によるハイパーパラメータチューニング手法は、ユーザプログラムの実行結果や性能に影響を与えうる任意のハイパーパラメータの設定に適用可能である。例えば、機械学習以外の適用例として、プログラムの高速化やユーザインタフェースの改善などが考えられる。例えば、プログラムの速度に関して、利用するアルゴリズムやバッファサイズのような値をハイパーパラメータとし、速度が向上するようにハイパーパラメータを最適化することによりプログラムを高速化することができる。ユーザインタフェースの設計にあたっても、ボタンの配置やサイズといったものをハイパーパラメータとし、ユーザの挙動が向上するようにハイパーパラメータを最適化することにより、ユーザインタフェースの改善をすることができる。
【００５３】
以上、本発明の実施例について詳述したが、本発明は上述した特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００５４】
１０  ユーザプログラム
２０  ハイパーパラメータチューニングプログラム
１００  ハイパーパラメータチューニング装置
１０１  プロセッサ
１０２  メモリ
１０３  ハードディスク
１０４  I/Oインタフェース
【図１】
2020060922.tif 000003
【図２】
2020060922.tif 000004
【図３】
2020060922.tif 000005
【図４】
2020060922.tif 000006
【図５】
2020060922.tif 000007
【図６】
2020060922.tif 000008
【手続補正書】
【提出日】令和2年1月31日(2020.1.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサにより実行されるステップからなるハイパーパラメータチューニング方法であって、
ユーザプログラムに記述されたハイパーパラメータ取得コードに従って生成されたハイパーパラメータ取得要求を受信するステップと、
前記ユーザプログラムに対するハイパーパラメータの適用履歴に基づき前記ユーザプログラムに前記ハイパーパラメータを提供するステップと、
前記ハイパーパラメータが適用されたユーザプログラムの評価結果を取得するステップと、
を有し、
前記受信するステップは、ハイパーパラメータの種別毎に前記ハイパーパラメータ取得要求を受信するハイパーパラメータチューニング方法。
【請求項２】
前記ハイパーパラメータ取得コードは、制御構造を利用して記述される、請求項１記載のハイパーパラメータチューニング方法。
【請求項３】
前記ユーザプログラムは、前記記述された制御構造に従って前記提供されたハイパーパラメータの次に取得すべきハイパーパラメータを決定し、前記決定されたハイパーパラメータに対するハイパーパラメータ取得要求を生成する、請求項２記載のハイパーパラメータチューニング方法。
【請求項４】
前記ハイパーパラメータの種別は、機械学習モデルのタイプ、レイヤ数、レイヤのノード数、重み減衰係数、ツリーの深さ、及びノードから分岐するエッジ数を含む、請求項１乃至３何れか一項記載のハイパーパラメータチューニング方法。
【請求項５】
前記ユーザプログラムは、機械学習モデルを学習するためのものである、請求項１乃至４何れか一項記載のハイパーパラメータチューニング方法。
【請求項６】
前記ハイパーパラメータ取得要求は、制御構造に従って前記機械学習モデルのタイプと、前記機械学習モデルの個々のタイプに特有のハイパーパラメータとを要求する、請求項５記載のハイパーパラメータチューニング方法。
【請求項７】
前記ハイパーパラメータ取得コードは、
前記機械学習モデルの構造を規定するハイパーパラメータを設定するためのモジュールと、
前記機械学習モデルの学習処理を規定するハイパーパラメータを設定するためのモジュールと、
を含む、請求項５又は６記載のハイパーパラメータチューニング方法。
【請求項８】
前記ハイパーパラメータを提供するステップは、所定のハイパーパラメータ選択アルゴリズムに従って選択されたハイパーパラメータを提供する、請求項５乃至７何れか一項記載のハイパーパラメータチューニング方法。
【請求項９】
前記所定のハイパーパラメータ選択アルゴリズムは、前記ハイパーパラメータの適用履歴の下で取得した前記機械学習モデルの精度を利用したベイズ最適化に基づく、請求項８記載のハイパーパラメータチューニング方法。
【請求項１０】
前記所定のハイパーパラメータ選択アルゴリズムは、ランダムサーチに基づく、請求項８記載のハイパーパラメータチューニング方法。
【請求項１１】
前記ユーザプログラムの評価結果は、前記機械学習モデルの精度を含む、請求項５乃至１０何れか一項記載のハイパーパラメータチューニング方法。
【請求項１２】
終了条件を充足するまで、前記受信するステップ、前記提供するステップ及び前記取得するステップを繰り返すステップを更に有する、請求項１乃至１１何れか一項記載のハイパーパラメータチューニング方法。
【請求項１３】
プロセッサと、
前記プロセッサに結合され、前記プロセッサのワーキングメモリとして機能するメモリと、
を有し、
前記プロセッサは、
ユーザプログラムに記述されたハイパーパラメータ取得コードに従って生成されたハイパーパラメータ取得要求を受信し、
前記ユーザプログラムに対するハイパーパラメータの適用履歴に基づき前記ユーザプログラムに前記ハイパーパラメータを提供し、
前記ハイパーパラメータが適用されたユーザプログラムの評価結果を取得し、
前記プロセッサは、ハイパーパラメータの種別毎に前記ハイパーパラメータ取得要求を受信するハイパーパラメータチューニング装置。
【請求項１４】
ユーザプログラムに記述されたハイパーパラメータ取得コードに従って生成されたハイパーパラメータ取得要求を受信する処理と、
前記ユーザプログラムに対するハイパーパラメータの適用履歴に基づき前記ユーザプログラムに前記ハイパーパラメータを提供する処理と、
前記ハイパーパラメータが適用されたユーザプログラムの評価結果を取得する処理と、
をプロセッサに実行させ、
前記受信する処理は、ハイパーパラメータの種別毎に前記ハイパーパラメータ取得要求を受信するハイパーパラメータチューニングプログラム。