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

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

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

特許7303299ハイパーパラメタチューニング方法、プログラム試行システム及びコンピュータプログラム
<>
  • 特許-ハイパーパラメタチューニング方法、プログラム試行システム及びコンピュータプログラム 図1
  • 特許-ハイパーパラメタチューニング方法、プログラム試行システム及びコンピュータプログラム 図2
  • 特許-ハイパーパラメタチューニング方法、プログラム試行システム及びコンピュータプログラム 図3
  • 特許-ハイパーパラメタチューニング方法、プログラム試行システム及びコンピュータプログラム 図4
  • 特許-ハイパーパラメタチューニング方法、プログラム試行システム及びコンピュータプログラム 図5
  • 特許-ハイパーパラメタチューニング方法、プログラム試行システム及びコンピュータプログラム 図6
  • 特許-ハイパーパラメタチューニング方法、プログラム試行システム及びコンピュータプログラム 図7
  • 特許-ハイパーパラメタチューニング方法、プログラム試行システム及びコンピュータプログラム 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-26
(45)【発行日】2023-07-04
(54)【発明の名称】ハイパーパラメタチューニング方法、プログラム試行システム及びコンピュータプログラム
(51)【国際特許分類】
   G06N 20/00 20190101AFI20230627BHJP
   G06F 9/455 20180101ALI20230627BHJP
