(57)【要約】【課題】モデルのパラメータの修正が実施されるバッチサイズの大型化を実現すること。【解決手段】割当ノード１０は、ニューラルネットワークをモデルとする機械学習を行う。例えば、割当ノード１０は、機械学習によって学習させるサンプルの集合であって、モデルのパラメータが修正される単位のバッチサイズを有する第１のバッチを複数の第２のバッチに分割する処理と、ニューラルネットワークの層構造およびパラメータが同一であるモデルが共有される複数のコンピュータに、第２のバッチに関する学習を割り当てる処理とを実行する。【選択図】図２
2018018451.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークをモデルとする機械学習方法であって、
前記機械学習によって学習させるサンプルの集合であって、前記モデルのパラメータが修正される単位のバッチサイズを有する第１のバッチを複数の第２のバッチに分割する処理と、
ニューラルネットワークの層構造およびパラメータが同一であるモデルが共有される複数のコンピュータに、前記第２のバッチに関する学習を割り当てる処理と、
がコンピュータにより実行されることを特徴とする機械学習方法。
【請求項２】
前記複数のコンピュータの間で前記モデルに含まれるニューロンのうち入力または出力を無効化するニューロンを定める乱数生成のアルゴリズム及びシード値を共有させる処理がさらに前記コンピュータにより実行されることを特徴とする請求項１に記載の機械学習方法。
【請求項３】
前記分割する処理は、前記複数のコンピュータが有するメモリの容量にしたがって前記第２のバッチのサイズを決定することを特徴とする請求項１または２に記載の機械学習方法。
【請求項４】
前記第２のバッチに含まれる訓練サンプルごとに算出された前記パラメータの修正量の合計を前記複数のコンピュータから取得する処理と、
前記複数のコンピュータごとに取得された前記パラメータの修正量の合計が平均された平均値にしたがって前記モデルを修正する処理と、
がさらに前記コンピュータにより実行されることを特徴とする請求項１、２または３に記載の機械学習方法。
【請求項５】
前記複数のコンピュータの間で修正後のモデルを共有させる処理がさらに前記コンピュータにより実行されることを特徴とする請求項４に記載の機械学習方法。
【請求項６】
ニューラルネットワークをモデルとする機械学習を行う機械学習プログラムであって、
前記機械学習によって学習させるサンプルの集合であって、前記モデルのパラメータが修正される単位のバッチサイズを有する第１のバッチを複数の第２のバッチに分割する処理と、
ニューラルネットワークの層構造およびパラメータが同一であるモデルが共有される複数のコンピュータに、前記第２のバッチに関する学習を割り当てる処理と、
をコンピュータに実行させることを特徴とする機械学習プログラム。
【請求項７】
ニューラルネットワークをモデルとする機械学習を行う情報処理装置であって、
前記機械学習によって学習させるサンプルの集合であって、前記モデルのパラメータが修正される単位のバッチサイズを有する第１のバッチを複数の第２のバッチに分割する分割部と、
ニューラルネットワークの層構造およびパラメータが同一であるモデルが共有される複数のコンピュータに、前記第２のバッチに関する学習を割り当てる割当部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習方法、機械学習プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
機械学習の一例として、多層構造のニューラルネットワークをモデルとして用いる深層学習、いわゆるディープラーニングが知られている。その学習アルゴリズムには、一例として、確率的勾配降下法が用いられる。
【０００３】
確率的勾配降下法が用いられる場合、正例または負例の正解のラベルが付与された訓練サンプルがモデルへ入力される度に、モデルからの出力と訓練サンプルの正解との誤差を最小化するモデルのオンライン学習が実現される。すなわち、誤差の勾配を用いて出力層から順に入力層へ向かって各層のニューロンごとに求められた重みの修正量にしたがって重みの修正が訓練サンプルごとに実施される。
【０００４】
また、確率的勾配降下法は、ミニバッチと呼ばれる単位に訓練サンプルをまとめて重みの修正が実施される場合もある。このミニバッチサイズを大きくするほど重みの修正量を精度良く求めることができる結果、モデルの学習速度を高めることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１４／０１８０９８６号明細書
【特許文献２】特開２０１６−４５９４３号公報
【非特許文献】
【０００６】
【非特許文献１】Ren  Wu,  Shengen  Yan,  Yi  Shan,  Qingqing  Dang,  Gang  Sun著  「Deep  Image:  Scaling  up  Image  Recognition」,  CoRR,  Vol.abs/1501.02876  2015
【非特許文献２】Nitish  Srivastava,  Geoffrey  Hinton,  Alex  Krizhevsky,  Ilya  Sutskever,  Ruslan  Salakhutdinov著  「Dropout：  A  Simple  Way  to  Prevent  Neural  Networks  from  Overfitting」,  Journal  of  Machine  Learning  Research,  Vol.15,  pp1929-1958,  2014
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記のミニバッチサイズは、学習が実施されるプロセッサに接続されるメモリの容量に制約を受けるので、バッチサイズの大型化には限界がある。
【０００８】
１つの側面では、本発明は、モデルのパラメータの修正が実施されるバッチサイズの大型化を実現できる機械学習方法、機械学習プログラム及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
一態様の機械学習方法は、ニューラルネットワークをモデルとする機械学習方法である。前記機械学習方法では、前記機械学習によって学習させるサンプルの集合であって、前記モデルのパラメータが修正される単位のバッチサイズを有する第１のバッチを複数の第２のバッチに分割する処理と、ニューラルネットワークの層構造およびパラメータが同一であるモデルが共有される複数のコンピュータに、前記第２のバッチに関する学習を割り当てる処理と、がコンピュータにより実行される。
【発明の効果】
【００１０】
モデルのパラメータの修正が実施されるバッチサイズの大型化を実現できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係るデータ処理システムの構成例を示す図である。
【図２】図２は、実施例１に係るデータ処理システムに含まれる各装置の機能的構成を示すブロック図である。
【図３】図３は、モデル学習の一例を示す図である。
【図４】図４は、実施例１に係る機械学習処理の手順を示すフローチャートである。
【図５】図５は、実施例１及び実施例２に係る機械学習プログラムを実行するコンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して本願に係る機械学習方法、機械学習プログラム及び情報処理装置について説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１３】
［システム構成］
図１は、実施例１に係るデータ処理システムの構成例を示す図である。図１に示すデータ処理システム１は、画像認識や音声認識を行うモデル学習の一例として、確率的勾配降下法にしたがって、多層構造のニューラルネットワークを用いる深層学習、いわゆるディープラーニングを行うものである。
【００１４】
図１に示すデータ処理システム１では、モデル学習に用いるデータセットとして、正例または負例の正解のラベルが付与された訓練サンプルの集合が用意される。その上で、データ処理システム１は、データセットのうち一部を「スーパーバッチ」と呼ばれる単位にまとめてモデルの重みやバイアスなどのパラメータの修正を実施する。
【００１５】
ここで、割当ノード１０は、上記のスーパーバッチが分割された複数のミニバッチに関する学習を複数の計算ノード３０Ａ〜３０Ｃに分散して並列処理させる。以下では、図１に示す計算ノード３０Ａ〜３０Ｃのことを「計算ノード３０」と総称する場合がある。なお、ここでは、計算ノード３０が３つである場合を例示したが、計算ノード３０の数は２つ以上であればよく、例えば、計算ノード３０の２のべき乗に対応する個数など任意の個数の計算ノード３０をデータ処理システム１に収容できる。
【００１６】
これによって、パラメータの修正が実施される単位であるスーパーバッチのサイズが、学習に関するデータ処理を実行するハードウェア、本例では計算ノード３０が有するメモリの容量に制約を受けるのを抑制できる。なぜなら、スーパーバッチのサイズが計算ノード３０のメモリ容量を超えるサイズであったとしても、各計算ノード３０がデータ処理を担当するミニバッチのサイズは、分散処理によって各計算ノード３０のメモリ容量に合わせることができるからである。
【００１７】
したがって、本実施例に係る割当ノード１０によれば、モデルのパラメータの修正が実施されるバッチサイズの大型化を実現できる。
【００１８】
図１に示すデータ処理システム１は、割当ノード１０及び計算ノード３０Ａ〜３０Ｃを含むクラスタとして構築される。ここでは、ＧＰＧＰＵ（General-Purpose  computing  on  Graphics  Processing  Units）等によりＧＰＵクラスタとして構築される場合を例示する。これら割当ノード１０及び計算ノード３０Ａ〜３０Ｃは、InfiniBand等のインターコネクトにより接続される。なお、上記のＧＰＵクラスタは、あくまで実装の一例であり、分散並列処理が実現することができればプロセッサの種類は問わず、汎用のＣＰＵ（Central  Processing  Unit）によりコンピュータクラスタとして構築することとしてもかまわない。
【００１９】
これらのうち、割当ノード１０は、スーパーバッチが分割されたミニバッチの学習を計算ノード３０に割り当てるノードである。一方、計算ノード３０は、割当ノード１０により割り当てられたミニバッチの学習に関するデータ処理を実行するノードである。これら割当ノード１０及び計算ノード３０Ａ〜３０Ｃの各ノードは、同一の性能とすることもできるし、異なる性能とすることもできる。
【００２０】
なお、以下では、説明の便宜上、各計算ノード３０にミニバッチの学習が割り当てられる度に各計算ノード３０でデータ処理が実行される場合を例示するが、処理の実行順序はこれに限定されない。例えば、割当ノード１０が各計算ノード３０へのミニバッチの割当をスーパーバッチごとに設定した後、各計算ノード３０がミニバッチの学習に関するデータ処理を一括して実施することとしてもかまわない。この場合、必ずしもＧＰＵクラスタに含まれるノードがミニバッチの割当を実施せずともよく、任意のコンピュータにミニバッチの割当を実施させることができる。また、割当ノード１０にミニバッチの学習を割り当てておき、割当ノード１０も計算ノード３０の１つとして機能させることもできる。
【００２１】
［割当ノード１０の構成］
図２は、実施例１に係るデータ処理システム１に含まれる各装置の機能的構成を示すブロック図である。図２に示すように、割当ノード１０は、記憶部１３と、制御部１５とを有する。なお、図２には、データの入出力の関係を表す実線が示されているが、説明の便宜上、最小限の部分について示されているに過ぎない。すなわち、各処理部に関するデータの入出力は、図示の例に限定されず、図示以外のデータの入出力、例えば処理部及び処理部の間、処理部及びデータの間、並びに、処理部及び外部装置の間のデータの入出力が行われることとしてもかまわない。
【００２２】
記憶部１３は、制御部１５で実行されるＯＳ（Operating  System）を始め、上記のミニバッチの学習の割当を実現する機械学習プログラムなどのアプリケーションプログラムを含む各種プログラム、さらには、これらのプログラムに用いられるデータを記憶するデバイスである。
【００２３】
一実施形態として、記憶部１３は、割当ノード１０における補助記憶装置として実装することができる。例えば、記憶部１３には、ＨＤＤ（Hard  Disk  Drive）、光ディスクやＳＳＤ（Solid  State  Drive）などを採用できる。なお、記憶部１３は、必ずしも補助記憶装置として実装されずともよく、割当ノード１０における主記憶装置として実装することもできる。この場合、記憶部１３には、各種の半導体メモリ素子、例えばＲＡＭ（Random  Access  Memory）やフラッシュメモリを採用できる。
【００２４】
記憶部１３は、制御部１５で実行されるプログラムに用いられるデータの一例として、データセット１３ａと、モデルデータ１３ｂとを記憶する。これらデータセット１３ａ及びモデルデータ１３ｂ以外にも、他の電子データ、例えば重みや学習率の初期値なども併せて記憶することができる。
【００２５】
データセット１３ａは、訓練サンプルの集合である。例えば、データセット１３ａは、複数のスーパーバッチに分けられる。例えば、モデルの設計者の指示入力等により、目標とする学習効率、例えばモデルが収束する速度等から、計算ノード３０のメモリ容量の制約を受けずに、スーパーバッチのサイズを設定させることができる。このスーパーバッチの設定により、データセット１３ａは、データセット１３ａに含まれるスーパーバッチ、さらには、各スーパーバッチに含まれる訓練サンプルがＩＤ（IDentification）等の識別情報により識別可能な状態で保存される。
【００２６】
モデルデータ１３ｂは、モデルに関するデータである。例えば、モデルデータ１３ｂには、ニューラルネットワークを形成する入力層、中間層及び出力層の各層のニューロンやシナプスなどの層構造を始め、各層の重みやバイアスなどのパラメータなどが含まれる。
【００２７】
制御部１５は、各種のプログラムや制御データを格納する内部メモリを有し、これらによって種々の処理を実行するものである。
【００２８】
一実施形態として、制御部１５は、プロセッサとして実装される。例えば、ＧＰＧＰＵにより実装することができる。制御部１５は、必ずしもＧＰＵにより実装されずともよく、ＣＰＵやＭＰＵ（Micro  Processing  Unit）により実装することもでき、また、ＧＰＧＰＵとＣＰＵの混成により実装されることとしてもよい。このように、制御部１５は、プロセッサとして実装されればよく、その種別が汎用型または特化型であるかは問われない。また、制御部１５は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックによっても実現できる。
【００２９】
制御部１５は、図示しない主記憶装置として実装されるＲＡＭのワークエリア上に、上記の機械学習プログラムをプロセスとして展開することにより、下記の処理部を仮想的に実現する。例えば、制御部１５は、図２に示すように、分割部１５ａと、割当部１５ｂと、取得部１５ｃと、修正部１５ｄと、共有部１５ｅとを有する。
【００３０】
分割部１５ａは、スーパーバッチを複数のミニバッチに分割する処理部である。
【００３１】
一実施形態として、分割部１５ａは、図示しない外部装置、例えばモデルの設計者等が使用するコンピュータ等から学習指示を受け付けた場合に処理を起動する。例えば、学習指示により、学習の対象とするモデルやデータセットなどが指定される他、学習に用いる計算ノード３０の識別情報のリストなどが指定される。この指定にしたがって、分割部１５ａは、記憶部１３に記憶されたモデルデータ１３ｂのうち学習指示で指定されたモデルにパラメータ、例えば重みやバイアスに加えて学習率などの初期値を設定することにより、初期化処理を実施する。続いて、分割部１５ａは、記憶部１３に記憶されたデータセット１３ａのうち学習指示で指定されたデータセットに関するスーパーバッチの設定を読み出す。そして、分割部１５ａは、学習指示で指定されたリストから学習に参加する計算ノード３０を識別し、各計算ノード３０に初期のモデルを配信する。これによって、ニューラルネットワークの層構造およびパラメータが同一であるモデルが各計算ノード３０の間で共有される。
【００３２】
これらの処理の後、分割部１５ａは、データセットの中からスーパーバッチを１つ選択する。続いて、分割部１５ａは、学習に参加する計算ノード３０のＧＰＧＰＵに接続されたメモリの容量にしたがって各計算ノード３０に学習を割り当てるミニバッチのサイズを算出する。例えば、計算ノード３０のＧＰＧＰＵが複数のスレッドにより訓練サンプルに対する重みの修正量を並列して算出する場合、ＧＰＧＰＵで起動されるスレッド数に対応する訓練サンプル、モデル、モデルの出力および重みの修正量のデータサイズと、ＧＰＧＰＵが接続されるメモリの空き容量とを比較することにより、ＧＰＧＰＵが並列処理できるミニバッチのサイズが計算ノード３０ごとに見積もられる。その上で、分割部１５ａは、スーパーバッチを各計算ノード３０ごとに見積もられたミニバッチのサイズにしたがって分割する。なお、スーパーバッチのサイズは、当該スーパーバッチが見積もりのミニバッチのサイズで分割された場合に過不足が生じないよう逆算して設定しておくこともできるし、余りが生じる場合、計算ノード３０ごとにミニバッチのサイズが見積もられた時点でスーパーバッチのサイズを調整変更することもできる。
【００３３】
割当部１５ｂは、ミニバッチの学習を計算ノード３０に割り当てる処理部である。
【００３４】
一実施形態として、割当部１５ｂは、分割部１５ａによりスーパーバッチが分割される度に、ミニバッチに含まれる訓練サンプルの識別情報を当該ミニバッチの学習を担当する計算ノード３０に通知する。この通知を受けた計算ノード３０は、当該計算ノード３０のＧＰＧＰＵがパラメータの修正量の算出対象とする訓練サンプルを識別することができる。これによって、計算ノード３０は、ＧＰＧＰＵで起動されるスレッドごとに訓練サンプルをモデルへ入力し、モデルの出力と訓練サンプルの正解との誤差の勾配を用いて出力層から順に入力層へ向かって各層のニューロンごとに重みの修正量Δｗやバイアスの修正量ΔＢなどのパラメータの修正量を算出することも可能になる。このように訓練サンプルごとにパラメータの修正量が算出された後、パラメータの修正量は合計される。
【００３５】
取得部１５ｃは、パラメータの修正量の合計を取得する処理部である。
【００３６】
一実施形態として、取得部１５ｃは、計算ノード３０によりパラメータの修正量の合計が算出される度に、当該計算ノード３０からパラメータの修正量の合計を取得する。このようにしてパラメータの修正量の合計が計算ノード３０ごとに取得されることになる。
【００３７】
修正部１５ｄは、モデルの修正を実行する処理部である。
【００３８】
一実施形態として、修正部１５ｄは、取得部１５ｃにより計算ノード３０ごとにパラメータの修正量の合計が取得される度に、計算ノード３０ごとに取得されたパラメータの修正量の合計に所定の統計処理を実行する。例えば、修正部１５ｄは、統計処理の一例として、パラメータの修正量の合計を平均することにより平均値を算出できる。ここでは、パラメータの修正量の合計が平均される場合を例示したが、最頻値や中央値を求めることもできる。その後、修正部１５ｄは、各計算ノード３０の間でパラメータの修正量の合計が平均された平均値にしたがってモデルのパラメータ、すなわち重みやバイアスを修正する。
【００３９】
共有部１５ｅは、修正後のモデルを共有する処理部である。
【００４０】
一実施形態として、共有部１５ｅは、修正部１５ｄによりモデルのパラメータが修正される度に、修正後のモデルを各計算ノード３０へ配信する。これによって、修正後のモデルが各計算ノード３０の間で共有される。
【００４１】
図３は、モデル学習の一例を示す図である。図３に示す入力データは、訓練サンプルに対応し、出力データは、モデルの出力に対応し、修正用データは、重みの修正量Δｗ及びバイアスの修正量ΔＢを含むパラメータの修正量に対応する。図３には、ｎ回目のモデル学習、ｎ個目のスーパーバッチが分割されたミニバッチが計算ノード３０Ａ〜３０Ｃが入力された場合が示されている。
【００４２】
図３に示すように、各計算ノード３０では、計算ノード３０のＧＰＧＰＵが１または複数のスレッドが起動される。ここでは、一例として、ミニバッチに含まれる訓練サンプルの数と同数のスレッドが起動される場合を例に挙げて以下の説明を行う。各スレッドでは、モデルが実行されると共にモデルに訓練サンプルが入力データとして入力層へ入力される（Ｓ１）。この結果、モデルの出力層から出力された出力データがスレッドごとに得られる（Ｓ２）。その後、モデルの出力と訓練サンプルの正解との誤差の勾配を用いて出力層から順に入力層へ向かって各層のニューロンごとに重みの修正量Δｗやバイアスの修正量ΔＢなどのパラメータの修正量が修正データとして算出される（Ｓ３）。続いて、ミニバッチの訓練サンプルごとに算出されたパラメータの修正量が合計される（Ｓ４）。
【００４３】
このように各計算ノード３０でパラメータの修正量の合計が算出された後、割当ノード１０によりパラメータの修正量の合計が計算ノード３０ごとに取得される（Ｓ５）。そして、計算ノード３０ごとに取得されたパラメータの修正量の合計が平均される（Ｓ６）。その後、各計算ノード３０の間でパラメータの修正量の合計が平均された平均値にしたがってモデルのパラメータ、すなわち重みやバイアスが修正される（Ｓ７）。この修正によって、ｎ＋１回目の学習に用いるモデルが得られる。その上で、割当ノード１０から各計算ノード３０へ修正後のモデルが送信される（Ｓ８）ことにより、各計算ノード３０の間で修正後のモデルが共有される。
【００４４】
［計算ノード］
次に、本実施例に係る計算ノード３０の機能的構成について説明する。図２に示すように、計算ノード３０は、記憶部３３と、制御部３５とを有する。なお、図２には、データの入出力の関係を表す実線が示されているが、説明の便宜上、最小限の部分について示されているに過ぎない。すなわち、各処理部に関するデータの入出力は、図示の例に限定されず、図示以外のデータの入出力、例えば処理部及び処理部の間、処理部及びデータの間、並びに、処理部及び外部装置の間のデータの入出力が行われることとしてもかまわない。
【００４５】
記憶部３３は、制御部３５で実行されるＯＳを始め、上記のミニバッチの学習を実現する学習プログラムなどのアプリケーションプログラムを含む各種プログラム、さらには、これらのプログラムに用いられるデータを記憶するデバイスである。
【００４６】
一実施形態として、記憶部３３は、計算ノード３０における補助記憶装置として実装することができる。例えば、記憶部３３には、ＨＤＤ、光ディスクやＳＳＤなどを採用できる。なお、記憶部３３は、必ずしも補助記憶装置として実装されずともよく、計算ノード３０における主記憶装置として実装することもできる。この場合、記憶部３３には、各種の半導体メモリ素子、例えばＲＡＭやフラッシュメモリを採用できる。
【００４７】
記憶部３３は、制御部３５で実行されるプログラムに用いられるデータの一例として、データセット３３ａと、モデルデータ３３ｂとを記憶する。これらデータセット３３ａ及びモデルデータ３３ｂ以外にも、他の電子データを併せて記憶することができる。
【００４８】
データセット３３ａは、訓練サンプルの集合である。このデータセット３３ａは、割当ノード１０が有するデータセット１３ａと同一のものが共有される。ここでは、あくまで一例として、割当ノード１０及び計算ノード３０間の通信を削減する観点から、両者の間でデータセットが予め共有される場合を例示したが、割当ノード１０がミニバッチの学習を計算ノード３０に割り当てる度に当該ミニバッチを計算ノード３０へ送信することとしてもかまわない。
【００４９】
モデルデータ３３ｂは、モデルに関するデータである。このモデルデータ３３ｂは、一例として、割当ノード１０によりモデルが修正される度に修正後のモデルがモデルデータ３３ｂとして反映されることにより、割当ノード１０と同一のものが共有される。
【００５０】
制御部３５は、各種のプログラムや制御データを格納する内部メモリを有し、これらによって種々の処理を実行するものである。
【００５１】
一実施形態として、制御部３５は、プロセッサとして実装される。例えば、ＧＰＧＰＵにより実装することができる。制御部３５は、必ずしもＧＰＵにより実装されずともよく、ＣＰＵやＭＰＵにより実装することもでき、また、ＧＰＧＰＵとＣＰＵの混成により実装されることとしてもよい。このように、制御部３５は、プロセッサとして実装されればよく、その種別が汎用型または特化型であるかは問われない。また、制御部３５は、ＡＳＩＣやＦＰＧＡなどのハードワイヤードロジックによっても実現できる。
【００５２】
制御部３５は、図示しない主記憶装置として実装されるＲＡＭのワークエリア上に、上記の学習プログラムをプロセスとして展開することにより、下記の処理部を仮想的に実現する。例えば、制御部３５は、図２に示すように、モデル実行部３５ａと、算出部３５ｂとを有する。なお、図２には、説明の便宜上、１つのモデル実行部３５ａが示されているが、ＧＰＧＰＵにより複数のスレッドが起動される場合、スレッド数と同数のモデル実行部３５ａが制御部３５に備わる。
【００５３】
モデル実行部３５ａは、モデルを実行する処理部である。
【００５４】
一実施形態として、割当ノード１０によりミニバッチの学習が割り当てられる度に、計算ノード３０のＧＰＧＰＵが起動するスレッドと同数、例えばミニバッチの訓練サンプルの数と同数のモデル実行部３５ａが起動される。このとき、モデル実行部３５ａでは、各モデル実行部３５ａの間で同一の層構造および同一のパラメータを持つモデルであり、かつ割当ノード１０により修正された最新のモデルが実行される。このように起動されたモデル実行部３５ａごとに、割当ノード１０により学習が割り当てられたミニバッチに含まれる訓練サンプルの学習が並列して実行される。すなわち、割当ノード１０から通知された訓練サンプルの識別情報にしたがってモデル実行部３５ａが実行するモデルの入力層にミニバッチの訓練サンプルが入力される結果、モデルの出力層から出力、いわゆる推測データが得られる。その後、モデル実行部３５ａは、モデルの出力と訓練サンプルの正解との誤差の勾配を用いて出力層から順に入力層へ向かって各層のニューロンごとに重みの修正量Δｗやバイアスの修正量ΔＢなどのパラメータの修正量を算出する。この結果、ミニバッチに含まれる訓練サンプルごとにパラメータの修正量が得られる。
【００５５】
算出部３５ｂは、パラメータの修正量の合計を算出する処理部である。
【００５６】
一実施形態として、算出部３５ｂは、モデル実行部３５ａによりミニバッチの訓練サンプルごとにパラメータの修正量が算出される度に、パラメータの修正量を合計する。その上で、算出部３５ｂは、パラメータの修正量の合計を割当ノード１０へ送信する。
【００５７】
［処理の流れ］
図４は、実施例１に係る機械学習処理の手順を示すフローチャートである。この処理は、あくまで一例として、モデルの設計者等が使用するコンピュータ等から学習指示を受け付けた場合に処理を起動する。
【００５８】
図４に示すように、分割部１５ａは、記憶部１３に記憶されたモデルデータ１３ｂのうち学習指示で指定されたモデルにパラメータ、例えば重みやバイアスに加えて学習率などの初期値を設定することにより、初期化処理を実施する（ステップＳ１０１）。
【００５９】
続いて、分割部１５ａは、記憶部１３に記憶されたデータセット１３ａのうち学習指示で指定されたデータセットに関するスーパーバッチの設定を読み出す（ステップＳ１０２）。そして、分割部１５ａは、学習指示で指定されたリストから学習に参加する計算ノード３０を識別し、各計算ノード３０に初期のモデルを配信する（ステップＳ１０３）。これによって、ニューラルネットワークの層構造およびパラメータが同一であるモデルが各計算ノード３０の間で共有される。
【００６０】
その後、分割部１５ａは、データセットの中からスーパーバッチを１つ選択する（ステップＳ１０４）。続いて、分割部１５ａは、各計算ノード３０のＧＰＧＰＵに接続されたメモリ容量にしたがってステップＳ１０４で選択されたスーパーバッチを複数のミニバッチに分割する（ステップＳ１０５）。
【００６１】
そして、割当部１５ｂは、ステップＳ１０５でスーパーバッチから分割されたミニバッチに含まれる訓練サンプルの識別情報を当該ミニバッチの学習を担当する計算ノード３０に通知することにより、ミニバッチの学習を各計算ノード３０に割り当てる（ステップＳ１０６）。
【００６２】
その後、取得部１５ｃは、各計算ノード３０からパラメータの修正量の合計を取得する（ステップＳ１０７）。そして、修正部１５ｄは、ステップＳ１０７で計算ノード３０ごとに取得されたパラメータの修正量の合計を平均する（ステップＳ１０８）。その上で、修正部１５ｄは、ステップＳ１０８で各計算ノード３０の間のパラメータの修正量の合計が平均された平均値にしたがってモデルのパラメータ、すなわち重みやバイアスを修正する（ステップＳ１０９）。
【００６３】
続いて、共有部１５ｅは、ステップＳ１０９で修正された修正後のモデルを各計算ノード３０へ配信する（ステップＳ１１０）。これによって、修正後のモデルが各計算ノード３０の間で共有される。
【００６４】
その後、データセットから全てのスーパーバッチが選択されるまで（ステップＳ１１１Ｎｏ）、上記のステップＳ１０４〜上記のステップＳ１１０の処理を繰り返し実行する。そして、データセットから全てのスーパーバッチが選択された場合（ステップＳ１１１Ｙｅｓ）、処理を終了する。
【００６５】
なお、図４に示すフローチャートでは、あくまで一例として、データセットに含まれるスーパーバッチの学習が１周することを条件に学習を終了する場合を例示したが、任意のループ回数にわたってスーパーバッチの学習を繰り返し実行することができる。例えば、パラメータの修正値が所定値以下になるまで繰り返して学習を行うこととしてもよいし、ループ回数に制限を設けることとしてもよい。このように複数回にわたってスーパーバッチの学習がループされる場合、ループの度に訓練サンプルがシャッフルされる。
【００６６】
［効果の一側面］
上述してきたように、本実施例に係る割当ノード１０は、スーパーバッチが分割された複数のミニバッチに関する学習を複数の計算ノード３０Ａ〜３０Ｃに分散して並列処理させる。これによって、パラメータの修正が実施される単位であるスーパーバッチのサイズが、学習に関するデータ処理を実行するハードウェア、本例では計算ノード３０が有するメモリの容量に制約を受けるのを抑制できる。したがって、本実施例に係る割当ノード１０によれば、モデルのパラメータの修正が実施されるバッチサイズの大型化を実現できる。
【実施例２】
【００６７】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００６８】
［ドロップアウト］
ニューラルネットワークでは、モデル学習に用いられた訓練サンプルに対する識別率が高くなる一方で、訓練サンプル以外のサンプルに対する識別率が低くなる過学習が起こる場合がある。
【００６９】
このような過学習の発生を抑制するために、データ処理システム１では、各計算ノード３０の間でモデルに含まれるニューロンのうち入力または出力を無効化するニューロンを定める乱数生成のアルゴリズム及びシード値を共有させることができる。例えば、モデルの各層に含まれるニューロンごとに０〜１の値をとる一様乱数を発生させ、乱数値が所定の閾値、例えば０．４以上である場合に当該ニューロンに対する入力及び出力を有効とする一方で、０．４未満である場合に当該ニューロンに対する入力又は出力を無効化する。このようにしてドロップアウトが実現される場合、割当ノード１０は、一様乱数を発生させるアルゴリズムを各計算ノード３０の間で共有させると共に、一様乱数の発生に用いるニューロン別のシード値も各計算ノード３０の間で共有させる。その上で、割当ノード１０は、各計算ノード３０の間で同一のアルゴリズムを用いてニューロン別にシード値を変えることにより発生させられた一様乱数により全ニューロンのうち入力又は出力を無効化するニューロンを定め、これにより実施されるドロップアウトを、各計算ノード３０で同一のスーパーバッチから分割されたミニバッチの学習が開始してから終了するまでの間にわたって継続する。
【００７０】
これによって、一側面として、次のような効果を得ることができる。メモリ容量の制約を受けることなくバッチサイズを大型化し、かつ過学習を防止することができる。つまり、スーパーバッチが分割された複数のミニバッチに関する学習を複数の計算ノードに分散して並列処理させるシステムにおいて、モデルに含まれるニューロンのうち入力または出力を無効化するニューロンを定める乱数生成のアルゴリズム及びシード値を共有し、各計算ノードからのパラメータの修正量の合計に基づいて、重みやバイアスを修正することにより、スーパーバッチサイズの単位で過学習を抑制するのと同様の学習を行うことができる。従って、メモリ容量の制約を受けることなくバッチサイズを大型化し、かつ過学習を防止することができる。
【００７１】
また、他の側面として、次のような効果を得る事ができる。例えば、各計算ノード３０でミニバッチの学習が分散して実施される場合、ミニバッチに含まれる訓練サンプルの識別情報の通知やパラメータの修正量の合計の通知により、データ処理システム１の通信リソースが割かれる状況となる。このような状況下で、ドロップアウトを実施するための通信、例えば各計算ノード３０で入力又は出力を無効化するニューロンを共有するための通知などを行わずともよくなる。さらに、各計算ノード３０の間で同一のニューロンに対する入力又は出力が無効化された状態でスーパーバッチの学習を実現できるので、モデル学習の結果が安定する。すなわち、異なる台数の計算ノード３０で同一のデータセットに関するモデル学習の分散処理が実施された場合でも同一の学習結果を得ることができる。それ故、ひいてはモデルの識別率の進捗、計算ノード３０の台数、１台の計算ノード３０あたりのミニバッチのサイズなどから、モデルが収束するまでの所要時間等を正確に予測することができる。
【００７２】
［機械学習プログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図５を用いて、上記の実施例と同様の機能を有する機械学習プログラムを実行するコンピュータの一例について説明する。
【００７３】
図５は、実施例１及び実施例２に係る機械学習プログラムを実行するコンピュータのハードウェア構成例を示す図である。図５に示すように、コンピュータ１００は、操作部１１０ａと、スピーカ１１０ｂと、カメラ１１０ｃと、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１５０と、ＲＯＭ１６０と、ＨＤＤ１７０と、ＲＡＭ１８０とを有する。これら１１０〜１３０及び１５０〜１８０の各部はバス１４０を介して接続される。
【００７４】
ＨＤＤ１７０には、図５に示すように、上記の実施例１で示した分割部１５ａ、割当部１５ｂ、取得部１５ｃ、修正部１５ｄ及び共有部１５ｅと同様の機能を発揮する機械学習プログラム１７０ａが記憶される。この機械学習プログラム１７０ａは、図２に示した分割部１５ａ、割当部１５ｂ、取得部１５ｃ、修正部１５ｄ及び共有部１５ｅの各構成要素と同様、統合又は分離してもかまわない。すなわち、ＨＤＤ１７０には、必ずしも上記の実施例１で示した全てのデータが格納されずともよく、処理に用いるデータがＨＤＤ１７０に格納されればよい。
【００７５】
このような環境の下、ＣＰＵ１５０は、ＨＤＤ１７０から機械学習プログラム１７０ａを読み出した上でＲＡＭ１８０へ展開する。この結果、機械学習プログラム１７０ａは、図５に示すように、機械学習プロセス１８０ａとして機能する。この機械学習プロセス１８０ａは、ＲＡＭ１８０が有する記憶領域のうち機械学習プロセス１８０ａに割り当てられた領域にＨＤＤ１７０から読み出した各種データを展開し、この展開した各種データを用いて各種の処理を実行する。例えば、機械学習プロセス１８０ａが実行する処理の一例として、図４に示す処理などが含まれる。なお、ＣＰＵ１５０では、必ずしも上記の実施例１で示した全ての処理部が動作せずともよく、実行対象とする処理に対応する処理部が仮想的に実現されればよい。
【００７６】
なお、上記の機械学習プログラム１７０ａは、必ずしも最初からＨＤＤ１７０やＲＯＭ１６０に記憶されておらずともかまわない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に機械学習プログラム１７０ａを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から機械学習プログラム１７０ａを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに機械学習プログラム１７０ａを記憶させておき、コンピュータ１００がこれらから機械学習プログラム１７０ａを取得して実行するようにしてもよい。
【符号の説明】
【００７７】
１    データ処理システム
１０    割当ノード
１３    記憶部
１３ａ  データセット
１３ｂ  モデルデータ
１５    制御部
１５ａ  分割部
１５ｂ  割当部
１５ｃ  取得部
１５ｄ  修正部
１５ｅ  共有部
３０Ａ，３０Ｂ，３０Ｃ    計算ノード
３３    記憶部
３３ａ  データセット
３３ｂ  モデルデータ
３５    制御部
３５ａ  モデル実行部
３５ｂ  算出部
【図１】
2018018451.tif 000003
【図２】
2018018451.tif 000004
【図３】
2018018451.tif 000005
【図４】
2018018451.tif 000006
【図５】
2018018451.tif 000007