(57)【要約】      （修正有）【課題】高い圧縮率を達成しつつ、認識精度の低下を抑制可能で、かつ、ハイパーパラメータの調整が容易な分散学習を実現する方法及び装置を提供する。【解決手段】複数のパラメータの分散学習装置１０は、複数のパラメータそれぞれに関する誤差関数の勾配を計算する勾配計算手順１０１と、複数のパラメータをグループ化したパラメータグループ毎に統計量を計算する統計量計算手順１０２と、前記統計量と予め設定された送信割合とに基づいて、前記勾配が送信される送信パラメータグループを判定する判定手順１０３と、前記送信パラメータグループに含まれるパラメータに関する誤差関数の勾配であって、複数のコンピュータでそれぞれ計算された勾配の平均を示す勾配平均を、集団通信により複数のコンピュータ間で共有する共有手順１０５と、前記勾配平均を用いて、前記送信パラメータグループに含まれるパラメータを更新する更新手順１０６とを実行する。【選択図】図３
2019212111.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータで複数のパラメータを学習する分散学習方法であって、前記コンピュータが、
前記複数のパラメータそれぞれに関する誤差関数の勾配を計算する勾配計算手順と、
前記複数のパラメータを複数のグループにそれぞれグループ化したパラメータグループ毎に、該パラメータグループの統計量を計算する統計量計算手順と、
前記統計量と、予め設定された送信割合とに基づいて、複数のパラメータグループのうち、前記勾配が送信されるパラメータのパラメータグループを示す送信パラメータグループを判定する判定手順と、
前記送信パラメータグループに含まれるパラメータに関する誤差関数の勾配であって、前記複数のコンピュータでそれぞれ計算された勾配の平均を示す勾配平均を、集団通信により前記複数のコンピュータ間で共有する共有手順と、
前記勾配平均を用いて、前記送信パラメータグループに含まれるパラメータを更新する更新手順と、
を実行することを特徴とする分散学習方法。
【請求項２】
前記統計量計算手順は、
前記パラメータグループ毎に、該パラメータグループに含まれるパラメータに関する誤差関数の勾配を、該勾配に対応する遅延勾配バッファに加算し、
加算後の遅延勾配バッファの絶対値の平均を、前記パラメータグループの統計量として計算する、
ことを特徴とする請求項１に記載の分散学習方法。
【請求項３】
前記統計量計算手順は、
前記勾配平均が前記複数のコンピュータ間で共有された後、前記加算後の遅延勾配バッファをゼロクリアする、
ことを特徴とする請求項２に記載の分散学習方法。
【請求項４】
前記判定手順は、
前記複数のパラメータグループに対してそれぞれ計算された前記統計量のうち、該統計量の大きさの順位が、前記送信割合が示す割合に含まれる統計量に対応するパラメータグループを、前記送信パラメータグループと判定する、
ことを特徴とする請求項１に記載の分散学習方法。
【請求項５】
前記コンピュータが、更に、
前記送信パラメータグループに含まれるパラメータに関する誤差関数の勾配を量子化する量子化手順を実行し、
前記共有手順は、
前記複数のコンピュータ間で前記量子化後の勾配を集団通信することにより前記勾配平均を共有する、
ことを特徴とする請求項１に記載の分散学習方法。
【請求項６】
前記統計量計算手順は、
前記複数のパラメータのうち、ニューラルネットワークの線形層における各行のパラメータを同一のグループにグループ化したパラメータグループ又は畳み込みニューラルネットワークの畳み込み層における同一出力チャネル若しくは同一入力チャネルのパラメータを同一グループにグループ化したパラメータグループのいずれかのパラメータグループ毎に、前記統計量を計算する、
ことを特徴とする請求項１に記載の分散学習方法。
【請求項７】
前記統計量計算手順は、
複数の前記パラメータグループを複数のグループにそれぞれグループ化したサブグループ毎に、該サブグループに含まれる複数のパラメータグループのうち、前記勾配が送信されるパラメータのパラメータグループを示す送信パラメータグループを判定する、
ことを特徴とする請求項１に記載の分散学習方法。
【請求項８】
複数のパラメータの分散学習を行う分散学習装置であって、
前記複数のパラメータそれぞれに関する誤差関数の勾配を計算する勾配計算部と、
前記複数のパラメータを複数のグループにそれぞれグループ化したパラメータグループ毎に、該パラメータグループの統計量を計算する統計量計算部と、
前記統計量と、予め設定された送信割合とに基づいて、複数のパラメータグループのうち、前記勾配が送信されるパラメータのパラメータグループを示す送信パラメータグループを判定する判定部と、
前記送信パラメータグループに含まれるパラメータに関する誤差関数の勾配であって、前記分散学習装置と１以上の他の分散学習装置とでそれぞれ計算された勾配の平均を示す勾配平均を、集団通信により前記分散学習装置と１以上の他の分散学習装置との間で共有する共有部と、
前記勾配平均を用いて、前記送信パラメータグループに含まれるパラメータを更新する更新部と、
を実行することを特徴とする分散学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散学習方法及び分散学習装置に関する。
【背景技術】
【０００２】
近年、通信ネットワークを介して接続された複数の計算ノードを用いて、これらの複数の計算ノード間で分散して深層学習（ＤＬ：Deep Learning）を行う手法が知られるようになってきた。このような手法は、分散深層学習とも称される。
【０００３】
分散深層学習では、ニューラルネットワークのパラメータ数に比例して各計算ノード間の通信量が増大する。このため、例えばイーサネット（登録商標）等の比較的低速な通信媒体を用いた通信ネットワークでは、計算ノードの計算時間と比較して、各計算ノード間の通信時間が大幅に大きくなる場合があり、学習速度が通信ネットワークの通信速度に律速されてしまうことがある。これに対して、例えばインフィニバンド等の比較的高速な通信媒体を用いることも考えられるが、コストが高くなるという問題がある。
【０００４】
ここで、分散深層学習では、主に、各計算ノードで計算した勾配に対する全計算ノードでの平均を計算するために通信が行われる。そこで、各計算ノード間で通信される勾配を量子化したり、或る閾値以上の勾配のみを各計算ノード間で通信したりすること等で、通信量を圧縮する様々な手法が提案されている（例えば、非特許文献１〜４参照）。このように、各計算ノード間で通信される勾配の通信量を圧縮（削減）する手法は勾配圧縮とも称される。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】F. Seide, H. Fu, J. Droppo, G. Li, D. Yu. "1-bit stochastic gradient descent and its application to data-parallel distributed training of speech DNNs", In INTERSPEECH-2014, 1058-1062.
【非特許文献２】N. Strom. "Scalable distributed DNN training using commodity GPU cloud computing", In INTERSPEECH-2015, 1488-1492.
【非特許文献３】D. Alistarh, J. Li, R. Tomioka, M. Vojnovic. "QSGD: Randomized quantization for communication-optimal stochastic gradient descent", arXiv:1610.02132, 2016.
【非特許文献４】Y. Tsuzuku, H. Imachi, T. Akiba. "Variance-based Gradient Compression for Efficient Distributed Deep Learning", arXiv preprint arXiv:1802.06058, 2018.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の手法では、例えば、学習後のニューラルネットワークの認識精度の高さと通信量の圧縮率の高さとを両立させることが困難であったり、ハイパーパラメータの調整が困難であったりする。
【０００７】
本発明の実施の形態は、高い圧縮率を達成しつつ、認識精度の低下を抑制可能で、かつ、ハイパーパラメータの調整が容易な分散学習を実現することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の実施の形態は、複数のコンピュータで複数のパラメータを学習する分散学習方法であって、前記コンピュータが、前記複数のパラメータそれぞれに関する誤差関数の勾配を計算する勾配計算手順と、前記複数のパラメータを複数のグループにそれぞれグループ化したパラメータグループ毎に、該パラメータグループの統計量を計算する統計量計算手順と、前記統計量と、予め設定された送信割合とに基づいて、複数のパラメータグループのうち、前記勾配が送信されるパラメータのパラメータグループを示す送信パラメータグループを判定する判定手順と、前記送信パラメータグループに含まれるパラメータに関する誤差関数の勾配であって、前記複数のコンピュータでそれぞれ計算された勾配の平均を示す勾配平均を、集団通信により前記複数のコンピュータ間で共有する共有手順と、前記勾配平均を用いて、前記送信パラメータグループに含まれるパラメータを更新する更新手順と、を実行することを特徴とする。
【発明の効果】
【０００９】
高い圧縮率を達成しつつ、認識精度の低下を抑制可能で、かつ、ハイパーパラメータの調整が容易な分散学習を実現することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態における分散学習システムのシステム構成の一例を示す図である。
【図２】本発明の実施の形態における分散学習装置のハードウェア構成の一例を示す図である。
【図３】本発明の実施の形態における分散学習装置の機能構成の一例を示す図である。
【図４】本発明の実施の形態における分散学習システムが実行する分散学習処理の一例を示すフローチャート（実施例１）である。
【図５】本発明の実施の形態における分散学習システムが実行する分散学習処理の一例を示すフローチャート（実施例２）である。
【図６】実施例１における分散学習処理の効果の一例を説明するための図である。
【図７】実施例２における分散学習処理の効果の一例を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。本発明の実施の形態では、複数の計算ノード間で分散深層学習を行う際に、通信量の高い圧縮率を達成しつつ、学習後のニューラルネットワークの認識精度の低下を抑制可能で、かつ、ハイパーパラメータの調整が容易な分散学習システム１について説明する。
【００１２】
ここで、「圧縮率」とは、（総パラメータ数）×（計算ノード数）／（総パラメータのうち、各計算ノードで勾配が送信されたパラメータ数の合計）で示される値のことである。圧縮率が高い程、圧縮の性能が良いことを意味する。
【００１３】
また、「精度」とは、ニューラルネットワークの学習後に、学習時に使わなかったデータ（これは「テストデータ」とも称される。）を用いて評価した精度（validation accuracy）のことである。
【００１４】
＜システム構成＞
まず、本発明の実施の形態における分散学習システム１のシステム構成について、図１を参照しながら説明する。図１は、本発明の実施の形態における分散学習システム１のシステム構成の一例を示す図である。
【００１５】
図１に示すように、本発明の実施の形態における分散学習システム１には、複数の分散学習装置１０が含まれる。また、各分散学習装置１０は、通信ネットワークを介して通信可能に接続されている。通信ネットワークとしては、例えば、ＬＡＮ（Local Area Network）等が用いられる。なお、通信ネットワークに用いられる通信媒体や通信手法、通信方式等は任意のものを用いることができる。
【００１６】
分散学習装置１０は、分散深層学習の計算ノード（以降、単に「ノード」とも表す。）として機能するコンピュータである。各分散深層装置１０は、分散深層学習によりニューラルネットワークのパラメータを更新する。分散深層学習では、学習データ（これは、「訓練データ」とも称される。）を用いて各分散学習装置１０がそれぞれ勾配を計算した後、これらの勾配に対する全ての分散学習装置１０での平均（勾配平均）が計算される。そして、この勾配平均を用いて、ニューラルネットワークのパラメータが更新される。
【００１７】
これにより、分散深層学習では、大量の学習データを用いて、パラメータ数が膨大であるニューラルネットワーク（ＤＮＮ：Deep Neural Network）の学習を複数の分散学習装置１０で並列的に実行することが可能となる。ここで、勾配とは、ニューラルネットワークの各パラメータに関する誤差関数のそれぞれの偏微分の或るデータ点（例えば、後述するミニバッチを構成する学習データにより示される点）における値である。勾配は、例えば、誤差逆伝播法により計算される。なお、誤差関数は、損失関数等とも称される。
【００１８】
なお、上述したように、分散深層学習では、勾配平均を計算する際に分散学習装置１０間で通信（勾配の送受信）が行われ、この通信量はパラメータ数に比例する。このため、例えばイーサネット等の比較的低速な通信媒体を用いた通信ネットワークを介して接続される分散学習装置１０により、パラメータ数が膨大なニューラルネットワーク（ＤＮＮ）の学習を行う場合、分散深層学習に要する時間は、勾配平均を計算する際の通信に要する時間に律速される。
【００１９】
本発明の実施の形態では、ニューラルネットワークのパラメータをグループ分けした上で、各分散学習装置１０が、グループ毎に、このグループに属するパラメータに関する勾配を他の分散学習装置１０に送信するか否かを判定し、送信すると判定された勾配のみを他の分散学習装置１０に送信する。これにより、本発明の実施の形態に係る分散学習システム１では、分散学習装置１０間の通信量を圧縮（削減）することができるようになる。
【００２０】
なお、本発明の実施の形態では、分散学習システム１にはＰ台の分散学習装置１０が含まれるものとし、各分散学習装置１０を区別して表す場合は、「分散学習装置１０１」，「分散学習装置１０２」，・・・，「分散学習装置１０ｐ」，・・・，「分散学習装置１０Ｐ」と表す。
【００２１】
＜ハードウェア構成＞
次に、本発明の実施の形態における分散学習装置１０のハードウェア構成について、図２を参照しながら説明する。図２は、本発明の実施の形態における分散学習装置１０のハードウェア構成の一例を示す図である。
【００２２】
図２に示すように、本発明の実施の形態における分散学習装置１０は、プロセッサ１１と、ＲＡＭ（Random Access Memory）１２と、ＲＯＭ（Read Only Memory）１３と、補助記憶装置１４と、外部Ｉ／Ｆ１５と、通信Ｉ／Ｆ１６とを有する。
【００２３】
プロセッサ１１は、例えば、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）等であり、各種処理を実行する演算装置である。なお、分散学習装置１０は、プロセッサ１１として、ＣＰＵ及びＧＰＵの両方を有していても良い。分散学習装置１０がプロセッサ１１としてＧＰＵを有している場合、分散学習システム１はＧＰＵクラスタを備える構成となる。また、分散学習装置１０は、例えば、ＦＰＧＡ（field-programmable gate array）等の専用の半導体チップを備えていても良い。
【００２４】
ＲＡＭ１２は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＲＯＭ１３は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。
【００２５】
補助記憶装置１４は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等であり、プログラムやデータを格納している不揮発性の記憶装置である。補助記憶装置１４に格納されているプログラムやデータには、分散学習装置１０が有する各種機能を実現する１以上のプログラムや学習データ等がある。
【００２６】
外部Ｉ／Ｆ１５は、外部装置とのインタフェースである。外部装置には、例えば、ＣＤやＤＶＤ、ＳＤメモリカード、ＵＳＢメモリカード等の外部記録媒体がある。外部記録媒体には、例えば、分散学習装置１０が有する各種機能を実現する１以上のプログラムや学習データ等が記録されていても良い。
【００２７】
通信Ｉ／Ｆ１６は、分散学習装置１０を通信ネットワークに接続するためのインタフェースである。分散学習装置１０は、通信Ｉ／Ｆ１６を介して、他の分散学習装置１０との間で各種通信を行うことができる。
【００２８】
本発明の実施の形態における分散学習装置１０は、図２に示すハードウェア構成を有することにより、後述する各種処理を実現することができる。なお、図２に示すハードウェア構成は一例であって、他の構成であっても良い。例えば、分散学習装置１０は、キーボードやマウス等の入力装置と、ディスプレイ等の表示装置とを有していても良い。
【００２９】
＜機能構成＞
次に、本発明の実施の形態における分散学習装置１０の機能構成について、図３を参照しながら説明する。図３は、本発明の実施の形態における分散学習装置１０の機能構成の一例を示す図である。
【００３０】
図３に示すように、本発明の実施の形態における分散学習装置１０は、勾配計算部１０１と、統計量計算部１０２と、送信グループ判定部１０３と、量子化部１０４と、勾配共有部１０５と、最適化部１０６と、通信部１０７とを有する。これら各部は、分散学習装置１０にインストールされた１以上のプログラムが、プロセッサ１１に実行させる処理により実現される。
【００３１】
勾配計算部１０１は、学習データを入力して、各パラメータに関する勾配を計算する。このとき、勾配計算部１０１は、各分散学習装置１０にそれぞれ割り当てられた学習データの集合（ミニバッチ）から各パラメータに関する勾配を計算する。ここで、分散深層学習では、１回のイテレーションで用いられる学習データの集合（バッチ）がノード間でミニバッチに分割される。したがって、各分散学習装置１０は、自身に割り当てられたミニバッチを用いて、勾配計算部１０１により各パラメータに関する勾配を計算する。なお、イテレーションとは、パラメータの更新を行う際の繰り返しのことである。
【００３２】
統計量計算部１０２は、予め決められたパラメータのグループ（以降、「パラメータグループ」と表す。）毎に、勾配計算部１０１により計算された勾配を用いて、パラメータグループの統計量を計算する。各パラメータをどのようにグループ化するかや統計量の計算方法等の具体例については後述する。
【００３３】
送信グループ判定部１０３は、統計量計算部１０２により計算された統計量を用いて、勾配が送信されるパラメータのパラメータグループ（以降、「送信パラメータグループ」と表す。）を判定する。送信パラメータグループに属するパラメータに関する勾配は、通信部１０７により他の分散学習装置１０に送信され、各分散学習装置１０で勾配平均が共有される。
【００３４】
量子化部１０４は、送信パラメータグループに属するパラメータに関する勾配を量子化する。量子化とは、浮動小数点形式の勾配をより少ないビット数で表現することである。勾配を量子化することにより、分散学習装置１０間で送受信される勾配のデータ量をより削減することができる。
【００３５】
勾配共有部１０５は、通信部１０７により、ＭＰＩ（Message Passing Interface）集団通信の１つであるＡｌｌＲｅｄｕｃｅを行って、各分散学習装置１０で勾配平均を共有する。
【００３６】
最適化部１０６は、勾配共有部１０５によって各分散学習装置１０で共有された勾配平均を用いて、パラメータを更新する。各イテレーションでパラメータの更新が繰り返し行われることで、パラメータが最適化される。パラメータの最適化手法としては、例えば、確率的勾配降下法（ＳＧＤ：stochastic gradient descent）、Ｍｏｍｅｎｔｕｍ、ＡｄａＧｒａｄ、Ａｄａｍ等の任意の最適化手法を用いることができる。
【００３７】
通信部１０７は、他の分散学習装置１０との間で各種情報の送受信を行う。他の分散学習装置１０との間で送受信される情報としては、例えば、各分散学習装置１０の統計量計算部１０２が統計量を計算するための情報（具体的には、例えば、後述する遅延勾配バッファの絶対値の平均等）、送信パラメータグループに属するパラメータに関する勾配等が挙げられる。
【００３８】
＜分散学習処理＞
次に、本発明の実施の形態における分散学習システム１が実行する分散学習処理について説明する。以降で説明する分散学習処理では、ニューラルネットワークのパラメータ数と同じサイズの配列である遅延勾配バッファｒｉを用いる。なお、ｉは各パラメータのインデックスである。これらの遅延勾配バッファｒｉの初期値は０である。
【００３９】
また、ハイパーパラメータとして量子化ビット数ｋ及び送信割合πを用いる。量子化ビット数ｋは１以上の任意の整数値、送信割合πは０より大で１未満の任意の値に設定することができるが、典型的には、例えば、ｋ＝３，π＝０．２等と設定することが考えられる。
【００４０】
（実施例１）
まず、実施例１における分散学習処理について、図４を参照しながら説明する。図４は、本発明の実施の形態における分散学習システムが実行する分散学習処理の一例を示すフローチャート（実施例１）である。以降のステップＳ１０１〜ステップＳ１０９の処理は、所定の回数だけ繰り返し実行される。このような繰り返し回数は、例えば、ハイパーパラメータとして指定されても良いし、ハイパーパラメータとしてエポック数と１回のイテレーションあたりの学習データ数（バッチサイズ）とが指定されることで決定されても良い。以降では、１回のイテレーションにおける分散学習処理について説明する。
【００４１】
ステップＳ１０１：各分散学習装置１０の勾配計算部１０１は、自身に割り当てられたミニバッチから各パラメータに関する勾配を計算する。以降では、ニューラルネットワークの各パラメータを「ｗｉ」、パラメータｗｉに関する勾配を「ｇｉ」と表す。
【００４２】
ステップＳ１０２：各分散学習装置１０の統計量計算部１０２は、パラメータｗｉ毎に、当該パラメータｗｉに関する勾配ｇｉを遅延勾配バッファｒｉに加算する。
【００４３】
ステップＳ１０３：各分散学習装置１０の統計量計算部１０２は、パラメータグループｓ毎に、当該パラメータグループｓに属するパラメータｗｉに対応する遅延勾配バッファｒｉの絶対値の平均μｓを計算する。
【００４４】
すなわち、パラメータグループｓに属するパラメータｗｉを「ｗｉｓ」と表した場合、統計量計算部１０２は、これらのパラメータｗｉｓにそれぞれ対応する遅延勾配バッファｒｉｓの絶対値｜ｒｉｓ｜の平均μｓを計算する。これにより、各分散学習装置１０において、パラメータグループｓ毎に、平均μｓが得られる。
【００４５】
ここで、各パラメータｗｉは、例えば、ニューラルネットワークの線形層（全結合層又はアフィン層とも称される。）であれば、各行をそれぞれ１つのパラメータグループｓとすれば良い。例えば、或る線形層Ｌの第Ｍ行に属するパラメータｗｉを、１つのパラメータグループｓＬ，Ｍとすれば良い。
【００４６】
また、他の例として、各パラメータｗｉは、例えば、畳み込みニューラルネットワークの畳み込み層であれば、同一の出力チャネルに対応するパラメータｗｉを１つのパラメータグループｓとすれば良い。例えば、或る畳み込み層Ｃの出力チャネルＲに対応するパラメータｗｉを、１つのパラメータグループｓＣ，Ｒとすれば良い。又は、これと同様に、同一入力チャネルに対応するパラメータｗｉを１つのパラメータグループｓとしても良い。
【００４７】
なお、以降では、パラメータグループｓの数をＳであるとして、パラメータグループｓをそれぞれ区別して表す場合は、「パラメータグループ１」，「パラメータグループ２」，・・・，「パラメータグループＳ」と表す。
【００４８】
ステップＳ１０４：各分散学習装置１０の統計量計算部１０２は、パラメータグループｓ毎に、上記のステップＳ１０３で計算された平均μｓの全ノード（全ての分散学習装置１０）での平均μｓ´を計算する。この平均μｓ´は、例えば、次のようにして得られる。
【００４９】
分散学習装置１０ｐ（ｐ＝１，２，・・・，Ｐ）の統計量計算部１０２により上記のステップＳ１０３で計算された平均μｓを「μｓｐ」と表した場合、各分散学習装置１０ｐの通信部１０７は、平均μｓｐをＡｌｌｒｅｄｕｃｅする。これにより、各分散学習装置１０ｐはμｓｐのｐ＝１，２，・・・，Ｐに関する和（Σμｓｐ）を得るので、その後、各分散学習装置１０ｐの統計量計算部１０２は、このΣμｓｐをＰで除算して、平均μｓ´を計算すれば良い。なお、この平均μｓ´が、パラメータグループｓの統計量の一例である。
【００５０】
ここで、上記のステップＳ１０４では、平均μｓ´を計算するために分散学習装置１０間で通信が行われるが、この通信の通信量はパラメータグループｓの数に比例する。他方で、パラメータをグループ化する方法から分かるように、パラメータグループｓの数Ｓは、パラメータｗｉの数（すなわち、勾配ｇｉの数）と比べると十分小さい。このため、上記のステップＳ１０４で平均μｓ´を計算するために行われる通信の通信量は、分散学習処理全体の通信量に対して無視できる程に小さい。
【００５１】
ステップＳ１０５：各分散学習装置１０の送信グループ判定部１０３は、パラメータグループｓのうち、上記のステップＳ１０４で得られたμｓ´が上位πの割合に入るグループｓ（言い換えれば、μｓ´の大きさの順位が上位πの割合に入るパラメータグループｓ）を送信パラメータグループｓと判定する。
【００５２】
例えば、π＝０．２である場合、送信グループ判定部１０３は、パラメータグループ１，パラメータグループ２，・・・，パラメータグループＳのうち、μｓ´が上位２０％の割合に入るパラメータグループｓを送信パラメータグループｓと判定する。なお、上記のステップＳ１０４で得られたμｓ´は、全ての分散学習装置１０で共通であるため、送信パラメータグループｓと判定されるパラメータグループｓも同一である。
【００５３】
以降では、送信パラメータグループｓに属するパラメータｗｉを「送信パラメータｗｉ」、送信パラメータｗｉに関する勾配ｇｉを「送信勾配ｇｉ」とも表す。
【００５４】
ステップＳ１０６：各分散学習装置１０の量子化部１０４は、送信勾配ｇｉを量子化する。なお、送信勾配ｇｉの量子化は必ずしも行われなくても良い。ただし、送信勾配ｇｉを量子化した方が、分散深層学習の通信量を更に削減することができる。
【００５５】
ここで、量子化部１０４による量子化手法としては任意の手法を用いることができるが、以下では、一例として、特に好ましい量子化手法について説明する。以下の（１−１）〜（１−４）では、或る１つの送信パラメータグループｓに属する送信パラメータｗｉに関する勾配ｇｉ（送信勾配ｇｉ）を量子化する場合について説明する。この量子化方法では、パラメータｗｉのインデックスを他の分散学習装置１０に送信する必要がないため、通信量を効率的に削減することが可能となる。
【００５６】
（１−１）まず、量子化部１０４は、当該送信パラメータｗｉに関する送信勾配ｇｉの絶対値の最大値をＭとする。すなわち、これらの送信勾配ｇｉに対して、Ｍ＝ｍａｘ｜ｇｉ｜とする。
【００５７】
（１−２）次に、量子化部１０４は、各送信勾配ｇｉの絶対値をＭで除算して正規化する。すなわち、ｘｉ＝｜ｇｉ｜／Ｍとする。このとき、０≦ｘｉ≦１である。また、送信勾配ｇｉの符号（正又は負）をσｉとする。
【００５８】
（１−３）次に、量子化部１０４は、ｌ＝｛０，１，・・・，２ｋ−１｝として、各ｘｉに対して、１／２ｌ≦ｘｉ＜１／（２ｌ−１）を満たすｌ（これを「ｌｉ」と表す。）を算出し、ｘｉをｌｉに量子化する。これにより、各ｘｉがそれぞれｌｉに量子化される。
【００５９】
ただし、ｌ＝２ｋ−１である場合、１／２ｌ＝０と見做すものとする。例えば、ｋ＝３である場合、ｌ＝２３−１＝７である。したがって、この場合、１／２７＝０と見做すものとする。
【００６０】
（１−４）以上により、Ｍと、符号σｉと、ｌｉとが得られる。これらが送信勾配ｇｉを量子化した結果である。ここで、Ｍは各送信勾配ｇｉと同一のビット数（例えば単精度であれば３２ビット）であり、符号σｉは１ビット、ｌｉはｋビットである。このため、例えば、或る１つの送信パラメータグループｓに属する送信パラメータｗｉの送信勾配ｇｉがＮｓ個であり、かつ、各送信勾配ｇｉが３２ビットである場合、これらの送信勾配ｇｉは、量子化により、１つのＭと、Ｎｓ個のσｉと、Ｎｓ個のｌｉとで表すことができる。したがって、この場合、これらの送信勾配ｇｉは、３２＋（１＋ｋ）×Ｎｓビットに圧縮される。
【００６１】
なお、上記で各送信勾配ｇｉを量子化することで得られた情報（すなわち、Ｍ、σｉ、ｌｉ）は、例えば、更に、可逆圧縮アルゴリズム等によって圧縮されても良い。
【００６２】
以降のステップＳ１０７〜ステップＳ１０９において、単に、「送信勾配ｇｉ」と表した場合、上記のステップＳ１０６が実行された場合は量子化された送信勾配ｇｉ（すなわち、例えば、Ｍ、σｉ、ｌｉ）を表し、上記のステップＳ１０６が実行されなかった場合は量子化されていない送信勾配ｇｉを表すものとする。これらの送信勾配ｇｉは、他の分散学習装置１０に送信するためのバッファ領域である送信バッファに格納されている。
【００６３】
ステップＳ１０７：各分散学習装置１０の勾配共有部１０５は、送信勾配ｇｉの全ノード（全ての分散学習装置１０）での平均ｈｉを、全ノードで共有する。すなわち、分散学習装置１０ｐでの送信勾配をｇｉｐと表した場合、各分散学習装置１０の勾配共有部１０５は、平均ｈｉ＝（ｇｉ１＋・・・＋ｇｉＰ）／Ｐを、全ノードで共有する。この平均ｈｉが勾配平均であり、例えば、Ａｌｌｒｅｄｕｃｅにより得られる。Ａｌｌｒｅｄｕｃｅのアルゴリズムは任意のものを利用することができるが、例えば、以下の（２−１）〜（２−３）により勾配平均を得ることができる。
【００６４】
（２−１）分散学習装置１０ｐ（ｐ＝１，２，・・・，Ｐ）の通信部１０７は、送信バッファをＰ個のブロック領域Ｂ１，・・・，ＢＰに分割した上で、分割したブロック領域Ｂ１，・・・，ＢＰにそれぞれ格納されている送信勾配ｇｉを、当該ブロック領域Ｂｐに対応する分散学習装置１０ｐに送信する。ただし、ブロック領域Ｂｐに対応する分散学習装置１０ｐが自分自身である場合は、当該分散学習装置１０ｐの通信部１０７は、当該ブロック領域Ｂｐに格納されている送信勾配ｇｉを送信しない。
【００６５】
例えば、分散学習装置１０１の通信部１０７は、ブロック領域Ｂ２，・・・，ブロック領域ＢＰにそれぞれ格納されている送信勾配ｇｉを、分散学習装置１０２，・・・，分散学習装置１０Ｐにそれぞれ送信する。同様に、分散学習装置１０２の通信部１０７は、ブロック領域Ｂ１，ブロック領域Ｂ３，・・・，ブロック領域ＢＰにそれぞれ格納されている送信勾配ｇｉを、分散学習装置１０１，分散学習装置１０３，・・・，分散学習装置１０Ｐにそれぞれ送信する。以降も同様に、分散学習装置１０ｐの通信部１０７は、ブロック領域Ｂ１，・・・，ブロック領域Ｂｐ−１，ブロック領域Ｂｐ＋１，・・・，ブロック領域ＢＰにそれぞれ格納されている送信勾配ｇｉを、分散学習装置１０１，・・・，分散学習装置１０ｐ−１，分散学習装置１０ｐ＋１，・・・，分散学習装置１０Ｐにそれぞれ送信する。
【００６６】
これにより、各分散学習装置１０ｐは、全ノードのブロック領域Ｂｐに格納されていた送信勾配ｇｉ（自身のブロック領域Ｂｐに格納されている送信勾配ｇｉも含む）を得る。
【００６７】
（２−２）次に、各分散学習装置１０ｐの勾配共有部１０５は、上記の（２−１）で得られた送信勾配ｇｉの勾配平均ｈｉを計算する。このとき、送信勾配ｇｉが量子化されている場合、勾配共有部１０５は、送信勾配ｇｉを浮動小数点形式に復元した上で、復元後の送信勾配ｇｉから勾配平均ｈｉを計算する。
【００６８】
（２−３）次に、各分散学習装置１０ｐの通信部１０７は、上記のステップ（２−２）で計算した勾配平均ｈｉをＡｌｌｇａｔｈｅｒする。これにより、各分散学習装置１０ｐ（ｐ＝１，２，・・・，Ｐ）で勾配平均ｈｉが共有される。上記の（２−１）〜（２−３）は勾配平均ｈｉを得るための和が１回のみであるため、送信勾配ｇｉの復元が１度で済み、また精度を保ち易い。なお、各分散学習装置１０ｐは、Ａｌｌｇａｔｈｅｒの前に、再度量子化を行っても良い。このときの量子化ビット数ｋは、上記のステップＳ１０６で用いた量子化ビット数ｋと異なっていても良い。
【００６９】
なお、分散学習装置１０ｐ（ｐ＝１，２，・・・，Ｐ）は、上記のステップＳ１０４と同様に、通信部１０７により、送信勾配ｇｉをＡｌｌｒｅｄｕｃｅしても良い。これにより、各分散学習装置１０ｐはｇｉｐのｐ＝１，２，・・・，Ｐに関する和（Σｇｉｐ）を得るので、その後、各分散学習装置１０ｐの勾配共有部１０５は、このΣｇｉｐをＰで除算して、勾配平均ｈｉを計算しても良い。
【００７０】
ステップＳ１０８：各分散学習装置１０の統計量計算部１０２は、送信パラメータｗｉに対応する遅延勾配バッファｒｉを０にクリアする。このように、統計量計算部１０２は、他の分散学習装置１０に送信された勾配ｇｉ（送信勾配ｇｉ）に対応する遅延勾配バッファｒｉを０にクリアする。
【００７１】
一方で、他の分散学習装置１０に送信されなかった勾配ｇｉに対応する遅延勾配バッファｒｉについてはそのままとする。すなわち、これらの遅延勾配バッファｒｉの値は、次のイテレーションに持ち越される。これにより、例えば、或るイテレーションで勾配ｇｉの大きさが小さい場合（言い換えれば、パラメータｗｉの重要度が低い場合）であっても、イテレーションを繰り返すことで、当該勾配ｇｉに対応するパラメータｗｉも更新され得る。
【００７２】
ステップＳ１０９：各分散学習装置１０の最適化部１０６は、勾配共有部１０５により共通された勾配平均ｈｉを用いて、予め決められた任意の最適化手法によってパラメータｗｉを更新する。
【００７３】
（実施例２）
次に、実施例２における分散学習処理について、図５を参照しながら説明する。図５は、本発明の実施の形態における分散学習システムが実行する分散学習処理の一例を示すフローチャート（実施例２）である。実施例２では、いくつかのパラメータグループｓを１つのサブグループｔにまとめた上で、サブグループｔ毎に、このサブグループｔに含まれるパラメータグループｓのうち、勾配ｇｉが送信されるパラメータｗｉのパラメータグループｓを判定する場合に説明する。
【００７４】
これにより、例えば、パラメータグループｓ間で、勾配ｇｉの大きさに偏りがある場合等に、この偏りをサブグループｔ内に局所化させることができる。すなわち、例えば、１つの線形層の各行をそれぞれ１つのパラメータグループｓ、これらのパラメータグループｓ（すなわち、同一の線形層のパラメータグループｓ）を１つのサブグループｔとすることで、上述した偏りを１つの線形層内に局所化させることができる。この場合、例えば、線形層Ｌの第ｍ行（ｍ＝１，・・・，Ｍ）に属するパラメータｗｉをグループ化したパラメータグループをｓＬ，ｍとした場合、サブグループｔＬ＝｛ｓＬ，１，・・・，ｓＬ，Ｍ｝とすれば良い。
【００７５】
同様に、例えば、畳み込みニューラルネットワークの畳み込み層であれば、同一の畳み込み層のパラメータグループｓを１つのサブグループｔとすれば良い。この場合、例えば、畳み込み層Ｃの出力チャネルがＲ、Ｇ、Ｂの３チャネルで、同一の出力チャネルに対応するパラメータｗｉをグループ化したパラメータグループをそれぞれｓＣ，Ｒ、ｓＣ，Ｇ、及びｓＣ，Ｂとした場合、サブグループｔＣ＝｛ｓＣ，Ｒ，ｓＣ，Ｇ，ｓＣ，Ｂ｝とすれば良い。
【００７６】
上記のように同一層のパラメータグループｓを１つのサブグループｔとすることで、実施例２では、例えば、上述した偏りによって或る特定の層のパラメータｗｉのみが更新されてしまうような事態を防止することができる。
【００７７】
なお、図５のステップＳ１０１〜ステップＳ１０４及びステップＳ１０６〜ステップＳ１０９は、図４と同様であるため、その説明を省略する。
【００７８】
ステップＳ２０５：各分散学習装置１０の送信グループ判定部１０３は、サブグループｔ毎に、このサブグループｔに属するパラメータグループｓのうち、ステップＳ１０４で得られたμｓ´が上位πの割合に入るグループｓを送信パラメータグループｓと判定する。これにより、サブグループｔ毎に、送信パラメータグループｓが判定される。なお、πは、サブグループｔ毎に異なる値が設定されても良い。
【００７９】
＜本発明の効果＞
ここで、本発明の実施の形態における分散学習システム１の効果を図６及び図７に示す。図６（ａ）は、π＝０．２に設定した上で、実施例１により分散学習処理を行った場合における精度を示す。図６（ｂ）は、π＝０．０２に設定した上で、実施例１により分散学習処理を行った場合における精度を示す。
【００８０】
また、図６（ｃ）は、π＝０．２に設定した上で、実施例１により分散学習処理を行った場合における圧縮率を示す。図６（ｄ）は、π＝０．０２に設定した上で、実施例１により分散学習処理を行った場合における圧縮率を示す。
【００８１】
他方で、図７（ａ）は、π＝０．２に設定した上で、実施例２により分散学習処理を行った場合における精度を示す。図７（ｂ）は、π＝０．０２に設定した上で、実施例２により分散学習処理を行った場合における精度を示す。
【００８２】
また、図７（ｃ）は、π＝０．２に設定した上で、実施例２により分散学習処理を行った場合における圧縮率を示す。図７（ｄ）は、π＝０．０２に設定した上で、実施例２により分散学習処理を行った場合における圧縮率を示す。
【００８３】
なお、図６（ａ）〜図６（ｂ）及び図７（ａ）〜図７（ｂ）の「ｂａｓｅｌｉｎｅ」は、非圧縮時の最大到達精度を表す。また、図６（ｃ）〜図６（ｄ）及び図７（ｃ）〜図７（ｄ）の縦軸は１０を底とした対数値を表す。
【００８４】
図６及び図７に示されているように、本発明の実施の形態における分散学習システム１では、非圧縮時からの精度の低下を抑止しつつ、高い圧縮率が達成できていることがわかる。
【００８５】
＜まとめ＞
以上のように、本発明の実施の形態における分散学習システム１では、パラメータグループｓ毎に、このパラメータグループｓに属するパラメータｗｉの勾配ｇｉを送信するか否かを判定する。これにより、本発明の実施の形態における分散学習システム１では、分散学習において、分散学習装置１０間の通信量を高い圧縮率で圧縮（削減）することができるようになる。
【００８６】
また、本発明の実施の形態における分散学習システム１では、或るイテレーションで送信パラメータグループｓと判定されなかったパラメータグループｓも、イテレーションが繰り返されることで、送信パラメータグループｓと判定され得る。このため、例えば、勾配ｇｉの大きさが小さく、重要度が低いと考えられるパラメータｗｉも適切に更新され、このようなパラメータｗｉが更新されないことによる精度の低下を抑止することができる。
【００８７】
また、本発明の実施の形態における分散学習システム１では、各分散学習装置１０で同一のパラメータグループｓが送信パラメータグループｓとして判定される。このため、各分散学習装置１０は、送信勾配ｇｉに関するパラメータｗｉのインデックスを他の分散学習装置１０に送る必要がない。また、このため、効率的な集団通信のアルゴリズムを使用することができ、ノード数（分散学習装置１０の数）が多い場合であっても、効率的に勾配平均を共有することができる。
【００８８】
更に、本発明の実施の形態における分散学習システム１では、送信パラメータグループｓを判定する際に用いるハイパーパラメータπは、勾配ｇｉが送信されたパラメータｗｉの割合を表しているため、ユーザが直観的に容易に設定することができる。また、このため、各イテレーション間での送信勾配ｇｉの割合が同一であるため、学習の経過時間の予測を容易に行うこともできるようになる。
【００８９】
加えて、本発明の実施の形態における分散学習システム１では、送信勾配ｇｉを更に量子化することもできる。これにより、分散学習装置１０間の通信量を更に圧縮することができる。また、このとき、適切な量子化手法を用いることで、量子化による精度の低下も抑止することができる。
【００９０】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【００９１】
１        分散学習システム
１０      分散学習装置
１０１    勾配計算部
１０２    統計量計算部
１０３    送信グループ判定部
１０４    量子化部
１０５    勾配共有部
１０６    最適化部
１０７    通信部
【図１】
2019212111.tif 000003
【図２】
2019212111.tif 000004
【図３】
2019212111.tif 000005
【図４】
2019212111.tif 000006
【図５】
2019212111.tif 000007
【図６】
2019212111.tif 000008
【図７】
2019212111.tif 000009