(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-07
(45)【発行日】2022-11-15
(54)【発明の名称】情報処理装置、情報処理方法および情報処理プログラム
(51)【国際特許分類】
G06N 20/00 20190101AFI20221108BHJP
G06N 3/02 20060101ALI20221108BHJP
【FI】
G06N20/00 130
G06N3/02
(21)【出願番号】P 2019047310
(22)【出願日】2019-03-14
【審査請求日】2020-03-09
【審判番号】
【審判請求日】2021-12-28
【新規性喪失の例外の表示】特許法第30条第2項適用 投稿論文 一般社団法人日本音響学会2019年春季研究発表会概要 http://www.asj.gr.jp/annualmeeting/index.html
(73)【特許権者】
【識別番号】319013263
【氏名又は名称】ヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】磯 健一
【合議体】
【審判長】須田 勝巳
【審判官】林 毅
【審判官】児玉 崇晶
(56)【参考文献】
【文献】特開2017-174298(JP,A)
【文献】特開2018-018451(JP,A)
【文献】小田哲、中山心太、上西康太、木下真吾,Jubatus:Big Dataのリアルタイム処理を可能にする分散処理技術,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2012年1月19日,Vol.111,No.409,pp.35-40
【文献】横田理央、大沢和樹、辻陽平、上野裕一郎、成瀬彰,大規模並列深層学習における2次の最適化手法の効果,電子情報通信学会2019年総合大会講演論文集,日本,一般社団法人電子情報通信学会,2019年3月5日,pp.SS-3~SS-6
【文献】国英明、高橋良希、首藤一幸,広域分散を想定した深層学習法の比較,第11回データ工学と情報マネジメントに関するフォーラム(第17回日本データベース学会年次大会),日本,日本データベース学会,2019年3月6日,pp.1-7
(57)【特許請求の範囲】
【請求項1】
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを新たに配布する配布部と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期部と
を有し、
前記同期部は、各演算装置により学習が行われたモデルの目的関数の値に応じてモデルの選択を行う遺伝的アルゴリズムを用いて、各モデルの同期を行う
ことを特徴とする情報処理装置。
【請求項2】
前記同期部は、各モデルの目的関数の値に応じた重みを考慮して、各モデルを統合したモデルを同期結果とする
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記同期部は、各モデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量に応じた重みを考慮して、各モデルを統合したモデルを同期結果とする
ことを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記同期部は、各モデルのうち、学習前における目的関数の値と学習後における目的関数の値との間の改善量が最も大きいモデルを同期結果とする
ことを特徴とする請求項1~3のうちいずれか1つに記載の情報処理装置。
【請求項5】
前記配布部は、前記学習データを用いて前記モデルが有するパラメータの値を修正することで、当該学習データが有する特徴を前記モデルに学習させる複数の演算装置に対し、それぞれ異なる学習データを配布し、
前記同期部は、各モデルのパラメータの値を同期させる
ことを特徴とする請求項1~4のうちいずれか1つに記載の情報処理装置。
【請求項6】
前記配布部は、新たに配布される学習データを用いて前記同期部により同期されたモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを新たに配布する
ことを特徴とする請求項1~5のうちいずれか1つに記載の情報処理装置。
【請求項7】
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを新たに配布する配布部と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期部と
を有し、
前記同期部は、各演算装置が実行した学習の結果が所定の条件を満たした場合は、各モデルを同期させる
ことを特徴とする情報処理装置。
【請求項8】
前記同期部は、少なくともいずれかの演算装置により学習が行われたモデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量が所定の条件を満たす場合は、各モデルを同期させる
ことを特徴とする請求項7に記載の情報処理装置。
【請求項9】
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを新たに配布する配布部と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期部と
を有し、
前記同期部は、前記複数の演算装置のうち一部の演算装置により学習されたモデルであって、通信遅延が所定の範囲内に収まる複数の演算装置により学習が行われたモデルの同期を行う
ことを特徴とする情報処理装置。
【請求項10】
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを新たに配布する配布部と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期部と
を有し、
前記同期部は、前記複数の演算装置のうち一部の演算装置により学習されたモデルであって、各演算装置が演算可能な情報の次元数と、全ての演算装置に対して配布される学習データの数とに応じた数の演算装置により学習が行われたモデルの同期を行う
ことを特徴とする情報処理装置。
【請求項11】
情報処理装置が実行する情報処理方法であって、
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを配布する配布工程と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期工程と
を含み、
前記同期工程は、各演算装置により学習が行われたモデルの目的関数の値に応じてモデルの選択を行う遺伝的アルゴリズムを用いて、各モデルの同期を行う
ことを特徴とする情報処理方法。
【請求項12】
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを配布する配布手順と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期手順と
をコンピュータに実行させるための情報処理プログラムであって、
前記同期手順は、各演算装置により学習が行われたモデルの目的関数の値に応じてモデルの選択を行う遺伝的アルゴリズムを用いて、各モデルの同期を行う
ことを特徴とする情報処理プログラム。
【請求項13】
情報処理装置が実行する情報処理方法であって、
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを新たに配布する配布
工程と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期
工程と
を含み、
前記同期
工程は、各演算装置が実行した学習の結果が所定の条件を満たした場合は、各モデルを同期させる
ことを特徴とする情報処理方法。
【請求項14】
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを新たに配布する配布
手順と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期
手順と
をコンピュータに実行させるための情報処理プログラムであって、
前記同期
手順は、各演算装置が実行した学習の結果が所定の条件を満たした場合は、各モデルを同期させる
ことを特徴とする情報処理プログラム。
【請求項15】
情報処理装置が実行する情報処理方法であって、
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを新たに配布する配布工程と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期工程と
を含み、
前記同期工程は、前記複数の演算装置のうち一部の演算装置により学習されたモデルであって、通信遅延が所定の範囲内に収まる複数の演算装置により学習が行われたモデルの同期を行う
ことを特徴とする情報処理方法。
【請求項16】
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを新たに配布する配布手順と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期手順と
をコンピュータに実行させるための情報処理プログラムであって、
前記同期手順は、前記複数の演算装置のうち一部の演算装置により学習されたモデルであって、通信遅延が所定の範囲内に収まる複数の演算装置により学習が行われたモデルの同期を行う
ことを特徴とする情報処理プログラム。
【請求項17】
情報処理装置が実行する情報処理方法であって、
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを新たに配布する配布工程と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期工程と
を含み、
前記同期工程は、前記複数の演算装置のうち一部の演算装置により学習されたモデルであって、各演算装置が演算可能な情報の次元数と、全ての演算装置に対して配布される学習データの数とに応じた数の演算装置により学習が行われたモデルの同期を行う
ことを特徴とする情報処理方法。
【請求項18】
配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、各演算装置によって前記モデルの学習が行われる度に、それぞれ異なる学習データを新たに配布する配布手順と、
配布された学習データを用いて各演算装置が実行した学習したモデルのうちいずれかのモデルが所定の条件を満たした場合は、各演算装置が学習したモデルの同期を行う同期手順と
をコンピュータに実行させるための情報処理プログラムであって、
前記同期手順は、前記複数の演算装置のうち一部の演算装置により学習されたモデルであって、各演算装置が演算可能な情報の次元数と、全ての演算装置に対して配布される学習データの数とに応じた数の演算装置により学習が行われたモデルの同期を行う
ことを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【0002】
従来、DNN(Deep Neural Network)といったモデルを用いた各種の分類処理が実現されている。このようなDNNを用いた分類処理を実現するため、統計的勾配降下法(Stochastic Gradient Descent, SGD)を用いたモデルの学習方法が知られている。例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)といった演算装置に対してそれぞれ異なる学習データを配布し、配布された学習データを用いて各演算装置にモデルの学習を行わせ、各演算装置の学習結果を同期させる処理を繰り返し行う技術が知られている。また、各演算装置における学習結果の同期処理のコストを軽減するため、各演算装置に学習処理を複数回行わせてから同期を行う技術が知られている。
【先行技術文献】
【非特許文献】
【0003】
【文献】“Experiments on Parallel Training of Deep Neural Network using Model Averaging”, Hang Su, Haoyu Chen, インターネット< https://arxiv.org/abs/1507.01239>(平成31年3月1日検索)
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述した技術では、モデルの精度を向上させる余地がある。
【0005】
例えば、上述した技術では、各演算装置がそれぞれ異なる学習データを用いて学習を行ったモデルを同期させるため、最終的に得られるモデルは、全ての学習データを用いて学習が行われたモデルの近似に過ぎなくなる。また、上述した技術では、同期処理の回数が十分ではない場合に、学習データが有する特徴を適切に学習することができなくなる恐れがある。
【0006】
本願は、上記に鑑みてなされたものであって、複数の演算装置を用いたモデルの学習精度を改善することを目的とする。
【課題を解決するための手段】
【0007】
本願に係る情報処理装置は、配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する配布部と、配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う同期部とを有することを特徴とする。
【発明の効果】
【0008】
実施形態の一態様によれば、複数の演算装置を用いたモデルの学習精度を改善することができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施形態に係る情報提供装置が実行する処理の一例を示す図である。
【
図2】
図2は、実施形態に係る情報提供装置の構成例を示す図である。
【
図3】
図3は、実施形態に係る第2演算部が有する機能構成の一例を示す図である。
【
図4】
図4は、実施形態に係る第2演算部が有する機能構成の一例を示す図である。
【
図5】
図5は、ハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0010】
以下に、本願に係る情報処理装置、情報処理方法および情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法および情報処理プログラムが限定されるものではない。また、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0011】
〔1.情報提供装置について〕
まず、
図1を用いて、情報処理装置の一例である情報提供装置10が実行する情報処理方法の一例について説明する。
図1は、実施形態に係る情報提供装置が実行する処理の一例を示す図である。
図1では、情報提供装置10が実行する処理として、モデルの学習を行う学習処理と、学習済のモデル(以下、「学習モデル」と記載する場合がある。)を用いて情報の分類を行う分類処理の流れの一例について記載した。
【0012】
図1に示す情報提供装置10は、情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。また、
図1に示すデータサーバ100は、各種のデータを管理しており、例えば、サーバ装置やクラウドシステム等により実現される。また、利用者端末200は、分類処理の結果を利用する利用者により利用される端末装置であり、例えば、PC(Personal Computer)やサーバ装置、各種のスマートデバイス等により実現される。
【0013】
ここで、情報提供装置10は、データサーバ100から学習データを取得し、取得した学習データが有する特徴をモデルに学習させる。そして、情報提供装置10は、利用者端末200から各種の測定データを取得すると、学習モデルを用いて、測定データが有する特徴に応じた分類処理を実行し、分類結果を利用者端末200へと提供することとなる。
【0014】
なお、このような一連の処理において、どのようなデータを学習データとするか、学習データが有するどのような特徴をモデルに学習させるか、どのようなデータを測定データとするか、どのような特徴に基づいた分類を行うかについては、任意の設定が採用可能である。具体的な例を挙げると、情報提供装置10は、利用者のデモグラフィック属性やサイコグラフィック属性を示す属性情報、閲覧したコンテンツの履歴や取引対象(商品やサービス)の購入履歴、位置履歴等を示す各種履歴情報といった情報を学習データとして取得する。ここで、各学習データに対し、例えば、利用者が選択した広告の種別等を示す情報がラベルとして登録されている場合、情報提供装置10は、モデルに各種の履歴情報を入力した際に、対応するラベル(すなわち、履歴情報と対応する利用者が選択した広告を示す情報)を示す情報を出力するように、モデルの学習を行う。そして、情報提供装置10は、測定データとして利用者の各種属性情報を取得すると、取得した属性情報を学習モデルに入力することで、その利用者が選択する可能性が高い広告を推定する。
【0015】
なお、このようなモデルは、複数のノードをそれぞれ個別の接続係数が設定された接続経路を介して接続したニューラルネットワーク、すなわちDNNにより実現される。なお、モデルは、オートエンコーダやCNN(Convolutional Neural Network)、RNN(Recurrent Neural Network)やその拡張であるLSTM(Long short-term memory))等、任意の構造を有するニューラルネットワークであってよい。
【0016】
また、情報提供装置10は、1つの学習データが有する特徴をモデルに学習させる場合、統計的勾配降下法を用いた学習を行うこととなる。例えば、情報提供装置10は、モデルに対する入力情報と出力情報とに応じた任意の目的関数を設定し、設定した目的関数が所定の条件を満たすように、誤差逆伝播法(Backpropagation)等を用いてモデルが有する接続係数(すなわち、パラメータ)を修正することで、学習データが有する特徴をモデルに学習させることとなる。
【0017】
なお、情報提供装置10は、例えば、目的関数が入力情報と出力情報の誤差を示す場合、目的関数の値が小さくなるように、パラメータの修正を行うこととなる。一方、情報提供装置10は、例えば、目的関数がクロスエントロピーに基づいた値を示す場合、目的関数の値が大きくなるように、パラメータの修正を行う。そこで、以下の説明においては、ある学習データを用いた学習前と学習後とで目的関数が所定の条件を満たす方向に変化した量を「改善量」と記載する場合がある。例えば、目的関数が入力情報と出力情報の誤差を示す場合、学習前の目的関数の値から学習後の目的関数の値を減算した値が「改善量」に対応し、目的関数がクロスエントロピーに基づいた値を示す場合、学習後の目的関数の値から学習前の目的関数の値を減算した値が「改善量」に対応する。
【0018】
〔1-1.ミニバッチ学習とモデル平均法について〕
ここで、情報提供装置10が実行する学習処理の説明に先駆けて、ミニバッチ学習の概要について説明する。例えば、情報提供装置10は、ミニバッチ学習を用いた学習処理を実行する場合、N個の全学習データからランダムに選択されたM個のデータをミニバッチとし、ミニバッチごとにモデルのパラメータの更新を行う。
【0019】
ここで、このようなミニバッチ学習を並列に実行することで、学習を高速化する手法が考えられる。例えば、CPUやGPU、若しくはそれらのコアといった複数の演算装置のそれぞれに対して、それぞれ異なるミニバッチを配布し、各演算装置ごとに独立したモデルの学習処理を実行させる。そして、各演算装置による学習結果を同期させ、新たなミニバッチの配布を繰り替えす手法が考えられる。例えば、各演算装置により学習されたモデルのパラメータの平均値を用いて新たなモデルを生成し、各演算装置に新たなモデルを配布し、それぞれ異なるミニバッチを用いて再度学習処理を実行させる。
【0020】
このようなミニバッチ学習を行った場合、演算装置の数をK個とすると、学習処理に要する時間のうち各モデルの修正量の計算に要する時間を1/Kに短縮することが期待される。しかしながら、このようなミニバッチ学習では、各演算装置間で通信を行うことにより、各演算装置が独自に学習したモデルの同期を行う。このため、全学習データをN個、ミニバッチに含まれる学習データの数をM個とすると、1つのミニバッチごとに全演算装置の同期を行った場合は、N/M回の同期処理がオーバーヘッドとして処理時間に加わることとなる。
【0021】
このような同期処理のオーバーヘッドを削減するため、ミニバッチ学習が所定回数行われる度に同期処理を行うモデル平均法が知られている。例えば、情報提供装置10は、モデル平均法でモデルの学習を行う場合、ミニバッチの学習が行われる度に同期処理を実行するのではなく、各演算装置に対して所定の回数(例えば、F回)、ミニバッチ学習を行わせた後に、各演算装置のモデルを同期させる。このような処理を実行した場合、同期回数がN/(M×F)となるので、同期処理のオーバーヘッドを1/Fに削減することができる。
【0022】
〔1-2.学習処理について〕
しかしながら、上述したモデル平均法では、同期処理を減らしたことによりモデルの識別精度が劣化する恐れがある。また、ミニバッチ学習により最終的に得られるモデルは、それぞれ異なる学習データの特徴を学習したモデルの平均となるので、単一のモデルに対して全学習データを1つずつ入力し、学習データを入力する度に目的関数が改善するようにパラメータを修正したモデルの近似に過ぎない。このため、ミニバッチ学習やモデル平均法には、モデルの精度を向上させる余地があると言える。
【0023】
そこで、情報提供装置10は、以下の学習処理を実行する。まず、情報提供装置10は、配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する。そして、情報提供装置10は、配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う。すなわち、情報提供装置10は、単にモデルの単純平均を同期結果とするのではなく、各演算装置によるモデルの学習結果に応じて適用的にモデルの同期を行う。
【0024】
例えば、改善量が大きいモデルは、学習データが有する特徴を適切に学習したモデルであると言える。このため、各演算装置が学習したモデルのうち、改善量が大きいモデルのパラメータは、最終的なモデルの精度に対して大きく寄与すると考えられる。そこで、情報提供装置10は、改善量が大きいモデル程重要視されるようにモデルの同期を行う。すなわち、情報提供装置10は、改善量が大きいモデルほど、より大きい重みを適用した状態で、各モデルを統合したモデルを同期結果として生成する。このような処理の結果、例えば、情報提供装置10は、より改善量が大きいモデル、すなわち、最終的なモデルの精度をより高くすると推定されるモデルを優先的に用いた同期結果を生成することができるので、最終的に生成されるモデルの精度を向上させることができる。
【0025】
また、情報提供装置10は、学習処理におけるモデルの同期タイミングを動的に変更する。例えば、情報提供装置10は、各演算装置が新たに配布された学習データを用いてモデルの学習を行う回数がランダムとなるように、各モデルを同期させる。より具体的には、情報提供装置10は、区間[1,F]内における整数乱数を生成し、生成した乱数が示す回数のミニバッチ学習が行われた後で、各モデルの同期を行う。このような処理の結果、情報提供装置10は、最終的に生成されるモデルの目的関数が極小値に陥る可能性を軽減することができるので、同期処理のオーバーヘッドを削減しつつ、最終的に生成されるモデルの精度を向上させることができると考えられる。
【0026】
〔1-3.情報提供装置が実行する処理の流れの一例について〕
以下、
図1を用いて、情報提供装置10が実行する処理の流れの一例を説明する。なお、以下の説明では、演算装置として、GPU#1~#KまでのK個のGPUを並列に用いてモデルの学習を行う例について説明する。まず、情報提供装置10は、データサーバ100から学習データを取得する(ステップS1)。このような場合、情報提供装置10は、学習データを学習データデータベース31に登録する。そして、情報提供装置10は、ミニバッチ学習において各GPUにより学習が行われたモデルの同期タイミングを動的に変動させる(ステップS2)。
【0027】
例えば、情報提供装置10は、学習データデータベース31からランダムに学習データ#1-1~#1-Mを抽出する。続いて、情報提供装置10は、抽出した学習データをK個のミニバッチに分割し、各ミニバッチをGPU#1~#Kに配布する。すなわち、情報提供装置10は、M/K個の学習データをミニバッチとして各GPU#1~#Kに配布する。換言すると、情報提供装置10は、それぞれ異なる学習データを各演算装置に対して配布する。
【0028】
ここで、各GPU#1~#Kは、配布された学習データを用いて、モデルの学習を行う。すなわち、各GPU#1~#Kは、配布されたミニバッチを用いたミニバッチ学習を実行する。例えば、GPU#1は、学習対象となるモデルのコピーをM/K個だけ生成し、生成した各コピーに対してそれぞれ異なる学習データを入力する。そして、GPU#1は、コピーした各モデルの目的関数が改善するように、各モデルのパラメータを修正し、修正後のパラメータを統合したモデルを1回目の学習結果とする。例えば、GPU#1は、修正された各モデルのパラメータの平均値を学習結果となるモデルのパラメータとしてもよい。なお、GPU#1は、モデルのコピーを行わずに、M/K個の学習データを用いて、1つのモデルの学習を行ってもよい。また、他のGPU#2~#Kも同様に、各GPU#1~#Kに対して個別に配布された学習データを用いたミニバッチ学習を実行する。
【0029】
ここで、情報提供装置10は、ミニバッチ学習が行われる度に、各GPU#1~#Kの学習結果を同期させるのではなく、ランダムな回数でミニバッチ学習が行われる度に、各GPU#1~#Kの学習結果を同期させる。例えば、情報提供装置10は、所定の範囲内の乱数を生成し、例えば、生成された乱数が「3」である場合は、ミニバッチ学習を3回実行させる。
【0030】
例えば、情報提供装置10は、学習データ#1-1~#1-MをK個のミニバッチ#1-1~#1-Kに分割し、各ミニバッチ#1-1~#1-Kをそれぞれ個別のGPU#1~#Kに配布して1回目のミニバッチ学習を実行させる。続いて、情報提供装置10は、各GPU#1~#Kのモデルを同期させることなく、新たな学習データ#2-1~#2-Mを学習データデータベース31から抽出し、抽出した学習データ#2-1~#2-MをK個のミニバッチ#2-1~#2-Kに分割する。そして、情報提供装置10は、各ミニバッチ#2-1~#2-Kをそれぞれ個別のGPU#1~#Kに配布して2回目のミニバッチ学習を実行させる。同様に、情報提供装置10は、新たなミニバッチ#3-1~#3-Kを生成し、それぞれ個別のGPU#1~#Kに配布して3回目のミニバッチ学習を実行させる。そして、情報提供装置10は、ミニバッチ学習を3回実行させた場合は、各GPU#1~#Kのモデルを同期させる。
【0031】
続いて、情報提供装置10は、新たな乱数を生成し、例えば、生成された乱数が「1」である場合は、各GPU#1~#Kに対して4回目のミニバッチ学習を実行させる。そして、情報提供装置10は、4回目のミニバッチ学習の後に、各GPU#1~#Kのモデルを同期させる。このように、情報提供装置10は、各GPU#1~#Kが実行するミニバッチ学習の回数がランダムとなるように、モデルの同期を実行する。すなわち、情報提供装置10は、各GPU#1~#Kのモデルの同期タイミングをランダムに変更する。
【0032】
すなわち、情報提供装置10は、学習データを用いてモデルが有するパラメータの値を修正することで、学習データが有する特徴をモデルに学習させる複数の演算装置に対し、それぞれ異なる学習データを配布する。そして、情報提供装置10は、ランダムなタイミングで各モデルのパラメータの値を同期させ、各演算装置に新たな学習データを配布することで、新たに配布される学習データを用いて同期されたモデルの学習を行う処理を繰り返し実行する。
【0033】
ここで、情報提供装置10は、各GPU#1~#Kのモデルを同期させる場合、各モデルの目的関数の改善量に基づいた重みを適用して、各モデルのパラメータを合成したモデルに同期させる(ステップS3)。例えば、3回目のミニバッチ学習後にモデルの同期を行う場合、情報提供装置10は、各モデルの目的関数の改善量を算出する。例えば、情報提供装置10は、GPU#1が2回目のミニバッチ学習で生成したモデル#1-2の目的関数の値と、3回目のミニバッチ学習で生成したモデル#1-3の目的関数の値とから改善量#1を算出する。同様に、情報提供装置10は、GPU#2~#Kが2回目のミニバッチ学習で生成したモデル#2-2~#K-2の目的関数の値と、3回目のミニバッチ学習で生成したモデル#2-3~#K-3の目的関数の値とから改善量#2~#Kを算出する。
【0034】
そして、情報提供装置10は、各改善量#1~#Kの値に基づいた重み#1~#Kを設定する。例えば、情報提供装置10は、各改善量#1~#Kの和で改善量#1~#Kの値をそれぞれ除算した値を重み#1~#Kとしてもよい。また、情報提供装置10は、改善量の値が大きいモデルほど、より大きい重みとなるように、各重み#1~#Kを設定するのであれば、任意の方式により算出される重み#1~#Kを設定して良い。
【0035】
続いて、情報提供装置10は、各重み#1~#Kを用いて、各モデル#1-3~#K-3を統合する。例えば、情報提供装置10は、モデル#1-3のパラメータに重み#1を積算した値を算出する。同様に、情報提供装置10は、各モデル#2-3~#K-3のパラメータに対して、それぞれ個別の重み#2~#Kを積算した値を算出する。そして、情報提供装置10は、算出した値を合計することで、各モデル#1-3~#K-3を統合したモデル#X-4のパラメータを生成する。
【0036】
その後、情報提供装置10は、モデル#X-4を4回目の学習を行うモデルとして各GPU#1~#Kに配布する。この結果、各GPU#1~#Kは、モデル#X-4に対し、それぞれ異なるミニバッチを用いたミニバッチ学習を実行することとなる。
【0037】
また、情報提供装置10は、所定の条件を満たすまで、新たな学習データを用いた学習を繰り返し実行する。そして、情報提供装置10は、所定の条件が満たされた場合は、最終的な各モデルを統合した学習モデルを生成する(ステップS4)。例えば、情報提供装置10は、学習データデータベース31に登録された全ての学習データを用いたミニバッチ学習が行われるまで、学習処理を繰り返し実行する。そして、情報提供装置10は、全ての学習データを用いたミニバッチ学習が完了した場合は、各GPU#1~#Kのモデルを同期させる。例えば、情報提供装置10は、各モデルのパラメータの平均を取ってもよく、各モデルの目的関数の値の改善量に応じた重みを考慮した統合を行ってもよい。
【0038】
そして、情報提供装置10は、生成した学習モデルを用いた分類処理を実行する。例えば、情報提供装置10は、利用者端末200から測定データを取得する(ステップS5)。このような場合、情報提供装置10は、測定データを学習モデルに入力し、学習モデルが出力した情報に基づいた分類結果を利用者端末200に提供する(ステップS6)。なお、情報提供装置10は、分類結果そのものの提供ではなく、例えば、分類結果に応じたコンテンツ配信等、分類結果に応した情報配信を行ってもよい。また、情報提供装置10は、分類結果を利用者端末200ではなく、利用者端末200に対して各種サービスを提供するサービス提供サーバに提供してもよい。このような場合、サービス提供サーバは、分類結果に応じた内容のサービスを利用者端末200に対して提供することとなる。
【0039】
〔1-4.同期タイミングについて〕
上述した説明では、情報提供装置10は、ランダムなタイミングで各演算装置(すなわち、GPU)によりミニバッチ学習が行われたモデルの同期を行った。しかしながら、実施形態は、これに限定されるものではない。情報提供装置10は、モデルの同期タイミングを動的に変更するのであれば、任意の指標に基づいて、モデルの同期タイミングを決定して良い。
【0040】
例えば、情報提供装置10は、各演算装置が実行した学習の結果が所定の条件を満たした場合は、各モデルを同期させてもよい。例えば、情報提供装置10は、少なくともいずれかの演算装置により学習が行われたモデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量が所定の条件を満たす場合は、各モデルを同期させてもよい。
【0041】
より具体的な例を挙げると、情報提供装置10は、各モデルの目的関数の改善量を取得し、改善量が所定の閾値を超えたモデルの数を計数する。そして、情報提供装置10は、計数した数が所定の閾値を超える場合は、各モデルの同期を行わせてもよい。例えば、情報提供装置10は、改善量が所定の閾値を超えたモデルが1つでも存在する場合は、各モデルを同期させてもよい。例えば、情報提供装置10は、改善量が所定の閾値を超えたモデルの重みを、他のモデルの重みよりも大きい値に設定し、各モデルの統合を行ってもよい。
【0042】
また、情報提供装置10は、改善量の累積に応じた同期タイミングを設定してもよい。例えば、情報提供装置10は、ミニバッチ学習を行う度に各モデルの改善量の累積を算出し、累積が所定の閾値を超えたモデルの数が所定の閾値を超えた場合に、同期を行ってもよい。また、情報提供装置10は、全モデルの改善量の累積が所定の閾値を超えた場合に、同期を行ってもよい。また、情報提供装置10は、同期を行う度に改善量の閾値をランダムに変更してもよい。
【0043】
なお、情報提供装置10は、改善量が所定の閾値を超えたモデルの数が所定の閾値を超えないように、同期を行ってもよい。例えば、情報提供装置10は、改善量の履歴や累積等に基づいて、次回のミニバッチ学習を行った際に改善量が所定の閾値を超えるモデルの数が所定の閾値を超えるか否かを推定し、超えると推定された場合は、同期を行ってもよい。
【0044】
〔1-5.同期手法について〕
上述した説明では、情報提供装置10は、各モデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量に応じた重みを考慮して、各モデルのパラメータの荷重和を算出し、算出したパラメータの荷重和を同期後のモデルのパラメータとした。しかしながら、実施形態は、これに限定されるものではない。
【0045】
例えば、情報提供装置10は、各演算装置により学習が行われたモデルの目的関数の値に応じた態様で、各モデルの同期を行うのであれば、任意の処理を実行してもよい。例えば、情報提供装置10は、目的関数の値が所定の閾値を超えたモデル(若しくは、目的関数の値が所定の閾値を下回ったモデル)のみを抽出し、抽出したモデルのパラメータの平均若しくは荷重和を同期結果としてもよい。
【0046】
また、情報提供装置10は、各モデルの目的関数の値に応じた重みを考慮して、各モデルを統合したモデルを同期結果としてもよい。すなわち、情報提供装置10は、改善量ではなく、目的関数の値そのものに応じた重みを考慮してもよい。例えば、情報提供装置10は、各モデルの目的関数の値が低ければ低いほど(若しくは、高ければ高いほど)、より大きい値の重みを設定してもよい。
【0047】
また、情報提供装置10は、目的関数の値が最も小さい(若しくは、最も大きい)モデルを特定し、特定したモデルを同期結果として各演算装置に配布してもよい。また、情報提供装置10は、目的関数の改善量が最も大きいモデルを特定し、特定したモデルを同期結果として各演算装置に配布してもよい。
【0048】
また、情報提供装置10は、目的関数の値に応じてモデルの選択を行う遺伝的アルゴリズムを用いて、各モデルの同期を行ってもよい。例えば、情報提供装置10は、各モデルの目的関数の値若しくは目的関数の改善量を各モデルの適応度とし、適応度に応じた確率で選択されたモデルのコピー、交叉、もしくは突然変異(以下、「操作」と記載する場合がある。)を実行することで、次世代のモデルを生成する。例えば、情報提供装置10は、2つのモデルを選択し、選択したモデルのパラメータをランダムに交叉させてもよく、選択したモデルのパラメータをランダムに変更してもよい。このような処理を実行することで、情報提供装置10は、n回目のミニバッチ学習が行われたK個のモデルから、n+1回目のミニバッチ学習の対象となる新たなK個のモデルを生成し、生成したK個のモデルを各演算装置に配布してもよい。また、情報提供装置10は、各種任意の遺伝的アルゴリズムに基づいた態様で、モデルの同期を行ってもよい。
【0049】
なお、情報提供装置10は、目的関数以外にも、各演算装置における学習の結果に応じて、各モデルの同期態様を適応的に変更するのであれば、任意の態様でモデルを同期させてよい。例えば、情報提供装置10は、各演算装置がミニバッチ学習に要した時間に応じた重みを考慮して、各モデルのパラメータの荷重和を算出してもよく、時間に応じた確率で遺伝的アルゴリズムにおける各種操作の対象となるモデルの選択をおこなってよい。
【0050】
〔1-6.同期対象について〕
なお、情報提供装置10は、全ての演算装置により学習が行われたモデルの同期を行わずともよい。例えば、情報提供装置10は、複数の演算装置のうち、一部の演算装置により学習が行われたモデルの同期を行ってもよい。例えば、情報提供装置10は、GPU#1~#10、GPU#11~#20というように、各演算装置を所定数ずつのグループに分割し、グループごとの同期を行ってもよい。例えば、情報提供装置10は、全ての演算装置により学習が行われたモデルのうち目的関数の改善量が所定の閾値を超えたモデルが存在する場合は、そのモデルの学習を行った演算装置を含むグループ内でのみ、モデルの同期を行ってもよい。なお、このような処理を行う場合、同期対象とならなかった演算装置は、前回のミニバッチ学習の結果となるモデルの学習を継続して行うこととなる。
【0051】
また、情報提供装置10は、複数の演算装置のうち、通信遅延が所定の範囲内に収まる複数の演算装置により学習が行われたモデルの同期を行ってもよい。例えば、情報提供装置10は、物理的に近傍に配置された所定の数の演算装置により学習が行われたモデルを同期対象としてもよい。
【0052】
また、情報提供装置10は、複数の演算装置のうち、ランダムに選択された一部の演算装置により学習が行われたモデルの同期を行ってもよい。例えば、情報提供装置10は、演算装置の中からランダムに選択した所定の数の演算装置により学習が行われたモデルのみを同期対象としてもよい。また、情報提供装置10は、目的関数の値や改善量が所定の閾値を超えたモデルと、ランダムに選択された所定の数の演算装置により学習が行われたモデルのみを同期対象としてもよい。
【0053】
また、情報提供装置10は、複数の演算装置のうち、各演算装置が演算可能な情報の次元数と、全ての演算装置に対して配布される学習データの数とに応じた数の演算装置により学習が行われたモデルの同期を行ってもよい。すなわち、情報提供装置10は、各演算装置の性能や各演算装置の数、全学習データの数、ミニバッチとする学習データの数等に応じて、効率的に学習を行うことができると推定される数のモデルを同期対象としてもよい。
【0054】
〔1-7.演算装置について〕
なお、上述した例では、演算装置として、複数のGPUを用いる処理について記載したが、実施形態は、これに限定されるものではない。例えば、情報提供装置10は、複数のCPUに対して上述した学習処理を適用してもよく、例えば、1つ又は複数のコンピュータクラスタを1つの演算装置とみなし、このようなコンピュータクラスタをネットワークで接続したシステムに対して、上述した学習処理を適用してもよい。また、情報提供装置10は、1つのCPUやGPUに含まれる複数のコアを演算装置と見做して上述した学習処理を実行してもよい。また、情報提供装置10は、1つ若しくは複数のグラフィックカード上に配置されたGPUやGPUコアを演算装置と見做してもよい。また、情報提供装置10は、複数のCPUやGPUを1つの演算装置と見做してもよく、これらのCPUやGPUに含まれる1つ若しくは複数のコアを1つの演算装置と見做してもよい。
【0055】
また、情報提供装置10は、上述した演算装置を自装置の筐体内に有していてもよく、異なる筐体内に有していてもよい。例えば、情報提供装置10は、各種のネットワークを介して接続されたサーバ装置内にある演算装置を用いて、上述した学習処理を実行してもよい。
【0056】
すなわち、情報提供装置10は、個別にモデルの学習を実行可能な装置を演算装置と見做して、上述した学習処理を実行するのであれば、任意の装置を演算装置と見做してもよい。なお、各演算装置が独立した記憶装置を有する必要はなく、例えば、各演算装置若しくは一部の演算装置は、メモリやレジスタ等の記憶装置を共用するものであってもよい。また、各演算装置は、例えば、所謂仮想マシン(Virtual Machine)であってもよい。
【0057】
〔1-8.実行主体について〕
なお、上述した学習処理は、任意の実行主体により実行されてよい。例えば、情報提供装置10は、各演算装置とは別に、各演算装置の制御を行う制御装置を有してもよい。このような場合、かかる制御装置が、学習データの配布および同期を行ってもよい。また、同期タイミングの決定やモデルの同期処理については、各演算装置が協調して動作することで、実現されてもよい。
【0058】
〔1-9.同期タイミングと同期手法の関係性について〕
また、情報提供装置10は、上述した同期タイミングの動的な変更と、学習結果に応じたモデルの同期とをそれぞれ独立して実行してもよく、関連付けて実行してもよい。例えば、情報提供装置10は、動的に同期タイミングを変更する場合、モデルの同期については、単純平均を算出することで実現してもよい。また、情報提供装置10は、学習結果に応じた態様でモデルを同期させる場合、同期タイミングについては、動的に変化させる必要はない。
【0059】
また、例えば、情報提供装置10は、同期処理を実行する度に、同期態様を変更してもよい。例えば、情報提供装置10は、同期処理を実行する度に、単純な平均によりモデルを同期する手法、改善量に応じた重みを採用する手法、改善量が最も大きいモデルを同期結果とする手法等、複数の手法の中から、ランダム若しくは学習結果に応じた確率でいずれかの手法を選択し、選択した手法によりモデルの同期を行ってもよい。また、情報提供装置10は、前回採用した同期手法に応じた同期タイミングで同期を行ってもよい。例えば、情報提供装置10は、単純な平均によりモデルを同期した場合は、いずれかのモデルの改善量が所定の閾値を超えた場合に次の同期を行い、改善量に応じた重みを採用する手法によりモデルを同期させた場合は、次に同期するまでのミニバッチ学習の回数をランダムに選択してもよい。
【0060】
〔2.機能構成の一例〕
以下、上記した学習処理を実現する情報提供装置10が有する機能構成の一例について説明する。
図2は、実施形態に係る情報提供装置の構成例を示す図である。
図2に示すように、情報提供装置10は、通信部20、記憶部30、第1演算部40および第2演算部50を有する。
【0061】
通信部20は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部20は、ネットワークNと有線または無線で接続され、例えば、データサーバ100や利用者端末200との間で情報の送受信を行う。
【0062】
記憶部30は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部30は、学習データデータベース31およびモデルデータベース32を記憶する。
【0063】
学習データデータベース31は、学習データが登録される。例えば、学習データデータベース31には、データサーバ100から取得した各種の学習データが登録される。また、モデルデータベース32には、上述した学習処理によって学習が行われた学習モデルのデータが登録される。
【0064】
第1演算部40は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等のプロセッサによって、情報提供装置10内部の記憶装置に記憶されている各種プログラムがRAM等を作業領域として実行されることにより実現される。また、第1演算部40は、コントローラ(controller)であり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
【0065】
図2に示すように、第1演算部40は、学習制御部41および情報提供部42を有する。学習制御部41は、第2演算部50を制御することで、上述した学習処理を実行する。例えば、学習制御部41は、データサーバ100から学習データを取得し、取得した学習データを学習データデータベース31に登録する。また、学習制御部41は、学習データデータベース31に登録された学習データを第2演算部50に提供し、上述した学習処理を実行させることで、学習モデルを取得する。そして、学習制御部41は、学習モデルをモデルデータベース32に登録する。
【0066】
情報提供部42は、学習モデルを用いた測定データの分類結果を提供する。例えば、情報提供部42は、利用者端末200から測定データを取得すると、モデルデータベース32から学習モデルを読み出し、読み出した学習モデルに測定データを入力する。そして、情報提供部42は、学習モデルが出力した分類結果に応じた情報を利用者端末200等に出力する。
【0067】
第2演算部50は、複数の演算装置を有する情報処理ユニットであり、例えば、複数のGPUやGPUコアが配置されたグラフィックカード、若しくは、複数のグラフィックカードにより実現される。例えば、第2演算部50は、演算部51、および演算制御部52を有する。
【0068】
ここで、
図3は、実施形態に係る第2演算部が有する機能構成の一例を示す図である。
図3に示すように、演算部51は、複数の演算装置を有する。なお、各演算装置は、例えば、GPU若しくはGPUのコアであり、配布された学習データのミニバッチを用いて、モデルの学習を行う。すなわち、各演算装置は、それぞれ独自にモデルを保持し、配布された学習データを用いてモデルが有するパラメータの値を修正することで、学習データが有する特徴をモデルに学習させる。
【0069】
また、演算制御部52は、配布部521と同期部522とを有する。なお、配布部521と同期部522は、第2演算部50が情報提供装置10内部の記憶装置に記憶されている各種プログラムがRAM等を作業領域として実行されることにより実現されることとなる。なお、演算制御部52は、例えば、演算部51が有する演算装置のうちいずれかにより実現されてもよい。
【0070】
ここで、配布部521は、配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する。例えば、配布部521は、演算部51に演算装置がK個存在する場合、学習データからランダムに選択されたM個のデータをK個に分割したミニバッチを生成する。そして、配布部521は、生成したミニバッチをそれぞれ異なる演算装置へと配布することで、各演算装置にミニバッチ学習を実行させる。また、配布部521は、各演算装置がそれぞれミニバッチ学習を実行した場合は、新たなM個の学習データからK個のミニバッチを生成し、生成したミニバッチを再度各演算装置へと配布する。
【0071】
同期部522は、配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う。より具体的には、同期部522は、各モデルのパラメータの値を同期させ、同期後のパラメータの値を各演算装置に配布する。すなわち、同期部522は、同期結果となるモデルを各演算装置に配布し、ミニバッチ学習を継続させる。
【0072】
また、同期部522は、複数の演算装置により学習が行われたモデルの同期機会を動的に変更する。例えば、同期部522は、各演算装置が新たに配布された学習データを用いて前記モデルの学習を行う回数がランダムとなるように、各モデルを同期させる。より具体的には、同期部522は、ランダムに選択された回数、各演算装置がミニバッチ学習を実行した場合は、各演算装置により学習が行われたモデルの目的関数の値に応じた態様で、各モデルの同期を行う。そして、同期部522は、再度、ランダムに選択された回数、各モデルのミニバッチ学習を実行させる。
【0073】
例えば、同期部522は、各演算装置がミニバッチ学習を実行した場合は、各演算装置が個別に学習を行ったモデルの目的関数の値を特定し、特定した目的関数の値に応じた重みを考慮して、各モデルを統合したモデルを同期結果とする。例えば、同期部522は、各モデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量に応じた重みを考慮して、各モデルを統合したモデルを同期結果としてもよい。そして、同期部522は、同期結果となるモデルを各演算装置に配布し、再度ミニバッチ学習を実行させる。
【0074】
なお、同期部522は、各モデルのうち、学習前における目的関数の値と学習後における目的関数の値との間の改善量が最も大きいモデルを同期結果として各演算装置に配布してもよい。また、同期部522は、目的関数の値に応じてモデルの選択を行う遺伝的アルゴリズムを用いて、各モデルの同期を行ってもよい。
【0075】
また、同期部522は、各演算装置が実行した学習の結果が所定の条件を満たした場合に、各モデルを同期させてもよい。例えば、同期部522は、ミニバッチ学習の度に各演算装置のモデルの目的関数の値を改善量を取得し、少なくともいずれかのモデルの改善量が所定の条件を満たす場合は、各モデルを同期させてもよい。
【0076】
また、同期部522は、複数の演算装置のうち、一部の演算装置により学習が行われたモデルの同期を行ってもよい。例えば、同期部522は、複数の演算装置のうち、通信遅延が所定の範囲内に収まる複数の演算装置により学習が行われたモデルの同期を行ってもよい。また、同期部522は、複数の演算装置のうち、ランダムに選択された一部の演算装置により学習が行われたモデルの同期を行ってもよい。
【0077】
また、同期部522は、複数の演算装置のうち、各演算装置が演算可能な情報の次元数と、全ての演算装置に対して配布される学習データの数とに応じた数の演算装置により学習が行われたモデルの同期を行ってもよい。すなわち、同期部522は、各演算装置の性能や学習データの数等に応じて、同期対象とする演算装置の数を動的に変更してもよい。
【0078】
また、同期部522は、全ての学習データを配布した場合や、各モデルの改善量が継続して変化しなかった場合は、学習終了条件が満たされたと判定し、各モデルを統合した学習モデルを生成する。そして、同期部522は、学習モデルを第1演算部40に出力する。
【0079】
〔3.情報提供装置が実行する処理の流れについて〕
次に、
図4を用いて、情報提供装置10が実行する処理の流れの一例について説明する。
図4は、実施形態に係る情報提供装置が実行する処理の流れの一例を示すフローチャートである。
【0080】
例えば、情報提供装置10は、未配布の学習データからM個のデータをランダムに抽出する(ステップS101)。続いて、情報提供装置10は、抽出したM個のデータをK個のグループに分割し、各グループのデータをそれぞれ異なる演算ユニットに配布する(ステップS102)。そして、情報提供装置10は、所定の学習終了条件を満たすか否かを判定する(ステップS103)。
【0081】
ここで、情報提供装置10は、学習終了条件が満たされないと判定した場合は(ステップS103:No)、各モデルの目的関数が所定の同期条件を満たすか否かを判定し(ステップS104)、満たすと判定した場合は(ステップS104:Yes)、各モデルの目的関数の改善値に応じた重みで、各モデルを同期させたモデルを生成する(ステップS105)。そして、情報提供装置10は、各演算ユニットに新たなモデルを配布し(ステップS106)、ステップS101を再度実行する。また、情報提供装置10は、各モデルの目的関数が所定の同期条件を満たさないと判定した場合も(ステップS104:No)、ステップS101を再度実行する。
【0082】
そして、情報提供装置10は、学習終了条件が満たされると判定した場合は(ステップS103:Yes)、各演算ユニットのモデルを同期させた学習モデルを生成し(ステップS107)、処理を終了する。
【0083】
〔4.変形例〕
上記では、情報提供装置10による処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、情報提供装置10が実行する処理のバリエーションについて説明する。
【0084】
〔4-1.装置構成〕
記憶部30に登録された各データベース31、32は、外部のストレージサーバに保持されていてもよく、また、第1演算部40や第2演算部50が個別に保持する各種の記憶装置内に保持されていてもよい。また、情報提供装置10は、第2演算部50を筐体内に有する必要はなく、例えば、外付けの筐体内に有していてもよい。また、情報提供装置10は、複数の第2演算部50を有し、各第2演算部50が有する演算装置を統合的に用いた学習処理を実行してもよい。
【0085】
〔4-2.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、逆に、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0086】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0087】
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0088】
〔4-3.プログラム〕
また、上述した実施形態に係る情報提供装置10は、例えば
図5に示すような構成のコンピュータ1000によって実現される。
図5は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、第1演算装置1030、第2演算装置1031、一次記憶装置1040、二次記憶装置1050、出力IF(Interface)1060、入力IF1070、ネットワークIF1080がバス1090により接続された形態を有する。
【0089】
第1演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置1040は、RAM等、第1演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、第1演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等により実現される。
【0090】
第2演算装置1031は、上述したモデルの学習を行う演算装置、すなわち、複数のコアを有する。例えば、第2演算装置1031は、GPUが設置されたグラフィックカード等により実現される。
【0091】
出力IF1060は、モニタやプリンタといった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインタフェースであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力IF1070は、マウス、キーボード、およびスキャナ等といった各種の入力装置1020から情報を受信するためのインタフェースであり、例えば、USB等により実現される。
【0092】
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置1020は、USBメモリ等の外付け記憶媒体であってもよい。
【0093】
ネットワークIF1080は、ネットワークNを介して他の機器からデータを受信して第1演算装置1030へ送り、また、ネットワークNを介して第1演算装置1030が生成したデータを他の機器へ送信する。
【0094】
第1演算装置1030は、出力IF1060や入力IF1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、第1演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
【0095】
例えば、コンピュータ1000が情報提供装置10として機能する場合、コンピュータ1000の第1演算装置1030は、一次記憶装置1040上にロードされたプログラムまたはデータを実行することにより、第1演算部40の機能を実現し、第2演算装置1031は、一次記憶装置1040上にロードされたプログラムまたはデータを実行することにより、第2演算部50として動作する。コンピュータ1000の第1演算装置1030および第2演算装置1031は、これらのプログラムまたはデータを一次記憶装置1040から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
【0096】
〔5.効果〕
上述したように、情報提供装置10は、配布された学習データを用いてそれぞれ個別にモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを配布する。そして、情報提供装置10は、配布された学習データを用いて各演算装置が実行した学習の結果に応じた態様で、各演算装置が学習したモデルの同期を行う。このような処理の結果、情報提供装置10は、より適切な学習が行われたモデルを重視した同期を実現するので、複数の演算装置を用いたモデルの学習精度を改善することができる。
【0097】
また、情報提供装置10は、各演算装置により学習が行われたモデルの目的関数の値に応じた態様で、各モデルの同期を行う。例えば、情報提供装置10は、各モデルの目的関数の値に応じた重みを考慮して、各モデルを統合したモデルを同期結果とする。また、例えば、情報提供装置10は、各モデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量に応じた重みを考慮して、各モデルを統合したモデルを同期結果とする。なお、例えば、情報提供装置10は、各モデルのうち、学習前における目的関数の値と学習後における目的関数の値との間の改善量が最も大きいモデルを同期結果としてもよい。また、情報提供装置10は、目的関数の値に応じてモデルの選択を行う遺伝的アルゴリズムを用いて、各モデルの同期を行ってもよい。このような処理の結果、情報提供装置10は、各演算装置が個別に学習したモデルのうち、より精度の改善に寄与すると考えられるモデルを重視した同期を行うことができるので、モデルの学習精度を改善することができる。
【0098】
また、情報提供装置10は、学習データを用いてモデルが有するパラメータの値を修正することで、当該学習データが有する特徴をモデルに学習させる複数の演算装置に対し、それぞれ異なる学習データを配布し、各モデルのパラメータの値を同期させる。また、情報提供装置10は、新たに配布される学習データを用いて同期部により同期されたモデルの学習を行う複数の演算装置に対し、それぞれ異なる学習データを新たに配布する。このため、情報提供装置10は、各種ニューラルネットワークの学習精度を改善できる。
【0099】
また、情報提供装置10は、各演算装置によってモデルの学習が行われる度に、各演算装置に対してそれぞれ異なる学習データを新たに配布し、複数の演算装置により学習が行われたモデルの同期機会を動的に変更する。
【0100】
例えば、情報提供装置10は、各演算装置が新たに配布された学習データを用いてモデルの学習を行う回数がランダムとなるように、各モデルを同期させる。また、情報提供装置10は、各演算装置が実行した学習の結果が所定の条件を満たした場合は、各モデルを同期させる。また、情報提供装置10は、少なくともいずれかの演算装置により学習が行われたモデルの学習前における目的関数の値と学習後における目的関数の値との間の改善量が所定の条件を満たす場合は、各モデルを同期させる。このため、情報提供装置10は、同期処理によるオーバーヘッドの増大を防ぎつつ、モデルの学習精度を向上させることができる。
【0101】
また、情報提供装置10は、複数の演算装置のうち、一部の演算装置により学習が行われたモデルの同期を行う。例えば、情報提供装置10は、複数の演算装置のうち、通信遅延が所定の範囲内に収まる複数の演算装置により学習が行われたモデルの同期を行う。また、例えば、情報提供装置10は、複数の演算装置のうち、ランダムに選択された一部の演算装置により学習が行われたモデルの同期を行う。このため、情報提供装置10は、同期処理におけるオーバーヘッドをさらに削減することができる。
【0102】
また、情報提供装置10は、複数の演算装置のうち、各演算装置が演算可能な情報の次元数と、全ての演算装置に対して配布される学習データの数とに応じた数の演算装置により学習が行われたモデルの同期を行う。このため、情報提供装置10は、より効率的なモデルの学習を実現できる。
【0103】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【0104】
また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、検出部は、検出手段や検出回路に読み替えることができる。
【符号の説明】
【0105】
10 情報提供装置
20 通信部
30 記憶部
31 学習データデータベース
32 モデルデータベース
40 第1演算部
41 学習制御部
42 情報提供部
50 第2演算部
51 演算部
52 演算制御部
521 配布部
522 同期部
100 データサーバ
200 利用者端末