(57)【要約】【課題】目的関数の形状に合わせた効率的な平滑化を行う。【解決手段】学習装置は、生成部と、算出部と、を備える。生成部は、目的関数を用いてニューラルネットワークのパラメータを学習するための複数回の学習処理にそれぞれに用いる複数の学習データを生成する。算出部は、複数の学習データの少なくとも一部の学習データに対して、学習データを分割して得られる部分データに対する目的関数のパラメータに関する勾配である部分勾配を、他の学習データに対して算出された部分勾配に基づいて算出されるノイズが加えられたパラメータ、および、部分データを用いて算出する。【選択図】図３
2020119151.tif 000002
【特許請求の範囲】
【請求項１】
目的関数を用いてニューラルネットワークのパラメータを学習するための複数回の学習処理にそれぞれに用いる複数の学習データを生成する生成部と、
複数の前記学習データの少なくとも一部の前記学習データに対して、前記学習データを分割して得られる部分データに対する前記目的関数の前記パラメータに関する勾配である部分勾配を、他の前記学習データに対して算出された部分勾配に基づいて算出されるノイズが加えられた前記パラメータ、および、前記部分データを用いて算出する算出部と、
を備える学習装置。
【請求項２】
前記算出部は、
前記学習データに対する前記目的関数の前記パラメータに関する勾配である全体勾配を、前記学習データを分割して得られる複数の部分データに対して算出された複数の部分勾配を用いて算出し、
前記全体勾配と、他の前記学習データに対して算出された部分勾配と、を用いて前記ノイズを算出する、
請求項１に記載の学習装置。
【請求項３】
前記算出部は、
前記全体勾配と、他の前記学習データに対して算出された部分勾配と、の差分を用いて前記ノイズを算出する、
請求項２に記載の学習装置。
【請求項４】
前記算出部は、
前記全体勾配を用いて、他の前記学習データに対して算出された第１パラメータを更新することにより、前記学習データに対する第２パラメータを算出し、
前記ノイズが加えられた前記第２パラメータ、および、前記部分データを用いて、前記部分勾配を算出する、
請求項２に記載の学習装置。
【請求項５】
前記算出部は、
他の前記学習データに対して算出された第１パラメータに前記ノイズを加えた値、および、前記部分データを用いて、前記部分勾配を算出する、
請求項１に記載の学習装置。
【請求項６】
目的関数を用いてニューラルネットワークのパラメータを学習するための複数回の学習処理にそれぞれに用いる複数の学習データを生成する生成ステップと、
複数の前記学習データの少なくとも一部の前記学習データに対して、前記学習データを分割して得られる部分データに対する前記目的関数の前記パラメータに関する勾配である部分勾配を、他の前記学習データに対して算出された部分勾配に基づいて算出されるノイズが加えられた前記パラメータ、および、前記部分データを用いて算出する算出ステップと、
を含む学習方法。
【請求項７】
コンピュータを、
目的関数を用いてニューラルネットワークのパラメータを学習するための複数回の学習処理にそれぞれに用いる複数の学習データを生成する生成部と、
複数の前記学習データの少なくとも一部の前記学習データに対して、前記学習データを分割して得られる部分データに対する前記目的関数の前記パラメータに関する勾配である部分勾配を、他の前記学習データに対して算出された部分勾配に基づいて算出されるノイズが加えられた前記パラメータ、および、前記部分データを用いて算出する算出部と、
として機能させるためのプログラム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、学習装置、学習方法およびプログラムに関する。
【背景技術】
【０００２】
近年、機械学習の１つであるディープラーニングによるデータの有効活用が期待されている。ディープラーニングにおいては、一般的にミニバッチを用いた確率的勾配降下法（Stochastic  Gradient  Descent：ＳＧＤ）による最適化が用いられる。また、最適化するパラメータ（重みなど）に一様乱数のノイズを加えることにより、目的関数を平滑化して最適化する技術が提案されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Wei  Wen  et  al.，  “SmoothOut:  Smoothing  Out  Sharp  Minima  to  Improve  Generalization  in  Deep  Learning”，arXiv:  1805.07898,  2  December  2018
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、目的関数を効率的に平滑化できない場合があった。例えば一様乱数のノイズ、言い換えると等方性のノイズを用いる技術は、目的関数の形状に合わせたノイズを付与することができないため、効率的な平滑化ができない場合があった。
【課題を解決するための手段】
【０００５】
実施形態の学習装置は、生成部と、算出部と、を備える。生成部は、目的関数を用いてニューラルネットワークのパラメータを学習するための複数回の学習処理にそれぞれに用いる複数の学習データを生成する。算出部は、複数の学習データの少なくとも一部の学習データに対して、学習データを分割して得られる部分データに対する目的関数のパラメータに関する勾配である部分勾配を、他の学習データに対して算出された部分勾配に基づいて算出されるノイズが加えられたパラメータ、および、部分データを用いて算出する。
【図面の簡単な説明】
【０００６】
【図１】バッチサイズ、ノイズ、および、目的関数の平滑化の関係を示す図。
【図２】ノイズの算出方法の概念を示す図。
【図３】第１の実施形態にかかる情報処理システムのブロック図。
【図４】部分勾配、全体勾配、および、重みの関係の例を示す図。
【図５】算出対象の例を示す図。
【図６】算出対象の例を示す図。
【図７】第１の実施形態におけるパラメータ更新処理のフローチャート。
【図８】第１の実施形態における情報処理のフローチャート。
【図９】第２の実施形態にかかる学習システムのブロック図。
【図１０】部分勾配、全体勾配、および、重みの関係の例を示す図。
【図１１】第１または第２の実施形態にかかる学習装置のハードウェア構成図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、この発明にかかる学習装置の好適な実施形態を詳細に説明する。
【０００８】
上記のように、ＳＧＤなどのニューラルネットワークの学習では、学習データ全体から抽出された一部のデータであるミニバッチが用いられる場合がある。例えば複数のミニバッチを用いて学習を並列に実行すれば、学習処理を高速に実行可能となる。
【０００９】
大規模な学習データを用いた学習をより高速に実行するには、並列演算するミニバッチサイズ（以降バッチサイズ）を大きくすればよい。しかし大バッチサイズの学習ではモデルが汎化誤差の大きな局所解に陥る場合がある。
【００１０】
図１は、バッチサイズ、ノイズ、および、目的関数の平滑化の関係の一例を示す図である。目的関数は、学習処理で最適化（最小化、または、最大化）の対象となる関数である。目的関数は、損失関数などと呼ばれる場合がある。ＳＧＤなどの学習方法では、目的関数の勾配が算出され、勾配の方向に基づいてパラメータが更新される。勾配は、例えば、目的関数の、当該パラメータに関する一階微分を表す。更新されるパラメータはどのような情報であってもよい。例えばニューラルネットワークの学習の場合、ニューラルネットワークの重み（重み係数）およびバイアスなどがパラメータとなる。以下では、主にパラメータとして重みを用いる場合を例に説明する。
【００１１】
グラフ１１は、元の目的関数の例を示す。グラフ１２は、ＳＧＤのバッチサイズを小さくした場合（小バッチサイズ）のノイズの変化の例を示す。グラフ１３は、ＳＧＤのバッチサイズを大きくした場合（大バッチサイズ）のノイズの変化の例を示す。グラフ１４および１５は、それぞれ、小バッチサイズおよび大バッチサイズを用いたＳＧＤで平滑化される目的関数の例を示す。
【００１２】
小バッチサイズのＳＧＤでは、勾配に含まれるノイズ成分により目的関数が平滑化されることで（グラフ１４）、汎化誤差の小さな解に到達することが可能となる。これに対して、大バッチサイズのＳＧＤでは、勾配に含まれるノイズ成分が小バッチサイズと比較して小さくなることで平滑化効果も小さくなり（グラフ１５）、汎化誤差の大きな局所解に陥る場合がある。また、ＳＧＤのノイズは目的関数に応じた指向性を持つことが知られている。
【００１３】
（第１の実施形態）
第１の実施形態にかかる学習装置は、ＳＧＤによる最適化を行う場合に、ミニバッチの勾配算出過程で得られる部分勾配を用いて重みに一時的なノイズを加えて次のミニバッチの部分勾配を算出する。本実施形態では、一様乱数ではなく、部分勾配に含まれるノイズ成分（異方性のノイズ）を利用する。このため、目的関数の形状に対して適当な方向へのノイズを付与すること、すなわち、目的関数に合わせた効率的な平滑化を行うことができる。
【００１４】
図２は、本実施形態によるノイズの算出方法の概念を示す図である。図２の上部は、小バッチサイズ（例えば画像４枚）および大バッチサイズ（例えば画像８枚）の学習データをニューラルネットワークに入力して学習する場合に、複数の画像の勾配の平均が、学習データ全体に対する勾配として用いられることを示す。図２の例では、画像４枚の小バッチサイズの場合は、画像４枚の勾配の平均が、学習データの勾配として算出される。また、画像８枚の大バッチサイズの場合は、画像８枚の勾配の平均が、学習データの勾配として算出される。前者はノイズが大きくなるが、後者はノイズが小さくなる。
【００１５】
本実施形態の学習装置は、大バッチサイズの学習データの勾配（Ｌａｒｇｅ−Ｂａｔｃｈ勾配）は、小バッチサイズの複数の学習データの勾配（Ｓｍａｌｌ−Ｂａｔｃｈ勾配１、２）の平均とみなし、この関係に基づいて、小バッチサイズの学習データの勾配を算出するときに用いるノイズを算出する。以下では、大バッチサイズの学習データをミニバッチとし、ミニバッチをさらに分割した複数の学習データを部分ミニバッチ（部分データ）という。例えば、ミニバッチの勾配（Ｌａｒｇｅ−Ｂａｔｃｈ勾配）に対する、各部分ミニバッチの勾配（Ｓｍａｌｌ−Ｂａｔｃｈ勾配１、２）の差分に基づく値が、ノイズとして算出される。
【００１６】
図３は、第１の実施形態にかかる情報処理システムの構成例を示すブロック図である。図３に示すように、情報処理システムは、学習装置１００と、情報処理装置２００と、を含む。学習装置１００および情報処理装置２００は、例えば通信ネットワークおよび専用の通信線などを介して接続される。通信ネットワークは、有線ネットワーク、無線ネットワーク、および、インターネットなどの、どのような形態の通信ネットワークであってもよい。学習装置１００および情報処理装置２００の少なくとも一方は、例えば、ＣＰＵ（Central  Processing  Unit）などのプロセッサを備えるコンピュータであるサーバ装置などにより実現してもよい。サーバ装置は、クラウド上で処理を実行するクラウドサーバであってもよい。
【００１７】
学習装置１００は、ニューラルネットワークを学習する装置である。情報処理装置２００は、学習されたニューラルネットワークを用いた処理（認識処理、分類処理など）を実行する装置である。学習装置１００と情報処理装置２００とは別の装置である必要はなく、例えば学習装置１００が情報処理装置２００の機能を備えてもよい。
【００１８】
学習装置１００は、生成部１０１と、算出部１０２と、更新部１０３と、出力制御部１０４と、記憶部１２１と、を備えている。
【００１９】
生成部１０１は、ニューラルネットワークの学習に用いる学習データを生成する。生成部１０１は、例えば複数の学習データ（オリジナルの学習データ）から一部をサンプリングしたミニバッチを複数生成する。各ミニバッチは、複数の学習データを含む。このミニバッチが、ニューラルネットワークのパラメータを学習するための複数回の学習処理にそれぞれに用いられる。
【００２０】
算出部１０２は、ニューラルネットワークのパラメータの学習時に用いられる各種情報を算出する。例えば算出部１０２は、ミニバッチを分割した部分ミニバッチに対する、目的関数の勾配を算出する。以下では、部分ミニバッチに対して算出される勾配を部分勾配という場合がある。また算出部１０２は、部分勾配を用いて、ミニバッチ全体に対する勾配を算出する。以下では、ミニバッチ全体に対して算出される勾配を全体勾配という場合がある。また算出部１０２は、重みに対して加えるノイズを算出する。部分勾配、全体勾配、および、ノイズの算出方法の詳細については後述する。
【００２１】
更新部１０３は、算出部１０２による算出結果を用いて重みを更新する。重みの更新方法の詳細については後述する。
【００２２】
出力制御部１０４は、学習装置１００による各種情報の出力を制御する。例えば出力制御部１０４は、学習されたニューラルネットワークのパラメータを出力する。出力方法はどのような方法であってもよいが、例えば出力制御部１０４は、ニューラルネットワークのパラメータを、通信ネットワークを介して情報処理装置２００に出力する。
【００２３】
記憶部１２１は、学習装置１００による各種処理で用いられる各種情報を記憶する。例えば記憶部１２１は、学習の対象となるニューラルネットワークのパラメータ、および、ニューラルネットワークの学習に用いる学習データなどを記憶する。
【００２４】
学習装置１００の各部（生成部１０１、算出部１０２、更新部１０３、および、出力制御部１０４）は、例えば、１または複数のプロセッサにより実現される。例えば上記各部は、ＣＰＵなどのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のＩＣ（Integrated  Circuit）などのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち１つを実現してもよいし、各部のうち２以上を実現してもよい。
【００２５】
次に情報処理装置２００の構成について説明する。情報処理装置２００は、受付部２０１と、情報処理部２０２と、記憶部２２１と、を備えている。
【００２６】
受付部２０１は、情報処理装置２００による各種処理で用いる各種情報の入力を受け付ける。例えば受付部２０１は、学習装置１００から出力されたニューラルネットワークのパラメータを受け付ける。
【００２７】
情報処理部２０２は、ニューラルネットワークを用いた情報処理を実行する。情報処理は、例えば、ニューラルネットワークを用いた画像認識処理および画像分類処理などである。情報処理はこれに限られず、ニューラルネットワークを用いた処理であればどのような処理であってもよい。例えば、画像以外のデータ（テキスト、音声など）を対象とする認識処理および分類処理であってもよい。
【００２８】
記憶部２２１は、情報処理装置２００による各種処理で用いられる各種情報を記憶する。例えば記憶部２２１は、学習装置１００から出力されたニューラルネットワークのパラメータを記憶する。
【００２９】
情報処理装置２００の各部（受付部２０１および情報処理部２０２）は、例えば、１または複数のプロセッサにより実現される。例えば上記各部は、ＣＰＵなどのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のＩＣなどのプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち１つを実現してもよいし、各部のうち２以上を実現してもよい。
【００３０】
記憶部１２１、２２１は、フラッシュメモリ、メモリカード、ＲＡＭ（Random  Access  Memory）、ＨＤＤ（Hard  Disk  Drive）、および、光ディスクなどの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００３１】
次に、部分勾配、全体勾配、および、ノイズの算出方法、並びに、重みの更新方法の具体例について説明する。学習処理は、Ｔ個（Ｔは２以上の整数）のミニバッチを用いてＴ回繰り返し実行され、各回の学習処理で重みが更新される。各回の学習処理では、ミニバッチを分割した複数の部分ミニバッチに対する部分勾配の算出、および、部分勾配を用いた全体勾配の算出などが実行される。
【００３２】
算出部１０２は、ｔ回目（ｔは１≦ｔ≦Ｔを満たす整数）の学習処理の全体勾配Ｇｔを、以下の（１）式により算出する。Ｎは部分勾配数を表し、ｇｔｎは、ｔ回目の学習処理でｎ個目（ｎは１≦ｎ≦Ｎを満たす整数）の部分ミニバッチに対して算出される部分勾配を表す。
【数１】
2020119151.tif 000003
【００３３】
更新部１０３は、以下の（２）式により、（ｔ＋１）回目の学習処理で用いる重みｗｔ＋１を算出する。ｗｔはｔ回目の学習処理に用いる重みを表し、ηｔは学習係数を表す。
【数２】
2020119151.tif 000004
【００３４】
（２）式は、ｔ回目の学習処理に用いるミニバッチ（他の学習データ）に対して算出された重みｗｔ（第１パラメータ）を、全体勾配を用いて更新することにより、（ｔ＋１）回目の学習に用いるミニバッチに対する重み（第２パラメータ）を算出する式であると解釈することができる。
【００３５】
算出部１０２は、重みｗｔ＋１に対して加えるノイズθｔ＋１ｎを、以下の（３）式により算出する。
【数３】
2020119151.tif 000005
【００３６】
算出部１０２は、（ｔ＋１）回目の学習処理で、部分勾配ｇｔ＋１ｎを、以下の（４）式により算出する。
【数４】
2020119151.tif 000006
【００３７】
このように、本実施形態では、重みに対して加えるノイズが、全体勾配と部分勾配との差分に基づき算出される。図４は、部分勾配、全体勾配、および、重みの関係の例を示す図である。なお説明を簡単にするため、図４の例では、部分勾配数Ｎ＝２、学習係数ηｔ＝１としている。また、図４の例では、ｔ回目の学習処理では、重みｗｔにノイズが加えられないものとしている。例えば、１回目（ｔ＝１）の学習処理では、前回の学習処理で算出される部分勾配および全体勾配に相当する情報がないため、ノイズは算出されない。
【００３８】
重み４０１〜４０３は、それぞれ、ｔ、（ｔ＋１）、および、（ｔ＋２）回目の学習処理で用いられる重みを表す。例えば重み４０２（ｗｔ＋１）は、（２）式に従い、重み４０１（ｗｔ）および勾配Ｇｔから算出される。重み４１１、４１２は、ノイズが加えられた重みを表す。例えば重み４１１は、重み４０２（ｗｔ＋１）に対してノイズθｔ＋１１を加えることにより算出される。ノイズθｔ＋１１は、図４に示すように、全体勾配Ｇｔおよび部分勾配ｇｔ１の差分により算出される。（ｔ＋２）回目以降の処理も、同様に繰り返される。
【００３９】
なお、ノイズを加える処理は、２回目以降の学習処理すべてで実行する必要はなく、一部の学習処理だけで実行されてもよい。例えば、ｍ回目（ｍは３≦ｍ≦Ｔを満たす整数）以降の学習処理でノイズを加えてもよいし、一定の回数ごとにノイズを加えてもよい。
【００４０】
また、本実施形態に適用可能な学習方法はＳＧＤに限られるものではなく、勾配を用いる他の学習方法にも適用できる。例えば、モメンタム法、ネステロフの加速法、ＡｄａＧｒａｄ、および、Ａｄａｍなどのような学習方法（最適化アルゴリズム）を用いてもよい。
【００４１】
また算出部１０２は、（３）式の右辺に示す全体勾配と部分勾配との差分に係数αを乗じた値をノイズとして算出してもよい。係数αは、例えば、以下のような値を用いることができる。
・正のスカラー値
・学習係数ηｔ
・重みノルム||ｗｔ＋１||
・更新ベクトルノルム||―ηｔＧｔ||
・上記値の一部または全部の組合せ
【００４２】
重みノルム（更新ベクトルノルム）は、例えば、（ｔ＋１）回目の学習処理の時点でニューラルネットワークのすべての層に対して算出されているすべての重み（更新ベクトル）のノルムである。
【００４３】
重みノルム（または更新ベクトルノルム）を係数αとする場合、ニューラルネットワークのすべての層の重み（更新ベクトル）の代わりに、一部の重み（更新ベクトル）のみを用いてもよい。例えば、図５に示すように現在算出対象としている層に関連する重み（更新ベクトル）のみ（実線部）を用いて、重みノルム（更新ベクトルノルム）を算出してもよい。また、図６に示すように、現在算出対象としているユニットに関連する重み（更新ベクトル）のみ（実線部）を用いて、重みノルム（更新ベクトルノルム）を算出してもよい。
【００４４】
次に、このように構成された本実施形態にかかる学習装置１００によるニューラルネットワークのパラメータ更新処理について説明する。図７は、第１の実施形態におけるパラメータ更新処理の一例を示すフローチャートである。
【００４５】
生成部１０１は、例えば記憶部１２１に記憶された学習データから、複数のミニバッチを生成する（ステップＳ１０２）。
【００４６】
算出部１０２は、複数のミニバッチのうち、学習処理に用いる１つのミニバッチを取得する（ステップＳ１０２）。算出部１０２は、現在の学習処理でノイズを算出するか否かを判定する（ステップＳ１０３）。例えば算出部１０２は、１回目の学習処理などのように、ノイズを算出しない回数に相当する学習処理である場合に、ノイズを算出しないと判定する。上記のようにｍ回目以降の学習処理でノイズを加えることが定められている場合は、算出部１０２は、１〜（ｍ−１）回目までの学習処理ではノイズを算出しないと判定してもよい。
【００４７】
ノイズを算出すると判定された場合（ステップＳ１０３：Ｙｅｓ）、算出部１０２は、前の回で算出済みの部分勾配を用いてノイズを算出する（ステップＳ１０４）。例えば算出部１０２は、上記の（３）式によりノイズを算出する。また算出部１０２は、部分ミニバッチ、および、算出したノイズを加えた重みを用いて、部分勾配を算出する（ステップＳ１０５）。例えば算出部１０２は、上記の（４）式により部分勾配を算出する。
【００４８】
ノイズを算出しないと判定された場合（ステップＳ１０３：Ｎｏ）、算出部１０２は、部分ミニバッチ、および、ノイズを加えない重みを用いて、部分勾配を算出する（ステップＳ１０６）。例えば算出部１０２は、上記の（４）式の「ｗｔ＋１＋θｔ＋１ｎ」を「ｗｔ＋１」に置き換えた式により、部分勾配を算出する。
【００４９】
なおステップＳ１０４〜ステップＳ１０６は、ステップＳ１０２で取得したミニバッチを分割した部分ミニバッチごとに実行される。
【００５０】
算出部１０２は、各部分ミニバッチに対して算出された部分勾配を用いて、ミニバッチの勾配（全体勾配）を算出する（ステップＳ１０７）。例えば算出部１０２は、上記の（１）式により全体勾配を算出する。
【００５１】
更新部１０３は、算出された全体勾配を用いて重みを更新する（ステップＳ１０８）。例えば更新部１０３は、上記の（２）式により、更新された重みを算出する。
【００５２】
更新部１０３は、学習を終了するか否かを判定する（ステップＳ１０９）。例えば更新部１０３は、すべてのミニバッチが処理された場合に、学習を終了すると判定する。学習終了の判定方法はこれに限られずどのような方法であってもよい。
【００５３】
学習を終了しないと判定された場合（ステップＳ１０９：Ｎｏ）、ステップＳ１０２に戻り、次のミニバッチに対して処理が繰り返される。学習を終了すると判定された場合（ステップＳ１０９：Ｙｅｓ）、パラメータ更新処理は終了する。
【００５４】
次に、本実施形態にかかる情報処理装置２００による情報処理について説明する。図８は、本実施形態における情報処理の一例を示すフローチャートである。
【００５５】
情報処理装置２００の受付部２０１は、例えば学習装置１００から、学習済みのニューラルネットワークのパラメータを取得する（ステップＳ２０１）。情報処理部２０２は、取得されたパラメータで定められるニューラルネットワークを用いた情報処理を実行する（ステップＳ２０２）。情報処理部２０２は、ニューラルネットワークの利用目的に応じた情報処理を実行する。例えばニューラルネットワークが、画像認識に用いるニューラルネットワークである場合、情報処理部２０２は、このニューラルネットワークを用いた画像認識処理を実行する。例えばニューラルネットワークが、画像分類に用いるニューラルネットワークである場合、情報処理部２０２は、このニューラルネットワークを用いた画像分類処理を実行する。
【００５６】
このように、第１の実施形態にかかる学習装置では、ミニバッチの勾配算出過程で得られる部分勾配を用いてパラメータに一時的なノイズを加えて次のミニバッチの部分勾配を算出する。ノイズは、部分勾配に含まれるノイズ成分に基づいて算出される。このため、目的関数の形状に対して適当な方向へのノイズを付与することができ、目的関数に合わせた効率的な平滑化を行うことができる。
【００５７】
（第２の実施形態）
第１の実施形態では、ノイズは全体勾配に依存している。全体勾配は、複数の部分勾配の平均として算出される。一方、複数の装置それぞれで複数の部分勾配を並列に算出し、複数の装置間で通信しながら平均を算出する構成とすれば、学習処理の速度を向上させることができる。第２の実施形態は、このような構成を想定し、ノイズと全体勾配との依存関係をなくし、デバイス間通信処理と並行して次の部分勾配を算出できるようにする。
【００５８】
図９は、第２の実施形態にかかる学習システムの構成の一例を示すブロック図である。図９に示すように、本実施形態の学習システム９００−２は、学習装置１００−２−１、１００−２−２、１００−２−３を含む。なお図９では省略しているが、学習システム９００−２は、図３と同様に情報処理装置２００と接続されていてもよい。すなわち、情報処理システムが、学習システム９００−２と、情報処理装置２００とを備えるように構成してもよい。また、第１の実施形態にかかる学習装置１００のブロック図である図３と同様の機能については同一符号を付し、ここでの説明は省略する。
【００５９】
学習装置１００−２−１、１００−２−２、１００−２−３は、１つのミニバッチを分割した部分ミニバッチに対する部分勾配の算出処理等を分散して実行する。学習装置１００−２−１、１００−２−２、１００−２−３は、同様の構成を備えるため、区別する必要がない場合は単に学習装置１００−２という場合がある。学習装置１００−２の個数は３に限られず、２または４以上であってもよい。
【００６０】
学習装置１００−２は、生成部１０１−２と、算出部１０２−２と、更新部１０３−２と、出力制御部１０４−２と、記憶部１２１と、を備えている。
【００６１】
生成部１０１−２は、自装置で処理する学習データを生成する点が、第１の実施形態の生成部１０１と異なっている。生成部１０１−２は、例えば他の学習装置１００−２の生成部１０１−２と通信することにより、他の学習装置１００−２が生成する学習データと重複しないように、自装置で処理する学習データを生成する。
【００６２】
算出部１０２−２は、自装置用に生成された学習データを用いてノイズおよび部分勾配を算出する点、および、他の学習装置１００−２の算出部１０２−２が算出した部分勾配と、自身が算出した部分勾配とを用いて、ミニバッチ全体に対する全体勾配を算出する点が、第１の実施形態の算出部１０２と異なっている。
【００６３】
例えば、各学習装置１００−２の算出部１０２−２は、ＭＰＩ（Message  Passing  Interface）で定義されるＡｌｌｒｅｄｕｃｅと称される集団通信アルゴリズム（ＭＰＩ＿Ａｌｌｒｅｄｕｃｅ）を用いることで、複数の学習装置１００−２で算出された複数の部分勾配の和を獲得し、複数の部分勾配の和の平均として全体勾配を算出することができる。ここでは、ＭＰＩ＿Ａｌｌｒｅｄｕｃｅを用いる場合について説明したが、当該ＭＰＩ＿Ａｌｌｒｅｄｕｃｅと同程度の他の処理が実行されてもよい。
【００６４】
更新部１０３−２は、算出部１０２−２による算出結果を用いて重みを更新する。更新部１０３−２は、算出部１０２−２が算出した全体勾配、すなわち、他の学習装置１００−２の学習データにより算出された部分勾配も考慮された全体勾配を用いて、重みを更新することができる。
【００６５】
出力制御部１０４−２は、例えば通信ネットワークを介して、部分勾配などの算出結果を他の学習装置１００−２との間で送受信する点が、第１の実施形態の出力制御部１０４と異なっている。なお、本実施形態では、各学習装置１００−２で同じようにパラメータ（重み）が更新される。すなわち、各学習装置１００−２は、同じニューラルネットワークのパラメータを記憶部１２１に記憶している。従って、例えば情報処理装置２００などにパラメータを出力する場合は、各学習装置１００−２のいずれかの出力制御部１０４−２がパラメータを出力すればよい。
【００６６】
次に、本実施形態での部分勾配、全体勾配、および、ノイズの算出方法、並びに、重みの更新方法の具体例について説明する。本実施形態では、部分ミニバッチに対する部分勾配の算出、および、分散して算出された部分勾配を用いた全体勾配の算出などが、複数の学習装置１００−２で分散して実行される。
【００６７】
例えば各学習装置１００−２の算出部１０２−２は、ｔ回目の学習処理の全体勾配Ｇｔを、上記の（１）式により算出する。上記のように、算出部１０２−２は、例えばＭＰＩ＿Ａｌｌｒｅｄｕｃｅ）を用いることで、自装置のみでなく、すべての学習装置１００−２で算出された部分勾配の和に基づく全体勾配を算出することができる。更新部１０３−２は、上記の（２）式により、（ｔ＋１）回目の学習処理で用いる重みｗｔ＋１を算出する。
【００６８】
本実施形態では算出部１０２−２は、重みｗｔ＋１に対して加えるノイズθｔ＋１ｎを、以下の（５）式により算出する。
【数５】
2020119151.tif 000007
【００６９】
また、算出部１０２−２は、（ｔ＋１）回目の学習処理で、部分勾配ｇｔ＋１ｎを、以下の（６）式により算出する。
【数６】
2020119151.tif 000008
【００７０】
このように、本実施形態では、重みに対して加えるノイズが、部分勾配に基づき算出される。図１０は、部分勾配、全体勾配、および、重みの関係の例を示す図である。なお説明を簡単にするため、図１０の例では、部分勾配数Ｎ＝２、学習係数ηｔ＝１としている。また、図１０の例では、ｔ回目の学習処理では、重みｗｔにノイズが加えられないものとしている。
【００７１】
重み１００１〜１００３は、それぞれ、ｔ、（ｔ＋１）、および、（ｔ＋２）回目の学習処理で用いられる重みを表す。例えば重み１００２（ｗｔ＋１）は、（２）式に従い、重み１００１（ｗｔ）および勾配Ｇｔから算出される。重み１０１１、１０１２は、ノイズが加えられた重みを表す。例えば重み１０１１は、重み１００１（ｗｔ）に対してノイズθｔ＋１１を加えることにより算出される。ノイズθｔ＋１１は、図１０に示すように、部分勾配ｇｔ１に“−１”を乗じることにより算出される。（ｔ＋２）回目以降の処理も、同様に繰り返される。
【００７２】
本実施形態の部分勾配の算出式である（６）式と第１の実施形態の部分勾配の算出式である（４）式とを比較すると、ｗｔ＋１がｗｔに変更されている点が異なる。このように、本実施形態では、（ｔ＋１）回目の学習処理で用いられる重み（ｗｔ＋１）にノイズを加えた値を、ｔ回目の学習処理で用いられる重み（ｗｔ）にノイズを加えた値で推定していると解釈することができる。すなわち本実施形態では、ｔ回目の学習処理に用いるミニバッチ（他の学習データ）に対して算出された重みｗｔ（第１パラメータ）にノイズを加えた値を用いて部分勾配が算出される。
【００７３】
また、（１）式および（２）式と、（５）式および（６）式には依存関係がないため、並列に処理することができる。これにより、学習処理の速度を向上させることが可能となる。
【００７４】
第２の実施形態のおける学習処理の全体の流れは、第１の実施形態の学習処理の例を示す図７と同様である。第２の実施形態では、部分ミニバッチについての処理（ステップＳ１０４、Ｓ１０５、Ｓ１０６）が、各学習装置１００−２で分散して実行される。
【００７５】
本実施形態についても、適用可能な学習方法はＳＧＤに限られるものではなく、勾配を用いる他の学習方法（モメンタム法、ネステロフの加速法、ＡｄａＧｒａｄ、および、Ａｄａｍなど）にも適用できる。また、第１の実施形態と同様に、係数αを用いてノイズを算出してもよい。
【００７６】
（変形例１）
また第１の実施形態と同様の構成の学習装置が、本実施形態の算出式に従いノイズを算出するように構成してもよい。この場合、部分勾配を並列に算出することはできないが、目的関数の形状に対して適当な方向へのノイズを付与し、目的関数に合わせた効率的な平滑化を行うことができるなどの、第１の実施形態と同様の効果を得ることができる。
【００７７】
（変形例２）
また第２の実施形態と同様の構成の学習装置が、第１の実施形態の算出式に従いノイズを算出するように構成してもよい。例えば、３つの学習装置１００−２が、第１の実施形態の部分勾配の算出式である（４）式を用いて、あるミニバッチを３分割した複数の部分ミニバッチに対する部分勾配を分散して並列に算出してもよい。なお、学習装置１００−２の個数およびミニバッチの分割数は３に限られるものではない。また、ハードウェア構成およびリソースなどに応じて、各学習装置１００−２に割り当てる部分ミニバッチのサイズおよび個数などを変更してもよい。
【００７８】
本変形例では、ＭＰＩ＿Ａｌｌｒｅｄｕｃｅなどを用いて、並列に算出される複数の部分勾配が複数の学習装置１００−２間で送受信されるとともに、全体勾配が算出される。部分勾配の通信コストが増加するが、各部分勾配を並列に算出することにより、第１の実施形態より学習処理を高速化することができる。
【００７９】
なお、第１の実施形態および変形例２では、重みの算出に全体勾配が用いられる（重みが全体勾配に依存する）。これに対して、第２の実施形態では、重みの算出に全体勾配は用いられない（重みが全体勾配に依存していない）。このため上記のように、通信を伴う全体勾配の算出（（１）式、（２）式）と、部分勾配の算出（（５）式、（６）式）とについても並列に実行可能となる。従って、第２の実施形態は、変形例２よりもさらに学習処理を高速化することができる。
【００８０】
（変形例３）
また複数の学習装置１００−２のうちいずれかの学習装置１００−２（マスターノード）が、他の学習装置１００−２（ワーカーノード）を代表して全体勾配および重みを算出するように構成してもよい。マスターノードは、分散して実行する処理を制御する装置である。ワーカーノードは、マスターノードの制御に従って部分ミニバッチに対する処理を実行する。本変形例３では、マスターノードが、学習データの生成、および、重みの更新を実行するため、ワーカーノードは、生成部１０１−２および更新部１０３−２を備える必要はない。
【００８１】
マスターノードの生成部１０１−２は、生成した学習データを、各ワーカーノードに出力する。例えばマスターノードの生成部１０１−２は、生成したミニバッチを分割した部分ミニバッチのうち、自装置で処理する部分ミニバッチ以外の部分ミニバッチを、各ワーカーノードに出力する。例えば３つの学習装置１００−２のうち１つがマスターノードであり、２つがワーカーノードである場合、マスターノードの生成部１０１−２は、ミニバッチを３つに分割した部分ミニバッチのうち１つを自装置内で処理するために出力し、他の２つの部分ミニバッチを２つのワーカーノードに出力する。なお、分割数は３に限られるものではない。また、ハードウェア構成およびリソースなどに応じて、各学習装置１００−２に割り当てる部分ミニバッチのサイズおよび個数などを変更してもよい。
【００８２】
変形例３では、学習システム９００−２に含まれるすべての学習装置１００−２で算出された部分勾配がマスターノードに集約され、集約された部分勾配を用いてマスターノードが全体勾配を算出する。この場合、例えばＭＰＩで定義されるＲｅｄｕｃｅと称される集団通信アルゴリズム（ＭＰＩ＿Ｒｅｄｕｃｅ）を用いることで、ワーカーノードからマスターノードへの部分勾配の送信と全体勾配の算出処理を効率的に実行することが可能である。マスターノードは、算出した重みを各ワーカーノードに送信する。例えばマスターノードは、ＭＰＩで定義されるＭＰＩ＿Ｂｃａｓｔを用いて、更新された重みを各ワーカーノードに送信する。ここでは、ＭＰＩ＿ＲｅｄｕｃｅおよびＭＰＩ＿Ｂｃａｓｔを用いる場合について説明したが、当該ＭＰＩ＿ＲｅｄｕｃｅおよびＭＰＩ＿Ｂｃａｓｔと同程度の他の処理が実行されてもよい。
【００８３】
このように、第２の実施形態では、学習処理内の一部の算出処理が複数の学習装置で分散して実行される。これにより、学習処理の速度を向上させることが可能となる。
【００８４】
以上説明したとおり、第１および第２の実施形態によれば、目的関数に合わせた効率的な平滑化を行うことができる。
【００８５】
次に、第１または第２の実施形態にかかる学習装置のハードウェア構成について図１１を用いて説明する。図１１は、第１または第２の実施形態にかかる学習装置のハードウェア構成例を示す説明図である。
【００８６】
第１または第２の実施形態にかかる学習装置は、ＣＰＵ５１などの制御装置と、ＲＯＭ（Read  Only  Memory）５２やＲＡＭ５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、各部を接続するバス６１を備えている。
【００８７】
第１または第２の実施形態にかかる学習装置で実行されるプログラムは、ＲＯＭ５２等に予め組み込まれて提供される。
【００８８】
第１または第２の実施形態にかかる学習装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【００８９】
さらに、第１または第２の実施形態にかかる学習装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第１または第２の実施形態にかかる学習装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【００９０】
第１または第２の実施形態にかかる学習装置で実行されるプログラムは、コンピュータを上述した学習装置の各部として機能させうる。このコンピュータは、ＣＰＵ５１がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【００９１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９２】
１００、１００−２−１、１００−２−２、１００−２−３  学習装置
１０１、１０１−２  生成部
１０２、１０２−２  算出部
１０３、１０３−２  更新部
１０４、１０４−２  出力制御部
１２１  記憶部
２００  情報処理装置
２０１  受付部
２０２  情報処理部
２２１  記憶部
９００−２  学習システム
【図１】
2020119151.tif 000009
【図２】
2020119151.tif 000010
【図３】
2020119151.tif 000011
【図４】
2020119151.tif 000012
【図５】
2020119151.tif 000013
【図６】
2020119151.tif 000014
【図７】
2020119151.tif 000015
【図８】
2020119151.tif 000016
【図９】
2020119151.tif 000017
【図１０】
2020119151.tif 000018
【図１１】
2020119151.tif 000019