(57)【要約】【課題】複数の演算装置を用いたモデルの学習精度を改善すること。【解決手段】本願に係る情報処理装置は、配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する配布部と、配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う同期部とを有することを特徴とする。【選択図】図１
2020149460.tif 000002
【特許請求の範囲】
【請求項１】
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する配布部と、
配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う同期部と
を有することを特徴とする情報処理装置。
【請求項２】
前記同期部は、各演算装置により学習が行われたモデルの目的関数の値に応じた態様で、各モデルの同期を行う
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記同期部は、各モデルの目的関数の値に応じた重みを考慮して、各モデルを統合したモデルを同期結果とする
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記同期部は、各モデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量に応じた重みを考慮して、各モデルを統合したモデルを同期結果とする
ことを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記同期部は、各モデルのうち、学習前における目的関数の値と学習後における目的関数の値との間の改善量が最も大きいモデルを同期結果とする
ことを特徴とする請求項２〜４のうちいずれか１つに記載の情報処理装置。
【請求項６】
前記同期部は、前記目的関数の値に応じてモデルの選択を行う遺伝的アルゴリズムを用いて、各モデルの同期を行う
ことを特徴とする請求項２〜４のうちいずれか１つに記載の情報処理装置。
【請求項７】
前記配布部は、前記学習データを用いて前記モデルが有するパラメータの値を修正することで、当該学習データが有する特徴を前記モデルに学習させる複数の演算装置に対し、それぞれ異なる学習データを配布し、
前記同期部は、各モデルのパラメータの値を同期させる
ことを特徴とする請求項１〜６のうちいずれか１つに記載の情報処理装置。
【請求項８】
前記配布部は、新たに配布される学習データを用いて前記同期部により同期されたモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを新たに配布する
ことを特徴とする請求項１〜７のうちいずれか１つに記載の情報処理装置。
【請求項９】
前記配布部は、各演算装置によって前記モデルの学習が行われる度に、各演算装置に対してそれぞれ異なる学習データを新たに配布し、
前記同期部は、前記複数の演算装置により学習が行われたモデルの同期機会を動的に変更する
ことを特徴とする請求項１〜８のうちいずれか１つに記載の情報処理装置。
【請求項１０】
前記同期部は、各演算装置が新たに配布された学習データを用いて前記モデルの学習を行う回数がランダムとなるように、各モデルを同期させる
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記同期部は、各演算装置が実行した学習の結果が所定の条件を満たした場合は、各モデルを同期させる
ことを特徴とする請求項９または１０に記載の情報処理装置。
【請求項１２】
前記同期部は、少なくともいずれかの演算装置により学習が行われたモデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量が所定の条件を満たす場合は、各モデルを同期させる
ことを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記同期部は、前記複数の演算装置のうち、一部の演算装置により学習が行われたモデルの同期を行う
ことを特徴とする請求項１〜１２のうちいずれか１つに記載の情報処理装置。
【請求項１４】
前記同期部は、前記複数の演算装置のうち、通信遅延が所定の範囲内に収まる複数の演算装置により学習が行われたモデルの同期を行う
ことを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
前記同期部は、前記複数の演算装置のうち、ランダムに選択された一部の演算装置により学習が行われたモデルの同期を行う
ことを特徴とする請求項１３に記載の情報処理装置。
【請求項１６】
前記同期部は、前記複数の演算装置のうち、各演算装置が演算可能な情報の次元数と、全ての演算装置に対して配布される学習データの数とに応じた数の演算装置により学習が行われたモデルの同期を行う
ことを特徴とする請求項１３に記載の情報処理装置。
【請求項１７】
情報処理装置が実行する情報処理方法であって、
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する配布工程と、
配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う同期工程と
を含むことを特徴とする情報処理方法。
【請求項１８】
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する配布手順と、
配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う同期手順と
をコンピュータに実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
従来、ＤＮＮ（Deep  Neural  Network）といったモデルを用いた各種の分類処理が実現されている。このようなＤＮＮを用いた分類処理を実現するため、統計的勾配降下法(Stochastic  Gradient  Descent,  SGD)を用いたモデルの学習方法が知られている。例えば、ＣＰＵ（Central  Processing  Unit）やＧＰＵ（Graphics  Processing  Unit）といった演算装置に対してそれぞれ異なる学習データを配布し、配布された学習データを用いて各演算装置にモデルの学習を行わせ、各演算装置の学習結果を同期させる処理を繰り返し行う技術が知られている。また、各演算装置における学習結果の同期処理のコストを軽減するため、各演算装置に学習処理を複数回行わせてから同期を行う技術が知られている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】“Experiments  on  Parallel  Training  of  Deep  Neural  Network  using  Model  Averaging”,  Hang  Su,  Haoyu  Chen,  インターネット<  https://arxiv.org/abs/1507.01239>（平成３１年３月１日検索）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した技術では、モデルの精度を向上させる余地がある。
【０００５】
例えば、上述した技術では、各演算装置がそれぞれ異なる学習データを用いて学習を行ったモデルを同期させるため、最終的に得られるモデルは、全ての学習データを用いて学習が行われたモデルの近似に過ぎなくなる。また、上述した技術では、同期処理の回数が十分ではない場合に、学習データが有する特徴を適切に学習することができなくなる恐れがある。
【０００６】
本願は、上記に鑑みてなされたものであって、複数の演算装置を用いたモデルの学習精度を改善することを目的とする。
【課題を解決するための手段】
【０００７】
本願に係る情報処理装置は、配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する配布部と、配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う同期部とを有することを特徴とする。
【発明の効果】
【０００８】
実施形態の一態様によれば、複数の演算装置を用いたモデルの学習精度を改善することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態に係る情報提供装置が実行する処理の一例を示す図である。
【図２】図２は、実施形態に係る情報提供装置の構成例を示す図である。
【図３】図３は、実施形態に係る第２演算部が有する機能構成の一例を示す図である。
【図４】図４は、実施形態に係る第２演算部が有する機能構成の一例を示す図である。
【図５】図５は、ハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係る情報処理装置、情報処理方法および情報処理プログラムを実施するための形態（以下、「実施形態」と呼ぶ）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法および情報処理プログラムが限定されるものではない。また、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【００１１】
〔１．情報提供装置について〕
まず、図１を用いて、情報処理装置の一例である情報提供装置１０が実行する情報処理方法の一例について説明する。図１は、実施形態に係る情報提供装置が実行する処理の一例を示す図である。図１では、情報提供装置１０が実行する処理として、モデルの学習を行う学習処理と、学習済のモデル（以下、「学習モデル」と記載する場合がある。）を用いて情報の分類を行う分類処理の流れの一例について記載した。
【００１２】
図１に示す情報提供装置１０は、情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。また、図１に示すデータサーバ１００は、各種のデータを管理しており、例えば、サーバ装置やクラウドシステム等により実現される。また、利用者端末２００は、分類処理の結果を利用する利用者により利用される端末装置であり、例えば、ＰＣ（Personal  Computer）やサーバ装置、各種のスマートデバイス等により実現される。
【００１３】
ここで、情報提供装置１０は、データサーバ１００から学習データを取得し、取得した学習データが有する特徴をモデルに学習させる。そして、情報提供装置１０は、利用者端末２００から各種の測定データを取得すると、学習モデルを用いて、測定データが有する特徴に応じた分類処理を実行し、分類結果を利用者端末２００へと提供することとなる。
【００１４】
なお、このような一連の処理において、どのようなデータを学習データとするか、学習データが有するどのような特徴をモデルに学習させるか、どのようなデータを測定データとするか、どのような特徴に基づいた分類を行うかについては、任意の設定が採用可能である。具体的な例を挙げると、情報提供装置１０は、利用者のデモグラフィック属性やサイコグラフィック属性を示す属性情報、閲覧したコンテンツの履歴や取引対象（商品やサービス）の購入履歴、位置履歴等を示す各種履歴情報といった情報を学習データとして取得する。ここで、各学習データに対し、例えば、利用者が選択した広告の種別等を示す情報がラベルとして登録されている場合、情報提供装置１０は、モデルに各種の履歴情報を入力した際に、対応するラベル（すなわち、履歴情報と対応する利用者が選択した広告を示す情報）を示す情報を出力するように、モデルの学習を行う。そして、情報提供装置１０は、測定データとして利用者の各種属性情報を取得すると、取得した属性情報を学習モデルに入力することで、その利用者が選択する可能性が高い広告を推定する。
【００１５】
なお、このようなモデルは、複数のノードをそれぞれ個別の接続係数が設定された接続経路を介して接続したニューラルネットワーク、すなわちＤＮＮにより実現される。なお、モデルは、オートエンコーダやＣＮＮ（Convolutional  Neural  Network）、ＲＮＮ（Recurrent  Neural  Network）やその拡張であるＬＳＴＭ（Long  short-term  memory)）等、任意の構造を有するニューラルネットワークであってよい。
【００１６】
また、情報提供装置１０は、１つの学習データが有する特徴をモデルに学習させる場合、統計的勾配降下法を用いた学習を行うこととなる。例えば、情報提供装置１０は、モデルに対する入力情報と出力情報とに応じた任意の目的関数を設定し、設定した目的関数が所定の条件を満たすように、誤差逆伝播法（Backpropagation）等を用いてモデルが有する接続係数（すなわち、パラメータ）を修正することで、学習データが有する特徴をモデルに学習させることとなる。
【００１７】
なお、情報提供装置１０は、例えば、目的関数が入力情報と出力情報の誤差を示す場合、目的関数の値が小さくなるように、パラメータの修正を行うこととなる。一方、情報提供装置１０は、例えば、目的関数がクロスエントロピーに基づいた値を示す場合、目的関数の値が大きくなるように、パラメータの修正を行う。そこで、以下の説明においては、ある学習データを用いた学習前と学習後とで目的関数が所定の条件を満たす方向に変化した量を「改善量」と記載する場合がある。例えば、目的関数が入力情報と出力情報の誤差を示す場合、学習前の目的関数の値から学習後の目的関数の値を減算した値が「改善量」に対応し、目的関数がクロスエントロピーに基づいた値を示す場合、学習後の目的関数の値から学習前の目的関数の値を減算した値が「改善量」に対応する。
【００１８】
〔１−１．ミニバッチ学習とモデル平均法について〕
ここで、情報提供装置１０が実行する学習処理の説明に先駆けて、ミニバッチ学習の概要について説明する。例えば、情報提供装置１０は、ミニバッチ学習を用いた学習処理を実行する場合、Ｎ個の全学習データからランダムに選択されたＭ個のデータをミニバッチとし、ミニバッチごとにモデルのパラメータの更新を行う。
【００１９】
ここで、このようなミニバッチ学習を並列に実行することで、学習を高速化する手法が考えられる。例えば、ＣＰＵやＧＰＵ、若しくはそれらのコアといった複数の演算装置のそれぞれに対して、それぞれ異なるミニバッチを配布し、各演算装置ごとに独立したモデルの学習処理を実行させる。そして、各演算装置による学習結果を同期させ、新たなミニバッチの配布を繰り替えす手法が考えられる。例えば、各演算装置により学習されたモデルのパラメータの平均値を用いて新たなモデルを生成し、各演算装置に新たなモデルを配布し、それぞれ異なるミニバッチを用いて再度学習処理を実行させる。
【００２０】
このようなミニバッチ学習を行った場合、演算装置の数をＫ個とすると、学習処理に要する時間のうち各モデルの修正量の計算に要する時間を１／Ｋに短縮することが期待される。しかしながら、このようなミニバッチ学習では、各演算装置間で通信を行うことにより、各演算装置が独自に学習したモデルの同期を行う。このため、全学習データをＮ個、ミニバッチに含まれる学習データの数をＭ個とすると、１つのミニバッチごとに全演算装置の同期を行った場合は、Ｎ／Ｍ回の同期処理がオーバーヘッドとして処理時間に加わることとなる。
【００２１】
このような同期処理のオーバーヘッドを削減するため、ミニバッチ学習が所定回数行われる度に同期処理を行うモデル平均法が知られている。例えば、情報提供装置１０は、モデル平均法でモデルの学習を行う場合、ミニバッチの学習が行われる度に同期処理を実行するのではなく、各演算装置に対して所定の回数（例えば、Ｆ回）、ミニバッチ学習を行わせた後に、各演算装置のモデルを同期させる。このような処理を実行した場合、同期回数がＮ／（Ｍ×Ｆ）となるので、同期処理のオーバーヘッドを１／Ｆに削減することができる。
【００２２】
〔１−２．学習処理について〕
しかしながら、上述したモデル平均法では、同期処理を減らしたことによりモデルの識別精度が劣化する恐れがある。また、ミニバッチ学習により最終的に得られるモデルは、それぞれ異なる学習データの特徴を学習したモデルの平均となるので、単一のモデルに対して全学習データを１つずつ入力し、学習データを入力する度に目的関数が改善するようにパラメータを修正したモデルの近似に過ぎない。このため、ミニバッチ学習やモデル平均法には、モデルの精度を向上させる余地があると言える。
【００２３】
そこで、情報提供装置１０は、以下の学習処理を実行する。まず、情報提供装置１０は、配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する。そして、情報提供装置１０は、配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う。すなわち、情報提供装置１０は、単にモデルの単純平均を同期結果とするのではなく、各演算装置によるモデルの学習結果に応じて適用的にモデルの同期を行う。
【００２４】
例えば、改善量が大きいモデルは、学習データが有する特徴を適切に学習したモデルであると言える。このため、各演算装置が学習したモデルのうち、改善量が大きいモデルのパラメータは、最終的なモデルの精度に対して大きく寄与すると考えられる。そこで、情報提供装置１０は、改善量が大きいモデル程重要視されるようにモデルの同期を行う。すなわち、情報提供装置１０は、改善量が大きいモデルほど、より大きい重みを適用した状態で、各モデルを統合したモデルを同期結果として生成する。このような処理の結果、例えば、情報提供装置１０は、より改善量が大きいモデル、すなわち、最終的なモデルの精度をより高くすると推定されるモデルを優先的に用いた同期結果を生成することができるので、最終的に生成されるモデルの精度を向上させることができる。
【００２５】
また、情報提供装置１０は、学習処理におけるモデルの同期タイミングを動的に変更する。例えば、情報提供装置１０は、各演算装置が新たに配布された学習データを用いてモデルの学習を行う回数がランダムとなるように、各モデルを同期させる。より具体的には、情報提供装置１０は、区間［１，Ｆ］内における整数乱数を生成し、生成した乱数が示す回数のミニバッチ学習が行われた後で、各モデルの同期を行う。このような処理の結果、情報提供装置１０は、最終的に生成されるモデルの目的関数が極小値に陥る可能性を軽減することができるので、同期処理のオーバーヘッドを削減しつつ、最終的に生成されるモデルの精度を向上させることができると考えられる。
【００２６】
〔１−３．情報提供装置が実行する処理の流れの一例について〕
以下、図１を用いて、情報提供装置１０が実行する処理の流れの一例を説明する。なお、以下の説明では、演算装置として、ＧＰＵ＃１〜＃ＫまでのＫ個のＧＰＵを並列に用いてモデルの学習を行う例について説明する。まず、情報提供装置１０は、データサーバ１００から学習データを取得する（ステップＳ１）。このような場合、情報提供装置１０は、学習データを学習データデータベース３１に登録する。そして、情報提供装置１０は、ミニバッチ学習において各ＧＰＵにより学習が行われたモデルの同期タイミングを動的に変動させる（ステップＳ２）。
【００２７】
例えば、情報提供装置１０は、学習データデータベース３１からランダムに学習データ＃１−１〜＃１−Ｍを抽出する。続いて、情報提供装置１０は、抽出した学習データをＫ個のミニバッチに分割し、各ミニバッチをＧＰＵ＃１〜＃Ｋに配布する。すなわち、情報提供装置１０は、Ｍ／Ｋ個の学習データをミニバッチとして各ＧＰＵ＃１〜＃Ｋに配布する。換言すると、情報提供装置１０は、それぞれ異なる学習データを各演算装置に対して配布する。
【００２８】
ここで、各ＧＰＵ＃１〜＃Ｋは、配布された学習データを用いて、モデルの学習を行う。すなわち、各ＧＰＵ＃１〜＃Ｋは、配布されたミニバッチを用いたミニバッチ学習を実行する。例えば、ＧＰＵ＃１は、学習対象となるモデルのコピーをＭ／Ｋ個だけ生成し、生成した各コピーに対してそれぞれ異なる学習データを入力する。そして、ＧＰＵ＃１は、コピーした各モデルの目的関数が改善するように、各モデルのパラメータを修正し、修正後のパラメータを統合したモデルを１回目の学習結果とする。例えば、ＧＰＵ＃１は、修正された各モデルのパラメータの平均値を学習結果となるモデルのパラメータとしてもよい。なお、ＧＰＵ＃１は、モデルのコピーを行わずに、Ｍ／Ｋ個の学習データを用いて、１つのモデルの学習を行ってもよい。また、他のＧＰＵ＃２〜＃Ｋも同様に、各ＧＰＵ＃１〜＃Ｋに対して個別に配布された学習データを用いたミニバッチ学習を実行する。
【００２９】
ここで、情報提供装置１０は、ミニバッチ学習が行われる度に、各ＧＰＵ＃１〜＃Ｋの学習結果を同期させるのではなく、ランダムな回数でミニバッチ学習が行われる度に、各ＧＰＵ＃１〜＃Ｋの学習結果を同期させる。例えば、情報提供装置１０は、所定の範囲内の乱数を生成し、例えば、生成された乱数が「３」である場合は、ミニバッチ学習を３回実行させる。
【００３０】
例えば、情報提供装置１０は、学習データ＃１−１〜＃１−ＭをＫ個のミニバッチ＃１−１〜＃１−Ｋに分割し、各ミニバッチ＃１−１〜＃１−Ｋをそれぞれ個別のＧＰＵ＃１〜＃Ｋに配布して１回目のミニバッチ学習を実行させる。続いて、情報提供装置１０は、各ＧＰＵ＃１〜＃Ｋのモデルを同期させることなく、新たな学習データ＃２−１〜＃２−Ｍを学習データデータベース３１から抽出し、抽出した学習データ＃２−１〜＃２−ＭをＫ個のミニバッチ＃２−１〜＃２−Ｋに分割する。そして、情報提供装置１０は、各ミニバッチ＃２−１〜＃２−Ｋをそれぞれ個別のＧＰＵ＃１〜＃Ｋに配布して２回目のミニバッチ学習を実行させる。同様に、情報提供装置１０は、新たなミニバッチ＃３−１〜＃３−Ｋを生成し、それぞれ個別のＧＰＵ＃１〜＃Ｋに配布して３回目のミニバッチ学習を実行させる。そして、情報提供装置１０は、ミニバッチ学習を３回実行させた場合は、各ＧＰＵ＃１〜＃Ｋのモデルを同期させる。
【００３１】
続いて、情報提供装置１０は、新たな乱数を生成し、例えば、生成された乱数が「１」である場合は、各ＧＰＵ＃１〜＃Ｋに対して４回目のミニバッチ学習を実行させる。そして、情報提供装置１０は、４回目のミニバッチ学習の後に、各ＧＰＵ＃１〜＃Ｋのモデルを同期させる。このように、情報提供装置１０は、各ＧＰＵ＃１〜＃Ｋが実行するミニバッチ学習の回数がランダムとなるように、モデルの同期を実行する。すなわち、情報提供装置１０は、各ＧＰＵ＃１〜＃Ｋのモデルの同期タイミングをランダムに変更する。
【００３２】
すなわち、情報提供装置１０は、学習データを用いてモデルが有するパラメータの値を修正することで、学習データが有する特徴をモデルに学習させる複数の演算装置に対し、それぞれ異なる学習データを配布する。そして、情報提供装置１０は、ランダムなタイミングで各モデルのパラメータの値を同期させ、各演算装置に新たな学習データを配布することで、新たに配布される学習データを用いて同期されたモデルの学習を行う処理を繰り返し実行する。
【００３３】
ここで、情報提供装置１０は、各ＧＰＵ＃１〜＃Ｋのモデルを同期させる場合、各モデルの目的関数の改善量に基づいた重みを適用して、各モデルのパラメータを合成したモデルに同期させる（ステップＳ３）。例えば、３回目のミニバッチ学習後にモデルの同期を行う場合、情報提供装置１０は、各モデルの目的関数の改善量を算出する。例えば、情報提供装置１０は、ＧＰＵ＃１が２回目のミニバッチ学習で生成したモデル＃１−２の目的関数の値と、３回目のミニバッチ学習で生成したモデル＃１−３の目的関数の値とから改善量＃１を算出する。同様に、情報提供装置１０は、ＧＰＵ＃２〜＃Ｋが２回目のミニバッチ学習で生成したモデル＃２−２〜＃Ｋ−２の目的関数の値と、３回目のミニバッチ学習で生成したモデル＃２−３〜＃Ｋ−３の目的関数の値とから改善量＃２〜＃Ｋを算出する。
【００３４】
そして、情報提供装置１０は、各改善量＃１〜＃Ｋの値に基づいた重み＃１〜＃Ｋを設定する。例えば、情報提供装置１０は、各改善量＃１〜＃Ｋの和で改善量＃１〜＃Ｋの値をそれぞれ除算した値を重み＃１〜＃Ｋとしてもよい。また、情報提供装置１０は、改善量の値が大きいモデルほど、より大きい重みとなるように、各重み＃１〜＃Ｋを設定するのであれば、任意の方式により算出される重み＃１〜＃Ｋを設定して良い。
【００３５】
続いて、情報提供装置１０は、各重み＃１〜＃Ｋを用いて、各モデル＃１−３〜＃Ｋ−３を統合する。例えば、情報提供装置１０は、モデル＃１−３のパラメータに重み＃１を積算した値を算出する。同様に、情報提供装置１０は、各モデル＃２−３〜＃Ｋ−３のパラメータに対して、それぞれ個別の重み＃２〜＃Ｋを積算した値を算出する。そして、情報提供装置１０は、算出した値を合計することで、各モデル＃１−３〜＃Ｋ−３を統合したモデル＃Ｘ−４のパラメータを生成する。
【００３６】
その後、情報提供装置１０は、モデル＃Ｘ−４を４回目の学習を行うモデルとして各ＧＰＵ＃１〜＃Ｋに配布する。この結果、各ＧＰＵ＃１〜＃Ｋは、モデル＃Ｘ−４に対し、それぞれ異なるミニバッチを用いたミニバッチ学習を実行することとなる。
【００３７】
また、情報提供装置１０は、所定の条件を満たすまで、新たな学習データを用いた学習を繰り返し実行する。そして、情報提供装置１０は、所定の条件が満たされた場合は、最終的な各モデルを統合した学習モデルを生成する（ステップＳ４）。例えば、情報提供装置１０は、学習データデータベース３１に登録された全ての学習データを用いたミニバッチ学習が行われるまで、学習処理を繰り返し実行する。そして、情報提供装置１０は、全ての学習データを用いたミニバッチ学習が完了した場合は、各ＧＰＵ＃１〜＃Ｋのモデルを同期させる。例えば、情報提供装置１０は、各モデルのパラメータの平均を取ってもよく、各モデルの目的関数の値の改善量に応じた重みを考慮した統合を行ってもよい。
【００３８】
そして、情報提供装置１０は、生成した学習モデルを用いた分類処理を実行する。例えば、情報提供装置１０は、利用者端末２００から測定データを取得する（ステップＳ５）。このような場合、情報提供装置１０は、測定データを学習モデルに入力し、学習モデルが出力した情報に基づいた分類結果を利用者端末２００に提供する（ステップＳ６）。なお、情報提供装置１０は、分類結果そのものの提供ではなく、例えば、分類結果に応じたコンテンツ配信等、分類結果に応した情報配信を行ってもよい。また、情報提供装置１０は、分類結果を利用者端末２００ではなく、利用者端末２００に対して各種サービスを提供するサービス提供サーバに提供してもよい。このような場合、サービス提供サーバは、分類結果に応じた内容のサービスを利用者端末２００に対して提供することとなる。
【００３９】
〔１−４．同期タイミングについて〕
上述した説明では、情報提供装置１０は、ランダムなタイミングで各演算装置（すなわち、ＧＰＵ）によりミニバッチ学習が行われたモデルの同期を行った。しかしながら、実施形態は、これに限定されるものではない。情報提供装置１０は、モデルの同期タイミングを動的に変更するのであれば、任意の指標に基づいて、モデルの同期タイミングを決定して良い。
【００４０】
例えば、情報提供装置１０は、各演算装置が実行した学習の結果が所定の条件を満たした場合は、各モデルを同期させてもよい。例えば、情報提供装置１０は、少なくともいずれかの演算装置により学習が行われたモデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量が所定の条件を満たす場合は、各モデルを同期させてもよい。
【００４１】
より具体的な例を挙げると、情報提供装置１０は、各モデルの目的関数の改善量を取得し、改善量が所定の閾値を超えたモデルの数を計数する。そして、情報提供装置１０は、計数した数が所定の閾値を超える場合は、各モデルの同期を行わせてもよい。例えば、情報提供装置１０は、改善量が所定の閾値を超えたモデルが１つでも存在する場合は、各モデルを同期させてもよい。例えば、情報提供装置１０は、改善量が所定の閾値を超えたモデルの重みを、他のモデルの重みよりも大きい値に設定し、各モデルの統合を行ってもよい。
【００４２】
また、情報提供装置１０は、改善量の累積に応じた同期タイミングを設定してもよい。例えば、情報提供装置１０は、ミニバッチ学習を行う度に各モデルの改善量の累積を算出し、累積が所定の閾値を超えたモデルの数が所定の閾値を超えた場合に、同期を行ってもよい。また、情報提供装置１０は、全モデルの改善量の累積が所定の閾値を超えた場合に、同期を行ってもよい。また、情報提供装置１０は、同期を行う度に改善量の閾値をランダムに変更してもよい。
【００４３】
なお、情報提供装置１０は、改善量が所定の閾値を超えたモデルの数が所定の閾値を超えないように、同期を行ってもよい。例えば、情報提供装置１０は、改善量の履歴や累積等に基づいて、次回のミニバッチ学習を行った際に改善量が所定の閾値を超えるモデルの数が所定の閾値を超えるか否かを推定し、超えると推定された場合は、同期を行ってもよい。
【００４４】
〔１−５．同期手法について〕
上述した説明では、情報提供装置１０は、各モデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量に応じた重みを考慮して、各モデルのパラメータの荷重和を算出し、算出したパラメータの荷重和を同期後のモデルのパラメータとした。しかしながら、実施形態は、これに限定されるものではない。
【００４５】
例えば、情報提供装置１０は、各演算装置により学習が行われたモデルの目的関数の値に応じた態様で、各モデルの同期を行うのであれば、任意の処理を実行してもよい。例えば、情報提供装置１０は、目的関数の値が所定の閾値を超えたモデル（若しくは、目的関数の値が所定の閾値を下回ったモデル）のみを抽出し、抽出したモデルのパラメータの平均若しくは荷重和を同期結果としてもよい。
【００４６】
また、情報提供装置１０は、各モデルの目的関数の値に応じた重みを考慮して、各モデルを統合したモデルを同期結果としてもよい。すなわち、情報提供装置１０は、改善量ではなく、目的関数の値そのものに応じた重みを考慮してもよい。例えば、情報提供装置１０は、各モデルの目的関数の値が低ければ低いほど（若しくは、高ければ高いほど）、より大きい値の重みを設定してもよい。
【００４７】
また、情報提供装置１０は、目的関数の値が最も小さい（若しくは、最も大きい）モデルを特定し、特定したモデルを同期結果として各演算装置に配布してもよい。また、情報提供装置１０は、目的関数の改善量が最も大きいモデルを特定し、特定したモデルを同期結果として各演算装置に配布してもよい。
【００４８】
また、情報提供装置１０は、目的関数の値に応じてモデルの選択を行う遺伝的アルゴリズムを用いて、各モデルの同期を行ってもよい。例えば、情報提供装置１０は、各モデルの目的関数の値若しくは目的関数の改善量を各モデルの適応度とし、適応度に応じた確率で選択されたモデルのコピー、交叉、もしくは突然変異（以下、「操作」と記載する場合がある。）を実行することで、次世代のモデルを生成する。例えば、情報提供装置１０は、２つのモデルを選択し、選択したモデルのパラメータをランダムに交叉させてもよく、選択したモデルのパラメータをランダムに変更してもよい。このような処理を実行することで、情報提供装置１０は、ｎ回目のミニバッチ学習が行われたＫ個のモデルから、ｎ＋１回目のミニバッチ学習の対象となる新たなＫ個のモデルを生成し、生成したＫ個のモデルを各演算装置に配布してもよい。また、情報提供装置１０は、各種任意の遺伝的アルゴリズムに基づいた態様で、モデルの同期を行ってもよい。
【００４９】
なお、情報提供装置１０は、目的関数以外にも、各演算装置における学習の結果に応じて、各モデルの同期態様を適応的に変更するのであれば、任意の態様でモデルを同期させてよい。例えば、情報提供装置１０は、各演算装置がミニバッチ学習に要した時間に応じた重みを考慮して、各モデルのパラメータの荷重和を算出してもよく、時間に応じた確率で遺伝的アルゴリズムにおける各種操作の対象となるモデルの選択をおこなってよい。
【００５０】
〔１−６．同期対象について〕
なお、情報提供装置１０は、全ての演算装置により学習が行われたモデルの同期を行わずともよい。例えば、情報提供装置１０は、複数の演算装置のうち、一部の演算装置により学習が行われたモデルの同期を行ってもよい。例えば、情報提供装置１０は、ＧＰＵ＃１〜＃１０、ＧＰＵ＃１１〜＃２０というように、各演算装置を所定数ずつのグループに分割し、グループごとの同期を行ってもよい。例えば、情報提供装置１０は、全ての演算装置により学習が行われたモデルのうち目的関数の改善量が所定の閾値を超えたモデルが存在する場合は、そのモデルの学習を行った演算装置を含むグループ内でのみ、モデルの同期を行ってもよい。なお、このような処理を行う場合、同期対象とならなかった演算装置は、前回のミニバッチ学習の結果となるモデルの学習を継続して行うこととなる。
【００５１】
また、情報提供装置１０は、複数の演算装置のうち、通信遅延が所定の範囲内に収まる複数の演算装置により学習が行われたモデルの同期を行ってもよい。例えば、情報提供装置１０は、物理的に近傍に配置された所定の数の演算装置により学習が行われたモデルを同期対象としてもよい。
【００５２】
また、情報提供装置１０は、複数の演算装置のうち、ランダムに選択された一部の演算装置により学習が行われたモデルの同期を行ってもよい。例えば、情報提供装置１０は、演算装置の中からランダムに選択した所定の数の演算装置により学習が行われたモデルのみを同期対象としてもよい。また、情報提供装置１０は、目的関数の値や改善量が所定の閾値を超えたモデルと、ランダムに選択された所定の数の演算装置により学習が行われたモデルのみを同期対象としてもよい。
【００５３】
また、情報提供装置１０は、複数の演算装置のうち、各演算装置が演算可能な情報の次元数と、全ての演算装置に対して配布される学習データの数とに応じた数の演算装置により学習が行われたモデルの同期を行ってもよい。すなわち、情報提供装置１０は、各演算装置の性能や各演算装置の数、全学習データの数、ミニバッチとする学習データの数等に応じて、効率的に学習を行うことができると推定される数のモデルを同期対象としてもよい。
【００５４】
〔１−７．演算装置について〕
なお、上述した例では、演算装置として、複数のＧＰＵを用いる処理について記載したが、実施形態は、これに限定されるものではない。例えば、情報提供装置１０は、複数のＣＰＵに対して上述した学習処理を適用してもよく、例えば、１つ又は複数のコンピュータクラスタを１つの演算装置とみなし、このようなコンピュータクラスタをネットワークで接続したシステムに対して、上述した学習処理を適用してもよい。また、情報提供装置１０は、１つのＣＰＵやＧＰＵに含まれる複数のコアを演算装置と見做して上述した学習処理を実行してもよい。また、情報提供装置１０は、１つ若しくは複数のグラフィックカード上に配置されたＧＰＵやＧＰＵコアを演算装置と見做してもよい。また、情報提供装置１０は、複数のＣＰＵやＧＰＵを１つの演算装置と見做してもよく、これらのＣＰＵやＧＰＵに含まれる１つ若しくは複数のコアを１つの演算装置と見做してもよい。
【００５５】
また、情報提供装置１０は、上述した演算装置を自装置の筐体内に有していてもよく、異なる筐体内に有していてもよい。例えば、情報提供装置１０は、各種のネットワークを介して接続されたサーバ装置内にある演算装置を用いて、上述した学習処理を実行してもよい。
【００５６】
すなわち、情報提供装置１０は、個別にモデルの学習を実行可能な装置を演算装置と見做して、上述した学習処理を実行するのであれば、任意の装置を演算装置と見做してもよい。なお、各演算装置が独立した記憶装置を有する必要はなく、例えば、各演算装置若しくは一部の演算装置は、メモリやレジスタ等の記憶装置を共用するものであってもよい。また、各演算装置は、例えば、所謂仮想マシン（Virtual  Machine）であってもよい。
【００５７】
〔１−８．実行主体について〕
なお、上述した学習処理は、任意の実行主体により実行されてよい。例えば、情報提供装置１０は、各演算装置とは別に、各演算装置の制御を行う制御装置を有してもよい。このような場合、かかる制御装置が、学習データの配布および同期を行ってもよい。また、同期タイミングの決定やモデルの同期処理については、各演算装置が協調して動作することで、実現されてもよい。
【００５８】
〔１−９．同期タイミングと同期手法の関係性について〕
また、情報提供装置１０は、上述した同期タイミングの動的な変更と、学習結果に応じたモデルの同期とをそれぞれ独立して実行してもよく、関連付けて実行してもよい。例えば、情報提供装置１０は、動的に同期タイミングを変更する場合、モデルの同期については、単純平均を算出することで実現してもよい。また、情報提供装置１０は、学習結果に応じた態様でモデルを同期させる場合、同期タイミングについては、動的に変化させる必要はない。
【００５９】
また、例えば、情報提供装置１０は、同期処理を実行する度に、同期態様を変更してもよい。例えば、情報提供装置１０は、同期処理を実行する度に、単純な平均によりモデルを同期する手法、改善量に応じた重みを採用する手法、改善量が最も大きいモデルを同期結果とする手法等、複数の手法の中から、ランダム若しくは学習結果に応じた確率でいずれかの手法を選択し、選択した手法によりモデルの同期を行ってもよい。また、情報提供装置１０は、前回採用した同期手法に応じた同期タイミングで同期を行ってもよい。例えば、情報提供装置１０は、単純な平均によりモデルを同期した場合は、いずれかのモデルの改善量が所定の閾値を超えた場合に次の同期を行い、改善量に応じた重みを採用する手法によりモデルを同期させた場合は、次に同期するまでのミニバッチ学習の回数をランダムに選択してもよい。
【００６０】
〔２．機能構成の一例〕
以下、上記した学習処理を実現する情報提供装置１０が有する機能構成の一例について説明する。図２は、実施形態に係る情報提供装置の構成例を示す図である。図２に示すように、情報提供装置１０は、通信部２０、記憶部３０、第１演算部４０および第２演算部５０を有する。
【００６１】
通信部２０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。そして、通信部２０は、ネットワークＮと有線または無線で接続され、例えば、データサーバ１００や利用者端末２００との間で情報の送受信を行う。
【００６２】
記憶部３０は、例えば、ＲＡＭ（Random  Access  Memory)、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部３０は、学習データデータベース３１およびモデルデータベース３２を記憶する。
【００６３】
学習データデータベース３１は、学習データが登録される。例えば、学習データデータベース３１には、データサーバ１００から取得した各種の学習データが登録される。また、モデルデータベース３２には、上述した学習処理によって学習が行われた学習モデルのデータが登録される。
【００６４】
第１演算部４０は、コントローラ（controller）であり、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等のプロセッサによって、情報提供装置１０内部の記憶装置に記憶されている各種プログラムがＲＡＭ等を作業領域として実行されることにより実現される。また、第１演算部４０は、コントローラ（controller）であり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されてもよい。
【００６５】
図２に示すように、第１演算部４０は、学習制御部４１および情報提供部４２を有する。学習制御部４１は、第２演算部５０を制御することで、上述した学習処理を実行する。例えば、学習制御部４１は、データサーバ１００から学習データを取得し、取得した学習データを学習データデータベース３１に登録する。また、学習制御部４１は、学習データデータベース３１に登録された学習データを第２演算部５０に提供し、上述した学習処理を実行させることで、学習モデルを取得する。そして、学習制御部４１は、学習モデルをモデルデータベース３２に登録する。
【００６６】
情報提供部４２は、学習モデルを用いた測定データの分類結果を提供する。例えば、情報提供部４２は、利用者端末２００から測定データを取得すると、モデルデータベース３２から学習モデルを読み出し、読み出した学習モデルに測定データを入力する。そして、情報提供部４２は、学習モデルが出力した分類結果に応じた情報を利用者端末２００等に出力する。
【００６７】
第２演算部５０は、複数の演算装置を有する情報処理ユニットであり、例えば、複数のＧＰＵやＧＰＵコアが配置されたグラフィックカード、若しくは、複数のグラフィックカードにより実現される。例えば、第２演算部５０は、演算部５１、および演算制御部５２を有する。
【００６８】
ここで、図３は、実施形態に係る第２演算部が有する機能構成の一例を示す図である。図３に示すように、演算部５１は、複数の演算装置を有する。なお、各演算装置は、例えば、ＧＰＵ若しくはＧＰＵのコアであり、配布された学習データのミニバッチを用いて、モデルの学習を行う。すなわち、各演算装置は、それぞれ独自にモデルを保持し、配布された学習データを用いてモデルが有するパラメータの値を修正することで、学習データが有する特徴をモデルに学習させる。
【００６９】
また、演算制御部５２は、配布部５２１と同期部５２２とを有する。なお、配布部５２１と同期部５２２は、第２演算部５０が情報提供装置１０内部の記憶装置に記憶されている各種プログラムがＲＡＭ等を作業領域として実行されることにより実現されることとなる。なお、演算制御部５２は、例えば、演算部５１が有する演算装置のうちいずれかにより実現されてもよい。
【００７０】
ここで、配布部５２１は、配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する。例えば、配布部５２１は、演算部５１に演算装置がＫ個存在する場合、学習データからランダムに選択されたＭ個のデータをＫ個に分割したミニバッチを生成する。そして、配布部５２１は、生成したミニバッチをそれぞれ異なる演算装置へと配布することで、各演算装置にミニバッチ学習を実行させる。また、配布部５２１は、各演算装置がそれぞれミニバッチ学習を実行した場合は、新たなＭ個の学習データからＫ個のミニバッチを生成し、生成したミニバッチを再度各演算装置へと配布する。
【００７１】
同期部５２２は、配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う。より具体的には、同期部５２２は、各モデルのパラメータの値を同期させ、同期後のパラメータの値を各演算装置に配布する。すなわち、同期部５２２は、同期結果となるモデルを各演算装置に配布し、ミニバッチ学習を継続させる。
【００７２】
また、同期部５２２は、複数の演算装置により学習が行われたモデルの同期機会を動的に変更する。例えば、同期部５２２は、各演算装置が新たに配布された学習データを用いて前記モデルの学習を行う回数がランダムとなるように、各モデルを同期させる。より具体的には、同期部５２２は、ランダムに選択された回数、各演算装置がミニバッチ学習を実行した場合は、各演算装置により学習が行われたモデルの目的関数の値に応じた態様で、各モデルの同期を行う。そして、同期部５２２は、再度、ランダムに選択された回数、各モデルのミニバッチ学習を実行させる。
【００７３】
例えば、同期部５２２は、各演算装置がミニバッチ学習を実行した場合は、各演算装置が個別に学習を行ったモデルの目的関数の値を特定し、特定した目的関数の値に応じた重みを考慮して、各モデルを統合したモデルを同期結果とする。例えば、同期部５２２は、各モデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量に応じた重みを考慮して、各モデルを統合したモデルを同期結果としてもよい。そして、同期部５２２は、同期結果となるモデルを各演算装置に配布し、再度ミニバッチ学習を実行させる。
【００７４】
なお、同期部５２２は、各モデルのうち、学習前における目的関数の値と学習後における目的関数の値との間の改善量が最も大きいモデルを同期結果として各演算装置に配布してもよい。また、同期部５２２は、目的関数の値に応じてモデルの選択を行う遺伝的アルゴリズムを用いて、各モデルの同期を行ってもよい。
【００７５】
また、同期部５２２は、各演算装置が実行した学習の結果が所定の条件を満たした場合に、各モデルを同期させてもよい。例えば、同期部５２２は、ミニバッチ学習の度に各演算装置のモデルの目的関数の値を改善量を取得し、少なくともいずれかのモデルの改善量が所定の条件を満たす場合は、各モデルを同期させてもよい。
【００７６】
また、同期部５２２は、複数の演算装置のうち、一部の演算装置により学習が行われたモデルの同期を行ってもよい。例えば、同期部５２２は、複数の演算装置のうち、通信遅延が所定の範囲内に収まる複数の演算装置により学習が行われたモデルの同期を行ってもよい。また、同期部５２２は、複数の演算装置のうち、ランダムに選択された一部の演算装置により学習が行われたモデルの同期を行ってもよい。
【００７７】
また、同期部５２２は、複数の演算装置のうち、各演算装置が演算可能な情報の次元数と、全ての演算装置に対して配布される学習データの数とに応じた数の演算装置により学習が行われたモデルの同期を行ってもよい。すなわち、同期部５２２は、各演算装置の性能や学習データの数等に応じて、同期対象とする演算装置の数を動的に変更してもよい。
【００７８】
また、同期部５２２は、全ての学習データを配布した場合や、各モデルの改善量が継続して変化しなかった場合は、学習終了条件が満たされたと判定し、各モデルを統合した学習モデルを生成する。そして、同期部５２２は、学習モデルを第１演算部４０に出力する。
【００７９】
〔３．情報提供装置が実行する処理の流れについて〕
次に、図４を用いて、情報提供装置１０が実行する処理の流れの一例について説明する。図４は、実施形態に係る情報提供装置が実行する処理の流れの一例を示すフローチャートである。
【００８０】
例えば、情報提供装置１０は、未配布の学習データからＭ個のデータをランダムに抽出する（ステップＳ１０１）。続いて、情報提供装置１０は、抽出したＭ個のデータをＫ個のグループに分割し、各グループのデータをそれぞれ異なる演算ユニットに配布する（ステップＳ１０２）。そして、情報提供装置１０は、所定の学習終了条件を満たすか否かを判定する（ステップＳ１０３）。
【００８１】
ここで、情報提供装置１０は、学習終了条件が満たされないと判定した場合は（ステップＳ１０３：Ｎｏ）、各モデルの目的関数が所定の同期条件を満たすか否かを判定し（ステップＳ１０４）、満たすと判定した場合は（ステップＳ１０４：Ｙｅｓ）、各モデルの目的関数の改善値に応じた重みで、各モデルを同期させたモデルを生成する（ステップＳ１０５）。そして、情報提供装置１０は、各演算ユニットに新たなモデルを配布し（ステップＳ１０６）、ステップＳ１０１を再度実行する。また、情報提供装置１０は、各モデルの目的関数が所定の同期条件を満たさないと判定した場合も（ステップＳ１０４：Ｎｏ）、ステップＳ１０１を再度実行する。
【００８２】
そして、情報提供装置１０は、学習終了条件が満たされると判定した場合は（ステップＳ１０３：Ｙｅｓ）、各演算ユニットのモデルを同期させた学習モデルを生成し（ステップＳ１０７）、処理を終了する。
【００８３】
〔４．変形例〕
上記では、情報提供装置１０による処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、情報提供装置１０が実行する処理のバリエーションについて説明する。
【００８４】
〔４−１．装置構成〕
記憶部３０に登録された各データベース３１、３２は、外部のストレージサーバに保持されていてもよく、また、第１演算部４０や第２演算部５０が個別に保持する各種の記憶装置内に保持されていてもよい。また、情報提供装置１０は、第２演算部５０を筐体内に有する必要はなく、例えば、外付けの筐体内に有していてもよい。また、情報提供装置１０は、複数の第２演算部５０を有し、各第２演算部５０が有する演算装置を統合的に用いた学習処理を実行してもよい。
【００８５】
〔４−２．その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、逆に、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【００８６】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【００８７】
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００８８】
〔４−３．プログラム〕
また、上述した実施形態に係る情報提供装置１０は、例えば図５に示すような構成のコンピュータ１０００によって実現される。図５は、ハードウェア構成の一例を示す図である。コンピュータ１０００は、出力装置１０１０、入力装置１０２０と接続され、第１演算装置１０３０、第２演算装置１０３１、一次記憶装置１０４０、二次記憶装置１０５０、出力ＩＦ（Interface）１０６０、入力ＩＦ１０７０、ネットワークＩＦ１０８０がバス１０９０により接続された形態を有する。
【００８９】
第１演算装置１０３０は、一次記憶装置１０４０や二次記憶装置１０５０に格納されたプログラムや入力装置１０２０から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置１０４０は、ＲＡＭ等、第１演算装置１０３０が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置１０５０は、第１演算装置１０３０が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ＲＯＭ(Read  Only  Memory)、ＨＤＤ（Hard  Disk  Drive）、フラッシュメモリ等により実現される。
【００９０】
第２演算装置１０３１は、上述したモデルの学習を行う演算装置、すなわち、複数のコアを有する。例えば、第２演算装置１０３１は、ＧＰＵが設置されたグラフィックカード等により実現される。
【００９１】
出力ＩＦ１０６０は、モニタやプリンタといった各種の情報を出力する出力装置１０１０に対し、出力対象となる情報を送信するためのインタフェースであり、例えば、ＵＳＢ（Universal  Serial  Bus）やＤＶＩ（Digital  Visual  Interface）、ＨＤＭＩ（登録商標）（High  Definition  Multimedia  Interface）といった規格のコネクタにより実現される。また、入力ＩＦ１０７０は、マウス、キーボード、およびスキャナ等といった各種の入力装置１０２０から情報を受信するためのインタフェースであり、例えば、ＵＳＢ等により実現される。
【００９２】
なお、入力装置１０２０は、例えば、ＣＤ（Compact  Disc）、ＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置１０２０は、ＵＳＢメモリ等の外付け記憶媒体であってもよい。
【００９３】
ネットワークＩＦ１０８０は、ネットワークＮを介して他の機器からデータを受信して第１演算装置１０３０へ送り、また、ネットワークＮを介して第１演算装置１０３０が生成したデータを他の機器へ送信する。
【００９４】
第１演算装置１０３０は、出力ＩＦ１０６０や入力ＩＦ１０７０を介して、出力装置１０１０や入力装置１０２０の制御を行う。例えば、第１演算装置１０３０は、入力装置１０２０や二次記憶装置１０５０からプログラムを一次記憶装置１０４０上にロードし、ロードしたプログラムを実行する。
【００９５】
例えば、コンピュータ１０００が情報提供装置１０として機能する場合、コンピュータ１０００の第１演算装置１０３０は、一次記憶装置１０４０上にロードされたプログラムまたはデータを実行することにより、第１演算部４０の機能を実現し、第２演算装置１０３１は、一次記憶装置１０４０上にロードされたプログラムまたはデータを実行することにより、第２演算部５０として動作する。コンピュータ１０００の第１演算装置１０３０および第２演算装置１０３１は、これらのプログラムまたはデータを一次記憶装置１０４０から読み取って実行するが、他の例として、他の装置からネットワークＮを介してこれらのプログラムを取得してもよい。
【００９６】
〔５．効果〕
上述したように、情報提供装置１０は、配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する。そして、情報提供装置１０は、配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う。このような処理の結果、情報提供装置１０は、より適切な学習が行われたモデルを重視した同期を実現するので、複数の演算装置を用いたモデルの学習精度を改善することができる。
【００９７】
また、情報提供装置１０は、各演算装置により学習が行われたモデルの目的関数の値に応じた態様で、各モデルの同期を行う。例えば、情報提供装置１０は、各モデルの目的関数の値に応じた重みを考慮して、各モデルを統合したモデルを同期結果とする。また、例えば、情報提供装置１０は、各モデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量に応じた重みを考慮して、各モデルを統合したモデルを同期結果とする。なお、例えば、情報提供装置１０は、各モデルのうち、学習前における目的関数の値と学習後における目的関数の値との間の改善量が最も大きいモデルを同期結果としてもよい。また、情報提供装置１０は、目的関数の値に応じてモデルの選択を行う遺伝的アルゴリズムを用いて、各モデルの同期を行ってもよい。このような処理の結果、情報提供装置１０は、各演算装置が個別に学習したモデルのうち、より精度の改善に寄与すると考えられるモデルを重視した同期を行うことができるので、モデルの学習精度を改善することができる。
【００９８】
また、情報提供装置１０は、学習データを用いてモデルが有するパラメータの値を修正することで、当該学習データが有する特徴をモデルに学習させる複数の演算装置に対し、それぞれ異なる学習データを配布し、各モデルのパラメータの値を同期させる。また、情報提供装置１０は、新たに配布される学習データを用いて同期部により同期されたモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを新たに配布する。このため、情報提供装置１０は、各種ニューラルネットワークの学習精度を改善できる。
【００９９】
また、情報提供装置１０は、各演算装置によってモデルの学習が行われる度に、各演算装置に対してそれぞれ異なる学習データを新たに配布し、複数の演算装置により学習が行われたモデルの同期機会を動的に変更する。
【０１００】
例えば、情報提供装置１０は、各演算装置が新たに配布された学習データを用いてモデルの学習を行う回数がランダムとなるように、各モデルを同期させる。また、情報提供装置１０は、各演算装置が実行した学習の結果が所定の条件を満たした場合は、各モデルを同期させる。また、情報提供装置１０は、少なくともいずれかの演算装置により学習が行われたモデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量が所定の条件を満たす場合は、各モデルを同期させる。このため、情報提供装置１０は、同期処理によるオーバーヘッドの増大を防ぎつつ、モデルの学習精度を向上させることができる。
【０１０１】
また、情報提供装置１０は、複数の演算装置のうち、一部の演算装置により学習が行われたモデルの同期を行う。例えば、情報提供装置１０は、複数の演算装置のうち、通信遅延が所定の範囲内に収まる複数の演算装置により学習が行われたモデルの同期を行う。また、例えば、情報提供装置１０は、複数の演算装置のうち、ランダムに選択された一部の演算装置により学習が行われたモデルの同期を行う。このため、情報提供装置１０は、同期処理におけるオーバーヘッドをさらに削減することができる。
【０１０２】
また、情報提供装置１０は、複数の演算装置のうち、各演算装置が演算可能な情報の次元数と、全ての演算装置に対して配布される学習データの数とに応じた数の演算装置により学習が行われたモデルの同期を行う。このため、情報提供装置１０は、より効率的なモデルの学習を実現できる。
【０１０３】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０１０４】
また、上記してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、検出部は、検出手段や検出回路に読み替えることができる。
【符号の説明】
【０１０５】
１０  情報提供装置
２０  通信部
３０  記憶部
３１  学習データデータベース
３２  モデルデータベース
４０  第１演算部
４１  学習制御部
４２  情報提供部
５０  第２演算部
５１  演算部
５２  演算制御部
５２１  配布部
５２２  同期部
１００  データサーバ
２００  利用者端末
【図１】
2020149460.tif 000003
【図２】
2020149460.tif 000004
【図３】
2020149460.tif 000005
【図４】
2020149460.tif 000006
【図５】
2020149460.tif 000007