(57)【要約】  分散システム１００は、データ管理装置１０と、機械学習を実行する複数の計算機２０とを備える。データ管理装置１０は、各計算機２０から、そのメモリ２１で保持されている学習データに関する情報を取得する、データ取得部１１と、各計算機２０で実行される機械学習の特性、及び各計算機２０から取得した情報に基づいて、各計算機がメモリ２１で保持すべき学習データを決定する、データ再配置部１２とを備えている。
2018225747.tif 000002
【特許請求の範囲】
【請求項１】
データ管理装置と、機械学習を実行する複数の計算機と、を備え、
データ管理装置は、
前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、データ取得部と、
前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、データ再配置部と、
を備えている、ことを特徴とする分散システム。
【請求項２】
前記データ管理装置において、
前記データ取得部が、前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報として、前記学習データを構成するサンプル毎の予測ターゲット変数を取得し、
前記データ再配置部が、前記複数の計算機それぞれの前記メモリが保持する前記学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、前記複数の計算機それぞれが前記メモリで保持すべき前記学習データを決定する、
請求項１に記載の分散システム。
【請求項３】
前記データ再配置部が、決定の結果を、前記複数の計算機それぞれに送信し、
前記複数の計算機それぞれが、送信されてきた決定の結果に応じて、当該計算機のメモリで保持されている前記学習データの一部又は全部を、他の計算機に送信する、
請求項１または２に記載の分散システム。
【請求項４】
前記データ管理装置が、前記複数の計算機毎に、当該計算機によって構築され、
前記データ管理装置それぞれは、
当該計算機のメモリで保持されている学習データを構成するサンプル毎に、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを作成し、更に、外部からの指示に応じて、指示された計算機に、前記データを送信する、データ作成部を更に備え、
いずれか１つの計算機で全ての前記データが受信され、当該計算機によって構築されたデータ管理装置において、その前記データ取得部が、受信された全ての前記データから、前記複数の計算機全ての前記学習データに関する情報を取得できた場合に、当該データ管理装置の前記データ再配置部が、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、
請求項１または２に記載の分散システム。
【請求項５】
前記データ管理装置それぞれにおける、前記データ作成部による前記データの送信後に、いずれか１つの計算機で全ての前記データが受信されていない場合に、
前記データ作成部は、保持している前記データによって特定されるサンプル毎に、送信先となる前記計算機の前記メモリの容量に基づいて、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを新に作成し、新たに外部から指示があった場合に、指示された計算機に、前記新たなデータを送信する、
請求項４に記載の分散システム。
【請求項６】
機械学習を実行する複数の計算機における学習データを管理するための装置であって、
前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、データ取得部と、
前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、データ再配置部と、
を備えている、ことを特徴とするデータ管理装置。
【請求項７】
前記データ取得部が、前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報として、前記学習データを構成するサンプル毎の予測ターゲット変数を取得し、
前記データ再配置部が、前記複数の計算機それぞれの前記メモリが保持する前記学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、前記複数の計算機それぞれが前記メモリで保持すべき前記学習データを決定する、
請求項６に記載のデータ管理装置。
【請求項８】
前記データ再配置部が、決定の結果を、前記複数の計算機それぞれに送信し、前記複数の計算機それぞれに対して、送信されてきた決定の結果に応じて、当該計算機のメモリで保持されている前記学習データの一部又は全部を、他の計算機に送信させる、
請求項６または７に記載のデータ管理装置。
【請求項９】
当該データ管理装置が、前記複数の計算機のいずれかによって構築されている場合において、
当該データ管理装置は、それを構築する当該計算機のメモリで保持されている学習データを構成するサンプル毎に、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを作成し、更に、外部からの指示に応じて、指示された計算機に、前記データを送信する、データ作成部を更に備え、
当該計算機で全ての前記データが受信され、前記データ取得部が、受信された全ての前記データから、前記複数の計算機全ての前記学習データに関する情報を取得できた場合に、前記データ再配置部が、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、
請求項６または７に記載のデータ管理装置。
【請求項１０】
前記データ作成部による前記データの送信後に、当該計算機で全ての前記データが受信されていない場合に、
前記データ作成部は、保持している前記データによって特定されるサンプル毎に、送信先となる前記計算機の前記メモリの容量に基づいて、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを新に作成し、新たに外部から指示があった場合に、指示された計算機に、前記新たなデータを送信する、
請求項９に記載のデータ管理装置。
【請求項１１】
機械学習を実行する複数の計算機における学習データを管理するための方法であって、
（ａ）前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、ステップと、
（ｂ）前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、ステップと、
を有する、ことを特徴とするデータ管理方法。
【請求項１２】
前記（ａ）のステップにおいて、前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報として、前記学習データを構成するサンプル毎の予測ターゲット変数を取得し、
前記（ｂ）のステップにおいて、前記複数の計算機それぞれの前記メモリが保持する前記学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、前記複数の計算機それぞれが前記メモリで保持すべき前記学習データを決定する、
請求項１１に記載のデータ管理方法。
【請求項１３】
前記（ｂ）のステップにおいて、決定の結果を、前記複数の計算機それぞれに送信し、前記複数の計算機それぞれに対して、送信されてきた決定の結果に応じて、当該計算機のメモリで保持されている前記学習データの一部又は全部を、他の計算機に送信させる、
請求項１１または１２に記載のデータ管理装置。
【請求項１４】
（ｃ）前記計算機のメモリで保持されている学習データを構成するサンプル毎に、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを作成し、更に、外部からの指示に応じて、指示された計算機に、前記データを送信する、ステップを更に有し、
前記（ａ）のステップにおいて、前記複数の計算機全ての前記学習データに関する情報を取得できた場合に、前記（ｂ）のステップにおいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、
請求項１１または１２に記載のデータ管理方法。
【請求項１５】
（ｄ）前記（ｃ）のステップによる前記データの送信後に、前記（ａ）のステップにおいて、前記複数の計算機全ての前記学習データに関する情報を取得できていない場合に、前記データによって特定されるサンプル毎に、送信先となる前記計算機の前記メモリの容量に基づいて、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを新に作成し、新たに外部から指示があった場合に、指示された計算機に、前記新たなデータを送信する、ステップを更に有する、
請求項１４に記載のデータ管理方法。
【請求項１６】
コンピュータによって、機械学習を実行する複数の計算機における学習データを管理するためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに、
（ａ）前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、ステップと、
（ｂ）前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、ステップと、
を実行させる命令を含む、プログラムを記録しているコンピュータ読み取り可能な記録媒体。
【請求項１７】
前記（ａ）のステップにおいて、前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報として、前記学習データを構成するサンプル毎の予測ターゲット変数を取得し、
前記（ｂ）のステップにおいて、前記複数の計算機それぞれの前記メモリが保持する前記学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、前記複数の計算機それぞれが前記メモリで保持すべき前記学習データを決定する、
請求項１６に記載のコンピュータ読み取り可能な記録媒体。
【請求項１８】
前記（ｂ）のステップにおいて、決定の結果を、前記複数の計算機それぞれに送信し、前記複数の計算機それぞれに対して、送信されてきた決定の結果に応じて、当該計算機のメモリで保持されている前記学習データの一部又は全部を、他の計算機に送信させる、
請求項１６または１７に記載のコンピュータ読み取り可能な記録媒体。
【請求項１９】
前記プログラムが、前記コンピュータに、
（ｃ）前記計算機のメモリで保持されている学習データを構成するサンプル毎に、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを作成し、更に、外部からの指示に応じて、指示された計算機に、前記データを送信する、ステップを実行させる命令を更に含み、
前記（ａ）のステップにおいて、前記複数の計算機全ての前記学習データに関する情報を取得できた場合に、前記（ｂ）のステップにおいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、
請求項１６または１７に記載のコンピュータ読み取り可能な記録媒体。
【請求項２０】
前記プログラムが、前記コンピュータに、
（ｄ）前記（ｃ）のステップによる前記データの送信後に、前記（ａ）のステップにおいて、前記複数の計算機全ての前記学習データに関する情報を取得できていない場合に、前記データによって特定されるサンプル毎に、送信先となる前記計算機の前記メモリの容量に基づいて、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを新に作成し、新たに外部から指示があった場合に、指示された計算機に、前記新たなデータを送信する、ステップを実行させる命令を更に含み、
請求項１９に記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理によって学習モデルを生成するための、分散システム、データ管理装置、データ管理方法、及びコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
分散システムは、複数のサーバを並列動作させることで、処理時間を短縮するシステムであり、遺伝子解析、気象予測、暗号解読等の大規模な計算に利用されている。また、近年においては、大量のデータを処理することから、ビックデータの活用においても、分散システムが利用されている。【０００３】
図１８は、従来からの分散システムの一例を示す構成図である。図１８に示すように、分散システム２００は、マスタサーバ２１０と、計算を実行する計算処理サーバ２２０〜２２２とを備えている。また、マスタサーバ２１０と、計算処理サーバ２２０〜２２２とは、ネットワーク２３０を介して接続されている。【０００４】
マスタサーバ２１０は、計算処理サーバ２２０〜２２２に対して、実施すべき処理の指示を行う。計算処理サーバ２２０〜２２２は、それぞれ、指示に従って処理を実行する。また、計算処理サーバ２２０〜２２２は、自身が保持するデータに基づいて、自律して処理を行うこともできる。【０００５】
ここで、図１９を用いて、従来からの分散システムにおける各サーバの動作について説明する。また、下記の説明においては、各計算処理サーバは、機械学習を実行して予測モデルを生成する。図１９は、従来の分散システムにおいて各計算処理サーバのメモリに格納されている学習データの一例を示す図である。【０００６】
まず、マスタサーバ２１０は、分散システムを構成する計算処理サーバ２２０〜２２２それぞれに対して、学習データをメモリに読み込むよう指示を行なう。その際、各計算処理サーバは、自身のメモリ容量の制限に基づき、メモリ容量に収まるよう学習データを分割して読み込む。【０００７】
このとき、各計算処理サーバは、内容に関係なく学習データを読み込むため、学習データの値の分布について偏りが生じる可能性がある。そして、この状態で、各計算処理サーバが、機械学習を実行して、予測モデルを学習すると、以下の問題が発生する。【０００８】
つまり、図１９の例では、サーバ２２０は、正例（予測ターゲット変数が「１」のサンプル）の学習データからしか機械学習を行なえず、結果、常に正例を予測するモデルしか学習できない事態となる。また、サーバ２２１は、負例（予測ターゲット変数が「−１」のサンプル）の学習データからしか機械学習を行なえず、常に負例を予測するモデルしか学習できない事態となる。【０００９】
その他、元の学習データの値の分布と各計算処理サーバにおける学習データの値の分布とが異なることによって、学習された予測モデルに不具合が生じる可能生がある。また、計算処理サーバにおける学習データの値の分布が、機械学習のアルゴリズムに適した学習データの値の分布となっていないことにより、高精度な予測モデルの学習が妨げられる可能生もある。【００１０】
但し、上述の問題は、図２０に示すように、各計算処理サーバが、全ての学習データを参照しながら機械学習を実行する方式を採用すれば解決することができる（例えば、非特許文献２及び３参照）。図２０は、従来の分散システムにおいて各計算処理サーバが他の計算処理サーバの学習データを参照しながら機械学習を実行する場合を示す図である。図２０の例では、各計算処理サーバは、ネットワーク２３０を介して、他の計算処理サーバが保持する学習データを参照する。【００１１】
また、上述の問題は、図２１及び図２２に示すように、各計算処理サーバが、他の計算処理サーバに対して、ランダムに学習データを送る方式、つまり、計算処理サーバ間で学習データを移動し合う方式を採用しても解決することができる。図２１は、従来の分散システムにおいて計算処理サーバ間で学習データを移動し合う場合の移動前の状態を示す図である。図２２は、従来の分散システムにおいて計算処理サーバ間で学習データを移動し合う場合の移動後の状態を示す図である。【００１２】
図２１に示すように、各計算処理サーバは、学習データを構成するサンプル毎に、移動先の計算処理サーバを特定する「再配置先」という情報を保持している。そして、各計算処理サーバは、自身が保持する学習データを、「再配置先」に指定された計算処理サーバに送信する。この結果、図２２に示すように、計算処理サーバ間で、サンプルデータの入れ替えが行われる。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】Sparks et al. “Automating Model Search for Large Scale Machine Learning.” In ACM SoCC, 2015.
【非特許文献２】Meng et al. “MLlib: Machine Learning in Apache Spark.” Journal of Machine Learning Research 17, pp.1-7, 2016.
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、図２０に示した方式を採用した場合は、各計算処理サーバは、ネットワークを介して、他の計算処理サーバが保持する学習用のデータを繰り返し読み出す必要がある。そして、ネットワークを介したデータの読み出し速度は、計算処理サーバ自身が備えるメモリからの読み出し速度より数百倍遅くなる。これらの点から、図２０に示す方式には、非常に効率が悪いという問題がある。【００１５】
また、図２１及び図２２に示した方式を採用した場合は、学習データの移動後に、各計算処理サーバにおけるメモリの容量が制限値を超えてしまい、機械学習が行なえなくなることがある。また、図２１及び図２２に示した方式では、学習データにおける正例及び負例の比率が、機械学習アルゴリズムが期待する比率にならないこともある。【００１６】
本発明の目的の一例は、上記問題を解消し、分散処理を行なう場合において、各計算機で行なわれる機械学習に応じて、各計算機に学習データを分配し得る、分散システム、データ管理装置、データ管理方法、及びコンピュータ読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、本発明の一側面における分散システムは、データ管理装置と、機械学習を実行する複数の計算機と、を備え、
データ管理装置は、
前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、データ取得部と、
前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、データ再配置部と、
を備えている、ことを特徴とする。【００１８】
上記目的を達成するため、本発明の一側面におけるデータ管理装置は、機械学習を実行する複数の計算機における学習データを管理するための装置であって、
前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、データ取得部と、
前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、データ再配置部と、
を備えている、ことを特徴とする。【００１９】
また、上記目的を達成するため、本発明の一側面におけるデータ管理方法は、機械学習を実行する複数の計算機における学習データを管理するための方法であって、
（ａ）前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、ステップと、
（ｂ）前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、ステップと、
を有する、ことを特徴とする。【００２０】
更に、上記目的を達成するため、本発明の一側面におけるコンピュータ読み取り可能な記録媒体は、コンピュータによって、機械学習を実行する複数の計算機における学習データを管理するためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに、
（ａ）前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、ステップと、
（ｂ）前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、ステップと、
を実行させる命令を含む、プログラムを記録していることを特徴とする。
【発明の効果】
【００２１】
以上のように、本発明によれば、分散処理を行なう場合において、各計算機で行なわれる機械学習に応じて、各計算機に学習データを分配することができる。
【図面の簡単な説明】
【００２２】
【図１】図１は、本発明の実施の形態１における分散システム及びデータ管理装置の構成を概略的に示すブロック図である。
【図２】図２は、本発明の実施の形態１において各計算機のメモリに最初に格納されている学習データの一例を示す図である。
【図３】図３は、本発明の実施の形態１においてデータ管理装置が作成したテーブルの一例を示す図である。
【図４】図４は、図３に示したテーブルに各サンプルの再配置先を登録した状態を示す図である。
【図５】図５は、本発明の実施の形態１において各計算機のメモリに格納されている学習データの再配置後の状態を示す図である。
【図６】図６は、本発明の実施の形態１におけるデータ管理装置の動作を示すフロー図である。
【図７】図７は、本発明の実施の形態２における分散システム及びデータ管理装置の構成を概略的に示すブロック図である。
【図８】図８は、本発明の実施の形態２においてマスタサーバが送信するメモリ容量テーブルの一例を示す図である。
【図９】図９は、本発明の実施の形態２において各データ管理装置において作成される送信先データの一例を示す図である。
【図１０】図１０は、マスタサーバからの一回目の送信指示があった場合の各データ管理装置が保持している送信先データの一例を示す図である。
【図１１】図１１は、マスタサーバからの一回目の送信指示があった後に各データ管理装置が新たに作成した送信先データの一例を示す図である。
【図１２】図１２は、マスタサーバからの二回目の送信指示があった場合の各データ管理装置が保持している送信先データの一例を示す図である。
【図１３】図１３は、図１２に示した送信先データにおいてメモリ容量に基づいて送信先の計算機が変更された状態を示す図である。
【図１４】図１４は、本発明の実施の形態２において作成された学習データテーブルの一例を示す図である。
【図１５】図１５は、本発明の実施の形態２において各計算機のメモリに格納されている学習データの再配置後の状態を示す図である。
【図１６】図１６は、本発明の実施の形態２におけるデータ管理装置の動作を示すフロー図である。
【図１７】図１７は、本発明の実施の形態１及び２におけるデータ管理装置を実現するコンピュータの一例を示すブロック図である。
【図１８】図１８は、従来からの分散システムの一例を示す構成図である。
【図１９】図１９は、従来の分散システムにおいて各計算処理サーバのメモリに格納されている学習データの一例を示す図である。
【図２０】図２０は、従来の分散システムにおいて各計算処理サーバが他の計算処理サーバの学習データを参照しながら機械学習を実行する場合を示す図である。
【図２１】図２１は、従来の分散システムにおいて計算処理サーバ間で学習データを移動し合う場合の移動前の状態を示す図である。
【図２２】図２２は、従来の分散システムにおいて計算処理サーバ間で学習データを移動し合う場合の移動後の状態を示す図である。
【発明を実施するための形態】
【００２３】
（実施の形態１）
以下、本発明の実施の形態１における、分散システム、データ管理装置、データ管理方法、及びプログラムについて、図１〜図６を参照しながら説明する。
【００２４】
［システム構成］
最初に、本実施の形態１における分散システム及びデータ管理装置の構成について説明する。図１は、本発明の実施の形態１における分散システム及びデータ管理装置の構成を概略的に示すブロック図である。
【００２５】
図１に示す、本実施の形態１における分散システム１００は、分散処理によって学習モデルを生成するためのシステムである。図１に示すように、分散システム１００は、データ管理装置１０と、機械学習を実行する複数の計算機２０とを備えている。また、図１に示すように、データ管理装置１０は、データ取得部１１と、データ再配置部１２とを備えている。
【００２６】
データ取得部１１は、複数の計算機２０それぞれから、各計算機２０のメモリ２１で保持されている学習データに関する情報（以下「学習データ情報」と表記する。）を取得する。データ再配置部１２は、複数の計算機２０それぞれで実行される機械学習の特性、及び複数の計算機２０それぞれから取得した学習データ情報に基づいて、複数の計算機２０それぞれがメモリ２１で保持すべき学習データを決定する。
【００２７】
このように、本実施の形態１では、各計算機２０のメモリで保持されている学習データ情報が集められ、集められた学習データ情報に基づいて、各計算機２０が保持すべき最適な学習データが決定される。このため、本実施の形態１によれ、分散処理を行なう場合において、各計算機で行なわれる機械学習に応じて、各計算機に学習データを分配することができる。
【００２８】
続いて、図２〜図４を用いて、本実施の形態１における分散システム及びデータ管理装置の構成についてより具体的に説明する。まず、本実施の形態１においては、図１に示すように、データ管理装置１０は、分散システム１００を構成するマスタサーバであり、ネットワーク３０を介して、各計算機２０に接続されている。
【００２９】
また、各計算機２０はサーバであり、それぞれサーバＡ、サーバＢ、サーバＣとする。なお、図１においては、３台の計算機２０のみが図示されているが、本実施の形態において計算機２０の数は特に限定されるものではない。
【００３０】
データ管理装置１０において、データ取得部１１は、本実施の形態１では、複数の計算機２０それぞれから、各計算機２０のメモリ２１で保持されている学習データに関する情報として、学習データを構成するサンプル毎の予測ターゲット変数を取得する。
【００３１】
具体的には、図２に示したように、各計算機２０のメモリ２１には、学習データを構成する１又は２以上のサンプルが格納されている。各サンプルは、サンプルＩＤと、特徴量１〜ｎ（ｎ：任意の自然数）と、予測ターゲット変数とで構成されている。図２は、本発明の実施の形態１において各計算機のメモリに最初に格納されている学習データの一例を示す図である。
【００３２】
この場合に、データ取得部１１は、各計算機２０に対して、格納しているサンプルのサンプルＩＤと予測ターゲット変数とを送信させ、送信されてきた情報を用いて、図３に示すテーブル（以下「学習データテーブル」と表記する。）を作成する。図３は、本発明の実施の形態１においてデータ管理装置が作成したテーブルの一例を示す図である。
【００３３】
また、データ再配置部１２は、本実施の形態では、計算機２０それぞれのメモリ２１が保持する学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、各計算機２０がメモリ２１で保持すべき学習データを決定する。
【００３４】
具体的には、データ再配置部１２は、各計算機２０において、メモリ２１に保持されるサンプルの予測ターゲット変数の比率が、機械学習アルゴリズムが期待する比率となるように、各計算機２０がメモリ２１で保持すべきサンプルを決定する。機械学習アルゴリズムが期待する比率としては、例えば、予測ターゲット変数「１」の数と、予測ターゲット変数「−１」の数とが同数である場合が挙げられる。また、このとき、データ再配置部１２は、各計算機２０において、格納すべきサンプルの個数がメモリ２１の容量を超えないようにする。
【００３５】
また、データ再配置部１２は、各計算機２０がメモリ２１で保持すべきサンプルを決定すると、図４に示すように、図３に示した学習データテーブルに各サンプルの再配置先を新に登録する。図４は、図３に示したテーブルに各サンプルの再配置先を登録した状態を示す図である。
【００３６】
また、データ再配置部１２は、決定の結果を、具体的には、図４に示したテーブルを、各計算機２０に送信する。これにより、各計算機２０は、送信されてきた決定の結果に応じて、自身のメモリ２０で保持されているサンプルのうち一部又は全部を、他の計算機２０に送信する。結果、サンプルの再配置が行なわれ、各計算機２０のメモリ２１に格納されている学習データは、図５に示す通りとなる。図５は、本発明の実施の形態１において各計算機のメモリに格納されている学習データの再配置後の状態を示す図である。
【００３７】
［システム動作］
次に、本実施の形態１における分散システム１００及びデータ管理装置１０の動作について図６を用いて説明する。図６は、本発明の実施の形態１におけるデータ管理装置の動作を示すフロー図である。
【００３８】
以下の説明においては、適宜図１〜図５を参酌する。また、本実施の形態１では、データ管理装置１０を動作させることによって、データ管理方法が実施される。よって、本実施の形態１におけるデータ管理方法の説明は、以下のデータ管理装置１０の動作説明に代える。
【００３９】
図６に示すように、最初に、データ管理装置１０において、データ取得部１１は、各計算機２０に対して、学習データ情報として、サンプルのサンプルＩＤと予測ターゲット変数とを送信させ、これらを取得して、図３に示す学習データテーブルを作成する（ステップＡ１）。
【００４０】
次に、データ再配置部１２は、各計算機２０のメモリ２１が保持する学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、各計算機２０がメモリ２１で保持すべき学習データを決定する（ステップＡ２）。
【００４１】
次に、データ再配置部１２は、各計算機２０がメモリ２１で保持すべきサンプルを決定すると、図４に示すように、ステップＡ１で作成された学習データテーブルに各サンプルの再配置先を新に登録する（ステップＡ３）。
【００４２】
次に、データ再配置部１２は、ステップＡ３で再配置先が登録された学習データテーブルを、各計算機２０に送信する（ステップＡ４）。ステップＡ４の実行後、各計算機２０は、送信されてきたテーブルに基づいて、自身のメモリ２０で保持されているサンプルのうち一部又は全部を、他の計算機２０に送信する。これにより、サンプルの再配置が行なわれ、結果、各計算機２０のメモリ２１に格納されている学習データは、図５に示す通りとなる。
【００４３】
［実施の形態１における効果］
以上のように本実施の形態１によれば、各計算機２０のメモリで保持されているサンプルの予測ターゲット変数が学習データ情報として集められ、予測ターゲット変数の比率が機械学習アルゴリズムに適するように、サンプルの再配置が行なわれる。このため、本実施の形態１によれば、分散処理を行なう場合において、各計算機で行なわれる機械学習に応じて、各計算機にサンプルを分配することができる。
【００４４】
［プログラム］
本実施の形態１におけるプログラムは、コンピュータに、図６に示すステップＡ１〜Ａ４を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態におけるデータ管理装置１０とデータ管理方法とを実現することができる。この場合、コンピュータのプロセッサは、データ取得部１１、及びデータ再配置部１２として機能し、処理を行なう。
【００４５】
また、本実施の形態１におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、データ取得部１１、及びデータ再配置部１２のいずれかとして機能しても良い。
【００４６】
（実施の形態２）
次に、本発明の実施の形態２における分散システム、データ管理装置、データ管理方法、及びプログラムについて、図７〜図１６を参照しながら説明する。
【００４７】
［システム構成］
最初に、本実施の形態２における分散システム及びデータ管理装置の構成について説明する。図７は、本発明の実施の形態２における分散システム及びデータ管理装置の構成を概略的に示すブロック図である。
【００４８】
図７に示すように、本実施の形態２においても、実施の形態１と同様に、分散システム１０１は、マスタサーバ４０と、複数の計算機２０とを備え、これらはネットワーク３０を介して接続されている。但し、本実施の形態２における分散システム１０１は、データ管理装置１０の構成において、実施の形態１における分散システム１００と異なっている。以下、実施の形態１との相違点を中心に説明する。
【００４９】
図７に示すように、本実施の形態２では、データ管理装置１０は、計算機２０毎に、各計算機２０によって構築されている。具体的には、データ管理装置１０は、本実施の形態２におけるプログラムによって、計算機２０のオペレーティングシステム上に構築されている。
【００５０】
また、図７に示すように、本実施の形態２では、計算機２０に備えられたデータ管理装置１０は、ぞれぞれ、データ取得部１１及びデータ再配置部１２に加えて、データ作成部１３を備えている。
【００５１】
各データ管理装置１０において、データ作成部１３は、まず、対応するデータ管理装置１０が構築された計算機２０のメモリ２１にアクセスし、そのメモリ２１で保持されている学習データを構成するサンプル毎に、送信先の計算機２０を決定する。
【００５２】
具体的には、各データ管理装置１０において、データ作成部１３は、予めマスタサーバ４０から受信したメモリ容量テーブル（図８参照）に基づいて、送信先の計算機２０のメモリ容量を超えないように、サンプル毎に、ランダムに送信先の計算機２０を決定する。図８は、本発明の実施の形態２においてマスタサーバが送信するメモリ容量テーブルの一例を示す図である。図８に示すように、メモリ容量テーブルは、計算機２０毎のメモリ容量を登録している。
【００５３】
次いで、各データ管理装置１０において、データ作成部１３は、決定したサンプル毎の送信先及び学習データに関する情報を特定するデータ（以下「送信先データ」と表記する。）を作成する。
【００５４】
図９は、本発明の実施の形態２において各データ管理装置において作成される送信先データの一例を示す図である。図９に示すように、本実施の形態では、送信先データは、テーブル形式で作成されている。また、送信先データは、対応する計算機２０が保持するサンプル毎に、サンプルＩＤ、予測ターゲット変数、及び再配置先（送信先）を登録している。
【００５５】
次いで、各データ管理装置１０において、データ作成部１３は、外部からの指示に応じて、指示された計算機２０に送信先データを送信する。具体的には、本実施の形態２では、マスタサーバ４０が送信先の計算機２０を指示する。
【００５６】
例えば、図９の例において、マスタサーバ４０が、送信先として、サーバＡに対してサーバＡを指示し、サーバＢに対してはサーバＡを指示し、サーバＣに対してサーバＣを指示したとする。この場合、各計算機（サーバＡ〜Ｃ）は、指示されたサーバに、送信先データを送信する。なお、上記においては、サーバＡ及びサーバＣに対しては自身が指示されているので、実際には、これらのサーバにおいては送信先データを送信しないで保持することになる。
【００５７】
上述の指示により、送信先データは、図１０に示すように、サーバＡとサーバＣとに集約される。図１０は、マスタサーバからの一回目の送信指示があった場合の各データ管理装置が保持している送信先データの一例を示す図である。図１０の例では、サーバＡは、自身が作成した送信先データと、サーバＢから送信されてきた送信先データとを統合し、統合後の送信先データを保持する。
【００５８】
また、各データ管理装置１０におけるデータ作成部１３による送信先データの送信後に、いずれか１つの計算機２０で全ての送信先データが受信されていない場合、即ち、図１０に示すようにサーバＡ及びＣが送信先データを受信している場合は、データ作成部１３は、新たに送信先データを作成する。
【００５９】
具体的には、図１１に示すように、各データ管理装置１０において、データ作成部１３は、保持している送信先データ（図１０参照）によって特定されるサンプル毎に、メモリ容量テーブル（図８参照）に基づいて、送信先の計算機２０を決定し、新たに送信先データを作成する。
【００６０】
図１１は、マスタサーバからの一回目の送信指示があった後に各データ管理装置が新たに作成した送信先データの一例を示す図である。図１１の例では、サーバＡにおいては、データ作成部１３は、サンプルＩＤが４のサンプルの送信先を、サーバＣに変更している。
【００６１】
その後、図１１の例において、マスタサーバ４０が、送信先として、サーバＡに対してサーバＡを指示し、サーバＣに対してサーバＡを指示したとする。この場合、サーバＡ及びＣは、指示されたサーバに、送信先データを送信する。
【００６２】
上述の指示により、送信先データは、図１２に示すように、サーバＡに集約される。図１２は、マスタサーバからの二回目の送信指示があった場合の各データ管理装置が保持している送信先データの一例を示す図である。図１２の例では、サーバＡは、結果的に、自身が作成した送信先データと、サーバＢ及びＣから送信されてきた送信先データとを統合し、統合後の送信先データを保持する。マスタサーバ４０による送信先データの送信指示は、送信先データが、１つの計算機に集約されるまで行なわれる。
【００６３】
また、この場合、サーバＡにおいて、データ作成部１３は、図１３に示すように、統合後の送信先データ（図１１参照）によって特定されるサンプル毎に、メモリ容量テーブル（図８参照）に基づいて、送信先の計算機２０を変更することもできる。図１３は、図１２に示した送信先データにおいてメモリ容量に基づいて送信先の計算機が変更された状態を示す図である。
【００６４】
図１２及び図１３の例では、いずれか１つの計算機２０、即ち、サーバＡで全ての送信先データが受信されている。従って、サーバＡによって構築されたデータ管理装置１０において、そのデータ取得部１１が、受信された全ての送信先データテーブルから、計算機２０全ての学習データに関する情報（予測ターゲット変数）を取得したことになる。
【００６５】
この場合、サーバＡによって構築されたデータ管理装置１０において、データ再配置部１２は、計算機２０それぞれがメモリ２１で保持すべき学習データを決定する。本実施の形態２においても、データ配置部１２による処理は、実施の形態１と同様である。つまり、データ再配置部１２は、計算機２０それぞれのメモリ２１が保持する学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、各計算機２０がメモリ２１で保持すべき学習データを決定する。
【００６６】
具体的には、データ再配置部１２は、各計算機２０において、メモリ２１に保持されるサンプルの予測ターゲット変数の比率が、機械学習アルゴリズムが期待する比率となるように、各計算機２０がメモリ２１で保持すべきサンプルを決定する。
【００６７】
また、データ再配置部１２は、決定後、実施の形態１と同様に、図１４に示すように、各サンプルの再配置先が登録された学習データテーブルを作成する。図１４は、本発明の実施の形態２において作成された学習データテーブルの一例を示す図である。なお、図１４に示す学習データテーブルは、図１３に示した送信先データから作成されている。
【００６８】
次いで、データ再配置部１２は、図１４に示したテーブルを、各計算機２０に送信する。これにより、各計算機２０は、送信されてきた決定の結果に応じて、自身のメモリ２０で保持されているサンプルのうち一部又は全部を、他の計算機２０に送信する。結果、サンプルの再配置が行なわれ、各計算機２０のメモリ２１に格納されている学習データは、図１５に示す通りとなる。図１５は、本発明の実施の形態２において各計算機のメモリに格納されている学習データの再配置後の状態を示す図である。
【００６９】
［システム動作］
次に、本実施の形態２における分散システム１０１及びデータ管理装置１０の動作について図１６を用いて説明する。図１６は、本発明の実施の形態２におけるデータ管理装置の動作を示すフロー図である。以下の説明においては、適宜図７〜図１６を参酌する。また、本実施の形態２では、データ管理装置１０を動作させることによって、データ管理方法が実施される。よって、本実施の形態２におけるデータ管理方法の説明は、以下のデータ管理装置１０の動作説明に代える。
【００７０】
まず、前提として、予め、マスタサーバ４０は、図８に示すメモリ容量テーブルを、各データ管理装置１０に送信する。これにより、各データ管理装置１０は、メモリ容量テーブルを取得する。また、以下においては、任意の計算機２０に構築されているデータ管理装置１０に着目して、動作を説明することとする。
【００７１】
図１６に示すように、最初に、データ作成部１３は、予めマスタサーバ４０から受信したメモリ容量テーブルに基づいて、送信先の計算機２０のメモリ容量を超えないように、サンプル毎に、ランダムに送信先の計算機２０を決定する（ステップＢ１）。なお、本実施の形態２においても、実施の形態１と同様に、各計算機２０のメモリ２１に最初に格納されている学習データは、図２に示す通りであるとする。
【００７２】
次に、各データ管理装置１０において、データ作成部１３は、ステップＢ１で決定したサンプル毎の送信先及び学習データに関する情報（予測ターゲット変数）を特定する送信先データ（図９参照）を作成する（ステップＢ２）。
【００７３】
次に、データ作成部１３は、マスタサーバ４０から指示があると、指示された計算機２０に送信先データを送信する（ステップＢ３）。
【００７４】
次に、データ作成部１２は、ステップＢ３の実行後、送信先データを保持しているかどうかを判定する（ステップＢ４）。例えば、図１０の例において、データ作成部１２を備えるデータ管理装置１０が、計算機２０であるサーバＢに構築されている場合は、データ作成部１２は、送信先データを保持していないと判定する。これにより、データ管理装置１０での処理は終了する。
【００７５】
一方、図１０の例において、データ作成部１２を備えるデータ管理装置１０が、計算機２０であるサーバＡ又はＣに構築されている場合は、データ作成部１２は、送信先データを保持していると判定する。そして、この場合は、データ作成部１３は、新たに送信先データを作成する（ステップＢ５）。
【００７６】
具体的には、ステップＢ５では、図１１に示すように、各データ管理装置１０において、データ作成部１３は、保持している送信先データ（図１０参照）によって特定されるサンプル毎に、メモリ容量テーブル（図８参照）に基づいて、送信先の計算機２０を決定し、新たに送信先データを作成する。
【００７７】
次に、データ作成部１２は、ステップＢ５の実行後、そのデータ管理装置１０が構築されている計算機２０が、全ての送信先データを受信しているかどうかを判定する（ステップＢ６）。ステップＢ６の判定の結果、データ管理装置１０が構築されている計算機２０が、全ての送信先データを受信していない場合は、データ作成部１２は、再度ステップＢ３を実行する。
【００７８】
一方、ステップＢ６の判定の結果、データ管理装置１０が構築されている計算機２０が、全ての送信先データを受信している場合は、例えば、図１２の例において、データ管理装置１０がサーバＡに構築されている場合は、ステップＢ７〜Ｂ９が実行される。
【００７９】
ステップＢ７では、データ再配置部１２は、計算機２０それぞれがメモリ２１で保持すべき学習データを決定する（ステップＢ７）。具体的には、データ再配置部１２は、計算機２０それぞれのメモリ２１が保持する学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、各計算機２０がメモリ２１で保持すべき学習データを決定する。
【００８０】
次に、データ再配置部１２は、各計算機２０がメモリ２１で保持すべきサンプルを決定すると、図１４に示すように、統合後の送信先データ（図１３）に各サンプルの再配置先を新に登録して、学習データテーブルを作成する（ステップＢ８）。
【００８１】
次に、データ再配置部１２は、ステップＢ９で作成した学習データテーブルを、各計算機２０に送信する（ステップＢ９）。ステップＢ９の実行後、各計算機２０は、送信されてきたテーブルに基づいて、自身のメモリ２０で保持されているサンプルのうち一部又は全部を、他の計算機２０に送信する。これにより、サンプルの再配置が行なわれ、結果、各計算機２０のメモリ２１に格納されている学習データは、図１５に示す通りとなる。
【００８２】
［実施の形態２における効果］
以上のように本実施の形態２においても、各計算機２０のメモリで保持されているサンプルの予測ターゲット変数が学習データ情報として集められ、予測ターゲット変数の比率が機械学習アルゴリズムに適するように、サンプルの再配置が行なわれる。このため、本実施の形態２によっても、実施の形態１と同様に、分散処理を行なう場合において、各計算機で行なわれる機械学習に応じて、各計算機にサンプルを分配することができる。また、本実施の形態２においては、各計算機２０において、処理が行なわれるため、マスタサーバ４０の負荷を小さくすることができる。
【００８３】
［プログラム］
本実施の形態２におけるプログラムは、コンピュータに、図１６に示すステップＢ１〜Ｂ９を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態におけるデータ管理装置１０とデータ管理方法とを実現することができる。この場合、コンピュータのプロセッサは、データ取得部１１、データ再配置部１２、及びデータ作成部１３として機能し、処理を行なう。
【００８４】
また、本実施の形態２におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、データ取得部１１、データ再配置部１２、及びデータ作成部１３のいずれかとして機能しても良い。
【００８５】
（物理構成）
ここで、実施の形態１及び２におけるプログラムを実行することによって、データ管理装置１０を実現するコンピュータについて図１７を用いて説明する。図１７は、本発明の実施の形態１及び２におけるデータ管理装置を実現するコンピュータの一例を示すブロック図である。なお、ここでいうコンピュータは、実際には、マスタサーバ又は計算機（サーバ）である。
【００８６】
図１７に示すように、コンピュータ１１０は、ＣＰＵ（Central Processing Unit）１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。なお、コンピュータ１１０は、ＣＰＵ１１１に加えて、又はＣＰＵ１１１に代えて、ＧＰＵ（Graphics Processing Unit）、又はＦＰＧＡ（Field-Programmable Gate Array）を備えていても良い。
【００８７】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであっても良い。
【００８８】
また、記憶装置１１３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【００８９】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【００９０】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記録媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記録媒体が挙げられる。
【００９１】
なお、本実施の形態１及び２におけるデータ管理装置１０は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、データ管理装置１０は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。
【００９２】
上述した実施の形態の一部又は全部は、以下に記載する（付記１）〜（付記２０）によって表現することができるが、以下の記載に限定されるものではない。
【００９３】
（付記１）
データ管理装置と、機械学習を実行する複数の計算機と、を備え、
データ管理装置は、
前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、データ取得部と、
前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、データ再配置部と、
を備えている、ことを特徴とする分散システム。
【００９４】
（付記２）
前記データ管理装置において、
前記データ取得部が、前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報として、前記学習データを構成するサンプル毎の予測ターゲット変数を取得し、
前記データ再配置部が、前記複数の計算機それぞれの前記メモリが保持する前記学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、前記複数の計算機それぞれが前記メモリで保持すべき前記学習データを決定する、
付記１に記載の分散システム。
【００９５】
（付記３）
前記データ再配置部が、決定の結果を、前記複数の計算機それぞれに送信し、
前記複数の計算機それぞれが、送信されてきた決定の結果に応じて、当該計算機のメモリで保持されている前記学習データの一部又は全部を、他の計算機に送信する、
付記１または２に記載の分散システム。
【００９６】
（付記４）
前記データ管理装置が、前記複数の計算機毎に、当該計算機によって構築され、
前記データ管理装置それぞれは、
当該計算機のメモリで保持されている学習データを構成するサンプル毎に、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを作成し、更に、外部からの指示に応じて、指示された計算機に、前記データを送信する、データ作成部を更に備え、
いずれか１つの計算機で全ての前記データが受信され、当該計算機によって構築されたデータ管理装置において、その前記データ取得部が、受信された全ての前記データから、前記複数の計算機全ての前記学習データに関する情報を取得できた場合に、当該データ管理装置の前記データ再配置部が、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、
付記１または２に記載の分散システム。
【００９７】
（付記５）
前記データ管理装置それぞれにおける、前記データ作成部による前記データの送信後に、いずれか１つの計算機で全ての前記データが受信されていない場合に、
前記データ作成部は、保持している前記データによって特定されるサンプル毎に、送信先となる前記計算機の前記メモリの容量に基づいて、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを新に作成し、新たに外部から指示があった場合に、指示された計算機に、前記新たなデータを送信する、
付記４に記載の分散システム。
【００９８】
（付記６）
機械学習を実行する複数の計算機における学習データを管理するための装置であって、
前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、データ取得部と、
前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、データ再配置部と、
を備えている、ことを特徴とするデータ管理装置。
【００９９】
（付記７）
前記データ取得部が、前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報として、前記学習データを構成するサンプル毎の予測ターゲット変数を取得し、
前記データ再配置部が、前記複数の計算機それぞれの前記メモリが保持する前記学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、前記複数の計算機それぞれが前記メモリで保持すべき前記学習データを決定する、
付記６に記載のデータ管理装置。
【０１００】
（付記８）
前記データ再配置部が、決定の結果を、前記複数の計算機それぞれに送信し、前記複数の計算機それぞれに対して、送信されてきた決定の結果に応じて、当該計算機のメモリで保持されている前記学習データの一部又は全部を、他の計算機に送信させる、
付記６または７に記載のデータ管理装置。
【０１０１】
（付記９）
当該データ管理装置が、前記複数の計算機のいずれかによって構築されている場合において、
当該データ管理装置は、それを構築する当該計算機のメモリで保持されている学習データを構成するサンプル毎に、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを作成し、更に、外部からの指示に応じて、指示された計算機に、前記データを送信する、データ作成部を更に備え、
当該計算機で全ての前記データが受信され、前記データ取得部が、受信された全ての前記データから、前記複数の計算機全ての前記学習データに関する情報を取得できた場合に、前記データ再配置部が、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、
付記６または７に記載のデータ管理装置。
【０１０２】
（付記１０）
前記データ作成部による前記データの送信後に、当該計算機で全ての前記データが受信されていない場合に、
前記データ作成部は、保持している前記データによって特定されるサンプル毎に、送信先となる前記計算機の前記メモリの容量に基づいて、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを新に作成し、新たに外部から指示があった場合に、指示された計算機に、前記新たなデータを送信する、
付記９に記載のデータ管理装置。
【０１０３】
（付記１１）
機械学習を実行する複数の計算機における学習データを管理するための方法であって、
（ａ）前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、ステップと、
（ｂ）前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、ステップと、
を有する、ことを特徴とするデータ管理方法。
【０１０４】
（付記１２）
前記（ａ）のステップにおいて、前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報として、前記学習データを構成するサンプル毎の予測ターゲット変数を取得し、
前記（ｂ）のステップにおいて、前記複数の計算機それぞれの前記メモリが保持する前記学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、前記複数の計算機それぞれが前記メモリで保持すべき前記学習データを決定する、
付記１１に記載のデータ管理方法。
【０１０５】
（付記１３）
前記（ｂ）のステップにおいて、決定の結果を、前記複数の計算機それぞれに送信し、前記複数の計算機それぞれに対して、送信されてきた決定の結果に応じて、当該計算機のメモリで保持されている前記学習データの一部又は全部を、他の計算機に送信させる、
付記１１または１２に記載のデータ管理装置。
【０１０６】
（付記１４）
（ｃ）前記計算機のメモリで保持されている学習データを構成するサンプル毎に、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを作成し、更に、外部からの指示に応じて、指示された計算機に、前記データを送信する、ステップを更に有し、
前記（ａ）のステップにおいて、前記複数の計算機全ての前記学習データに関する情報を取得できた場合に、前記（ｂ）のステップにおいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、
付記１１または１２に記載のデータ管理方法。
【０１０７】
（付記１５）
（ｄ）前記（ｃ）のステップによる前記データの送信後に、前記（ａ）のステップにおいて、前記複数の計算機全ての前記学習データに関する情報を取得できていない場合に、前記データによって特定されるサンプル毎に、送信先となる前記計算機の前記メモリの容量に基づいて、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを新に作成し、新たに外部から指示があった場合に、指示された計算機に、前記新たなデータを送信する、ステップを更に有する、
付記１４に記載のデータ管理方法。
【０１０８】
（付記１６）
コンピュータによって、機械学習を実行する複数の計算機における学習データを管理するためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに、
（ａ）前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報を取得する、ステップと、
（ｂ）前記複数の計算機それぞれで実行される前記機械学習の特性、及び前記複数の計算機それぞれから取得した前記情報に基づいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、ステップと、
を実行させる命令を含む、プログラムを記録しているコンピュータ読み取り可能な記録媒体。
【０１０９】
（付記１７）
前記（ａ）のステップにおいて、前記複数の計算機それぞれから、当該計算機のメモリで保持されている学習データに関する情報として、前記学習データを構成するサンプル毎の予測ターゲット変数を取得し、
前記（ｂ）のステップにおいて、前記複数の計算機それぞれの前記メモリが保持する前記学習データにおいて、それを構成するサンプルの予測ターゲット変数の比率が、設定された条件を満たすように、前記複数の計算機それぞれが前記メモリで保持すべき前記学習データを決定する、
付記１６に記載のコンピュータ読み取り可能な記録媒体。
【０１１０】
（付記１８）
前記（ｂ）のステップにおいて、決定の結果を、前記複数の計算機それぞれに送信し、前記複数の計算機それぞれに対して、送信されてきた決定の結果に応じて、当該計算機のメモリで保持されている前記学習データの一部又は全部を、他の計算機に送信させる、
付記１６または１７に記載のコンピュータ読み取り可能な記録媒体。
【０１１１】
（付記１９）
前記プログラムが、前記コンピュータに、
（ｃ）前記計算機のメモリで保持されている学習データを構成するサンプル毎に、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを作成し、更に、外部からの指示に応じて、指示された計算機に、前記データを送信する、ステップを実行させる命令を更に含み、
前記（ａ）のステップにおいて、前記複数の計算機全ての前記学習データに関する情報を取得できた場合に、前記（ｂ）のステップにおいて、前記複数の計算機それぞれが前記メモリで保持すべき学習データを決定する、
付記１６または１７に記載のコンピュータ読み取り可能な記録媒体。
【０１１２】
（付記２０）
前記プログラムが、前記コンピュータに、
（ｄ）前記（ｃ）のステップによる前記データの送信後に、前記（ａ）のステップにおいて、前記複数の計算機全ての前記学習データに関する情報を取得できていない場合に、前記データによって特定されるサンプル毎に、送信先となる前記計算機の前記メモリの容量に基づいて、送信先の前記計算機を決定し、決定した前記サンプル毎の送信先及び前記学習データに関する情報を特定するデータを新に作成し、新たに外部から指示があった場合に、指示された計算機に、前記新たなデータを送信する、ステップを実行させる命令を更に含み、
付記１９に記載のコンピュータ読み取り可能な記録媒体。
【０１１３】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１１４】
この出願は、２０１７年６月６日に出願された米国出願６２／５１５，７３４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１１５】
以上のように、本発明によれば、分散処理を行なう場合において、各計算機で行なわれる機械学習に応じて、各計算機に学習データを分配することができる。本発明は、分散システムによって大量のデータに対して機械学習を行なう場合に有用である。
【符号の説明】
【０１１６】
１０  データ管理装置
１１  データ取得部
１２  データ再配置部
１３  データ作成部
２０  計算機
２１  メモリ
３０  ネットワーク
４０  マスタサーバ
１００  分散システム
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
【図１】
2018225747.tif 000003
【図２】
2018225747.tif 000004
【図３】
2018225747.tif 000005
【図４】
2018225747.tif 000006
【図５】
2018225747.tif 000007
【図６】
2018225747.tif 000008
【図７】
2018225747.tif 000009
【図８】
2018225747.tif 000010
【図９】
2018225747.tif 000011
【図１０】
2018225747.tif 000012
【図１１】
2018225747.tif 000013
【図１２】
2018225747.tif 000014
【図１３】
2018225747.tif 000015
【図１４】
2018225747.tif 000016
【図１５】
2018225747.tif 000017
【図１６】
2018225747.tif 000018
【図１７】
2018225747.tif 000019
【図１８】
2018225747.tif 000020
【図１９】
2018225747.tif 000021
【図２０】
2018225747.tif 000022
【図２１】
2018225747.tif 000023
【図２２】
2018225747.tif 000024
【国際調査報告】
2018225747.tif 000025
2018225747.tif 000026
2018225747.tif 000027
2018225747.tif 000028