【FI】
G06N20/00
G06F9/455 100
【請求項の数】 16
(21)【出願番号】P 2021526074
(86)(22)【出願日】2020-06-05
(86)【国際出願番号】 JP2020022428
(87)【国際公開番号】W WO2020250843
(87)【国際公開日】2020-12-17
【審査請求日】2021-12-09
(31)【優先権主張番号】P 2019109537
(32)【優先日】2019-06-12
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】佐野 正太郎
(72)【発明者】
【氏名】柳瀬 利彦
(72)【発明者】
【氏名】太田 健
(72)【発明者】
【氏名】秋葉 拓哉
【審査官】山本 俊介
(56)【参考文献】
【文献】特開2013-242604(JP,A)
【文献】特開2019-079214(JP,A)
【文献】特開2016-218869(JP,A)
【文献】中国特許出願公開第109816116(CN,A)
【文献】特開2019-003408(JP,A)
【文献】Takuya Akiba,ハイパーパラメータ自動最適化ツール「Optuna」公開,Preferred Networks Research & Development Blog [online],2018年12月03日,インターネット:<URL:https://tech.preferred.jp/ja/blog/optuna-release/>,[検索日 2020.07.15]
【文献】@koshian2,GridSearchCVはもう古い!Optunaでサポートベクターマシンもラクラクチューニング,Qiita [online],2019年05月13日,インターネット:<URL:https://qiita.com/koshian2/items/1c0f781d244a6046b83e>,[検索日 2020.07.15]
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00 - 99/00
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのメモリと、
少なくとも1つのプロセッサと、を備え、
前記少なくとも1つのプロセッサは、
コマンドラインインタフェースを介して記述されたパラメタ記述データを含むプログラム実行命令を取得し、
前記パラメタ記述データに基づいて、試行対象となるプログラムのハイパーパラメタの値を設定し、
前記ハイパーパラメタの値を用いて実行された前記プログラムの試行結果を取得し、
前記試行結果に基づいて、前記プログラムの次のハイパーパラメタの値を設定し、
前記パラメタ記述データは、試行対象となる前記プログラム内に記述されたものではない、
ハイパーパラメタ設定装置。
【請求項2】
前記パラメタ記述データは、分布識別子と範囲指定値とを含み、
前記少なくとも1つのプロセッサは、前記分布識別子と前記範囲指定値とに基づいて前記ハイパーパラメタの値を設定する、
請求項1記載のハイパーパラメタ設定装置。
【請求項3】
前記パラメタ記述データは、第1のハイパーパラメタの値に依存して設定される第2のハイパーパラメタに関する情報を含み、
前記少なくとも1つのプロセッサは、前記第1のハイパーパラメタの値に基づいて、前記第2のハイパーパラメタの値を設定する、
請求項1又は2に記載のハイパーパラメタ設定装置。
【請求項4】
前記少なくとも1つのプロセッサは、前記プログラムの中間的な試行結果に基づいて、指定された試行回数の終了前に前記プログラムの試行を終了する、
請求項1乃至3のいずれか1項に記載のハイパーパラメタ設定装置。
【請求項5】
前記プログラム実行命令は、前記コマンドラインインタフェースを介して記述された第1のパラメタ記述データと、前記コマンドラインインタフェースを介して記述された第2のパラメタ記述データとを含み、
前記少なくとも1つのプロセッサは、
前記第1のパラメタ記述データに基づくハイパーパラメタの値と、前記第2のパラメタ記述データに基づくハイパーパラメタの値とを設定し、
前記第1のパラメタ記述データに基づくハイパーパラメタの値を用いて実行された前記プログラムの第1試行結果と、前記第2のパラメタ記述データに基づくハイパーパラメタの値を用いて実行された前記プログラムの第2試行結果とを取得し、
前記第1試行結果及び前記第2試行結果に基づいて、前記プログラムの次のハイパーパラメタの値を設定する、
請求項1乃至4のいずれか1項に記載のハイパーパラメタ設定装置。
【請求項6】
前記第1のパラメタ記述データに基づくハイパーパラメタの値を用いた前記プログラムの実行と、前記第2のパラメタ記述データに基づくハイパーパラメタの値を用いた前記プログラムの実行とが並列的に行われる、
請求項5に記載のハイパーパラメタ設定装置。
【請求項7】
前記プログラムは、機械学習モデルを含み、
前記ハイパーパラメタは、少なくとも、学習率、バッチサイズ、学習イテレーション数、ニューラルネットワークの層数又はチャネル数のいずれか1つを含み、
前記試行結果は、前記機械学習モデルの精度、実行時間又は進捗度のいずれか1つに関する情報を含む、
請求項1乃至のいずれか1項に記載のハイパーパラメタ設定装置。
【請求項8】
前記プログラムの試行は、他の装置で実行される、
請求項1乃至のいずれか1項に記載のハイパーパラメタ設定装置。
【請求項9】
請求項1乃至のいずれか1項に記載のハイパーパラメタ設定装置、を備え、
前記少なくとも1つのプロセッサは、設定されたハイパーパラメタの値を用いて前記プログラムを実行する、
プログラム試行システム。
【請求項10】
少なくとも1つのメモリと、
少なくとも1つのプロセッサと、を備え、
前記少なくとも1つのプロセッサは、
コマンドラインインタフェースを介して記述されたパラメタ記述データを含むプログラム実行命令を取得し、
前記パラメタ記述データに基づいて、ハイパーパラメタ設定部が処理可能なデータ形式を生成し、
前記データ形式を前記ハイパーパラメタ設定部に送信し、
プログラムのハイパーパラメタの値を前記ハイパーパラメタ設定部から受信し、
前記ハイパーパラメタの値を用いて実行された前記プログラムの試行結果を取得し、
前記試行結果を前記ハイパーパラメタ設定部に送信し、
前記試行結果に基づいて設定された、前記プログラムの次のハイパーパラメタの値を前記ハイパーパラメタ設定部から受信し、
前記パラメタ記述データは、試行対象となる前記プログラム内に記述されたものではない、
インタフェース装置。
【請求項11】
前記少なくとも1つのプロセッサは、
予め保持している対応表に基づいて、前記データ形式を生成する、
請求項10に記載のインタフェース装置。
【請求項12】
前記少なくとも1つのプロセッサは、
前記パラメタ記述データに含まれる分布識別子と範囲指定値とに基づいて、前記データ形式を生成する、
請求項10又は11に記載のインタフェース装置。
【請求項13】
少なくとも1つのプロセッサが、コマンドラインインタフェースを介して記述されたパラメタ記述データを含むプログラム実行命令を取得することと、
前記少なくとも1つのプロセッサが、前記パラメタ記述データに基づいて、試行対象となるプログラムのハイパーパラメタの値を設定することと、
前記少なくとも1つのプロセッサが、前記ハイパーパラメタの値を用いて実行された前記プログラムの試行結果を取得することと、
前記少なくとも1つのプロセッサが、前記試行結果に基づいて、前記プログラムの次のハイパーパラメタの値を設定することと、
を有し、
前記パラメタ記述データは、試行対象となる前記プログラム内に記述されたものではない、
方法。
【請求項14】
少なくとも1つのプロセッサが、コマンドラインインタフェースを介して記述されたパラメタ記述データを含むプログラム実行命令を取得することと、
前記少なくとも1つのプロセッサが、前記パラメタ記述データに基づいて、ハイパーパラメタ設定部が処理可能なデータ形式を生成することと、
前記少なくとも1つのプロセッサが、前記データ形式を前記ハイパーパラメタ設定部に送信することと、
前記少なくとも1つのプロセッサが、プログラムのハイパーパラメタの値を前記ハイパーパラメタ設定部から受信することと、
前記少なくとも1つのプロセッサが、前記ハイパーパラメタの値を用いて実行された前記プログラムの試行結果を取得することと、
前記少なくとも1つのプロセッサが、前記試行結果を前記ハイパーパラメタ設定部に送信することと、
前記少なくとも1つのプロセッサが、前記試行結果に基づいて設定された、前記プログラムの次のハイパーパラメタの値を前記ハイパーパラメタ設定部から受信することと、
を有し、
前記パラメタ記述データは、試行対象となる前記プログラム内に記述されたものではない、
方法。
【請求項15】
コマンドラインインタフェースを介して記述されたパラメタ記述データを含むプログラム実行命令を取得する処理と、
前記パラメタ記述データに基づいて、試行対象となるプログラムのハイパーパラメタの値を設定する処理と、
前記ハイパーパラメタの値を用いて実行された前記プログラムの試行結果を取得する処理と、
前記試行結果に基づいて、前記プログラムの次のハイパーパラメタの値を設定する処理と、
を1又は複数台のコンピュータに実行させ
前記パラメタ記述データは、試行対象となる前記プログラム内に記述されたものではない、
プログラム。
【請求項16】
コマンドラインインタフェースを介して記述されたパラメタ記述データを含むプログラム実行命令を取得する処理と、
前記パラメタ記述データに基づいて、ハイパーパラメタ設定部が処理可能なデータ形式を生成する処理と、
前記データ形式を前記ハイパーパラメタ設定部に送信する処理と、
プログラムのハイパーパラメタの値を前記ハイパーパラメタ設定部から受信する処理と、
前記ハイパーパラメタの値を用いて実行された前記プログラムの試行結果を取得する処理と、
前記試行結果を前記ハイパーパラメタ設定部に送信する処理と、
前記試行結果に基づいて設定された、前記プログラムの次のハイパーパラメタの値を前記ハイパーパラメタ設定部から受信する処理と、
を1又は複数台のコンピュータに実行させ
前記パラメタ記述データは、試行対象となる前記プログラム内に記述されたものではない、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ハイパーパラメタチューニング方法、プログラム試行システム及びコンピュータプログラムに関する。
【背景技術】
【0002】
機械学習モデルを訓練する際、例えば、学習率、バッチサイズ、学習イテレーション数、ニューラルネットワークの層数、チャネル数などのハイパーパラメタの調整が必要とされる。具体的には、各種ハイパーパラメタの値を設定し、設定されたハイパーパラメタ値の下で機械学習モデルが訓練される。
【0003】
しかしながら、ハイパーパラメタの調整は、訓練済み深層学習モデルの精度に影響を与える一方、現状、深層学習モデルのハイパーパラメタは、ユーザによって手動により調整されているか、あるいは、Pythonなどの特定のプログラミング言語を用いてユーザによって記述されたハイパーパラメタ設定プログラムを実行することによって調整されている。また、従来のハイパーパラメタ設定プログラム(例えば、https://github.com/Epistimio/orionを参照されたい)は、ハイパーパラメタを設定したい対象のプログラム(機械学習モデル)内に直接コードを記述する必要があるなど、必ずしも利便性が高いといえるものではなかった。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、利便性が向上したハイパーパラメタのチューニング方法を提供する。
【課題を解決するための手段】
【0005】
上記課題を解決するため、本開示の一態様は、1つ又は複数のプロセッサが、コマンドラインインタフェースにおいて記述された、パラメタ記述データを含むプログラム実行命令を取得することと、前記1つ又は複数のプロセッサが、前記パラメタ記述データに従って最適化対象のプログラムのハイパーパラメタの値を設定し、前記ハイパーパラメタの値の評価値を取得することと、を有するハイパーパラメタチューニング方法に関する。
【図面の簡単な説明】
【0006】
図1】本開示の一実施例によるハイパーパラメタ設定装置を示す概略図である。
図2】本開示の一実施例による一例となるパラメタ記述データを示す図である。
図3】本開示の一実施例によるハイパーパラメタ設定処理を示すシーケンス図である。
図4】本開示の他の実施例による一例となるパラメタ記述データを示す図である。
図5】本開示の他の実施例によるハイパーパラメタ設定処理を示すシーケンス図である。
図6】本開示の他の実施例によるハイパーパラメタ設定処理を示すフローチャートである。
図7】本開示の他の実施例による一例となるパラメタ記述データを示す図である。
図8】本開示の一実施例によるハイパーパラメタ設定装置のハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【0007】
以下、図面に基づいて本開示の実施の形態を説明する。以下の実施例では、深層学習モデルなどの試行対象モデルのためのハイパーパラメタ設定装置が開示される。
[本開示の概略]
本開示を概略すると、ユーザがユーザ端末上に表示されたコマンドプロンプト、コンソール等のコマンドラインインタフェースに試行対象のユーザプログラムに対するハイパーパラメタを設定するためのパラメタ記述データを含むプログラム実行命令を入力すると、ハイパーパラメタ設定装置は、入力されたパラメタ記述データに従って当該ユーザプログラムにハイパーパラメタの値を設定する。本開示によると、ユーザは、コマンドラインインタフェースから、ハイパーパラメタのパラメタ記述データを含むプログラム実行命令を送信する。ハイパーパラメタ設定装置は、取得したパラメタ記述データを含むプログラム実行命令に基づいて、ユーザプログラムのハイパーパラメタの値を設定する。これにより、ユーザは、ハイパーパラメタを設定するためのユーザプログラム内にプログラム又はファイルを記述することなく、ハイパーパラメタを探索することができる。また、例えば、プログラミング言語の種類に依らず、記述された試行対象のユーザプログラムに適したハイパーパラメタを探索することができる。
【0008】
なお、本明細書において、ハイパーパラメタとは、機械学習アルゴリズムの挙動を制御するパラメタのことを指す。特に、機械学習モデルが深層学習モデルである場合には、学習率、バッチサイズ、学習イテレーション数等、勾配法によって最適化できないパラメタを指す。また、ハイパーパラメタのチューニングとは、ハイパーパラメタの値の評価の他、改善(より好ましい値を選択すること)や最適化等を含む。なお、ハイパーパラメタの値の評価とは、あるハイパーパラメタの値を用いてユーザプログラムを実行し、評価値を取得することを意味する。
[ハイパーパラメタ設定装置の一実施例]
まず、図1~3を参照して、本開示の一実施例によるハイパーパラメタ設定装置を説明する。図1は、本開示の一実施例によるハイパーパラメタ設定装置を示す概略図である。
【0009】
図1に示されるように、プログラム試行システム10は、ハイパーパラメタ設定装置100、プログラム試行装置200及びデータベース250を有し、ユーザ端末50と接続される。プログラム試行システム10は、例えば、ユーザ端末50から、試行対象のユーザプログラム(例えば、深層学習モデル)と共にパラメタ記述データを取得すると、取得したパラメタ記述データとプログラム実行命令とに従ってユーザプログラムを試行する際のハイパーパラメタの値を決定及び設定し、決定したハイパーパラメタの値に基づきユーザプログラムを試行する。決定されたハイパーパラメタの値の下でのユーザプログラムの試行後、プログラム試行システム10は、試行結果に基づき次のハイパーパラメタの値を決定し、終了条件を充足するまで当該試行を繰り返す。ユーザにより指定された試行回数の終了などの所定の終了条件を充足すると、プログラム試行システム10は、各種ハイパーパラメタの値による試行結果に基づき、ユーザプログラムに最適なハイパーパラメタの値を決定する。例えば、ユーザプログラムが深層学習モデルである場合、最適なハイパーパラメタの値によって訓練された深層学習モデルが、以降の分類、予測等に利用される。なお、本明細書において、「最適化」とは、最適な状態に近づけることを指し、厳密に最適な値または状態とすることに限られない。同様に、「最適な」とは、厳密に最適であることに限られない。
【0010】
図示された実施例では、プログラム試行システム10は、ハイパーパラメタ設定装置100、プログラム試行装置200及びデータベース250の3つの物理的に分離した装置から構成されているが、本開示によるプログラム試行システム10は、これに限定されるものでなく、ハイパーパラメタ設定装置100、プログラム試行装置200及びデータベース250によって提供される機能を実現する単一の装置によって実現されてもよい。また、本開示によるプログラム試行システム10は、1つ又は複数のプロセッサと、1つ又は複数のメモリとによって実現されてもよい。
【0011】
ユーザ端末50は、例えば、パーソナルコンピュータ、タブレット等の計算装置である。ユーザは、例えば、ユーザ端末50を用いて、訓練対象の機械学習モデル、深層学習モデルなどの試行対象モデルを記述したユーザプログラムを作成及び格納し、また、当該ユーザプログラムをプログラム試行システム10のハイパーパラメタ設定装置100に送信する。
【0012】
また、ユーザ端末50は、当該ユーザプログラムに設定されるべきハイパーパラメタを指定するためのパラメタ記述データを含むプログラム実行命令をハイパーパラメタ設定装置100に提供する。具体的には、ユーザは、ユーザ端末50上に表示されるコマンドプロンプト、コンソールなどのコマンドラインインタフェース上でハイパーパラメタ設定装置100を起動するためのコマンドラインを入力すると共に、各種ハイパーパラメタを設定するためのパラメタ記述データを含むプログラム実行命令を当該コマンドラインのオプションとして入力する。
【0013】
例えば、図2に示されるように、ユーザはまずハイパーパラメタ設定装置100を起動するため、ユーザ端末50上のコマンドラインインタフェースにおいて、“optunash run -n 100 --”を入力してハイパーパラメタ設定プログラム(図2の例では“optunash“)の実行とそれによるユーザプログラムの試行回数を100回として指定する。さらに、ユーザは、パラメタ記述データを含むプログラム実行命令を入力する。
【0014】
例えば、まず、ユーザは、試行対象のユーザプログラム“nn-train”を入力する。次に、ユーザはパラメタ記述データとして、例えば、学習率“--learning_rate”及び層数“--num_layers”を指定する。具体的には、パラメタ記述データは、分布識別子と範囲指定値とによってハイパーパラメタの設定範囲を規定してもよい。
【0015】
ここでは、ユーザは学習率として“--learning_rate={{uniform,0.01,0.1}}”をコマンドラインのオプションとして入力する。“--learning_rate={{uniform,0.01,0.1}}”によると、“uniform”は、一様分布であることを示す分布識別子であり、範囲指定値“0.01”及び“0.1”は、“0.01”から“0.1”までの設定範囲を示し、“--learning_rate={{uniform,0.01,0.1}}”は、“0.01”から“0.1”までの設定範囲において一様分布により学習率が選択されることを指定している。
【0016】
また、ユーザは層数として“--num_layers={{int,2,8}}”を入力する。“--num_layers={{int,2,8}}”によると、“int”は選択対象が整数のみであることを示す分布識別子であり、範囲指定値“2”及び“8”は、“2”から“8”までの設定範囲を示し、“--num_layers={{int,2,8}}”は、“2”から“8”までの設定範囲において層数が選択されることを指定している。
【0017】
なお、分布識別子はこれらに限定されず、例えば、対数一様分布であることを示す分布識別子“loguniform”、指定された量子化ステップにより選択される一様分布であることを示す分布識別子“discrete_uniform”、選択対象の要素を指定する分布識別子“categorical”等が利用されてもよい。
【0018】
このようにして、分布識別子と範囲指定値とによってハイパーパラメタの設定範囲を規定するパラメタ記述データが、ユーザ端末50上のコマンドラインインタフェースを介し入力され、例えばリターンキーを押下することで、ハイパーパラメタ設定装置100に送信される。
【0019】
ハイパーパラメタ設定装置100は、インタフェース部110及びハイパーパラメタ設定部120を有する。
【0020】
インタフェース部110は、コマンドラインインタフェースにおいて記述された、プログラムのハイパーパラメタを設定するためのパラメタ記述データを含むプログラム実行命令を取得する。図1に示されるように、例えば、ユーザ端末50からハイパーパラメタ設定装置100に送信されたユーザプログラム及びパラメタ記述データを含むプログラム実行命令は、インタフェース部110において受信される。インタフェース部110は、受信したユーザプログラム及びパラメタ記述データを含むプログラム実行命令をそれぞれプログラム試行装置200及びハイパーパラメタ設定部120にわたす。
【0021】
例えば、インタフェース部110は、ユーザ端末50上のコマンドラインインタフェースに入力された各種ハイパーパラメタのパラメタ記述データを含むプログラム実行命令を取得すると、取得したプログラム実行命令内のパラメタ記述データをハイパーパラメタ設定部120によって処理可能なデータ形式に変換し、変換したパラメタ記述データをハイパーパラメタ設定部120にわたす。
【0022】
具体的には、インタフェース部110は、取得したパラメタ記述データを含むプログラム実行命令をパーシングし、“{{文字列}}”などの特定のパタン部分を抽出する。図2に示されたパラメタ記述データの具体例では、インタフェース部110はまず、取得したパラメタ記述データから特定のパタン部分として“--learning_rate={{uniform,0.01,0.1}}”を検出すると、第1項“uniform”を分布識別子とし、第2項及び第3項“0.01”及び“0.1”を範囲指定値として抽出する。特定のパタン部分の抽出後、インタフェース部110は、予め保持している対応表などを参照して、抽出した分布識別子に対応するパラメタ要求を特定し、抽出した範囲指定値を引数として特定したパラメタ要求に設定する。
【0023】
ここでは、ハイパーパラメタ設定部120にハイパーパラメタチューニングのソフトウェアOptuna(https://optuna.org/)を利用する場合を例として説明する。インタフェース部110は、“--learning_rate={{uniform,0.01,0.1}}”をSuggest APIとしてのパラメタ要求“trial.suggest_uniform(‘learning_rate’,0.01.0.1)”に変換してもよい。インタフェース部110は、変換されたパラメタ要求をハイパーパラメタ設定部120に送信する。その後、インタフェース部110は、“--num_layers={{int,2,8}}”について同様の処理を実行する。
【0024】
ハイパーパラメタ設定部120は、パラメタ記述データに従ってプログラムにハイパーパラメタの値を設定する。具体的には、図1に示されるように、インタフェース部110からパラメタ記述データを取得すると、ハイパーパラメタ設定部120は、取得したパラメタ記述データに従ってユーザプログラムに対するハイパーパラメタの値を決定し、決定したハイパーパラメタの値をインタフェース部110に返す。
【0025】
例えば、ハイパーパラメタの値は、インタフェース部110から取得したパラメタ要求の分布識別子及び範囲指定値に従って選択されてもよい。上述したようなパラメタ要求“trial.suggest_uniform(‘learning_rate’,0.01.0.1)”を取得すると、ハイパーパラメタ設定部120は、“0.01”から“0.1”の範囲内で一様分布に従ってランダムにハイパーパラメタの値を設定してもよい。また、ハイパーパラメタの値の設定は、ベイズ最適化やガウス仮定、ハイパーパラメタの最適化のためのソフトウェアなどを用いることにより、行われてもよい。また、ハイパーパラメタ設定部120は、設定したハイパーパラメタの値をデータベース250に記憶してもよい。
【0026】
このようにしてハイパーパラメタ設定部120によって設定されたハイパーパラメタの値を取得すると、インタフェース部110は、取得したハイパーパラメタの値をプログラム試行装置200にわたし、当該ハイパーパラメタの値によってユーザプログラムを実行するようプログラム試行装置200に指示する。例えば、learning_rateが0.02であり、num_layersが3の場合には、それぞれ該当するパラメタ記述データを置換して、“nn-train --learning_rate=0.02 --num_layers=3”という実行命令(コマンド)を生成し、実行する。同様に、learning_rateが0.07であり、num_layersが6の場合には、“nn-train --learning_rate=0.07 --num_layers=6”という実行命令(コマンド)を生成し、実行する。指示したハイパーパラメタの値によるユーザプログラムの実行後、インタフェース部110は、プログラム試行装置200から試行結果を取得する。
【0027】
例えば、ユーザプログラムが訓練前の深層学習モデルである場合、インタフェース部110は、ハイパーパラメタ設定部120によって設定されたハイパーパラメタの値によって深層学習モデルを訓練するようプログラム試行装置200に指示する。プログラム試行装置200は、例えば、予め準備された訓練データ等を利用して、指示されたハイパーパラメタの値の下で深層学習モデルを訓練し、訓練された深層学習モデルの精度、実行時間、進捗度などの評価値を含む試行結果をインタフェース部110に返す。
【0028】
当該試行結果は、標準出力(stdout)から取得されてもよいし、あるいは、ファイルとして取得されてもよい。そして、インタフェース部110は、標準出力又はファイルとして取得した試行結果から、訓練された深層学習モデルの精度、実行時間、進捗度などの評価値を含む評価値を取得する。例えば、入力文字列を受け取り、試行結果を抽出する関数を利用して、試行結果が標準出力として取得される場合、評価値は、入力文字列の最終行を読み、それを浮動小数点に型変換した値であってもよい。しかしながら、評価値の抽出は、これに限定されず、最終行を読む代わりに、正規表現などのパターンマッチを用いて取得されてもよい。あるいは、評価値のパターンが引数によって指定できるようにしてもよい。
【0029】
プログラム試行装置200から試行結果を取得すると、インタフェース部110は、取得した試行結果をハイパーパラメタ設定部120にわたす。ハイパーパラメタ設定部120は、取得した試行結果を適用されたハイパーパラメタの値と関連付けてデータベース250に記憶する。その後、ハイパーパラメタ設定部120は、例えば、“0.01”から“0.1”の設定範囲内で一様分布に従ってハイパーパラメタの次の値を設定し、インタフェース部110に送信し、再設定されたハイパーパラメタの値の下で上述したようにユーザプログラムが、指定された試行回数だけプログラム試行装置200において実行される。
【0030】
プログラム試行装置200は、例えば、深層学習モデルなどの試行対象のユーザプログラムを実行するサーバなどの計算装置である。図示された実施例では、プログラム試行装置200は、ハイパーパラメタ設定装置100と別の計算装置として示されている。しかしながら、本開示はこれに限定されず、例えば、ハイパーパラメタ設定装置100とプログラム試行装置200とは同一の計算装置によって実現されてもよい。
【0031】
データベース250は、ハイパーパラメタ設定部120によって設定されたハイパーパラメタの値の下での試行対象のユーザプログラムの試行結果を記憶する。例えば、指定された試行回数によるユーザプログラムの実行後、ユーザは、データベース250に記憶された評価値を含む試行結果を取得し、各種ハイパーパラメタの値による試行結果から最適なハイパーパラメタの値を決定することができる。
【0032】
図3は、本開示の一実施例によるハイパーパラメタ設定処理を示すシーケンス図である。例えば、当該ハイパーパラメタ設定処理は、ハイパーパラメタ設定装置100によってユーザ端末50に提供されるハイパーパラメタ設定アプリケーションを起動することによって開始されてもよい。
【0033】
図3に示されるように、ステップS101において、ユーザ端末50は、試行対象のユーザプログラム(例えば、訓練対象の深層学習モデルなど)と、当該ユーザプログラムの試行に適用されるハイパーパラメタのパラメタ記述データを含むプログラム実行命令をインタフェース部110に提供する。具体的には、例えば、ユーザは、ユーザ端末50を利用して、試行対象のユーザプログラムをハイパーパラメタ設定装置100に送信すると共に、ユーザ端末50のコマンドラインインタフェースを介し当該ユーザプログラムの試行に利用されるハイパーパラメタを指示するためのパラメタ記述データを含むプログラム実行命令をハイパーパラメタ設定装置100に送信する。
【0034】
ステップS102において、インタフェース部110は、ユーザ端末50から取得したパラメタ記述データに基づきパラメタ要求を生成し、生成したパラメタ要求をハイパーパラメタ設定部120に送信する。
【0035】
ステップS103において、ハイパーパラメタ設定部120は、取得したパラメタ要求に基づき、ユーザプログラムの試行のためのハイパーパラメタの値を決定する。例えば、取得したパラメタ要求が“trial.suggest_uniform(‘learning_rate’,0.01.0.1)”である場合、ハイパーパラメタ設定部120は、“0.01”から“0.1”までの設定範囲内で一様分布に従って学習率の値を選択する。
【0036】
ステップS104において、ハイパーパラメタ設定部120は、決定したハイパーパラメタの値をインタフェース部110に返す。
【0037】
ステップS105において、インタフェース部110は、パラメタ記述データをハイパーパラメタの値で置き換えたプログラム実行命令を生成し、試行対象のユーザプログラム及び設定されたハイパーパラメタの値で置き換えたプログラム実行命令をプログラム試行装置200に送信し、当該ハイパーパラメタの値の下でユーザプログラムを試行するようプログラム試行装置200に指示する。
【0038】
ステップS106において、プログラム試行装置200は、インタフェース部110からの試行指示に従って、取得したハイパーパラメタの値の下でユーザプログラムを実行する。例えば、ユーザプログラムが深層学習モデルである場合、プログラム試行装置200は、ハイパーパラメタ設定部120によって設定されたハイパーパラメタの値の下で深層学習モデルを訓練し、当該ハイパーパラメタの値の下で訓練された深層学習モデルの精度、実行時間、進捗度などを評価する。
【0039】
ステップS107において、プログラム試行装置200は、精度、実行時間、進捗度などの評価結果を含む試行結果をインタフェース部110に返す。
【0040】
ステップS108において、インタフェース部110は、取得した試行結果から評価結果を抽出し、抽出した評価結果をハイパーパラメタ設定部120に提供する。
【0041】
ステップS109において、ハイパーパラメタ設定部120は、取得した試行結果をデータベース250に記憶すると共に、指定された試行回数に達していない場合、次の試行に適用するハイパーパラメタの値を設定する。その後、指定された試行回数に到達するまで、ステップS104~S109が繰り返される。
【0042】
指定された試行回数に到達すると、ステップS110において、インタフェース部110は、これまで取得された試行結果を最終結果としてユーザ端末50に提供する。
[ハイパーパラメタ設定装置の他の実施例]
次に、図4を参照して、本開示の他の実施例によるハイパーパラメタ設定装置を説明する。上述した実施例では、学習率と層数などの異なるタイプのハイパーパラメタ値は互いに独立して決定されたが(Define-and-run方式)、本実施例では、ハイパーパラメタ値がDefine-by-run方式で設定される。すなわち、複数タイプのハイパーパラメタが設定される際、既に設定されたあるハイパーパラメタの値に依存して他のハイパーパラメタの値が設定される。
【0043】
例えば、図4に示されるように、ユーザは、コマンドラインインタフェースに介してパラメタ記述データとして層数“--n_layers={{int,1,8}}”及び隠れ層数“--n_hidden={{int,1,1024/n_layers}}”を指定する。
【0044】
具体的には、ユーザは、分布識別子“int”と、“1”から“8”までの設定範囲とによって層数を指定する。次に、ユーザは、分布識別子“int”と、“1”から“1024/n_layers”までの設定範囲とによって隠れ層の層数を指定する。すなわち、隠れ層の層数の設定範囲は、既に設定された層数“n_layers”の値に依存して設定される。このように、本実施例によるパラメタ記述データによると、コマンドラインインタフェースにおいて指定された順に、層数“n_layers”の値がまず決定され、ハイパーパラメタ“n_layers”と決定された値とのペアが保存される。そして、“--n_hidden={{int,1,1024/n_layers}}”に従って隠れ層の層数“n_hidden”の設定範囲を決定する際、層数“n_layers”に対応する保存されている値に依存して、隠れ層の層数“n_hidden”の設定範囲が決定される。例えば、図4に示される具体例では、“n_layers”が“2”に設定されると、“n_layers”と“2”のペアが保存され、“n_hidden”を決定するのに利用される。また、“n_layers”が“7”に設定されると、“n_layers”と“7”のペアが保存され、“n_hidden”を決定するのに利用される。すなわち、あるハイパーパラメタの値が他のハイパーパラメタの設定値に依存して設定されるというDefine-by-run方式によって、ハイパーパラメタの値が設定可能である。
【0045】
また、例えば、n_layersが2であり、n_hiddenが16の場合には、それぞれ該当するパラメタ記述データを置換して、“nn-train --n_layers=2 --n_hidden=16”という実行命令(コマンド)を生成し、実行する。同様に、n_layersが7であり、n_hiddenが25の場合には、“nn-train --n_layers=7 --n_hidden=25”という実行命令(コマンド)を生成し、実行する。
【0046】
このようなDefine-by-run方式によりハイパーパラメタの値が設定されるパラメタ記述データをユーザ端末50から取得すると、ハイパーパラメタ設定部120は、取得したパラメタ記述データに記述されている順にハイパーパラメタの値を決定及び保存し、既に決定及び保存されたハイパーパラメタの値に依存して他のハイパーパラメタの値を決定する。
[ハイパーパラメタ設定装置の他の実施例]
次に、図5を参照して、本開示の他の実施例によるハイパーパラメタ設定装置を説明する。上述した実施例では、ユーザにより指定された試行回数だけユーザプログラムは実行されるが、本実施例では、さらに、試行結果の中間評価に基づき、早期にユーザプログラムの訓練が終了される。すなわち、設定されたハイパーパラメタの値の下で試行されたユーザプログラムの中間的な試行結果に基づき、当該ユーザプログラムの試行が終了される。図5は、本開示の他の実施例によるハイパーパラメタ設定処理を示すシーケンス図である。
【0047】
図5に示されるように、ステップS201において、ユーザ端末50は、試行対象のユーザプログラム(例えば、訓練対象の深層学習モデルなど)と、当該ユーザプログラムの試行に適用されるハイパーパラメタのパラメタ記述データとをインタフェース部110に提供する。
【0048】
ステップS202において、インタフェース部110は、ユーザ端末50から取得したパラメタ記述データに基づきパラメタ要求を生成し、生成したパラメタ要求をハイパーパラメタ設定部120に送信する。
【0049】
ステップS203において、ハイパーパラメタ設定部120は、取得したパラメタ要求に基づき、ユーザプログラムの試行のためのハイパーパラメタの値を決定する。
【0050】
ステップS204において、ハイパーパラメタ設定部120は、決定したハイパーパラメタの値をインタフェース部110に返す。
【0051】
ステップS205において、インタフェース部110は、試行対象のユーザプログラム及び取得したハイパーパラメタの値をプログラム試行装置200に送信し、当該ハイパーパラメタの値の下でユーザプログラムを試行するようプログラム試行装置200に指示する。
【0052】
ステップS206において、プログラム試行装置200は、インタフェース部110からの試行指示に従って、取得したハイパーパラメタの値の下でユーザプログラムを実行する。例えば、ユーザプログラムが深層学習モデルである場合、プログラム試行装置200は、ハイパーパラメタ設定部120によって設定されたハイパーパラメタの値の下で実行される複数回のエポックを通じて深層学習モデルを訓練し、例えば、各エポックの終了後などに、当該ハイパーパラメタの値の下で訓練された深層学習モデルの精度、実行時間、進捗度などの評価値を中間試行結果として出力する。
【0053】
ステップS207において、プログラム試行装置200は、各エポックにおける評価結果を中間試行結果としてインタフェース部110に返す。
【0054】
ステップS208において、インタフェース部110は、取得した中間試行結果をハイパーパラメタ設定部120に提供する。
【0055】
ステップS209において、ハイパーパラメタ設定部120は、通常の訓練終了より早期に取得した、ユーザプログラム実行中の各エポックの中間試行結果を評価(中間評価)し、当該中間試行結果に基づき、当該ユーザプログラムの実行を通常よりも早期に終了してもよい。例えば、ハイパーパラメタ設定部120は、精度、実行時間及び進捗度の1つ以上の中間試行結果からなる中間評価値に基づき、当該ユーザプログラムの更なる訓練を終了するか判断してもよい。
【0056】
また、この早期終了判定に利用される中間評価のための中間試行結果とユーザに報告される最終結果のための試行結果とは、異なるものであってもよい。例えば、ハイパーパラメタ設定部120は、進捗度に基づき更なる訓練の実行を終了してもよく、インタフェース部110は、実行時間を最終結果としてユーザ端末50に報告してもよい。
【0057】
当該ユーザプログラムが早期終了すべきと判定された場合、ステップS210において、ハイパーパラメタ設定部120は、プログラム試行装置200及びインタフェース部110に早期終了指示を送信し、当該ユーザプログラムの実行を終了させる。そして、ステップS211において、指定された試行回数に達していない場合、次の試行に適用するハイパーパラメタの値を設定する。なお、中間評価にかかる情報は任意にデータベース250に記憶されてもよい。
【0058】
早期終了すべきと判定されなかった場合、プログラム試行装置200は、当該ユーザプログラムの実行を継続し、ステップS207に戻って、次のエポックの中間試行結果をインタフェース部110に提供する。その後、当該フローは、早期終了に該当せず、所定のエポック数の処理が終了したなどの終了条件が充足されるまで、上述した処理を繰り返す。
【0059】
そして、ステップS211において、ハイパーパラメタ設定部120は、取得した試行結果をデータベース250に記憶すると共に、指定された試行回数に達していない場合、次の試行に適用するハイパーパラメタの値を設定する。
【0060】
その後、指定された試行回数に到達するまで、ステップS204~S211が繰り返される。
【0061】
指定された試行回数に到達した場合、ステップS212において、インタフェース部110は、これまで取得された試行結果を最終結果としてユーザ端末50に提供する。
【0062】
具体的には、ハイパーパラメタ設定装置100は、ユーザプログラムの実行中にプログラム試行装置200の標準出力を監視することによって中間評価値を取得する。各エポックに対するプログラム試行装置200の標準出力が更新される毎に、ハイパーパラメタ設定装置100は、例えば、所定の中間評価抽出関数を実行し、精度やMSEなどの中間評価値を抽出する。そして、ハイパーパラメタ設定装置100は、取得した中間評価値に基づき当該ユーザプログラムの実行を早期終了するか判断する。例えば、他のハイパーパラメタの設定値に対する試行の中間評価値と比較し、抽出した中間評価値が平均値以下であった場合、当該ユーザプログラムの実行を停止してもよい。
【0063】
このような早期終了を導入することによって、例えば、100通りの値をとるハイパーパラメタを有する機械学習プログラムがあり、各ハイパーパラメタ値に対して当該機械学習プログラムを終了するのに10秒かかるとする。また、1秒毎に1つの中間評価値を出力するとする。この場合、100通りのハイパーパラメタ値の全てについて機械学習プログラムを評価するのに100×10秒=1000秒かかる。しかしながら、早期終了によると、例えば、ハイパーパラメタ設定装置100が、5秒目の中間評価値と他の試行の中間評価値とを比較し、例えば、5秒目の中間評価値が他の試行の中間評価値の平均より低い場合、当該試行を途中で停止してもよい。早期終了を導入することによって、パイパーパラメタ最適化に要する時間を短縮することができる。
【0064】
また、一実施例では、ハイパーパラメタ設定装置100及びプログラム試行装置200は、単一の装置から構成されるプログラム試行システム10によって実現されてもよい。この場合、プログラム試行システム10は、図6に示されるようなフローチャートに従ってハイパーパラメタ設定処理を実行してもよい。
【0065】
図6に示されるように、ステップS301において、プログラム試行システム10は、ユーザ端末50からユーザプログラム及びパラメタ記述データを取得する。すなわち、プログラム試行システム10は、試行対象のユーザプログラム(例えば、訓練対象の深層学習モデルなど)と、当該ユーザプログラムの試行に適用されるハイパーパラメタのパラメタ記述データとを取得する。
【0066】
ステップS302において、プログラム試行システム10は、ハイパーパラメタ記述データに従ってハイパーパラメタを設定する。
【0067】
ステップS303において、プログラム試行システム10は、設定したハイパーパラメタによってユーザプログラムを実行する。具体的には、プログラム試行システム10は、ユーザプログラムをエポック数繰り返し実行する。
【0068】
ステップS304において、プログラム試行システム10は、各エポックに対する中間評価値を取得する。
【0069】
ステップS305において、プログラム試行システム10は、取得した中間評価値に基づき、ステップS302において設定されたハイパーパラメタ値による更なるユーザプログラムの繰り返しを終了するか判断する。例えば、取得した中間評価値が実行済みの他のハイパーパラメタ値による評価値の平均未満である場合(S305:YES)、プログラム試行システム10は、設定されているハイパーパラメタ値によるユーザプログラムの更なる繰り返しを停止し、ステップS307に移行する。他方、取得した中間評価値が実行済みの他のハイパーパラメタ値による評価値の平均以上である場合(S305:NO)、プログラム試行システム10は、ユーザプログラムを早期終了することなく、ステップS306に移行する。
【0070】
ステップS306において、プログラム試行システム10は、所定の最大エポック数を超過したか判断する。最大エポック数を超過していない場合(S306:NO)、プログラム試行システム10は、ステップS304に戻り、設定されているハイパーパラメタ値による次のエポックの中間評価値を取得する。他方、最大エポック数を超過した場合(S306:YES)、プログラム試行システム10は、ステップS307に移行する。
【0071】
ステップS307において、プログラム試行システム10は、ハイパーパラメタのとりうる全ての値に対してユーザプログラムを実行済みか判断する。ハイパーパラメタのとりうる全ての値に対してユーザプログラムを実行済みである場合(S307:YES)、プログラム試行システム10は、当該ハイパーパラメタ設定処理を終了する。他方、ハイパーパラメタのとりうる全ての値に対してユーザプログラムを実行済みでない場合(S307:NO)、プログラム試行システム10は、ステップS302において、次のハイパーパラメタ値を設定し、次のハイパーパラメタ設定値に対してユーザプログラムをエポック数繰り返し実行する。
[ハイパーパラメタ設定装置の他の実施例]
次に、図7を参照して、本開示の他の実施例によるハイパーパラメタ設定装置を説明する。本実施例では、ユーザプログラムの試行が分散化される。
【0072】
例えば、インタフェース部110は、ユーザ端末50から図7に示されるようなパラメタ記述データを取得する。図示されたパラメタ記述データから理解されうるように、2つの同一のパラメタ記述データが、ユーザ端末50上のコマンドラインインタフェースを介し入力される。当該パラメタ記述データを取得すると、インタフェース部110は、これら2つのパラメタ記述データに対応するパラメタ要求をハイパーパラメタ設定部120に送信し、ハイパーパラメタ設定部120は、各パラメタ記述データに対してハイパーパラメタの値を設定し、インタフェース部110に返す。インタフェース部110は、設定された2つのハイパーパラメタの値をプログラム試行装置200にわたし、各ハイパーパラメタの値の下でユーザプログラムを並列的に試行するようプログラム試行装置200に指示する。プログラム試行装置200による試行が終了すると、インタフェース部110は、並列的に試行されたユーザプログラムの各試行結果を取得し、ハイパーパラメタ設定部120にわたす。これにより、より短い実行時間によってユーザプログラムの試行を終了することができる。
[ハイパーパラメタ設定装置のハードウェア構成]
実施形態におけるハイパーパラメタ設定装置100において、各機能は、アナログ回路、デジタル回路又はアナログ・デジタル混合回路で構成された回路であってもよい。また、各機能の制御を行う制御回路を備えていてもよい。各回路の実装は、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等によるものであってもよい。
【0073】
上記の全ての記載において、ハイパーパラメタ設定装置の少なくとも一部はハードウェアで構成されていてもよいし、ソフトウェアで構成され、ソフトウェアの情報処理によりCPU(Central Processing Unit)等が実施をしてもよい。ソフトウェアで構成される場合には、ハイパーパラメタ設定装置及びその少なくとも一部の機能を実現するプログラムを記憶媒体に収納し、コンピュータに読み込ませて実行させるものであってもよい。記憶媒体は、磁気ディスク(例えばフレキシブルディスク)や光ディスク(例えばCD-ROMやDVD-ROM)等の着脱可能なものに限定されず、ハードディスク装置やメモリを利用するSSD(Solid State Drive)などの固定型の記憶媒体であってもよい。すなわち、ソフトウェアによる情報処理がハードウェア資源を用いて具体的に実装されるものであってもよい。さらに、ソフトウェアによる処理は、FPGA等の回路に実装され、ハードウェアが実行するものであってもよい。ジョブの実行は、例えば、GPU(Graphics Processing Unit)等のアクセラレータを使用して行ってもよい。
【0074】
例えば、コンピュータが読み取り可能な記憶媒体に記憶された専用のソフトウェアをコンピュータが読み出すことにより、コンピュータを上記の実施形態の装置とすることができる。記憶媒体の種類は特に限定されるものではない。また、通信ネットワークを介してダウンロードされた専用のソフトウェアをコンピュータがインストールすることにより、コンピュータを上記の実施形態の装置とすることができる。こうして、ソフトウェアによる情報処理が、ハードウェア資源を用いて、具体的に実装される。
【0075】
図8は、本開示の一実施例におけるハードウェア構成の一例を示すブロック図である。ハイパーパラメタ設定装置100は、プロセッサ101と、主記憶装置102と、補助記憶装置103と、ネットワークインタフェース104と、デバイスインタフェース105と、を備え、これらがバス106を介して接続されたコンピュータ装置として実現できる。
【0076】
なお、図8のハイパーパラメタ設定装置100は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、1台のハイパーパラメタ設定装置100が示されているが、ソフトウェアが複数のコンピュータ装置にインストールされて、当該複数のハイパーパラメタ設定装置100それぞれがソフトウェアの異なる一部の処理を実行してもよい。この場合、複数のハイパーパラメタ設定装置100それぞれがネットワークインタフェース104等を介して、通信してもよい。
【0077】
プロセッサ101は、ハイパーパラメタ設定装置100の制御部および演算装置を含む電子回路(処理回路、Processing circuit、Processing circuitry)である。プロセッサ101は、ハイパーパラメタ設定装置100の内部構成の各装置などから入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を各装置などに出力する。具体的には、プロセッサ101は、ハイパーパラメタ設定装置100のOS(Operating System)や、アプリケーションなどを実行することにより、ハイパーパラメタ設定装置100を構成する各構成要素を制御する。プロセッサ101は、上記の処理を行うことができれば特に限られるものではない。ハイパーパラメタ設定装置100及びそれらの各構成要素は、プロセッサ101により実現される。ここで、処理回路とは、1チップ上に配置された1又は複数の電気回路を指してもよいし、2つ以上のチップあるいはデバイス上に配置された1又は複数の電気回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線又は無線により通信してもよい。
【0078】
主記憶装置102は、プロセッサ101が実行する命令および各種データなどを記憶する記憶装置であり、主記憶装置102に記憶された情報がプロセッサ101により直接読み出される。補助記憶装置103は、主記憶装置102以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、メモリでもストレージでもよい。また、メモリには、揮発性メモリと、不揮発性メモリがあるが、いずれでもよい。ハイパーパラメタ設定装置100内において各種データを保存するためのメモリ、例えば、メモリは、主記憶装置102又は補助記憶装置103により実現されてもよい。例えば、メモリの少なくとも一部は、この主記憶装置102又は補助記憶装置103に実装されていてもよい。別の例として、アクセラレータが備えられている場合には、前述したメモリの少なくとも一部は、当該アクセラレータに備えられているメモリ内に実装されていてもよい。
【0079】
ネットワークインタフェース104は、無線又は有線により、通信ネットワーク108に接続するためのインタフェースである。ネットワークインタフェース104は、既存の通信規格に適合したものを用いればよい。ネットワークインタフェース104により、通信ネットワーク108を介して通信接続された外部装置109Aと情報のやり取りが行われてもよい。
【0080】
外部装置109Aは、例えば、カメラ、モーションキャプチャ、出力先デバイス、外部のセンサ、入力元デバイスなどが含まれる。また、外部装置109Aは、ハイパーパラメタ設定装置100の構成要素の一部の機能を有する装置でもよい。そして、ハイパーパラメタ設定装置100は、ハイパーパラメタ設定装置100の処理結果の一部を、クラウドサービスのように通信ネットワーク108を介して受け取ってもよい。
【0081】
デバイスインタフェース105は、外部装置109Bと直接接続するUSB(Universal Serial Bus)などのインタフェースである。外部装置109Bは、外部記憶媒体でもよいし、ストレージ装置でもよい。メモリは、外部装置109Bにより実現されてもよい。
【0082】
外部装置109Bは出力装置でもよい。出力装置は、例えば、画像を表示するための表示装置でもよいし、音声などを出力する装置などでもよい。例えば、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、PDP(Plasma Display Panel)、有機EL(ElectroLuminescence)ディスプレイ、スピーカなどがあるが、これらに限られるものではない。
【0083】
なお、外部装置109Bは入力装置でもよい。入力装置は、キーボード、マウス、タッチパネル、マイクロフォンなどのデバイスを備え、これらのデバイスにより入力された情報をハイパーパラメタ設定装置100に与える。入力装置からの信号はプロセッサ101に出力される。
【0084】
例えば、本実施形態におけるハイパーパラメタ設定装置100のインタフェース部110、ハイパーパラメタ設定部120等は、プロセッサ101により実現されてもよい。また、ハイパーパラメタ設定装置100のメモリは、主記憶装置102又は補助記憶装置103により実現されてもよい。また、ハイパーパラメタ設定装置100は、1又は複数のメモリを搭載してもよい。
【0085】
本明細書において、“a,bおよびcの少なくとも1つ”は、a,b,c,a-b,a-c,b-c,a-b-cの組み合わせだけでなく、a-a,a-b-b,a-a-b-b-c-cなどの同じ要素の複数の組み合わせも含む表現である。また、a-b-c-dの組み合わせのように、a,b,c以外の要素を含む構成もカバーする表現である。
【0086】
同様に、本明細書において、“a,b又はcの少なくとも1つ”は、a,b,c,a-b,a-c,b-c,a-b-cの組み合わせだけでなく、a-a,a-b-b,a-a-b-b-c-cなどの同じ要素の複数の組み合わせも含む表現である。また、a-b-c-dの組み合わせのように、a,b,c以外の要素を含む構成もカバーする表現である。
【0087】
以上、本開示の実施例について詳述したが、本開示は上述した特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本開示の要旨の範囲内において、種々の変形・変更が可能である。
【0088】
本出願は、2019年6月12日に出願した日本国特許出願2019-109537号の優先権の利益に基づき、これを主張するものであり、2019-109537号の全内容を本出願に援用する。
【符号の説明】
【0089】
10 プログラム試行システム
50 ユーザ端末
100 ハイパーパラメタ設定装置
110 インタフェース部
120 ハイパーパラメタ設定部
101 プロセッサ
102 主記憶装置
103 補助記憶装置
104 ネットワークインタフェース
105 デバイスインタフェース
108 通信ネットワーク
109 外部装置
200 プログラム試行装置
250 データベース
図1
図2
図3
図4
図5
図6
図7
図8