(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリとを備えた第１の計算機と、
プロセッサとメモリを備えて複数の前記第１の計算機に分散処理を実行させる第２の計算機と、
前記分散処理に用いる特徴量を含むデータを格納したストレージと、
前記第１の計算機と第２の計算機および前記ストレージとを接続するネットワークと、  を備えて、前記複数の第１の計算機で並列的に分散処理を行う分散計算機システムであって、
前記第２の計算機は、
学習の初期化を行う初期化部と、
前記複数の第１の計算機に、学習処理を実行させる制御部と、
前記学習処理の結果が収束したか否かを判定する収束判定処理部と、を備え、
前記制御部は、
前記複数の第１の計算機のうち所定の複数の第１の計算機に、前記学習のメタパラメータと素性インデックスの組を送信し、学習処理のＭａｐ処理部を割り当て、前記学習処理の対象となる前記ストレージのデータを割り当てて第１のワーカーとして学習処理を実行させ、
前記複数の第１の計算機のうち、少なくとも１つの第１の計算機に、前記Ｍａｐ処理部の出力を受信してモデルパラメータを更新するＲｅｄｕｃｅ処理部を割り当てて第２のワーカーとして学習処理を実行させ、
前記第１のワーカーは、
前記Ｍａｐ処理部が、前記メタパラメータと素性インデックスとの組を複数モデル管理部に保持し、ひとつの特徴量が前記ストレージから読み込まれるごとに、前記複数モデル管理部に存在するすべてのメタパラメータと素性インデックスに対して、素性選択とＭａｐ関数を実行して中間結果を算出し、当該中間結果を前記第２のワーカーに送信し、
前記第２のワーカーは、
前記中間結果を受け付けて、前記Ｒｅｄｕｃｅ処理部がＲｅｄｕｃｅ関数を実行して前記中間結果から学習結果を生成し、
前記第２の計算機の収束判定部は、
前記生成された学習結果が所定の基準を満たすか否かを判定し、前記生成された学習結果が所定の基準を満たしていない場合には、前記第２のワーカーへ前記学習結果を送信して、学習処理を指令し、
前記学習結果が所定の基準を満たす場合には、処理を完了することを特徴とする分散計算機システム。
【請求項２】
請求項１に記載の分散計算機システムであって、
前記Ｍａｐ処理部は、
前記第２のワーカーへ中間結果を送信する際に、中間結果に対応するモデルの情報をキーとして記録し、
前記Ｒｅｄｕｃｅ処理部は、
前記中間結果を受け取った際に、前記キーを参照することで当該中間結果に対応するモデルを判別することを特徴とする分散計算機システム。
【請求項３】
請求項１に記載の分散計算機システムであって、
前記複数モデル管理部は、
前記メタパラメータと素性インデックスとを前記メモリ上に保持することを特徴とする分散計算機システム。
【請求項４】
請求項１に記載の分散計算機システムであって、
前記素性インデックスが１種類であり、かつ全ての素性を用いる場合、前記Ｍａｐ処理部は、前記複数モデル管理部に存在するすべてのメタパラメータに対して、前記ストレージの特徴量を共用し、Ｍａｐ関数を実行して中間結果を算出することを特徴とする分散計算機システム。
【請求項５】
請求項３に記載の分散計算機システムであって、
前記メタパラメータがすべてのモデルで共通する場合に、
複数モデル管理部内でメタパラメータのインスタンスをすべてのモデルで共用することを特徴とする分散計算機システム。
【請求項６】
請求項１に記載の分散計算機システムであって、
前記第１のワーカーが、Ｍａｐ関数内で学習が完了するアルゴリズムを実行する場合には、前記Ｒｅｄｕｃｅ処理部の処理を省略し、学習の結果を前記ストレージに格納することを特徴とする分散計算機システム。
【請求項７】
請求項１に記載の分散計算機システムであって、
前記第１のワーカーが、Ｍａｐ関数内で学習が完了するアルゴリズムを実行する場合には、前記Ｒｅｄｕｃｅ処理部の処理を省略し、前記Ｍａｐ処理部で学習結果の統計情報を計算することを特徴とする分散計算機システム。
【請求項８】
プロセッサとメモリとを備えた第１の計算機と、プロセッサとメモリを備えて複数の前記第１の計算機に分散処理を実行させる第２の計算機と、前記分散処理に用いる特徴量を含むデータを格納したストレージと、前記第１の計算機と第２の計算機および前記ストレージとを接続するネットワークと、を備えて、前記複数の第１の計算機で並列的に分散処理を行う分散計算機システムの制御方法であって、
前記第２の計算機が、学習の初期化を行う第１のステップと、
前記第２の計算機が、前記複数の第１の計算機のうち所定の複数の第１の計算機に、前記学習のメタパラメータと素性インデックスの組を送信し、学習処理のＭａｐ処理部を割り当て、前記学習処理の対象となる前記ストレージのデータを割り当てて第１のワーカーとして学習処理を実行させる第２のステップと、
前記第２の計算機が、前記複数の第１の計算機のうち、少なくとも１つの第１の計算機に、前記Ｍａｐ処理部の出力を受信してモデルパラメータを更新するＲｅｄｕｃｅ処理部を割り当てて第２のワーカーとして学習処理を実行させる第３のステップと、
前記第１のワーカーは、前記Ｍａｐ処理部が、前記メタパラメータと素性インデックスとの組を複数モデル管理部に保持し、ひとつの特徴量が前記ストレージから読み込まれるごとに、前記複数モデル管理部に存在するすべてのメタパラメータと素性インデックスに対して、素性選択とＭａｐ関数を実行して中間結果を算出し、当該中間結果を前記第２のワーカーに送信する第４のステップと、
前記第２のワーカーが、前記中間結果を受け付けて、前記Ｒｅｄｕｃｅ処理部がＲｅｄｕｃｅ関数を実行して前記中間結果から学習結果を生成する第５のステップと、
前記第２の計算機が、前記生成された学習結果が所定の基準を満たすか否かを判定し、前記生成された学習結果が所定の基準を満たしていない場合には、前記第２のワーカーへ前記学習結果を送信して、学習処理を指令し、前記学習結果が所定の基準を満たす場合には、処理を完了する第６のステップと、
を含むことを特徴とする分散計算機システムの制御方法。
【請求項９】
請求項８に記載の分散計算機システムの制御方法であって、
前記第４のステップは、
前記第１のワーカーが、前記第２のワーカーへ中間結果を送信する際に、中間結果に対応するモデルの情報をキーとして記録し、
前記第５のステップは、
前記第２のワーカーが、前記中間結果を受け取った際に、前記キーを参照することで当該中間結果に対応するモデルを判別することを特徴とする分散計算機システムの制御方法。
【請求項１０】
請求項８に記載の分散計算機システムの制御方法であって、
前記第４のステップは、
前記複数モデル管理部が、前記メタパラメータと素性インデックスとを前記メモリ上に保持することを特徴とする分散計算機システムの制御方法。
【請求項１１】
請求項８に記載の分散計算機システムの制御方法であって、
前記第４のステップは、
前記素性インデックスが１種類であり、かつ全ての素性を用いる場合、前記Ｍａｐ処理部は、前記複数モデル管理部に存在するすべてのメタパラメータに対して、前記ストレージの特徴量を共用し、Ｍａｐ関数を実行して中間結果を算出することを特徴とする分散計算機システムの制御方法。
【請求項１２】
請求項１０に記載の分散計算機システムの制御方法であって、
前記第４のステップは、前記メタパラメータがすべてのモデルで共通する場合に、複数モデル管理部内でメタパラメータのインスタンスをすべてのモデルで共用することを特徴とする分散計算機システムの制御方法。
【請求項１３】
請求項８に記載の分散計算機システムの制御方法であって、
前記第４のステップは、前記第１のワーカーが、Ｍａｐ関数内で学習が完了するアルゴリズムを実行する場合には、前記Ｒｅｄｕｃｅ処理部の処理を省略し、学習の結果を前記ストレージに格納することを特徴とする分散計算機システムの制御方法。
【請求項１４】
請求項８に記載の分散計算機システムの制御方法であって、
前記第４のステップは、前記第１のワーカーが、Ｍａｐ関数内で学習が完了するアルゴリズムを実行する場合には、前記Ｒｅｄｕｃｅ処理部の処理を省略し、前記Ｍａｐ処理部で学習結果の統計情報を計算することを特徴とする分散計算機システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散環境における計算システムに関し、特に複数のモデルを並行して機械学習する分散計算機システムに関する。
【背景技術】
【０００２】
近年、計算機の低価格化が進み、高速な通信ネットワークが普及したため、データの取得や保存が容易になってきた。豊富な計算機資源を利用して、大量の業務データを分析し、業務改善に生かしたいというニーズが高まっている。
【０００３】
業務データの中でも、常時データが流入するストリームデータの場合、処理時間が重要になる。ストリームデータの例として、Ｗｅｂサーバのログや金融機関における取引記録が挙げられる。このようなデータの分析では、データの流入速度に対して、分析の処理速度を大きく保つ必要があり、高速性が求められる。
【０００４】
大量の業務データを処理する際には、複数の計算機を用いて処理を高速化する手法がとられる。近年、分散処理を容易化するソフトウェア基盤がしばしば用いられる。ひとつのソフトウェア基盤として特許文献１のＭａｐＲｅｄｕｃｅや、そのオープンソース実装である非特許文献１のＨａｄｏｏｐが広く用いられている。ＭａｐＲｅｄｕｃｅでは、各計算機にデータに対して並列に計算を行わせるＭａｐ処理と、結果を集約するＲｅｄｕｃｅ処理を組み合わせて分散処理を行う。ＭａｐＲｅｄｕｃｅはスケーラビリティの高さや、プログラム記述の容易さの観点から注目されている。
【０００５】
データ分析の手法としては、機械学習が広く用いられる。ＭａｐＲｅｄｕｃｅを用いることで、大量データからの機械学習が実施されている。例えば、特許文献２には、大量のデータを機械学習する手法が提案されている。また、特許文献３にはＭａｐＲｅｄｕｃｅを用いた機械学習の一手法が提案されている。このほかにも、オープンソース実装の非特許文献２のＭａｈｏｕｔが知られている。
【０００６】
機械学習の学習精度を向上させるためには、データにあわせて機械学習アルゴリズムの設定を調整する必要がある。多くの機械学習アルゴリズムには、メタパラメータと素性という二つの設定が存在する。
【０００７】
メタパラメータは機械学習アルゴリズム自体の持つパラメータである。このメタパラメータはデータの特性に依存するため、正しく設定するためには、全てのデータを調べる必要がある。
【０００８】
また、素性とは、学習に用いるデータの特徴である。例えば、文字列データの場合には、品詞、文字種などが素性として用いられる。ひとつのデータから、さまざまな種類の素性を抽出したデータを特徴量データと呼ぶ。多くの機械学習手法は、この特徴量データからモデルを学習する。例えば、特許文献４には、オーディオ信号から素性を抽出する方法が提案されている。データの特性やアルゴリズムの特性によって、良いモデルが得られる素性は異なる。
【０００９】
このように、機械学習で用いるメタパラメータと素性は、学習前に設定する必要がある。機械学習によって得られたモデルが、実データに適さない場合には、メタパラメータや素性の選択が不適切だったことが考えられる。そのため、機械学習では、同一のデータに対し様々なメタパラメータ、素性で学習を行い、複数のモデルを得ることが必要である。例えば、特許文献５では、複数の特徴量を作成し学習結果を評価することで、データに適した特徴量を生成する方法を提案している。
【００１０】
ストリームデータのように、処理の高速性を求められるデータに対しても、高精度な分析を実現するためには、複数のモデルを算出する機械学習が必要である。
【００１１】
上述のＨａｄｏｏｐを用いて機械学習を並列化した場合、機械学習をモデル数分繰り返す必要があり、モデル数倍の学習時間が必要になる。また、複数モデルを同時に学習する場合には、複数個の計算機クラスタが必要である。これは、Ｈａｄｏｏｐをもとにした機械学習手法である、非特許文献３や非特許文献４、非特許文献５でも同様である。非特許文献６では、複数回の機械学習を試行する場合、一部の処理を共通化しているが、事前に機械学習におけるデータアクセス状況を判定するプログラムを実行する必要がある。また、素性の選択を行う場合には、機械学習をモデル数分繰り返す必要がある。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】米国特許７，６５０，３３１号明細書
【特許文献２】米国特許７，２２２，１２７号明細書
【特許文献３】特表２００９−５０５２９０号明細書
【特許文献４】特開２００３−６７３９９号明細書
【特許文献５】特開２００７−１２２１８６号明細書
【非特許文献】
【００１３】
【非特許文献１】Apache Hadoop, [online], [平成２３年６月２３日検索], インターネット＜URL: http://hadoop.apache.org/＞
【非特許文献２】Apache Mahout, [online], [平成２３年６月２３日検索], インターネット＜URL: http://mahout.apache.org/＞
【非特許文献３】Jaliya Ekanayake  他著、“MapReduce for Data Intensive Scientific Analysis” [online]、[平成２２年６月３０日検索]、インターネット＜URL:http://grids.ucs.indiana.edu/ptliupages/publications/ekanayake-MapReduce.pdf＞
【非特許文献４】Yingyi Bu 他著、“HaLoop: Efficient Iterative Data Processing”、Proceedings of the VLDB Endowment、Volume 3 Issue 1-2, September 2010
【非特許文献５】Amol Ghoting 他著、“SystemML: Declarative Machine Learning on MapReduce”、 [online]、[平成２３年６月２３日検索]、インターネット＜URL: https://researcher.ibm.com/researcher/files/us-ytian/systemML.pdf＞
【非特許文献６】福本  佳史 他著、”複数分析処理におけるMapReduce最適化”、第３回データ工学と情報マネジメントに関するフォーラム、平成２３年２月２７日
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上記従来例では、一個の計算機クラスタにおいて、複数のモデルを並列機械学習するには、複数回の学習を実行することが必要であり、モデル数に比例して学習時間が増大する。複数のモデルを、並行して学習するためには、複数個の計算機クラスタが必要になる。複数の計算機クラスタを使用すると装置の導入コストや運用コストが過大になるという問題が生じる。上記従来例の技術では、これらの問題を解決できない。
【００１５】
そこで本発明は、上記問題点に鑑みてなされたもので、計算機クラスタを増やすことなく、機械学習を低コストで実現することを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、プロセッサとメモリとを備えた第１の計算機と、プロセッサとメモリを備えて複数の前記第１の計算機に分散処理を実行させる第２の計算機と、前記分散処理に用いる特徴量を含むデータを格納したストレージと、前記第１の計算機と第２の計算機および前記ストレージとを接続するネットワークと、を備えて、前記複数の第１の計算機で並列的に分散処理を行う分散計算機システムであって、前記第２の計算機は、学習の初期化を行う初期化部と、前記複数の第１の計算機に、学習処理を実行させる制御部と、前記学習処理の結果が収束したか否かを判定する収束判定処理部と、を備え、前記制御部は、前記複数の第１の計算機のうち所定の複数の第１の計算機に、前記学習のメタパラメータと素性インデックスの組を送信し、学習処理のＭａｐ処理部を割り当て、前記学習処理の対象となる前記ストレージのデータを割り当てて第１のワーカーとして学習処理を実行させ、前記複数の第１の計算機のうち、少なくとも１つの第１の計算機に、前記Ｍａｐ処理部の出力を受信してモデルパラメータを更新するＲｅｄｕｃｅ処理部を割り当てて第２のワーカーとして学習処理を実行させ、前記第１のワーカーは、前記Ｍａｐ処理部が、前記メタパラメータと素性インデックスとの組を複数モデル管理部に保持し、ひとつの特徴量が前記ストレージから読み込まれるごとに、前記複数モデル管理部に存在するすべてのメタパラメータと素性インデックスに対して、素性選択とＭａｐ関数を実行して中間結果を算出し、当該中間結果を前記第２のワーカーに送信し、前記第２のワーカーは、前記中間結果を受け付けて、前記Ｒｅｄｕｃｅ処理部がＲｅｄｕｃｅ関数を実行して前記中間結果から学習結果を生成し、前記第２の計算機の収束判定部は、前記生成された学習結果が所定の基準を満たすか否かを判定し、前記生成された学習結果が所定の基準を満たしていない場合には、前記第２のワーカーへ前記学習結果を送信して、学習処理を指令し、前記学習結果が所定の基準を満たす場合には、処理を完了する。
【発明の効果】
【００１７】
本発明の分散計算機システムは、複数の第１の計算機で例えば、一個の計算機クラスタを構成し、複数のモデルを並行して学習することができる。Ｍａｐ処理部とストレージの特徴量データの通信量を前記従来例の（１／モデル数）に削減して、Ｒｅｄｕｃｅ処理部をモデル数倍に並列化することで、学習時間を短縮することができる。さらに、本発明では、従来例と同一時間でより多くのモデルが学習できるので、計算機クラスタの数を削減し、計算機クラスタの導入コストや運用コストを減らすことができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態を示し、分散計算機システムで使用する計算機のブロック図である。
【図２】本発明の第１の実施形態を示し、分散計算機システムのブロック図である。
【図３】本発明の第１の実施形態を示し、分散計算機システムのモデルパラメータの処理を中心とした機能要素を示すブロック図である。
【図４】本発明の第１の実施形態を示し、分散計算機システムで行われる全体的な処理の一例を示すフローチャートである。
【図５】本発明の第１の実施形態を示し、分散計算機システムのデータの流れを示すシーケンス図である。
【図６】本発明の第１の実施形態を示し、分散計算機システムでｋ−ｍｅａｎｓクラスタリングを実現するフローチャートである。
【図７Ａ】本発明の第１の実施形態を示し、本発明に用いるユーザ端末で実行されるプログラムのうち、分散計算機システムが利用者に提供する部分と利用者が作成する部分を表した模式図である。
【図７Ｂ】本発明の第１の実施形態を示し、本発明に用いるMap関数計算部のうち、分散計算機システムが利用者に提供する部分と利用者が作成する部分を表した模式図である。
【図７Ｃ】本発明の第１の実施形態を示し、本発明に用いるReduce関数計算部のうち、分散計算機システムが利用者に提供する部分と利用者が作成する部分を表した模式図である。
【図８】本発明の第１の実施形態を示し、機械学習で用いるモデルパラメータの一例を示す説明図で、ｋ−ｍｅａｎｓクラスタリングのモデルパラメータである。
【図９Ａ】本発明の第１の実施形態を示し、機械学習で用いる特徴量データの一例を示す説明図で、クラスタリングの特徴量データである。
【図９Ｂ】本発明の第１の実施形態を示し、機械学習で用いる特徴量データの一例を示す説明図で、識別問題の特徴量データである。
【図１０】従来例を示し、MapReduceに基づく分散計算機システムの構成例を示すブロック図である。
【図１１】従来例を示し、MapReduceの処理の一例を示すフローチャートである。
【図１２】本発明の第1の実施形態と、従来例MapReduceに基づいてk-meansを実行した場合のモデル数と、実行時間の関係を表す図である。
【図１３】本発明の第２の実施形態と、従来例MapReduceに基づいてk-meansを実行した場合のモデル数と、実行時間の関係を表す図である。
【図１４】本発明の第３の実施形態と、従来例MapReduceに基づいてk-meansを実行した場合のモデル数と、実行時間の関係を表す図である。
【発明を実施するための形態】
【００１９】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００２０】
以下の実施の形態において、要素の数等に言及する場合、特に指定された場合および原理的に明らかに特定される場合を除き、その特定の数に限定されることはなく、特定の数以上でも以下でもよい。
【００２１】
さらに、以下の実施の形態において、その構成要素は、特に指定された場合および原理的に明らかに必要とされる場合を除き、必ずしも必須のものではないということは明らかである。また、同様に以下の実施の形態において、構成要素の形状や位置関係について言及するときは、特に明示する場合や原理的に明らかにそうでないと考えられる場合を除き、実質的にその形状等に近似または類似するものを含むものとする。このことは上記数値および範囲に関しても同様である。
【００２２】
＜第１実施形態＞
図１は、本発明の分散計算機システムで使用する計算機１００のブロック図である。分散計算機システムで使用する計算機１００は図１に示すような汎用の計算機１００を想定しており、具体的にはPCサーバで構成されている。PCサーバで構成される計算機１００は、中央演算装置（Central Processing Unit, CPU）１１０とメモリ１２０とローカルファイルシステム１３０と入力装置１４０と出力装置１５０とネットワークデバイス１６０とバス１７０を有する。１１０から１６０までの装置はバス（またはインターコネクト）１７０によって接続されている。ネットワークを介してリモートから計算機１００を操作する場合、入力装置と出力装置については省略可能である。また、ローカルファイルシステムとは、計算機１００に内蔵ないし外部に接続された書き換え可能な記憶領域を指し、具体的には、ハードディスクドライブやソリッドステートドライブ、RAMディスクなどの記憶装置である。
【００２３】
以下簡単に、本発明の適応対象となる機械学習アルゴリズムを説明する。機械学習では、特徴量データに表れる共通のパターンを抽出することを目的とする。機械学習アルゴリズムの例として、線形回帰やｋ−ｍｅａｎｓ（Ｊ．ＭｃＱｕｅｅｎ  ”Some methods for classification and analysis of multivariate observations" In Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability、ｐｐ．２８１−２９７、１９６７）やＳｕｐｐｏｒｔ  Ｖｅｃｔｏｒ  Ｍａｃｈｉｎｅ（ＳＶＭ）  （Support Vector Machine;Chapelle、 Olivier: Training a Support Vector Machine in the Primal、 Neural Computation、Ｖｏｌ．１９、Ｎｏ．５、ｐｐ．１１５５−１１７８、２００７）が知られている。機械学習アルゴリズムで扱うデータの種類は、大きく三つに分けられる。一つ目はパターンを抽出する対象となる特徴量データであり、二つ目は、学習対象となるモデルパラメータであり、三つ目は、学習の条件を設定するメタパラメータである。
【００２４】
機械学習では、予め、モデルとメタパラメータを決定しておき、特徴量データがよく当てはまるようにモデルパラメータを決定する。例えば、特徴量データ｛（ｘ１，ｙ１），（ｘ２，ｙ２），…｝における線形回帰では、モデルは、
ｆ（ｘ）＝（ｗ，ｘ）＋ｂ
という関数fで表される。
【００２５】
ここでｉを特徴量データの番号とすると、ｘｉは実数値ベクトルでありｙｉは実数である。また、（ｗ，ｘ）は実数値ベクトルｗとｘの内積を表す。常識のｗとｂがモデルパラメータである。ｙｉ＝ｆ（ｘｉ）が小さい誤差で成り立つようにｗとｂを決めることが、線形回帰の目的である。以下では、特徴量データを用いて、モデルパラメータを推定することを学習と呼ぶ。
【００２６】
上記の線形回帰やｋ−ｍｅａｎｓ、ＳＶＭなどの機械学習アルゴリズムは、データに対して現在のモデルを適用する部分と、その結果をもとにモデルパラメータを更新する部分とを繰り返し実行することにより学習を行う。この繰り返しは、アルゴリズムごとに設定されたモデルパラメータの収束判定基準を満たすまで実行される。例えば、上記の線形回帰モデルであれば、データに対するモデルの適用では、特徴量データ（ｘｉ，ｙｉ）に対して現在のｗとｂをもって関数ｆを計算し、誤差を算出する。
【００２７】
モデルパラメータの更新では、誤差を小さくするようにモデルパラメータｗとｂを再計算する。データに対するモデルの適用と、モデルパラメータの更新を繰り返すことにより、モデルパラメータの推定精度が高くなっていく。
【００２８】
図２は本発明の分散計算機システムを構成する計算機のブロック図である。本発明に使用する計算機は、図２のように一台のユーザ端末用計算機２００と一台のマスタ用計算機２１０と一台以上のワーカー用計算機２２０−１、２２０−２、２２０−３、２２０−４がネットワーク２３０（ＬＡＮ）を介して接続される。
ユーザ端末用計算機２００とマスタ用計算機２１０と複数のワーカー用計算機２２０−１、２２０−２、２２０−３、２２０−４は、上述した図１の計算機１００で構成される。なお、以下では、ワーカー用計算機の総称をワーカー用計算機２２０とする。尚、その他の構成要素についても同様であり、符号の添え字を除いたものが総称を示す。
【００２９】
ユーザ端末用計算機２００は、初期化部２５０と収束判定部２５５と機械学習指令部２６０を有する。マスタ用計算機２１０はジョブ管理部２６５を有する。ワーカー用計算機２２０はタスク管理部２７０とＭａｐ処理部２７５もしくはＲｅｄｕｃｅ処理部２８０を有する。
【００３０】
ワーカー用計算機２２０のタスク管理部２７０は、Ｍａｐ処理部２７５もしくはＲｅｄｕｃｅ処理部２８０を実行する。また、Ｍａｐ処理部２７５とＲｅｄｕｃｅ処理部２８０は一台の計算機に共存させることも可能である。Ｍａｐ処理部２７５は、素性選択部２７８とＭａｐ関数計算部２８５と複数モデル管理部２９５を有する。Ｒｅｄｕｃｅ処理部２９０はＲｅｄｕｃｅ関数処理部２９０と複数モデル管理部２９５を有する。
【００３１】
ユーザ端末用計算機２００とマスタ用計算機２１０とワーカー用計算機２２０は、一般的なＬＡＮ２３０によって接続されており、具体的にはＬＡＮで接続されている。分散ファイルシステム２４０は、分散記憶装置として機能し、複数の計算機からなっており、具体的にはＨａｄｏｏｐ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（ＨＤＦＳ）を用いている。ＨＤＦＳはNameNodeとSecondaryNameNodeとDataNodeからなっている。NameNodeは分散ノードにどのようにデータを配置するかを管理する。SecondaryNameNodeはNameNodeをバックアップする。DataNodeは各ノードで動作し、データの実体を管理する。分散ファイルシステムとマスタとワーカーは前記のネットワークによって接続されている。タスク管理部２７０とDataNodeを一台の計算機に共存することも可能である。マスタ用計算機２１０とワーカー用計算機２２０は、分散ファイルシステムを構成する要素を兼務することができる。
【００３２】
マスタ用計算機２１０はワーカー用計算機２２０のＩＰアドレスまたはホスト名のリストを保持している。ワーカー用計算機２２０の利用可能な計算資源はマスタ用計算機２１０が把握している。ワーカー用計算機２２０の利用可能な計算資源とは、同時に実行できるスレッド数、使用可能なメモリ量の最大値、使用可能なローカルファイルシステムの領域を指す。
【００３３】
ワーカー用計算機２２０を追加する場合、ワーカー側の設定として、分散ファイルシステムと通信するためのエージェントと、タスク管理部２７０をインストールする必要がある。また、マスタ側の設定として、ワーカー用計算機のＩＰアドレスやホスト名、さらに計算機資源の情報を追加する。
【００３４】
ユーザ端末用計算機２００とマスタ用計算機２１０とワーカー用計算機２２０と分散ファイルシステムをつなぐネットワークは速度が求められるため、一つのデータセンタ内に存在している。それぞれの構成要素を別のデータセンタに置くことも可能であるが、ネットワークの帯域や遅延などの問題があるため、その場合はデータ転送の速度が低下する。
【００３５】
図３に示すように、機械学習はＣＰＵ１１０で実行可能なソフトウェアとして実装されている。機械学習のソフトウェアはユーザ端末用とマスタ用とワーカー用が存在している。各ソフトウェアは、記憶媒体としてのローカルファイルシステム１３０等に格納することができる。ユーザ端末用計算機２００で実行されるソフトウェアは、機械学習の初期化部２５０と収束判定部２５５と機械学習指令部２６０（図２参照）である。初期化部２５０はモデルパラメータ３００の初期化を行う。収束判定部２５５は、機械学習の結果であるモデルパラメータ３１０が収束しているか否かを判定する。機械学習指令部２６０はユーザ端末用計算機２００の入出力の管理と、初期化部２５０と収束判定部２５５の呼び出しと、マスタ用計算機２１０への分散計算実行の指示を行う。
【００３６】
マスタ用計算機２１０で動作するソフトウェアは、ジョブ管理部２６５（図２参照）であり、各ワーカー用計算機２２０のタスク管理部２７０へのＭａｐ処理部２７５とＲｅｄｕｃｅ処理部２８０の割り当てと、特徴量データ２４５の割り当てを行う。なお、ジョブ管理部２６５のＭａｐ処理部２７５の割り当ては、Ｍａｐ処理プログラム（Ｍａｐ処理部テンプレート７４０（図７Ｂ）参照）とＭａｐ関数７３０をワーカー用計算機２２０へ送信送信することで行う。また、ジョブ管理部２６５のＲｅｄｕｃｅ処理部２８０の割り当ては、Ｒｅｄｕｃｅ処理プログラム（Ｒｅｄｕｃｅ処理部テンプレート７６０（図７Ｃ参照））とＲｅｄｕｃｅ関数７５０とをワーカー用計算機２２０を送信することで行うようにしても良い。
【００３７】
この他、ワーカー用計算機２２０上で動作するソフトウェアとして、マスタ用計算機２１０のジョブ管理部２６５とデータ通信を行うタスク管理部２７０がある。ワーカー用計算機２２０のタスク管理部２７０が呼び出す処理部は２種類存在する。
【００３８】
一つ目は分散ファイルシステム２４０からのデータの取得と、複数モデル管理部２９５の実行とＭａｐ関数計算部２８５の実行と素性選択部２７８の実行とを行うＭａｐ処理部２７５である。複数モデル管理部２９５は全てのモデルパラメータ３００をユーザ端末用計算機２００から受け取り、保存する。Ｍａｐ処理部２７５は、分散ファイルシステム２４０から特徴量データ２４５を１つ読み出すと、複数モデル管理部２９５内に存在するメタパラメータ、素性インデックス、モデルパラメータの組に対して、素性選択２７８とＭａｐ関数計算部２８５を実行し、中間出力データ３２０を出力する。全てのモデルパラメータに対する計算が終わると、Ｍａｐ処理部２７５は次の特徴量データを読み出し、全てのモデルパラメータに対するＭａｐ関数の計算を繰り返す。特徴量データ２４５がなくなると、Ｍａｐ処理部２７５は処理を終了する。
【００３９】
ワーカー用計算機２２０のタスク管理部２７０が呼び出すもうひとつの処理部は、機械学習のＭａｐ関数の結果の統合を行うＲｅｄｕｃｅ処理部である。Ｒｅｄｕｃｅ処理部はＭａｐ処理部から中間出力データ３２０を受け取る。Ｒｅｄｕｃｅ処理部２８０は、中間出力データ３２０に対応するメタパラメータを複数モデル管理部２９５から取得し、Ｒｅｄｕｃｅ関数計算部２９０を実行し、システムの出力となるモデルパラメータ３１０をユーザ端末用計算機２００へ返す。
【００４０】
その後、ユーザ端末用計算機２００では、収束判定部２５５が学習結果であるモデルパラメータ３１０の収束判定を行う。あるモデル識別子に属するモデルパラメータ３１０が収束条件を満たす場合には、次回の計算対象から除外する。全てのモデル識別子に属するモデルパラメータが収束した場合、システムの処理を終了する。ユーザ端末用計算機２００では、収束条件を満たさないモデルパラメータについて、出力データ３１０を入力データ３００とし、ワーカー用計算機２２０に再度処理を実行させる。
【００４１】
次に、分散計算機システムの起動手順について説明する。分散計算機システムの使用者（または管理者）はユーザ端末用計算機２００の電源を投入し、ＯＳ（オペレーティングシステム）を立ち上げる。同様にマスタ用計算機２１０とすべてのワーカー用計算機２２０の電源を投入してＯＳを立ち上げる。ユーザ端末用計算機２００とマスタ用計算機２１とワーカー用計算機２２０のすべてが起動し、分散ファイルシステム２４０にアクセス可能な状態へ移行する。
【００４２】
次にマスタ用計算機２１０でジョブ管理部２６５を起動させる。そしてワーカー用計算機２２０ではそれぞれタスク管理部２７０を起動させる。マスタ用計算機２１０ではジョブ管理部２６５が、ワーカー用計算機２２０のタスク管理部２７０と通信可能であることを確認する。また、ユーザ端末用計算機２００はマスタ用計算機２１０のジョブ管理部２６５と通信可能であることを確認する。
【００４３】
マスタ用計算機２１０が保持する設定ファイル（図示省略）に機械学習で使用するワーカー用計算機２２０のＩＰアドレスやホスト名をすべて追加する。設定ファイルへの情報の追加は、ユーザ端末用計算機２００が行うことができる。以降、各計算機の各管理部と各処理部は、マスタ用計算機２１０に保持されたＩＰアドレス及びホスト名をもとに通信を行う。
【００４４】
また、図３において、Ｒｅｄｕｃｅ処理はひとつのワーカー用計算機２２０−４上で並列化されることを示し、図中２２０−４’で示す。Ｒｅｄｕｃｅ処理の並列化については後述する。
【００４５】
図４は分散計算機システムで実行するデータ処理の一例を示すフローチャートである。
【００４６】
図中ステップ４００でユーザ端末用計算機２００の初期化部２５０は、全てのメタパラメータＬと素性インデックスＦに対応するモデルパラメータＭを初期化する。
【００４７】
ステップ４１０では、ユーザ端末用計算機２００の初期化部２５０が、各ワーカーのタスク管理部２７０に、（メタパラメータＬ，素性インデックスＦ，モデルパラメータＭ）のリストと、Ｍａｐ処理部２７５とＲｅｄｕｃｅ処理部２８０を配布する。各ワーカー２２０では、Ｍａｐ処理部２７５とＲｅｄｕｃｅ処理部２８０が初期化される。
【００４８】
ステップ４２０で各Ｍａｐ処理部２７５はデータｘを分散ファイルシステム２４０から取得する。
【００４９】
ステップ４３０で各Ｍａｐ処理部２７５はデータｘが空（ｎｕｌｌ）ならばＭａｐ処理部２７５を終了する。このとき処理はステップ４７０に移行する。データｘが空でない場合、ステップ４４０に移る。
【００５０】
ステップ４４０で各Ｍａｐ処理部２７５は複数モデル管理部２９５から（メタパラメータＬ，素性インデックスＦ，モデルパラメータＭ）の組を取得する。以下では、このデータの組を（Ｌ，Ｆ，Ｍ）で示す。
【００５１】
ステップ４５０で各Ｍａｐ処理部２７５は（Ｌ，Ｆ，Ｍ）が空（ｎｕｌｌ）ならばＭａｐ関数計算部２８５を終了し、ステップ４２０に戻る。一方、（Ｌ，Ｆ，Ｍ）が空（ｎｕｌｌ）でない場合は、ステップ４５５に進む。
【００５２】
ステップ４５５で各素性選択部２７８は、データｘから素性インデクスＦに記述されている素性のみを抽出しデータｘ’を生成する。
【００５３】
ステップ４６０で各Ｍａｐ処理部２７５はデータｘ’とモデルパラメータＭとメタパラメータＬに対してＭａｐ関数計算部２８５を実行し、計算結果をＲｅｄｕｃｅ処理部２８０に送信する。送信後は４４０に戻る。
【００５４】
ステップ４７０で、Ｒｅｄｕｃｅ処理部２８０は、各Ｍａｐ関数計算部２８５の計算結果と、この計算結果に対応するメタパラメータＬをもとにＲｅｄｕｃｅ関数計算部２９０を実行し、新たなモデルパラメータを生成してから、分散ファイルシステム２４０に生成したモデルパラメータＭを書き込む。
【００５５】
ステップ４８０で、収束判定部２５５は分散ファイルシステム２４０から各メタパラメータＬに対応するモデルパラメータＭを読み込み、それぞれ収束条件を計算する。収束条件を満たしているモデルパラメータＭに関しては、次回の計算対象から外す。全てのモデルパラメータＭが収束条件を満たしている場合には処理を終了する。そうでない場合にはステップ４１０に戻って、収束条件を満たしたモデルパラメータＭを除いて上記処理を繰り返す。なお、ステップ４７０でＲｅｄｕｃｅ処理部２８０は、学習結果である新たなモデルパラメータをユーザ端末用計算機２００へ送信し、ステップ４８０では、収束判定部２５５が受信した新たなモデルパラメータについて収束条件の判定を行うようにしても良い。
【００５６】
以上のフローチャートを、１回行う場合について具体的に記述したものが図５である。図５は、図４の処理を１回行うときのシーケンスを示す。
【００５７】
Ｌｏｏｐ［（Ｌ，Ｆ，Ｍ）］５１０内においてＭａｐ関数計算部２８５では、分散ファイルシステム２４０へのアクセスが起こっていないことが分かる。また、モデルパラメータＭの数が増えているが、Ｒｅｄｕｃｅ関数は異なるモデルパラメータＭを独立して計算することができる。この特性によってＲｅｄｕｃｅ処理部２８０の並列数が増加する。これにより、本発明では分散ファイルシステム２４０へのアクセスを削減し、図３で示した２２０−４、２２０−４’のようにＲｅｄｕｃｅ処理の並列数を上げることで、複数モデルの学習を高速化している。
【００５８】
なお、本実施形態では、Ｍａｐ関数を実行するごとに中間結果３２０がＲｅｄｕｃｅ処理部２８０に転送される。つまり、データの個数は中間結果の個数と比例する。多くのＭａｐＲｅｄｕｃｅプログラムでは、Ｒｅｄｕｃｅ関数の一部をＭａｐ処理部で行うＣｏｍｂｉｎｅｒを利用することで、Ｍａｐ処理部とＲｅｄｕｃｅ処理部との間のデータ通信量を減らしている。Ｃｏｍｂｉｎｅｒを用いた場合、Ｒｅｄｕｃｅ処理部に転送されるデータ数は、モデル数と比例する。このように、大量のデータを扱う場合には、Ｃｏｍｂｉｎｅｒを導入すると、処理が高速化される。本発明においても、ｋ−ｍｅａｎｓや線形ＳＶＭなどの多くのアルゴリズムでＣｏｍｂｉｎｅｒを用いることが可能である。
【００５９】
この処理によって多くの機械学習アルゴリズムは、いかなる並列数にでも並列化することができる。本発明により並列化される機械学習は、以下の３つの特徴を持つ。
１）分類モデルや識別モデル、回帰モデルをもつ。
２）学習データをモデルに適用することでモデルパラメータを決定する。
３）モデルパラメータの妥当性をフィードバックとしてパラメータに修正をかける。
【００６０】
上記のうち、２）の手順で学習データを走査する部分をＭａｐ関数計算部２８５として分散し、Ｒｅｄｕｃｅ関数計算部２９０での統合処理を行うことで、本発明は機械学習アルゴリズムを並列化している。そのため、２）の手順で学習データを並列的に読み込むことができる学習モデルが本発明に適する。そのようなアルゴリズムとして、ｋ−ｍｅａｎｓ、線形ＳＶＭなどがあり、代表的な機械学習手法に対して発明を適用することが可能である。
【００６１】
例えば、ｋ−ｍｅａｎｓの場合、１）のモデルパラメータとして、各クラスタの重心ベクトルを持つ。２）のモデルパラメータの決定は、学習データがどのクラスタに属するかの判定と、クラスタに属する学習データから新たなクラスタ重心の計算する手続きである。３）のパラメータの妥当性の検証では、以前のクラスタ重心との距離を検証する。そして、基準を満たす場合、つまり学習前後での重心の移動量が閾値よりも小さい場合、学習を終了する。基準を満たさない場合は、新しく計算された重心ベクトルを用いて再度、上記２）の手順を実行する。ここで、上記２）の学習データがどのクラスタに属するかの判定と、新しいクラスタ重心の計算で総和をとる部分を並列化することができる。
【００６２】
以下では、図６をもとに具体例としてｋ−ｍｅａｎｓによる数値ベクトルのクラスタリングを本分散計算機システム上で実行する手順を説明する。
【００６３】
ステップ６００で、ユーザ端末用計算機２００で初期化を行う。ステップ６００は図４のステップ４００の処理に相当する。はじめに、ユーザはメタパラメータＬと素性インデックスＦをｍ組準備する。ユーザ端末用計算機１００において機械学習指令部２６０が、ｍ組のメタパラメータと素性インデックスに対して、ｍ個のモデルパラメータの初期化を行う。ここで、それぞれのモデルに割り当てられたモデル識別子をＭＩＤと表記する。ｋ−ｍｅａｎｓクラスタリングにおけるメタパラメータとは、クラスタの数ｋである。また、素性インデックスとは、特徴量データのうち、解析対象とする次元を列挙したリストＦである。モデルパラメータとは、クラスタの重心ベクトルＣであり、クラスタ数ｋに伴いｋ個存在する。モデルパラメータの初期化とは、クラスタの重心ベクトルＣをランダムに決定することである。今、学習対象のモデルはｍ個であるため、重心ベクトルＣもｍ組存在する。
【００６４】
ステップ６１０で、マスタ用計算機２１０のジョブ管理部２６５に対してクラスタ数ｋと、リストＦと重心ベクトルＣの組をｍ個とＭａｐ処理部２７５とＲｅｄｕｃｅ処理部２９０を各ワーカー用計算機２２０に送信する。
【００６５】
ステップ６２０で、各Ｍａｐ処理部２７５が分散ファイルシステム２４０から特徴量データｘを読み出す。ｘは数値ベクトルである。
【００６６】
ステップ６３０で各Ｍａｐ処理部２７５はデータｘが空（ｎｕｌｌ）ならばＭａｐ処理部を終了する。このとき処理は６７０に移行する。特徴量データｘが空でない場合、ステップ６４０に移る。
【００６７】
ステップ６４０で各Ｍａｐ処理部２７５は複数モデル管理部２９５から（ｋ，Ｆ，Ｃ）の組を取得する。
【００６８】
ステップ６５０で各Ｍａｐ処理部２７５は（ｋ，Ｆ，Ｃ）が空ならばＭａｐ関数計算部２８５を終了し、ステップ６２０に戻る。そうでないならば、ステップ６５５に移る。
【００６９】
ステップ６５５で各ワーカー用計算機２２０の素性選択部２７５は、数値ベクトルｘからリストＦに記述されている次元の数値のみを抽出し数値ベクトルｘ’を生成する。
【００７０】
ステップ６６０で各Ｍａｐ処理部２７５は数値ベクトルｘ’がｋ個の重心ベクトルＣのうち、どれに最も近いかを計算し、帰属する重心ベクトルを決定する。数値ベクトルｘ’の値と帰属先のラベルｔ，｛ｔ｜１＜＝ｔ＜＝ｋ，ｔ∈Ｚ｝をＲｅｄｕｃｅ処理部２８０に送信する。ただし、Ｚは自然数の集合を表す。
【００７１】
ステップ６７０で、各Ｒｅｄｕｃｅ処理部２８０は、各Ｍａｐ関数計算部２８５の結果を受け取る。Ｒｅｄｕｃｅ処理部２８０はラベルｔごとに数値ベクトルｘ’の重心ベクトルを計算し、ｋ個の重心ベクトルを計算し、分散ファイルシステム２４０に書き込む。
【００７２】
ステップ６８０で、ユーザ端末用計算機２００の収束判定部２５５は分散ファイルシステム２４０からクラスタ数ｋに対応する重心ベクトルＣを読み込み、それぞれ収束条件を計算する。具体的には、新しい重心ベクトルＣと従来の重心ベクトルＣとの差ΔＣを計算し、差ΔＣが所定の閾値以内なら収束と判定し、そうでなければ未収束と判定する。収束している重心ベクトルＣに関しては、次回の計算対象から外す。そうでない場合には重心ベクトルＣを計算対象に追加する。全ての重心ベクトルＣが収束している場合には処理を終了する。そうでない場合、ステップ６１０に戻る。なお、収束判定の方式はこれ以外にも、あらかじめ決められた数の反復を行うなどの方法が考えられる。
【００７３】
ｋ−ｍｅａｎｓクラスタリングにおいて、Ｃｏｍｂｉｎｅｒを用いる場合について説明する。上記図６のステップ６６０で、Ｍａｐ関数計算部２８５が出力した数値ベクトルｘｘ’とラベルｔをＣｏｍｂｉｎｅｒが受け取る。Ｃｏｍｂｉｎｅｒはラベルｔごとに数値ベクトルｘ’の総和Ｓと数値ベクトルｘ’の数ｎを計算する。ステップ６３０で、Ｍａｐ処理部２７５が終了する際に、Ｃｏｍｂｉｎｅｒは数値ベクトルｘ’の総和Ｓと数値ベクトルｘ’の数ｎとをＲｅｄｕｃｅ処理部２８０に送信する。ステップ６７０で、Ｒｅｄｕｃｅ関数計算部２９０はラベルｔごとに各数値ベクトルｘ’の総和Ｓの総和Ｓ’と各ｎの総和ｎ’を計算する。そして、ラベルｔに相当する重心ベクトルを総和Ｓ’／総和ｎ’として更新する。
【００７４】
図７Ａ〜図７Ｃは、機械学習指令部２６０とＭａｐ処理部２７５とＲｅｄｕｃｅ処理部２８０のソフトウェアの概要を示すブロック図である。これらの各部は、共通部分と学習手法依存の部分に分けられている。図７Ａは、機械学習指令部２６０のソフトウェア構成を示すブロック図で、図７Ｂは、Ｍａｐ処理部２７５のソフトウェア構成を示すブロック図で、図７Ｃは、Ｒｅｄｕｃｅ処理部２８０のソフトウェア構成を示すブロック図である。
【００７５】
図７Ａに示すようにユーザ端末用計算機２００の機械学習指令部２６０においては、利用者はｋ−ｍｅａｎｓ用初期化部７００とｋ−ｍｅａｎｓ用収束判定処理部７１０を作成するだけでよい。そのほかの、ジョブ管理部２６５や分散ファイルシステム２４０との通信、コマンドライン引数等の処理は機械学習指令部テンプレート７２０に実装されている。
【００７６】
図７Ｂに示すようにＭａｐ処理部２７５において、利用者はｋ−ｍｅａｎｓ用Ｍａｐ関数７３０を作成するだけでよい。Ｍａｐ処理部２７５の共通部分とは、タスク管理部２７０やＲｅｄｕｃｅ処理部２８０、分散ファイルシステム２４０との通信や、素性選択部２７８、複数モデル管理部２９５などであり、Ｍａｐ処理部テンプレート７４０に実装されている。
【００７７】
図７Ｃに示すようにＲｅｄｕｃｅ処理部２８０において、利用者はｋ−ｍｅａｎｓ用のＲｅｄｕｃｅ関数７５０を作成するだけでよい。Ｒｅｄｕｃｅ処理部２８０の共通部分とは、タスク管理部２７０や、Ｍａｐ処理部２７５、分散ファイルシステム２４０との通信や、Ｒｅｄｕｃｅ関数計算部２９０の呼び出しであり、Ｒｅｄｕｃｅ処理部テンプレート７６０に実装されている。
【００７８】
このように、本発明では機械学習に共通する部分はテンプレートとして用意されているため、利用者が作成するプログラムの量を減らすことができ、開発を効率的にすることが可能である。
【００７９】
図８は、本発明におけるｋ−ｍｅａｎｓのモデルパラメータのデータ構造８００を示す。図８は、ｋｅｙ−ｖａｌｕｅ形式のデータであり、ｋｅｙとしてモデル識別子とクラスタ識別子の組（ＭＩＤ＿ＣＩＤ）を持ち、Ｖａｌｕｅとして重心ベクトルの座標を持つ。２行目のｋｅｙの１＿２とはモデル識別子が１、クラスタＩＤが２であることを示しており、複数個存在するモデルのうち１つ目のモデルであり、２番目のクラスタの重心ベクトルであることを意味している。ｋｅｙにモデル識別子が含まれているため、単一のリストに全てのモデルのモデルパラメータを格納しても、どのモデルに属するモデルパラメータかを容易に判別することができる。このモデルパラメータは、図２のＭａｐ処理部２７５がＲｅｄｕｃｅ処理部２８０へ中間結果３２０を送信する際に、中間結果に対応するモデルの情報をキーとして記録しておくことで、Ｒｅｄｕｃｅ処理部２８０では、中間結果を受け取った際に、キーを参照すれば中間結果に対応するモデルを判別することができる。
【００８０】
図９Ａ、図９Ｂは機械学習に用いる特徴量データを示す。自然言語の文書や、画像データなどの様々な形式のデータを機械学習で扱いやすいように変換したデータが特徴量データである。図９Ｂのテーブル９１０で示すように、特徴量データはラベルと数値ベクトルの組からなる。一行に一つのラベルと数値ベクトルが記されている。特徴量データでの必須項目は数値ベクトルであり、場合によりラベルは省略される。例えば、学習時で用いられる特徴量データにはラベルが付与されているが、テストで用いられる場合はラベルが付与されていない。また、図９Ａのテーブル９００のように教師なし学習の場合には、学習で用いられる特徴量にもラベルが付与されない。
【００８１】
本発明は、上記のような実施形態の構成にすることにより、以下の２つの機能と効果を奏することができる。
（１）Ｍａｐ処理部２７５が分散ファイルシステム２４０へのアクセス頻度を削減し、データアクセス速度を改善する
（２）モデル個数分だけキーの種類が増加し、Ｒｅｄｕｃｅ処理の並列度が増加する
前記従来例に示したＭａｐＲｅｄｕｃｅを機械学習に用いる場合の例を図１０と図１１に示す。ＭａｐＲｅｄｕｃｅを用いてｍ回のモデル学習を行ったとすると、図１１の全体がｍ回繰り返されるので、分散ファイルシステムへのアクセス回数がｍ倍になる。一方で本発明では、図５のＬＯＯＰ［データ］に示すように、Ｍａｐ処理部２７５が分散ファイルシステム２４０から特徴量データを読み出すのは、モデル数にかかわらず１度である。
【００８２】
そのため、本発明では、前記従来例に比して分散ファイルシステム２４０へのアクセス頻度がｍ分の１になる。分散ファイルシステム２４０へのアクセスは、転送速度、遅延の点でメモリに劣る場合が一般的であり、データアクセス速度が改善される。
【００８３】
また、本発明ではｍ個のモデルを並行して学習しているため、Ｍａｐ処理部２７５の部分出力のキーの種類は前記従来例のｍ倍になり、これによってＲｅｄｕｃｅ処理部２８０の並列数もｍ倍になる。
【００８４】
ここで、１回のモデル学習にＮ回の反復処理が必要であるとする。前記従来例のＭａｐＲｅｄｕｃｅではｍ個のモデル学習でＭａｐ処理及びＲｅｄｕｃｅ処理の起動及び終了がｍ×Ｎ回行われる。
【００８５】
一方で本発明では、１度の学習処理の中でｍ個のモデルを学習するため、Ｍａｐ処理及びＲｅｄｕｃｅ処理の起動及び終了回数はＮ回である。
【００８６】
学習処理の前に、素性選択のみを行った場合には、前記従来例の場合、元の特徴量データのファイルサイズと、素性選択で選択される次元数とに比例したサイズのファイルが生成され、分散ファイルシステムの容量が圧迫される。
【００８７】
これに対して、本発明では素性選択をＭａｐ処理の中で行っている。そのため、必要とする分散ファイルシステム２４０の容量が小さくなるという効果もある。
【００８８】
以上のように、分散処理環境において機械学習を実行する上で本発明はネットワークの通信量と、ＣＰＵ資源と、分散ファイルシステム２４０の使用量を削減することができる。また、Ｍａｐ処理部２７５が特徴量データを保持するため、Ｍａｐ関数計算部２８５においてメモリ上のデータを再利用することも可能である。
【００８９】
本発明によって並列化したｋ−ｍｅａｎｓ法の実行時間を計測した実験結果を以下に示す。実験には、ユーザ端末用計算機２００とマスタ用計算機２１０を兼務する計算機１台と、ワーカー用計算機２２０を１２台と１つの分散ファイルシステム２４０と１ＧｂｐｓのＬＡＮ２３０を用いた。特徴量データとして、２０００次元の数値ベクトル５００，０００点を用いた。なお、図２では、ユーザ端末用計算機２００とマスタ用計算機２１０を異なる計算機で提供する例を示したが、図示はしないが単一の計算機が初期化部２５０、収束判定部２５５、機械学習指令部２６０、ジョブ管理部２６５を備える構成であっても良い。
【００９０】
ユーザ端末兼マスタ用計算機はＣＰＵを８個持ち、メモリを２ＧＢ備え、ローカルファイルシステムを２５０ＧＢ持つ。１２台のワーカーは、それぞれＣＰＵを８個持つ。１２台のワーカーのうち４台はメモリを４ＧＢ持ち、ローカルファイルシステムを１ＴＢ持つ。残りの８台のワーカーは、８ＧＢのメモリを持ち、２ＴＢのローカルファイルシステムを持つ。各ワーカーには、１個のタスク管理部２７０を実行させた。タスク管理部２７０は、ワーカー用計算機２２０の負荷に合わせ最大８個のＭａｐ処理部２７５と８個のＲｅｄｕｃｅ処理部２８０を実行する。
【００９１】
素性の数とメタパラメータｋの組を（２００，２），（５００，３），（１０００，５），（１５００，７），（１７００，１１），（２００，１１），（５００，７），（１０００，５），（１５００，３），（１７００，２）の１０種類とした。（１０００，  ５）は二回出現するが、別のモデルとして扱われる。それぞれの素性は、全２０００次元の素性から、ランダムに選択した。なお、ｋはクラスタ数を表す。試行は１モデルの場合からはじめ、学習するモデルをひとつずつ追加した。このため、１回目の試行は１モデル、２回目の２モデル、１０回目の試行は１０モデルの学習を行う。
【００９２】
比較する従来例として、Ｈａｄｏｏｐを用いたオープンソースの並列機械学習ソフトウェアＭａｈｏｕｔ  ０．４を用いた。Ｍａｈｏｕｔには、複数のモデルパラメータを並行して学習する機構は実装されていないため、単一のモデルパラメータ学習を複数回繰り返した。
【００９３】
それぞれのモデル数について、６試行の学習を行い、実行時間を測定した。６試行のうち、平均実行時間から最も離れた試行を除外した５試行について、平均と標準偏差を計算した。
【００９４】
図１２に学習するモデル数に対する平均実行時間を示す。横軸は、同時に探索するモデル数を表し、縦軸は本発明とＭａｈｏｕｔの実行時間［ｓ］を表す。本発明の結果を実線で示し、前記従来例の結果を破線で示す。１モデルのみを探索した場合には、本発明は従来例に比して１．１０倍の速度を示している。従来例のＭａｈｏｕｔでは、ｋ−ｍｅａｎｓ法の実行に先立って、分散ファイルシステムから元データを読み、素性選択を行い、分散ファイルシステムに書き出すという操作が必要である。そのため、本発明と比較して、分散ファイルシステムからの読み込みが１回、書き出しが１回多くなる。このような理由で１モデルのみの学習でも、実行速度が向上したと考えられる。
【００９５】
２モデルを学習する場合には本発明は従来例に比して１．９０倍の速度を示し、５モデルを学習する場合には３．６６倍、１０モデルの場合には５．５３倍の速度を示している。同時に学習するモデル数が多いほど、本発明は従来例に比して速度向上率は大きくなる。
【００９６】
また、１０モデルの場合の実行時間を１モデルの場合と比較すると、従来例のＭａｈｏｕｔの場合は９．８０倍であるのに対し、本発明の場合は１．９４倍と小さい。
【００９７】
実時間で比較すると、Ｍａｈｏｕｔが２個のモデルを学習する時間内に、本発明は１０個のモデルを学習することが可能である。
【００９８】
以上のように、従来例のＭａｈｏｕｔがｋ−ｍｅａｎｓの処理全体をモデル数回だけ繰り返しているのに対し、本発明は複数モデル学習の共通部分を共用化することで、実行時間を短縮していることがわかる。
【００９９】
＜第２実施形態＞
次に、本発明の第２の実施の形態について説明する。第２実施形態で用いる分散計算機システムの構成は、前記第１実施形態と同一である。
【０１００】
本第２実施形態では、図２に示した初期化部２５０とＭａｐ処理部２７５における素性選択部２７８が第１実施形態とは異なる。本第２実施形態例において、利用者は特徴量データの全ての素性を用いて分析を行う。そのため、ユーザが設定する素性は１種類である。初期化部２５０では、全てのメタパラメータＬに対応するモデルパラメータＭを初期化する。初期化部２５０はタスク処理部２７０に（Ｌ，Ｍ）のリストとＭａｐ処理部２７５とＲｅｄｕｃｅ処理部２８０を送信する。Ｍａｐ処理部２７５は、特徴量データｘに対し、複数モデル管理部２９５から（Ｌ，Ｍ）を取得し、データｘ，モデルパラメータＭ，メタパラメータＬに対してｍａｐ関数を計算し、Ｒｅｄｕｃｅ処理部２８０に出力する。素性選択は行われないため、素性選択部２７８はシステムから削除してもよい。
【０１０１】
第２の実施形態では、素性選択を行わないため、第１の実施形態と比べて計算が少なくなる。また、素性選択部２７８が必要ないため、実行に必要なワーカーのメモリ量も削減されると考えられる。
【０１０２】
第２の実施の形態によって並列化したｋ−ｍｅａｎｓ法の実行時間を計測した。実験に用いた計算機環境とデータは実施例１の実験と同様である。
【０１０３】
学習には２０００次元すべての素性を用いた。学習に用いたメタパラメータｋは、（ａ）２、（ｂ）３、（ｃ）５、（ｄ）７、（ｅ）１１の５種類である。実験は（ａ）のみの場合からはじめ、（ｂ）、（ｃ）と学習するモデルをひとつずつ追加した。このため、１回目の試行は１モデル、２回目の２モデル、５回目の試行は５モデルの学習を行う。
【０１０４】
それぞれのモデル数について、６試行の学習を行い、実行時間を測定した。６試行のうち、平均実行時間から最も離れた試行を除外した５試行について、平均と標準偏差を計算した。
【０１０５】
図１３に学習するモデル数に対する平均実行時間を示す。横軸は、同時に学習するモデル数を表し、縦軸は本発明と従来例のＭａｈｏｕｔの実行時間［ｓ］を表す。本発明の結果を実線で示し、前記従来例の結果を破線で示す。２モデルを学習する場合には、本発明は従来例に比して１．７３倍の速度を示し、５モデルを学習する場合には、３．０２倍の速度を示している。同時に学習するモデル数が多いほど、本発明の速度向上率は大きくなるという傾向が、第１の実施形態と同様に見られる。一方で、従来例のＭａｈｏｕｔ、本発明とも素性選択を行わないため、第１の実施形態と比べて速度差が小さくなっている。
【０１０６】
＜第３実施形態＞
次に、本発明の第３の実施の形態について説明する。第３実施形態で用いる分散計算機システムの構成は、前記第１実施形態と同一である。
【０１０７】
前記図２に示した初期化部２５０とＭａｐ処理部２７５におけるメタパラメータが１種類に固定されている点が第１実施形態とは異なる。本第３実施形態例において、メタパラメータＬのインスタンスは全てのモデルで共通であるため、メタパラメータＬを（素性インデックスＦ，モデルパラメータＭ）とは別に管理することができる。
【０１０８】
初期化部２５０では、ひとつのメタパラメータＬを用いて、素性インデックスＦの個数だけモデルパラメータＭを初期化する。初期化部はタスク処理部に（Ｆ，Ｍ）のリストとひとつのメタパラメータＬとＭａｐ処理部２７５とＲｅｄｕｃｅ処理部２８０を送信する。Ｍａｐ処理部２７５は、メタパラメータＬをあらかじめ複数モデル管理部２９５から読み出しておく。その後、Ｍａｐ処理部２７５は、特徴量データｘに対し、複数モデル管理部２９５から（Ｆ，  Ｍ）を取得する。素性インデックスＦに基づきデータｘを素性選択し、数値ベクトルｘ’を作成する。数値ベクトルｘ’，モデルパラメータＭ，メタパラメータＬに対してｍａｐ関数を計算し、Ｒｅｄｕｃｅ処理部２８０に出力する。
【０１０９】
全モデルにおいて共通するメタパラメータＬを共用することでマスタ用計算機２１０とワーカー世２２０間の通信量を削減することができる。また、複数モデル管理部２９５がメタパラメータＬ，素性インデックスＦ，モデルパラメータＭの管理に要するメモリ量を削減することができる。
【０１１０】
第３の実施の形態によって並列化したｋ−ｍｅａｎｓ法の実行時間を計測した。実験に用いた計算機環境とデータは実施例１の実験と同様である。
【０１１１】
学習に用いる素性を、（ａ）２００次元、（ｂ）５００次元、（ｃ）１０００次元、（ｄ）１５００次元、（ｅ）１７００次元の５種類とした。それぞれの素性は、全２０００次元の素性から、ランダムに選択した。（ａ）から（ｅ）のデータに対して、メタパラメータｋを５と定めた。実験は（ａ）のみの場合からはじめ、（ｂ）、（ｃ）と学習するモデルをひとつずつ追加した。このため、１回目の試行は１モデル、２回目の２モデル、５回目の試行は５モデルの学習を行う。
【０１１２】
それぞれのモデル数について、６試行の学習を行い、実行時間を測定した。６試行のうち、平均実行時間から最も離れた試行を除外した５試行について、平均と標準偏差を求めた。
【０１１３】
図１４に学習するモデル数に対する実行時間を示す。横軸は、同時に学習するモデル数を表し、縦軸は本発明とＭａｈｏｕｔの平均実行時間［ｓ］を表す。本発明の結果を実線で示し、前記従来例の結果を破線で示す。２モデルを学習する場合には、本発明は従来例に比して１．９５倍の速度を示し、５モデルを学習する場合には、３．７１倍の速度を示している。同時に学習するモデル数が多いほど、本発明の速度向上率は大きくなるという傾向が、第１、第２の実施形態と同様に見られる。また、クラスタリングに先立って素性選択が行われるため、第１の実施形態と近い速度向上率を示している。
【０１１４】
＜第４実施形態＞
次に、本発明の第４の実施の形態について説明する。第４実施の形態で用いる分散計算機システムの構成は、前記第１実施形態と同一である。メタパラメータＬと素性インデックスＦの配布方法、Ｍａｐ処理部２７５における特徴量データの読み出し方法と保持方法、Ｒｅｄｕｃｅ処理部が無い点が第１実施形態とは異なる。
【０１１５】
機械学習アルゴリズムには、オンライン学習の一種であるｏｎｌｉｎｅ  ＥＭなどＭａｐＲｅｄｕｃｅで並列化できないアルゴリズムが存在する。このようなアルゴリズムは特徴量データに対して並列に学習可能なステップを持たず、特徴量データ読み出しの並列化ができないためである。このようなアルゴリズムに対して、複数モデル学習を行う場合、Ｍａｐ関数のみで学習が完結する。
【０１１６】
このようなアルゴリズムでは、特徴量データの読み出しを並列化することができないため、大量のデータを扱うことが難しい。そのため、メモリに乗り切る程度の量の特徴量データを扱うと仮定する。
【０１１７】
本実施形態において、Ｍａｐ関数は学習アルゴリズムを実装したプログラムであり、メタパラメータＬと特徴量データＤとを受け取り、モデルパラメータを出力する。
【０１１８】
第１実施形態において、各Ｍａｐ処理部はそれぞれ共通の（Ｌ，Ｆ）を保持していたが、本実施形態において、各Ｍａｐ処理部で計算されるそれぞれ別の（Ｌ，Ｆ）を保持する。
【０１１９】
初期化では、メタパラメータＬと素性インデックスＦを準備する。初期モデルパラメータはＭａｐ関数内で生成されるため、ここでは計算されない。そして、（Ｌ，Ｆ）を分散ファイルシステムに記録する。複数の（Ｌ，Ｆ）をひとつのファイルに保存することも可能である。Ｍａｐ処理部の数は、（Ｌ，Ｆ）を記録したファイルの数に比例する。
【０１２０】
各タスク管理部にＭａｐ処理部を配布し、各複数モデル管理部に（Ｌ，Ｆ）のパスを配布する。
【０１２１】
Ｍａｐ処理部は（Ｌ，Ｆ）のパスをもとに分散ファイルシステムから（Ｌ，Ｆ）を読み出す。次に特徴量データＤを分散ファイルシステム２４０から取得する。このとき、全ての行のデータＤを読み出す。
【０１２２】
Ｍａｐ処理部２７５は複数モデル管理部２９５から（Ｌ，Ｆ）を取得する。（Ｌ，Ｆ）が空（ｎｕｌｌ）の場合、Ｍａｐ処理部２７５を終了する。そうでない場合、素性インデックスＦに基づきデータＤの素性を選択し、Ｄ’を生成する。
【０１２３】
Ｍａｐ関数計算部２８５はデータＤ’、素性インデックスＬに対してｍａｐ関数を計算し、結果を分散ファイルシステム２４０に記述する。この際のデータ構造は第１実施形態の場合と同様に、ｋｅｙ−ｖａｌｕｅ形式である。ｋｅｙにはモデル識別子を記録する。ｖａｌｕｅにはモデルパラメータを記録する。
【０１２４】
ユーザ端末用計算機２００の収束判定部２５５は全てのモデルパラメータが計算されると収束と判定し、結果をユーザに提示する。
【０１２５】
第２実施例のように、メタパラメータのみを変化させる場合には、図２に示した素性選択部２７８は必要とされない。
【０１２６】
第３実施例のように、素性インデックスのみを変化させる場合には、メタパラメータＭは共通である。
【０１２７】
アルゴリズムを並列化できない場合でも、個々の学習を並列に実施することでモデルパラメータを高速に学習できる。
【０１２８】
また、同一のファイル内に存在する複数の（Ｌ，Ｍ）について学習をするとき、分散ファイルシステムからの読み出しが１度で複数のモデルパラメータを学習することができる。このため、単にＭａｐＲｅｄｕｃｅによって並列化した場合と比べて、分散ファイルシステムからのデータの読み出し回数を削減し、高速化できる。
【０１２９】
＜第５実施形態＞
次に、本発明の第５の実施の形態について説明する。第５実施形態で用いる分散計算機システムの構成は、前記第４実施形態と同一である。学習用の特徴量データの他、評価用の特徴量データが与えられている点、Ｍａｐ関数が学習器のほか識別器と精度評価器を持つ点、収束判定部２５５が優劣判定を行う点が異なる。ここで、学習器、識別器、精度評価器の役割を説明する。学習器は、メタパラメータLと、正解ラベル付きの特徴量データから、モデルパラメータＭを決定する。識別器は、モデルパラメータＭを元に、入力される特徴量データのラベルを決定する。また、精度評価器は、識別器の出力するラベル列と正解ラベル列を比較し、識別精度を評価する。
【０１３０】
Ｍａｐ処理部２７５は（Ｌ，Ｆ）のパスをもとに分散ファイルシステムから（Ｌ，Ｆ）を読み出す。次に学習用の特徴量データＤを分散ファイルシステムから取得する。このとき、全ての行のデータＤを読み出す。次に評価用の特徴量データＴを分散ファイルシステム２４０から取得する。評価用の特徴量データＴも、学習用の特徴量データＤと同様に全ての行のデータを読み出す。
【０１３１】
Ｍａｐ処理部２７５は複数モデル管理部から（Ｌ，Ｆ）を取得する。（Ｌ，Ｆ）が空（ｎｕｌｌ）の場合、Ｍａｐ処理部２７５を終了する。そうでない場合、素性インデックスＦに基づきデータＤの素性を選択し、データＤ’を生成する。同様に素性インデックスＦに基づき評価用の特徴量データＴの素性を選択し、評価用の特徴量データＴ’を生成する。
【０１３２】
Ｍａｐ関数計算部２８５はデータＤ’、メタパラメータＬに対してｍａｐ関数の学習器を実行し、モデルパラメータＭを生成する。次に、評価用の特徴量データＴ’、メタパラメータＬ、モデルパラメータＭに対してｍａｐ関数の識別器を実行し、結果を精度評価器で評価する。精度評価には、正答率や、誤答率、再現率、適合率、Ｆ値などの公知または周知の統計情報が用いられる。
【０１３３】
そして、Ｍａｐ関数計算部２８５は演算結果を分散ファイルシステム２４０に格納する。この際のデータ構造は第１実施形態の場合と同様に、ｋｅｙ−ｖａｌｕｅ形式である。ｋｅｙには前記第１実施形態と同様にモデル識別子を記録する。ｖａｌｕｅにはモデルパラメータと精度評価の結果を記録する。
【０１３４】
ユーザ端末用計算機２００の収束判定部２５５は全てのモデルパラメータが計算されると収束と判断し、精度評価の結果とともにモデルパラメータをユーザに提示する。
【０１３５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０１３６】
以上のように、本発明は、機械学習を並列的に実行する分散計算機システム及び分散計算機システムの制御方法に適用することができる。
【符号の説明】
【０１３７】
１１０  中央演算装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、ＣＰＵ）
１２０  メモリ
１３０  ローカルファイルシステム
１４０  入力装置
１５０  出力装置
１６０  ネットワークデバイス
１７０  バス
２００  ユーザ端用計算機末
２１０  マスタ用計算機
２２０  ワーカー用計算機
２３０  ＬＡＮ
２４０  分散ファイルシステム
２４５  特徴量データ
２５０  初期化部
２５５  収束判定部
２６０  機械学習指令部
２６５  ジョブ管理部
２７０  タスク管理部
２７５  Ｍａｐ処理部
２８０  Ｒｅｄｕｃｅ処理部
２８５  Ｍａｐ関数計算部
２９０  Ｒｅｄｕｃｅ関数計算部
２９５  複数モデル管理部
【図１】
0005673473.tif 000002
【図２】
0005673473.tif 000003
【図３】
0005673473.tif 000004
【図４】
0005673473.tif 000005
【図５】
0005673473.tif 000006
【図６】
0005673473.tif 000007
【図７Ａ】
0005673473.tif 000008
【図７Ｂ】
0005673473.tif 000009
【図７Ｃ】
0005673473.tif 000010
【図８】
0005673473.tif 000011
【図９Ａ】
0005673473.tif 000012
【図９Ｂ】
0005673473.tif 000013
【図１０】
0005673473.tif 000014
【図１１】
0005673473.tif 000015
【図１２】
0005673473.tif 000016
【図１３】
0005673473.tif 000017
【図１４】
0005673473.tif 000018