(57)【要約】      （修正有）【課題】ハイパーパラメタセット毎に損失関数を計算する際に、各データセットのメモリへの書き込み時間の影響を低減する。【解決手段】データ分析装置１は、取得した訓練データと検証データを含むデータセットを格納するサブデータ格納部２１を有する記憶部２０と、取得したハイパーパラメタセットとサブデータ格納部２１に格納されたデータセットを用いて損失関数を計算する制御部１０と、を備える。制御部１０は、損失関数の計算と並行して、次のデータセットをサブデータ格納部２１にプリフェッチする。【選択図】図１
2016042322.tif 000002
【特許請求の範囲】
【請求項１】
取得した、訓練データと検証データを含むデータセットを格納するサブデータ格納部を有する記憶部と、
取得したハイパーパラメタセットと前記サブデータ格納部に格納されたデータセットを用いて損失関数を計算する制御部と、を備え、
前記制御部は、前記損失関数の計算と並行して、次のデータセットを前記サブデータ格納部にプリフェッチするデータ分析装置。
【請求項２】
前記サブデータ格納部は、第１サブデータ格納部および第２サブデータ格納部を備え、
前記制御部は、前記第１サブデータ格納部、又は、前記第２サブデータ格納部２のうちの一方のからデータセットを読み出して前記損失関数を計算し、他方に次のデータセットを書き込む、請求項１に記載のデータ分析装置。
【請求項３】
前記制御部は、データ処理部と、データプリフェッチ部を備え、
前記データ処理部が、前記第１サブデータ格納部、又は、前記第２サブデータ格納部２のうちの一方のからデータセットを読み出して前記損失関数を計算し、
前記データプリフェッチ部が、他方に次のデータセットを書き込む、請求項２に記載のデータ分析装置。
【請求項４】
前記制御部が、パラメタセット数計算部を備え、
前記パラメタセット数計算部は、第１サブデータ格納部又は第２サブデータ格納部に格納されたデータセットに対し、データ処理部が一度に損失関数を計算するハイパーパラメタセットの数を計算する、請求項２又は３に記載のデータ分析装置。
【請求項５】
前記制御部が、パラメタセット数計算部を備え、
前記パラメタセット数計算部は、前記データ処理部による前記ハイパーパラメタセットの前記損失関数の計算時間と、前記データプリフェッチ部による前記データセットのプリフェッチにかかる時間が同程度となるパラメタセットの数を算出する、請求項２又は３記載のデータ分析装置。
【請求項６】
前記制御部は、前記ハイパーパラメタセットの前記損失関数の平均値を、ハイパーパラメタセット毎に出力する、請求項１〜５のいずれか１項に記載のデータ分析装置。
【請求項７】
前記制御部は、処理制御部を備え、
前記処理制御部は、実行命令として、ハイパーパラメタセットの集合、データセットを生成する元データ、実行する損失関数、機械学習アルゴリズム、モデル検証手法の情報を取得し、前記元データから、実行命令が指定するモデル検証手法の情報に基づいて所望のデータセットを生成する、請求項１〜６のいずれか１項に記載のデータ分析装置。
【請求項８】
前記処理制御部は、前記データセットのサイズと前記第１サブデータ格納部又は前記サブデータ格納部で利用できる記憶容量から、前記第１サブデータ格納部又は前記サブデータ格納部に一度に書き込める前記データセットの数を算出し、
前記データプリフェッチ部は、前記データセットの数に基づき、前記第１サブデータ格納部又は前記サブデータ格納部に書き込む、請求項７記載のデータ分析装置。
【請求項９】
訓練データと検証データを含むデータセットをサブデータ格納部に格納し、
ハイパーパラメタセットと前記サブデータ格納部に格納されたデータセットを用いて損失関数を計算し、
前記損失関数の計算と並行して、次のデータセットを前記サブデータ格納部にプリフェッチするデータ分析方法。
【請求項１０】
コンピュータに、訓練データと検証データを含むデータセットをサブデータ格納部に格納し、ハイパーパラメタセットと前記サブデータ格納部に格納されたデータセットを用いて損失関数を計算し、前記損失関数の計算と並行して、次のデータセットを前記サブデータ格納部にプリフェッチすることを実行させる、データ分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ分析装置、分析方法とそのプログラムに関し、特に、機械学習におけるハイパーパラメタ最適化に関する。
【背景技術】
【０００２】
ハイパーパラメタ最適化（モデル最適）は、機械学習では欠かせない技術である。ハイパーパラメタ最適化とは、モデルの学習に必要となるハイパーパラメタセットを調整することである。通常、機械学習では、機械学習アルゴリズムに複数のハイパーパラメタセットを与え、異なるハイパーパラメタセットによって性能の異なるモデルが構築される。
【０００３】
最良の性能を示すモデルを学習するためのハイパーパラメタセットは自明ではない。そのため、学習装置は、各ハイパーパラメタセットに対して訓練データでモデルを学習し、検証データをモデルに適用するモデル検証手法によってモデルの性能を計測する。そして、学習装置は、その測定結果に基づき、最も性能のいいモデルを学習できるハイパーパラメタを決定する。非特許文献１に基づき、ハイパーパラメタ最適化を表す式を式（１）に示す。
2016042322.tif 000003
【０００４】
λは、ハイパーパラメタセットを表す変数、
Ａλは、λを与えられたときの機械学習アルゴリズム、
Λは、学習アルゴリズムに与える複数のハイパーパラメタセットを要素とする集合、
Ｘｔｒａｉｎは訓練データ（行列）、Ｘｖａｌｉｄは検証データ（行列）である。
Ｌは、損失関数と呼ばれ、λとＸｔｒａｉｎで学習されたモデルのＸｖａｌｉｄに対する性能を数値で返す関数である。損失関数は機械学習アルゴリズムやその応用分野に応じて様々に定義される。式（１）において、損失関数Ｌは、小さな値であるほどモデルの性能が良いことを表す。すなわち、式（１）は、損失関数Ｌの平均値が最も小さくなるようなλを、最適なハイパーパラメタλ（＊）として返す最適化問題を論理的に表している。
【０００５】
実用上、損失関数Ｌの平均値の求め方はいくつかある。それらの方法に基づいて式（１）を具体的な方法論に落とし込んだモデル検証手法がいくつか存在する。主要なものに、ｋ−ｆｏｌｄ交差検定がある。ｋ−ｆｏｌｄ交差検定は、元となる行列データＸに含まれる全サンプル（行）をｋ等分して分割データＸ１，…，Ｘｋを作り、分割データＸｉを検証データＸｖａｌｉｄに、残りのｋ−１個の分割データをマージしたものを訓練データＸｔｒａｉｎとする。そして、各ｉについて損失関数Ｌを１回ずつ実行してｋ個の損失関数Ｌの平均値を求める方法である。その他のモデル検証手法として、ホールドアウト検証法、ｌｅａｖｅ−ｏｎｅ−ｏｕｔ交差検定等も多くの分析者に利用されている。
【０００６】
このようなハイパーパラメタ最適化では、λの次元数（集合要素数）が大きいとき、ユーザの与える集合Λの濃度が次元の呪い的に大きくなることが知られている。したがって、全λ∈Λに関して、ｍｅａｎ  Ｌ（Ｘｖａｌｉｄ，Ａλ（Ｘｔｒａｉｎ））を計算し、最適化の処理を終えるのに時間が掛かる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２００８／１０８１２９号
【特許文献２】特開２０１１−１１０７９９号公報
【非特許文献】
【０００８】
【非特許文献１】Bergstra, James and Bengio, Yoshua, ”Random Search for Hyper-parameter Optimization,” The Journal of Machine Learning Research, Volume 13 Issue 1, January 2012, pp. 281-305
【発明の概要】
【発明が解決しようとする課題】
【０００９】
一方で、ユーザにより、全λ∈Λに関する損失関数Ｌの平均値（ｍｅａｎ  Ｌ（Ｘｖａｌｉｄ，Ａλ（Ｘｔｒａｉｎ）））の計算を待たず、λ∈Λ毎に計算された損失関数Ｌの平均値を見たいという要求もある。それは、真に最適なハイパーパラメタセットλ（＊）は自明ではなく、機械学習アルゴリズムに与えたΛの中に存在しているとは限らないからである。このため、ユーザは、λ∈Λ毎に計算結果を見て、見込みの無い残りのハイパーパラメタセットλの計算を中止し、新たなハイパーパラメタセットλを加えて最適化を再実行する（図１４）。
【００１０】
しかし、最適化の結果（λ（＊））を速く出力することと、λ∈Λ毎に損失関数Ｌの平均値（ｍｅａｎ  Ｌ（Ｘｖａｌｉｄ，Ａλ（Ｘｔｒａｉｎ）））の計算を終わらせ、λ∈Λ毎に損失関数Ｌの平均値を出力することとは、両立が難しい。例えば、損失関数Ｌの平均値を計算するために訓練データと検証データのペア（以下、データセットと示す）＜Ｘｉｔｒａｉｎ，Ｘｉｖａｌｉｄ＞がｋ個存在したとする。λ∈Λの損失関数Ｌの平均値は、ｋ個全てのデータセット＜Ｘｉｔｒａｉｎ，Ｘｉｖａｌｉｄ＞についてＬ（Ｘｉｖａｌｉｄ，Ａλ（Ｘｉｔｒａｉｎ））を計算する必要がある。ところが、使用するマシンのメモリサイズが小さいとき、ｋ個のデータセット＜Ｘｉｔｒａｉｎ，Ｘｉｖａｌｉｄ＞がメモリに乗り切らない場合がある。
【００１１】
このとき、あるｉに対する損失関数Ｌ（Ｘｉｖａｌｉｄ，Ａλ（Ｘｉｔｒａｉｎ））の計算の後、次のｊ（ｊ≠ｉ）の損失関数Ｌ（Ｘｊｖａｌｉｄ，Ａλ（Ｘｊｔｒａｉｎ））を計算するためにデータセット＜Ｘｊｔｒａｉｎ，Ｘｊｖａｌｉｄ＞をメモリに書き込む必要がある。このような状況で最適化の結果（λ（＊））を速く出力させる手順としては、メモリの容量限度までデータセット＜Ｘｉｔｒａｉｎ，Ｘｉｖａｌｉｄ＞を書き込み、書き込んだデータセットに対するλ∈Λについて損失関数Ｌ（Ｘｉｖａｌｉｄ，Ａλ（Ｘｉｔｒａｉｎ））を計算する。そして、計算が終わったらメモリに再び容量制限まで別のデータセットを書き込むという動作を繰り返すことが考えられる。しかし、この手順では、ユーザの試行錯誤のために、λ∈Λ毎にｍｅａｎｉ  Ｌ（Ｘｉｖａｌｉｄ，Ａλ（Ｘｉｔｒａｉｎ））の計算を終わらせ、次々に平均値を出力するようなことはできない。
【００１２】
一方で、λ∈Λ毎に損失関数Ｌの平均値（ｍｅａｎｉ  Ｌ（Ｘｉｖａｌｉｄ，Ａλ（Ｘｉｔｒａｉｎ）））の計算を終わらせようとすると、そのλ毎に、データセット＜Ｘｉｔｒａｉｎ，Ｘｉｖａｌｉｄ＞のメモリへの書き込みが発生する。λの次元数が大きくなるほど、ハイパーパラメタセットを要素とする集合Λのサイズは次元の呪い的な大きさになるため、メモリへの書き込み時間は、最適化が完了するまでの計算時間に無視できない影響を与える。
【００１３】
上記のように、計算に必要なデータセットをメモリに書ききれない場合、各ハイパーパラメタセットλ∈Λの損失関数Ｌの平均値であるｍｅａｎｉ  Ｌ（Ｘｉｖａｌｉｄ，Ａλ（Ｘｉｔｒａｉｎ））を次々に出力するためには、λ毎に各データセットを１度ずつメモリに書き込んで損失関数Ｌの平均値を計算することになる。このためデータセットのメモリへの書き込み時間の影響を低減するための技術が必要となる。
【００１４】
［発明の目的］
本発明の目的は、ハイパーパラメタセット毎に損失関数を計算する際に、各データセットのメモリへの書き込み時間の影響を低減することが可能なデータ分析装置、データ分析方法とそのプログラムを提供することにある。
【課題を解決するための手段】
【００１５】
本発明のデータ分析装置は、訓練データと検証データを含むデータセットを格納するサブデータ格納部を有する記憶部と、ハイパーパラメタセットと前記サブデータ格納部に格納されたデータセットを用いて損失関数を計算する制御部と、を備え、前記制御部は、前記損失関数の計算と並行して、次のデータセットを前記サブデータ格納部にプリフェッチする。
【００１６】
本発明のデータ分析方法は、訓練データと検証データを含むデータセットをサブデータ格納部に格納し、ハイパーパラメタセットと前記サブデータ格納部に格納されたデータセットを用いて損失関数を計算し、前記損失関数の計算と並行して、次のデータセットを前記サブデータ格納部にプリフェッチする。
【００１７】
本発明のデータ分析プログラムは、コンピュータに、訓練データと検証データを含むデータセットをサブデータ格納部に格納し、ハイパーパラメタセットと前記サブデータ格納部に格納されたデータセットを用いて損失関数を計算し、前記損失関数の計算と並行して、次のデータセットを前記サブデータ格納部にプリフェッチすることを実行させる。
【発明の効果】
【００１８】
本発明は、ハイパーパラメタセット毎に損失関数を計算する際に、各データセットのメモリへの書き込み時間の影響を低減することができる。
【図面の簡単な説明】
【００１９】
【図１】第１の実施形態に係るデータ分析装置の構成を示すブロック図である。
【図２】第１の実施形態に係るデータ分析装置の動作を示すフローチャートである。
【図３】図２における損失関数の計算の動作を示すフローチャート図である。
【図４】第１の実施形態に係るデータ分析装置によるハイパーパラメタの最適化の概要を説明する図である。
【図５】データ分析装置１の制御部１０及び記憶部２０の構成を示すブロック図である。
【図６】データ分析装置１による初期化の動作を示すフローチャートである。
【図７】データ分析装置１によるハイパーパラメタ最適化の動作を示すフローチャートである。
【図８】最適解出力を優先処理する場合における、ハイパーパラメタ最適化の処理時間とその処理手順を表す図である。
【図９】個々のハイパーパラメタセットの損失関数Ｌの平均値を優先して出力するハイパーパラメタ最適化の処理時間とその手順を表す図である。
【図１０】第１の実施形態のデータ分析装置１における処理手順と処理時間を表す図である。
【図１１】本発明の第２の実施形態に係るデータ分析装置の構成を示すブロック図である。
【図１２】本発明の第２の実施形態に係るデータ分析装置の動作を示すブロック図である。
【図１３】本発明の第１及び第２の実施形態に係るデータ分析装置１の制御部１０をコンピュータ装置で実現したハードウエア構成を示すブロック図である。
【図１４】ハイパーパラメタセットの計算を中止し、新たなハイパーパラメタセットを加えて最適化の再実行した状態を示す図である。
【発明を実施するための形態】
【００２０】
本発明の各実施形態に係るデータ分析装置について、図面を用いて説明する。なお、以下に挙げる各実施形態はそれぞれ例示であり、本発明は、以下で説明する各実施形態の構成に限定されるものではない。
【００２１】
本発明の第１の実施形態に係るデータ分析装置は、ハイパーパラメタの最適化処理において、ハイパーパラメタセットλｉ∈Λ毎に損失関数を計算する際に発生する、記憶部（例えば、メモリ）へのλｉ毎のデータセットの書き込み時間の増大を抑制する。ここで損失関数は、Ｌ（Ｘｉｖａｌｉｄ，Ａλ（Ｘｉｔｒａｉｎ））であり、データセットは＜Ｘｉｔｒａｉｎ，Ｘｉｖａｌｉｄ＞とする。なお、以下の各実施形態における説明では、特に説明が無い場合は、当該データセットは、一度に記憶部に書き込みきれない大きさであることを前提とする。
【００２２】
また、各実施形態の説明は、関連技術である式（１）および関連する用語を援用して、以下に説明する。なお、式（１）の説明と重複する内容については詳細な説明は省略する。
【００２３】
図１は、第１の実施形態に係るデータ分析装置の構成を示すブロック図である。図１に示すように、第１の実施形態のデータ分析装置１は、制御部１０および記憶部２０を有する。
【００２４】
データ分析装置１の記憶部２０は、訓練データＸｔｒａｉｎと検証データＸｖａｌｉｄを含むデータセットを格納するサブデータ格納部２１を有する。
【００２５】
データ分析装置１の制御部１０は、ハイパーパラメタセットλとサブデータ格納部２１に格納されたデータセットを用いて損失関数を計算する機能を有する。制御部１０により計算される損失関数は、上記の式（１）のＬ（Ｘｖａｌｉｄ，Ａλ（Ｘｔｒａｉｎ）と同様であり、ハイパーパラメタセットλと訓練データＸｔｒａｉｎで学習されたモデルの検証データＸｖａｌｉｄに対する性能を数値で返す関数である。さらに、制御部１０は、損失関数の計算と並行して、次のデータセットをサブデータ格納部にプリフェッチする機能を有する。
【００２６】
図２は、第１の実施形態に係るデータ分析装置１の動作を示すフローチャートである。
【００２７】
図２に示すように、データ分析装置１の制御部１０は、訓練データと検証データを含むデータセットを取得し（Ｓ１１）、ハイパーパラメタセットλｉを取得して（Ｓ１２）、それぞれ記憶部２０に保存する。次に制御部１０は、ハイパーパラメタセットλｉとデータセットを用いて損失関数を計算する（Ｓ１３）。
【００２８】
図３は、ハイパーパラメタセットの損失関数の計算の動作を示すフローチャートである。
【００２９】
制御部１０は、ハイパーパラメタセットとサブデータ格納部２１に格納されたデータセットを用いて損失関数を計算し（Ｓ１３１）、当該計算と並行して、次のデータセットをサブデータ格納部２１に書き込み（Ｓ１３２）、データセットをプリフェッチする。
【００３０】
次に、制御部１０は、未使用のデータセットが存在するか（Ｓ１３３）を判断し、未使用のデータセットが存在する場合（Ｓ１３３のＹｅｓ）、未使用のデータセットをサブデータ格納部２１に書き込む（Ｓ１３２）。未使用のデータセットが存在しない場合（Ｓ１３３のＮｏ）、ハイパーパラメタセットの損失関数の計算を終了し、次のステップへ進む。
【００３１】
制御部１０は、損失関数の計算結果を用いて、ハイパーパラメタセットλの損失関数の平均値を計算し（Ｓ１４）、必要に応じて計算した損失関数の平均値を出力する（Ｓ１６）。損失関数の平均値を出力しない場合（Ｓ１５のＮｏ）、制御部１０は、取得したハイパーパラメタセットλｉについて損失関数を計算したか判断する（Ｓ１７）。計算していないハイパーパラメタセットλｉがあれば（Ｓ１７のＮｏ）、制御部１０は、当該ハイパーパラメタセットの損失関数を計算する（Ｓ１３）。取得したハイパーパラメタセットλｉを全て計算したら（Ｓ１７のＹｅｓ）損失関数の計算のサブルーチンを終了する。
【００３２】
図４は、第１の実施形態に係るデータ分析装置１によるハイパーパラメタの最適化の概要を説明する図である。図４中では、説明を簡単にするために、ハイパーパラメタλのセット数をλ１〜λ５、データセットをｄａｔａｓｅｔ１〜ｄａｔａｓｅｔ８として説明する。
【００３３】
データ分析装置１の制御部１０は、ハイパーパラメタλ１とデータセット（ｄａｔａｓｅｔ）を用いる損失関数の計算のために、サブデータ格納部２１に格納されたデータセット（ｄａｔａｓｅｔ４）をサブデータ格納部２１から読み出す。
【００３４】
データ分析装置１の制御部１０は、データセット（ｄａｔａｓｅｔ４）を用いた損失関数の計算と並行して、次のデータセット（ｄａｔａｓｅｔ５）を事前にサブデータ格納部２１に書き込む処理（プリフェッチ処理）を実行する。制御部１０は、データセット（ｄａｔａｓｅｔ４）の損失関数の計算を終了後、サブデータ格納部２１からデータセット（ｄａｔａｓｅｔ５）を読み込み、損失関数の計算を開始する。このとき、制御部１０は、サブデータ格納部２１からデータセット（ｄａｔａｓｅｔ４）を削除し、次のデータセット（ｄａｔａｓｅｔ６）を書き込む処理（プリフェッチ処理）を実行する。
【００３５】
このように、ハイパーパラメタλとデータセットによる損失関数の計算と並行して、次の損失関数の計算に必要なデータセットをサブデータ格納部２１に事前に書き込むことで、サブデータ格納部２１へのデータセットの書き込み時間を隠ぺいすることができる。これにより、データ分析装置１は、ハイパーパラメタ毎に損失関数を計算する際に、各データセットのサブデータ格納部２１への書き込み時間の影響を低減することができる。
【００３６】
図４に示す例では、データセット（ｄａｔａｓｅｔ８）までハイパーパラメタλ１に対する損失関数の計算を終えた後、制御部１０は、ハイパーパラメタλ１に対する損失関数の平均値を計算する。また、ハイパーパラメタセットλ２〜λ５もλ１と同様に、制御部１０は、損失関数の計算と並行してデータセットをサブデータ格納部２１にプリフェッチすることでデータセットの書き込み時間を隠ぺいしつつ、ハイパーパラメタセットλ２〜λ５の損失関数の平均値を順次得ることができる。結果、ハイパーパラメタの最適化の処理時間が増大することなく、各ハイパーパラメタセットに対する損失関数の平均値をユーザに出力することができる。
【００３７】
次に、第１実施形態に係るデータ分析装置１の制御部１０および記憶部２０の詳細について図面を用いて説明する。
【００３８】
図５は、データ分析装置１の制御部１０および記憶部２０の構成を示すブロック図である。データ分析装置１の制御部１０は、データ処理部１１、データプリフェッチ部１２、処理制御部１３を有する。データ分析装置１の記憶部２０は、サブデータ格納部２１およびデータ格納部２２を有する。サブデータ格納部２１は、第１サブデータ格納部２３Ａおよび第２サブデータ格納部２３Ｂで構成される。各コンポーネントはネットワークやバス等で、通信可能に接続されているものとする。
【００３９】
制御部１０のデータ処理部１１は、サブデータ格納部２１（第１サブデータ格納部２３Ａ又は第２サブデータ格納部２３Ｂ）からデータセットを読み出し、各ハイパーパラメタセットλ∈Λｊの損失関数を計算する機能を有する。また、制御部１０の処理制御部１３からの命令により、計算した損失関数Ｌの値および対応するλｉの情報から損失関数Ｌの平均値を計算する機能を有する。
【００４０】
制御部１０のデータプリフェッチ部１２は、制御部１０のデータ処理部１１が損失関数の計算に使用するデータセットを、指定された第１サブデータ格納部２３Ａ又は第２サブデータ格納部２３Ｂに書き込む機能を有する。例えば、処理制御部１３が、記憶部２０のデータ格納部２２に保存された元データに基づいてから所定のデータセットを生成し、データフェッチ部１２がそのデータセットを第１及サブデータ格納部２３Ａ又は第２サブデータ格納部２３Ｂに格納する機能を有する。
【００４１】
記憶部２０のサブデータ格納部２１は、元データに基づいて生成されデータ格納部２２に保存されたデータセットを、第１サブデータ格納部２３Ａ又は第２サブデータ格納部２３Ｂに一時的に保存する領域を有する。
【００４２】
記憶部２０のデータ格納部２２は、装置外部から入力したデータや装置内部で生成したデータを保存する機能を備える。例えば、データ格納部２２は、ハイパーパラメタセット、データセットを生成する元データおよび処理制御部１３が元データからモデル検証手法の情報に基づいて生成したデータセット等を保存する。
【００４３】
データ分析装置の処理制御部１３は初期化と実行制御の２つの機能を備える。
【００４４】
処理制御部１３は、初期化機能として、まず、データ分析装置１の外部から実行命令を取得する。当該実行命令には、学習アルゴリズムに与える複数のハイパーパラメタセットを全要素とする集合Λ、データセットを生成する元データ、実行する損失関数Ｌの指定、実行する機械学習アルゴリズムＡの指定、実行するモデル検証手法の指定等が含まれる。取得した元データは、データ格納部２２に保存される。
【００４５】
さらに、処理制御部１３は、当該実行命令に基づき、取得した当該元データから、当該実行するモデル検証手法の指定に従い適切なデータセットの集合を生成する。このとき、データセットの実体を生成してデータ格納部２２に保存してもいいし、後で何度でも同一のデータセットが再現できるようにデータセット生成手順だけを決定してもいい。
【００４６】
処理制御部１３は、実行制御機能として、データプリフェッチ部１２およびデータ処理部１１にそれぞれ処理命令を送る。データプリフェッチ部１２への処理命令には、サブデータ格納部２１に書き込む１つ以上のデータセットの指定が含まれる。データ処理部１１への処理命令には、データ処理部１１が参照すべきデータセットが格納されたサブデータ格納部２１が、第１サブデータ格納部２３Ａ又は第２サブデータ格納部２３Ｂのどちらであるかの指定が含まれる。更に、データ処理部１１への処理命令には、処理するハイパーパラメタセットのサブセットΛｊの指定、および損失関数Ｌを計算するアプリケーションの指定が含まれる。処理制御部１３は、全てのデータセットに対する損失関数Ｌの計算処理が終わったら、データ処理部１１に各λ∈Λｊの損失関数Ｌの平均値を求める命令を送る。
【００４７】
データプリフェッチ部１２は、処理制御部１３から処理命令を取得すると、当該処理命令に記述されている１つ以上のデータセットを、指定されたサブデータ格納部２１（第１
サブデータ格納部２３Ａ又は第２サブデータ格納部２３Ｂ）に書き込む。データセットがデータ格納部２２にある場合は、当該処理命令にはデータ格納部２２にあるデータセットを読み出すような指定が含まれる。また、データセットがデータ格納部２２に無い場合は、当該処理命令に当該データセットを生成する手順が含まれ、データプリフェッチ部１２は、当該データセットを生成する手順に従って、データ格納部２２にある元データから所定のデータセットを生成しサブデータ格納部２１内部に格納する。
【００４８】
データ処理部１１は、処理制御部１３から処理命令を取得すると、当該処理命令が指定する第１サブデータ格納部２３Ａ又は第２サブデータ格納部２３Ｂからデータセットを参照し、当該処理命令に含まれるパラメタセットのサブセットΛｊの各ハイパーパラメタセットλ∈Λｊの損失関数Ｌを計算する。計算した損失関数Ｌの値と対応するλの情報はデータ格納部２２に保持しておく。また、データ処理部１１は、処理制御部１３から損失関数Ｌの平均値を求める命令を取得すると、データ格納部２２に保持していた損失関数Ｌの値と対応するλの情報から損失関数Ｌの平均値を計算し、出力する。損失関数Ｌを計算するときにデータ処理部１１が参照するサブデータ格納部２１は、データプリフェッチ部１２がプリフェッチで書き込むサブデータ格納部２１と異なる。
【００４９】
次に、本実施の形態に係るデータ分析装置１の動作を、初期化の動作とハイパーパラメタ最適化の動作の２つに分けて説明する。図６は、データ分析装置１による初期化の動作を示すフローチャートである。
【００５０】
＜初期化の動作＞
まず、初めに、処理制御部１３は、実行命令として、ハイパーパラメタセットの集合Λ、データセットを生成する元データ、実行する損失関数Ｌ、機械学習アルゴリズムＡ、モデル検証手法の情報を取得する（Ｓ２１）。
【００５１】
次に、処理制御部１３は、元データから、実行命令が指定するモデル検証手法の情報に基づいてｋ個のデータセットを生成しデータ格納部２２に格納する。なお、このとき、データセットの実体を生成してデータ格納部２２に保存してもよく、後で何度でも同一のデータセットが再現できるようにデータセット生成手順を決定してもよい（Ｓ２２）。
【００５２】
続いて、処理制御部１３が、データセットのサイズとサブデータ格納部で利用できる記憶容量から、サブデータ格納部に一度に書き込めるデータセットの数ｂを算出する。図６では、第１サブデータ格納部２３Ａおよび第２サブデータ格納部２３Ｂの記憶容量は等しいと仮定する（Ｓ２３）。
【００５３】
最後に、データプリフェッチ部１２が、先頭からｂ個のデータセット＜Ｘｉｔｒａｉｎ，Ｘｉｖａｌｉｄ＞，…，＜Ｘｂｔｒａｉｎ，Ｘｂｖａｌｉｄ＞を第１サブデータ格納部２３Ａに書き込む（Ｓ２４）。
【００５４】
＜ハイパーパラメタ最適化の動作＞
図７は、データ分析装置１によるハイパーパラメタ最適化の動作を示すフローチャートである。
【００５５】
まず処理制御部１３は、初期化としてｈ１＝１、ｈ２＝２、ｊ＝１を定義する（Ｓ３１）。ここでｈ１およびｈ２は第１サブデータ格納部２３Ａおよび第２サブデータ格納部２３Ｂを識別する識別子（値は１か２）であり、ｊはΛの部分集合Λｊを識別する識別子（１以上Ｊ以下）である。
【００５６】
次に、処理制御部１３は、ｉ＝ｂ＋１を定義する（Ｓ３２）。ここで変数ｉはサブデータ格納部２１にプリフェッチする最大ｂ個のデータセットのうち、先頭のデータセットの識別子である。
【００５７】
続いて、データプリフェッチ部１２は、ｂ個のデータセット＜Ｘｉｔｒａｉｎ，Ｘｉｖａｌｉｄ＞，…，＜Ｘｉ＋ｂ−１ｔｒａｉｎ，Ｘｉ＋ｂ−１ｖａｌｉｄ＞をデータ格納部ｈ２にプリフェッチする。ｉ＋ｂ−１≧ｋのときはプリフェッチすべきデータセットの残数がｂ個未満であることを表しているため、データプリフェッチ部１２は、格納できるだけの数のデータセットをプリフェッチする（Ｓ３３）。このプリフェッチ処理と並行して、データ処理部１１がデータ格納部ｈ１の各データセットと各λ∈Λｊとに対して損失関数Ｌ（Ｘｖａｌｉｄ，Ａλ（Ｘｔｒａｉｎ））を計算し、値を保存する（Ｓ３４）。計算に必要とされる処理時間は、並行して処理されるデータプリフェッチに掛かる時間と同程度となるようにする。
【００５８】
データプリフェッチ部１２及びデータ処理部１１の並行処理が終わると、処理制御部１３は、条件ｉ＋ｂ−１≧ｋを判定する（Ｓ３５）。当該条件が偽（ｆａｌｓｅ）の場合、未使用のデータセットがあることから次のデータセットの処理のためにｉ、ｈ１、ｈ２を更新し（Ｓ３６）、当該並行処理を繰り返す。当該条件が真（ｔｒｕｅ）の場合、Λｊに対して全てのデータセットで損失関数が計算できたことを意味するため、データ処理部１１が各λ∈Λｊについて、損失関数Ｌの平均値を算出、出力する（Ｓ３７）。そして、条件ｊ＝Ｊを判定する（Ｓ３８）。当該条件が偽（ｆａｌｓｅ）の場合、ｊを更新し（Ｓ３９）、Ｓ３２処理から再び処理を開始する。当該条件が真（ｔｒｕｅ）の場合、全ての部分集合Λｊについて、損失関数Ｌの平均値が計算された、すなわち与えられたΛの全ての要素λについて損失関数Ｌの平均値が計算されたことを意味する。このため、処理制御部１３は、最小の平均値を持つλをハイパーパラメタ最適化の最適解として出力し（Ｓ４０）、全ての処理を完了する。
【００５９】
次に、第１の実施形態のデータ分析装置１による効果を示すために、最適解出力を優先処理すると、個々のハイパーパラメタセットの損失関数Ｌの平均値を優先して出力する処理するとを、第１の実施形態によるハイパーパラメタ最適化の処理手順と処理時間の関係において比較する。比較条件として、データセット１、２およびハイパーパラメタλ１〜λ４を用い、各ハイパーパラメタの損失関数の平均を計算するものとする。なお、それぞれの比較においては、ＣＰＵやメモリは同一のものを使用している。
【００６０】
図８〜図１０は、ハイパーパラメタ最適化の処理時間の比較を表す。図８は、最適解出力を優先処理する場合における、ハイパーパラメタ最適化の処理時間とその処理手順を表す。図８中、横軸は、処理時間を示し、縦軸は、処理手順を示す。最適解出力を優先して処理する場合、各データセットはメモリ上に一度しか書き込まれず、メモリからのデータセットの書き込み時間は最小限に抑えられるため、最適解の出力が最も高速に実現できる。しかしながら、ユーザは個々のハイパーパラメタに対する損失関数の平均値を確認することができないまま、長時間待たされることになる（一般に、ハイパーパラメタセットλの数は非常に大きい）。
【００６１】
一方、図９は、個々のハイパーパラメタセットの損失関数Ｌの平均値を優先して出力する処理を表している。この処理では、ハイパーパラメタセットの損失関数Ｌの平均値は次々に出力されるが、メモリへのデータセットの書き込みが頻繁に発生し、最適解の出力までの時間が著しく増大し、現実的ではない。
【００６２】
図１０は、第１の実施形態のデータ分析装置１における処理手順と処理時間を表す。第１の実施形態のデータ分析装置１によれば、データセットをメモリにプリフェッチする処理と並行して、既にフェッチしたデータセットに対してハイパーパラメタセットに対する損失関数を計算している。これにより、メモリへのデータセットへの書き込み時間が隠ぺいされ、メモリの書き込み時間による処理時間の増大を抑制でき、個々のハイパーパラメタセットの損失関数の平均値を速く出力することができる。
【００６３】
また、ユーザは、ハイパーパラメタ最適化の処理を、最後まで待つことなく、個々のハイパーパラメタの損失関数Ｌの平均値を次々と確認することができる。これにより、与えたハイパーパラメタセットの集合Λに、最適解となるλがありそうかどうかという途中結果を、いち早く確認することができる。
【００６４】
最適解となりえるλがなさそうな場合や、Λの中の一部のλがあまりにも最適解になりそうもないことが途中結果から分かると、処理を打ち切り新しいΛを試してみるなどが出来、分析の試行錯誤のスピードが上がると期待できる。
【００６５】
［第２の実施形態］
次に、本発明の第２の実施形態に係るデータ分析装置について、図面を用いて説明する。
【００６６】
前述の第１の実施形態に係るデータ分析装置１は、プリフェッチによりＩＯタイムを隠ぺいすることができる。しかし、データ処理部１１に多くのハイパーパラメタセットを処理させると、データ処理部１１による出力結果の遅延が発生する。このため、第２の実施形態に係るデータ分析装置２は、第１のデータ分析装置１の構成にパラメタセット数計算部１４を追加している。
【００６７】
図１１は、第２の実施形態に係るデータ分析装置２の構成を示すブロック図である。データ分析装置２は、制御部３０と記憶部２０を有する。制御部３０は、データ処理部１１、プリフェッチ部１２、処理制御部１３およびパラメタセット数計算部１４を有する。制御部３０のデータ処理部１１、データプリフェッチ部１２および処理制御部１３は、第１の実施形態に係るデータ分析装置１の制御部１０と同様の機能を有する。また、記憶部２０は、第１実施形態に係るデータ分析装置１の記憶部２０と同じため、これら構成の詳細については、説明を省略する。
【００６８】
データ分析装置２のパラメタセット数計算部１４は、処理制御部１３に接続され、処理制御部１３の命令によりパラメタセット数ｓを計算する機能を有する。算出されたパラメタセット数ｓは、パラメタセット数計算部１４から処理制御部１３へ送られる。
【００６９】
パラメタセット数ｓは、第１サブデータ格納部２３Ａ又は第２サブデータ格納部２３Ｂに格納されたデータセットに対し、データ処理部１１が一度に損失関数Ｌを計算するパラメタセットの数である。データ処理部１１によるｓ個のパラメタセットの処理時間は、データプリフェッチ部１２が第１サブデータ格納部２３Ａ又は第２サブデータ格納部２３Ｂにデータセットを格納する時間以上であり、かつ、最小のｓとなるように、パラメタセット数計算部１４が計算する。パラメタセット数計算部１４は、データ処理部１１によるハイパーパラメタセットの損失関数の計算時間とデータプリフェッチ部１２によるデータセットのプリフェッチにかかる時間が同程度となるパラメタセット数ｓを算出することが好ましい。データセットのプリフェッチのために掛かる余分な処理時間は見かけ上ほとんど発生しなくなる。
【００７０】
次に、第２の実施の形態に係るデータ分析装置２の動作について、図面を用いて説明する。第２の実施形態に係るデータ分析装置２の動作も第１の実施形態に係るデータ分析装置１と同様に初期化の動作とハイパーパラメタ最適化の動作の２つに分かれる。但し、ハイパーパラメタ最適化の動作は、第１の実施形態に係るデータ分析装置２の動作と同様のため説明を省略する。
【００７１】
図１２は、データ分析装置２による初期化の動作を示すフローチャートである。図１２中、Ｓ２１〜Ｓ２４は、第１の実施形態に係るデータ分析装置１の動作と同様であり、詳細な説明は省略する。
【００７２】
データ分析装置２の制御部３０におけるパラメタセット数計算部１４の追加により、データ分析装置２の初期化の動作は、ステップＳ２３とステップＳ２４の間に、以下のステップが追加される。すなわち、パラメタセット数計算部１４が、実行命令の情報から、一度に処理するパラメタセットの数ｓを計算する（Ｓ４１）。さらに、処理制御部１３が、Λzから最大でｓ個の要素を持つ部分集合Λ１，．．.，ΛＪを生成する（Ｓ４２）。部分集合は互いに疎で、∪ｊ  Λｊ＝Λであるとする。また、Ｊは部分集合の数であるとする。
【００７３】
第２の実施形態に係るデータ分析装置２は、上記初期化の後に、ハイパーパラメタ最適化を実施する。
【００７４】
次に、第２の実施形態に係るデータ分析装置２のパラメタセット数計算部１４によるパラメタセット数ｓの決定について、具体例を挙げて説明する。
【００７５】
＜データ格納部２２がハードディスク、サブデータ格納部２１がメモリ、かつ、データ処理部１１がシングルスレッド処理の場合＞
第２の実施形態に係るデータ分析装置２のデータ格納部２２が、コンピュータ装置のハードディスク上に存在し、全てのデータセットの実体がハードディスク上に生成されているケースを考える。また、データ分析装置２のデータ処理部１１が、シングルスレッド処理で実現されているものとする。サブデータ格納部２１はメモリ上に存在しているとする。
【００７６】
データ分析装置２のデータプリフェッチ部１２は、ｂ個のデータセットを順にハードディスク上のデータ格納部２２からメモリ上のサブデータ格納部２１にプリフェッチする。１つのデータセットをメモリ上のサブデータ格納部２１に書き込む時間をＩＯとすると、ｂ個のデータセット全てをプリフェッチするのにかかる時間はＩＯ×ｂとなる。
【００７７】
また、あるハイパーパラメタセットλとデータセットに対して、損失関数Ｌ（Ｘｖａｌｉｄ，Ａλ（Ｘｔｒａｉｎ））が計算される時間をｔとする。サブデータ格納部２１の第１サブデータ格納部２３Ａおよび第２サブデータ格納部２３Ｂが同じ記憶容量であるとしたとき、データ処理部１１がサブデータ格納部２１に存在するｂ個のデータセットに、ｓ個のハイパーパラメタセットを適用して損失関数を計算するのにかかる時間は、ｓ×ｂ×ｔである。以上から、データ処理部１１が一度に処理すべきハイパーパラメタセットの数は、条件ｓ×ｔ≧ＩＯを満足し、かつ、最小のｓを選択する。
【００７８】
パラメタセット数計算部１４は、処理制御部１３からパラメタセット数を計算する命令を取得すると、データ格納部２２から任意の一つのデータセットを実際にメモリ上に書き込み、書き込み時間を取得してＩＯの値とする（なお、任意の複数のデータセットに対する書き込み時間の平均値をＩＯとしてもいい）。
【００７９】
パラメタセット数計算部１４は、メモリ上のサブデータ格納部２１から読み込んだデータセットに任意の一つのハイパーパラメタセットλを用いて損失関数Ｌを計算し、その計算時間をｔとする（任意の複数のλで損失関数を計算した平均時間をｔとしてもいい）。取得したＩＯとｔを用いて、当該条件ｓ×ｔ≧ＩＯを満足する中で最小の整数ｓを選択して処理制御部１３に返す。
【００８０】
＜メモリ上のサブデータ格納部への書き込み、かつ、データ処理部１１がシングルスレッドの場合＞
次に、データ分析装置２のデータ格納部２２が、コンピュータ装置のメモリ上に存在し、データセットを生成するための元データが実体としてデータ格納部２２に格納され、更に、各データセットの生成手順がデータ格納部２２に格納されているケースについて説明する。なお、データ処理部１１はシングルスレッドで実現されるものとする。また、サブデータ格納部２１もコンピュータ装置のメモリ上に存在しているとする。
【００８１】
データプリフェッチ部１２は、ｂ個のデータセットを順に、その生成手順に則ってデータ格納部２２に格納された元データからサブデータ格納部上に生成することでプリフェッチする。このケースの場合、パラメタセット数計算部１４は、任意の一つのデータセットを元データから生成し、生成にかかった時間をＩＯとする（任意の複数のデータセットの生成時間の平均値をＩＯとしてもいい）。こうすることにより、本ケースでも、当該のケースと同様のやり方でパラメタセット数ｓを算出することができる。
【００８２】
＜データ処理部１１がマルチスレッドの場合＞
処理するハイパーパラメタセットの個数が多い場合、データ処理部１１をマルチスレッド化することで時間を短縮することが可能である。すなわち、ｎ個のスレッドを用意し、ｓ×ｂ回発生する損失関数Ｌの計算をｎ個同時でスレッドを実行する場合である。このとき、サブデータ格納部は共有メモリ上に構築され、ｎ個のスレッドが同じサブデータ格納部を参照できるものとする。データプリフェッチ部１２はｂ個のデータセットを順に読み込むと、ｓ×ｂ回発生する損失関数の計算をｎ個のスレッドで処理にかかる時間はｓ×ｂ×ｔ／ｎとなる。よって、パラメタセット数計算部１４は、条件ｓ×ｔ／ｎ≧ＩＯを満足する中で最小の整数ｓを選択して処理制御部１３に返す。
＜ｓを適応的に決定する＞
これまでのケースでは、パラメタセット数ｓは最適化の計算が開始される前に決め打っていた。これは、損失関数Ｌの処理時間ｔやデータセットの書き込み時間ＩＯが、最適化の処理中ほとんど変動しない場合は効果的である。しかし、ｔがハイパーパラメタセットによって大きく変動する場合や、マシンのディスクやメモリの利用状況が変動しやすい場合は、ｔやＩＯを事前に決め打たず、データをプリフェッチするごとに適応的に決定する方が効果的である。
【００８３】
ｓを適応的に決める場合は、まず、パラメタセット数計算部１４がｓの算出を試み、適応的にｓを決めるか否かを決定する。例えば、前述のような方法でｔとＩＯの取得を何度か試み、ｔやＩＯの値の分散や標準偏差を計算し、分散や標準偏差が適当な閾値を超える場合は、適応的にｓを決めると決定する等の方法が考えられる。
【００８４】
パラメタセット数計算部１４がｓを適応的に決めると判断した場合、処理制御部１３はデータプリフェッチ部１２がプリフェッチしている間、Λから要素λを取り出し、データ処理部１１に渡し続ける。データプリフェッチ部１２がプリフェッチを終えるのを確認したら、データ処理部１１に対して、前のデータセットで計算されたλを優先してΛから取り出してデータ処理部１１に渡し続ける。こうすることで、データ処理部１１はデータプリフェッチ部１２がプリフェッチを終えるまで間のみ、並行してハイパーパラメタセットの損失関数Ｌを計算することができる。
【００８５】
本発明によれば、ハイパーパラメタ最適化を、全体の最適化時間を増大させることなく、ユーザに対してより対話的に行うことができる。本発明を実装したデータ分析ソフト、装置、サービス等を提供することで、利用者はより対話的なデータ分析を行うことができる。
【００８６】
以上、第２の実施形態に係るデータ分析装置２のパラメタセット数計算部１４により、データ処理部１１が一度に処理するハイパーパラメタの適当な数を計算することができる。これにより、データ分析装置２は、サブデータ格納部２１に書き込みしたデータセットに対して過剰な数のハイパーパラメタセットを一度に処理することがなくなり、１つのハイパーパラメタの損失関数の平均値の出力が遅くることもない。
（ハードウエア構成）
図１３は、本発明の第１〜３の実施形態に係るデータ分析装置１の制御部１０をコンピュータ装置で実現したハードウエア構成を示す図である。
【００８７】
図１３に示すように、データ分析装置１の制御部１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１、ネットワーク接続用の通信Ｉ／Ｆ（通信インターフェース）９２、メモリ９３、及び、プログラムを格納するハードディスク等の記憶装置９４を含み、また、自動取引装置１０の制御部１４、又は、保守サーバ３０は、システムバス９７を介して入力装置９５及び、出力装置９６に接続されている。
【００８８】
ＣＰＵ９１は、オペレーティングシステムを動作させて本発明の第１〜３の実施形態に係るデータ分析装置を制御する。またＣＰＵ９１は、例えば、ドライブ装置に装着された記録媒体からメモリ９３にプログラムやデータを読み込む。
【００８９】
また、ＣＰＵ９１は、例えば、各実施形態に係るデータ分析装置１の制御部（データ処理部１１、データプリフェッチ部１２、処理制御部１３、パラメタセット数計算部１４）に対応し、データ格納部２２、第１サブデータ格納部２３Ａおよび第２サブデータ格納部２３Ｂなどから入力される情報信号を処理する機能を有し、プログラムに基づいて各種機能の処理を実行する。
【００９０】
記憶装置９４は、例えば、光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク、又は半導体メモリ等である。記憶装置９４の一部の記憶媒体は、不揮発性記憶装置であり、そこにプログラムを記憶する。また、プログラムは、通信網に接続されている。図示しない外部コンピュータからダウンロードされてもよい。
【００９１】
入力装置９５は、例えば、マウス、キーボード、内臓のキーボタン、カード取込口、又は、タッチパネルなどで実現され、入力操作に用いられる。
【００９２】
出力装置９６は、例えば、ディスプレイで実現され、ＣＰＵ９１により処理された情報等を出力して確認するために用いられる。
【００９３】
以上のように、本発明の各実施形態は、図１３に示されるハードウエア構成によって実現される。但し、データ分析装置が備える各部の実現手段は、特に限定されない。すなわち、物理的に結合した一つの装置により実現されてもよいし、物理的に分離した二つ以上の装置を有線又は無線で接続し、これら複数の装置により実現してもよい。
【００９４】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されたものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が容易に理解し得るような様々な変更をすることができる。
【００９５】
以上、実施形態（及び実施例）を参照して本願発明を説明したが、本願発明は上記実施形態（及び実施例）に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００９６】
上記の実施形態の一部又は全部は、以下の付記のように記載されうるが、以下には限られない。
【００９７】
（付記１）
取得した、訓練データと検証データを含むデータセットを格納するサブデータ格納部を有する記憶部と、
取得したハイパーパラメタセットと前記サブデータ格納部に格納されたデータセットを用いて損失関数を計算する制御部と、を備え、
前記制御部は、前記損失関数の計算と並行して、次のデータセットを前記サブデータ格納部にプリフェッチするデータ分析装置。
【００９８】
（付記２）
前記サブデータ格納部は、第１サブデータ格納部および第２サブデータ格納部を備え、
前記制御部は、前記第１サブデータ格納部、又は、前記第２サブデータ格納部２のうちの一方のからデータセットを読み出して前記損失関数を計算し、他方に次のデータセットを書き込む、付記１に記載のデータ分析装置。
【００９９】
（付記３）
前記制御部は、データ処理部と、データプリフェッチ部を備え、
前記データ処理部が、前記第１サブデータ格納部、又は、前記第２サブデータ格納部２のうちの一方のからデータセットを読み出して前記損失関数を計算し、
前記データプリフェッチ部が、他方に次のデータセットを書き込む、付記２に記載のデータ分析装置。
【０１００】
（付記４）
制御部が、パラメタセット数計算部を備え、
前記パラメタセット数計算部は、第１サブデータ格納部又は第２サブデータ格納部に格納されたデータセットに対し、データ処理部（制御部）が一度に損失関数を計算するハイパーパラメタセットの数を計算する、付記２又は３に記載のデータ分析装置。
【０１０１】
（付記５）
制御部が、パラメタセット数計算部を備え、
前記パラメタセット数計算部は、前記データ処理部による前記ハイパーパラメタセットの前記損失関数の計算時間と、前記データプリフェッチ部による前記データセットのプリフェッチにかかる時間が同程度となるパラメタセットの数を算出する、付記２又は３記載のデータ分析装置。
【０１０２】
（付記６）
前記制御部は、前記ハイパーパラメタセットの前記損失関数の平均値を、ハイパーパラメタセット毎に出力する、付記１〜５のいずれか１項に記載のデータ分析装置。
【０１０３】
（付記７）
前記制御部は、処理制御部を備え、
前記処理制御部は、実行命令として、ハイパーパラメタセットの集合、データセットを生成する元データ、実行する損失関数、機械学習アルゴリズム、モデル検証手法の情報を取得し、前記元データから、実行命令が指定するモデル検証手法の情報に基づいて所望のデータセットを生成する、付記１〜６のいずれか１項に記載のデータ分析装置。
【０１０４】
（付記８）
前記処理制御部は、前記データセットのサイズと前記第１サブデータ格納部又は前記サブデータ格納部で利用できる記憶容量から、前記第１サブデータ格納部又は前記サブデータ格納部に一度に書き込める前記データセットの数を算出し、
データプリフェッチ部、前記データセットの数に基づき、前記第１サブデータ格納部又は前記サブデータ格納部に書き込む、付記７記載のデータ分析装置。
【０１０５】
（付記９）
訓練データと検証データを含むデータセットをサブデータ格納部に格納し、
ハイパーパラメタセットと前記サブデータ格納部に格納されたデータセットを用いて損失関数を計算し、
前記損失関数の計算と並行して、次のデータセットを前記サブデータ格納部にプリフェッチするデータ分析方法。
【０１０６】
（付記１０）
コンピュータに、訓練データと検証データを含むデータセットをサブデータ格納部に格納し、ハイパーパラメタセットと前記サブデータ格納部に格納されたデータセットを用いて損失関数を計算し、前記損失関数の計算と並行して、次のデータセットを前記サブデータ格納部にプリフェッチすることを実行させる、データ分析プログラム。
【符号の説明】
【０１０７】
１  データ分析装置
２  データ分析装置
１０  制御部
１１  データ処理部
１２  データプリフェッチ部
１３  処理制御部
１４  パラメタセット数計算部
２０  記憶部
２１  サブデータ格納部
２２  データ格納部
２３Ａ  第１サブデータ格納部
２３Ｂ  第２サブデータ格納部
３０  制御部
９１  ＣＰＵ
９２  通信Ｉ／Ｆ（通信インターフェース）
９３  メモリ
９４  記憶装置
９５  入力装置
９６  出力装置
９７  システムバス
【図１】
2016042322.tif 000004
【図２】
2016042322.tif 000005
【図３】
2016042322.tif 000006
【図４】
2016042322.tif 000007
【図５】
2016042322.tif 000008
【図６】
2016042322.tif 000009
【図７】
2016042322.tif 000010
【図８】
2016042322.tif 000011
【図９】
2016042322.tif 000012
【図１０】
2016042322.tif 000013
【図１１】
2016042322.tif 000014
【図１２】
2016042322.tif 000015
【図１３】
2016042322.tif 000016
【図１４】
2016042322.tif 000017