(57)【要約】【課題】低い圧縮率を達成しつつも精度の減少を抑制する勾配圧縮装置を提供する。【解決手段】勾配圧縮装置は、学習における誤差関数に対し、学習対象である複数のパラメータについて算出された勾配の統計量を算出する、統計量算出部と、通信ネットワークを介して、前記パラメータのそれぞれについて勾配を送信するパラメータである送信パラメータであるか否かを、前記統計量に基づいて判定する、送信パラメータ判定部と、送信パラメータであると判定された前記パラメータについての勾配の代表値である勾配代表値を量子化する、勾配量子化部と、を備える。【選択図】図２
2019080232.tif 000002
【特許請求の範囲】
【請求項１】
学習における誤差関数に対し、学習対象である複数のパラメータについて算出された勾配の統計量を算出する、統計量算出部と、
通信ネットワークを介して、前記パラメータのそれぞれについて勾配を送信するパラメータである送信パラメータであるか否かを、前記統計量に基づいて判定する、送信パラメータ判定部と、
送信パラメータであると判定された前記パラメータについての勾配の代表値である勾配代表値を量子化する、勾配量子化部と、
を備える勾配圧縮装置。
【請求項２】
前記統計量算出部が算出する前記統計量は、勾配の平均値及び分散値である、請求項１に記載の勾配圧縮装置。
【請求項３】
前記送信パラメータ判定部は、あるパラメータの勾配の平均値の２乗の値が、当該パラメータの勾配の分散値又は当該パラメータの勾配の２乗の平均値に、所定倍率である基準分散倍率を乗じた値よりも大きい場合に、当該パラメータが送信パラメータであると判定する、請求項２に記載の勾配圧縮装置。
【請求項４】
前記勾配量子化部は、所定量子化ビット数になるように、前記勾配代表値を量子化する、請求項１乃至請求項３のいずれかに記載の勾配圧縮装置。
【請求項５】
前記勾配量子化部は、前記勾配代表値の指数値に基づいて、前記所定量子化ビット数になるように、勾配を量子化する、請求項４に記載の勾配圧縮装置。
【請求項６】
前記勾配量子化部により量子化された前記パラメータの前記勾配代表値を出力する、出力部をさらに備える請求項１乃至請求項５のいずれかに記載の勾配圧縮装置。
【請求項７】
前記出力部は、前記勾配代表値を量子化した値が所定値よりも小さい場合に、当該勾配に対応する前記送信パラメータを出力しない、請求項６に記載の勾配圧縮装置。
【請求項８】
学習における誤差関数に対し、学習対象である複数のパラメータについて算出された勾配の統計量を算出し、
通信ネットワークを介して、前記パラメータのそれぞれについて勾配を送信するパラメータである送信パラメータであるか否かを、前記統計量に基づいて判定し、
送信パラメータであると判定された前記パラメータについての勾配の代表値である勾配代表値を量子化する、
勾配圧縮方法。
【請求項９】
コンピュータに、
学習における誤差関数に対し、学習対象である複数のパラメータについて算出された勾配の統計量を算出する手段、
通信ネットワークを介して、前記パラメータのそれぞれについて勾配を送信するパラメータである送信パラメータであるか否かを、前記統計量に基づいて判定する手段、
送信パラメータであると判定された前記パラメータについての勾配の代表値である勾配代表値を量子化する手段、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、勾配圧縮装置、勾配圧縮方法及びプログラムに関する。
【背景技術】
【０００２】
ビッグデータを扱う際に、クラスタやクラウド等を用いて分散して処理を行うことが広く実現されている。深層学習を行う際にも、データの大きさと併せてモデルの層の深さから、学習を分散して行うことが多くなってきている。今日では、扱うデータ量が莫大にあること、また、計算能力の向上及び並列計算において計算能力を上げるためにも通信が必要となることから、分散深層学習を行う場合には、演算時間と比較して通信時間が大幅に大きくなり、学習速度はデータ通信に律速されることが多い。インフィニバンド等の広帯域の通信媒体を用いて通信の高速化を行うことも可能であるが、コストが高くなるという問題がある。
【０００３】
分散深層学習では、主に各ノードで演算した勾配の全ノードでの平均を計算するために通信が行われる。勾配を送信する手法として、各パラメータあたり１ビットのみを送信することにより圧縮する手法、しきい値より大きい勾配の値を有するパラメータのみを送信することにより圧縮する手法、確率的に圧縮する手法等が研究されている。しかしながら、いずれの手法も、高い精度と低い圧縮率との両立が困難であったり、又は、ハイパーパラメータの設定がシビアであったりする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１６／３７３５１号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
そこで、本発明は、低い圧縮率を達成しつつも精度の減少を抑制する勾配圧縮装置を提供する。
【課題を解決するための手段】
【０００６】
一実施形態に係る勾配圧縮装置は、学習における誤差関数に対し、学習対象である複数のパラメータについて算出された勾配の統計量を算出する、統計量算出部と、通信ネットワークを介して、前記パラメータのそれぞれについて勾配を送信するパラメータである送信パラメータであるか否かを、前記統計量に基づいて判定する、送信パラメータ判定部と、送信パラメータであると判定された前記パラメータについての勾配の代表値である勾配代表値を量子化する、勾配量子化部と、を備える。
【発明の効果】
【０００７】
高い精度を保ち、かつ、低い圧縮率を達成することができる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態に係る学習システムの概略を示す図。
【図２】一実施形態に係る分散学習装置の機能を示すブロック図。
【図３】一実施形態に係る分散学習装置の勾配圧縮の処理を示す図。
【図４】一実施形態に係る分散学習装置のデータ量子化の処理を示す図。
【図５】一実施形態に係る学習システムによる学習結果を示す図。
【図６】一実施形態に係る学習システムによるデータ圧縮の結果を示す図。
【発明を実施するための形態】
【０００９】
まず、本明細書で使用する用語の説明をする。
【００１０】
「パラメータ」とは、ニューラルネットワークの内部パラメータのことを示す。
「ハイパーパラメータ」とは、パラメータに対して、ニューラルネットワークの外部のパラメータのことを示す。例えば、あらかじめ設定された各種しきい値等のことを言う。本実施形態においては、例えば、以下の説明中における、基準分散倍率（所定倍率）α、減衰率γ、量子化ビット数ｋがハイパーパラメータである。この他、本実施形態においては、バッチサイズやエポック数といった他のハイパーパラメータも存在するが、詳しくは説明しない。
「精度」とは、ニューラルネットワークの認識精度のことを示す。特に断りがない限り、学習に用いたデータセット以外のデータセットを用いて評価を行った精度のことを示す。
「勾配」とは、ニューラルネットワークの誤差関数に対する各パラメータの偏微分をあるデータ点において算出した値のことを示す。誤差逆伝播法により算出され、パラメータの最適化に用いられる。
「パラメータの最適化」とは、パラメータを調節して誤差関数の値を小さくする手続のことを示す。勾配を使ったＳＧＤ（確率的勾配降下法：Stochastic Gradient Descent）が一般的な方法であり、本実施形態においてもＳＧＤを使用する。
「圧縮率」とは、（送信されたパラメータ数の全ノードでの合計）／（（総パラメータ数）×（ノード数））を示す値である。圧縮率が低いほど圧縮の性能がよいことを意味する。
【００１１】
以下、図面を用いて、本実施形態に係る勾配圧縮装置について説明する。
【００１２】
図１は、本実施形態に係る学習システム１を示す図である。この図１に示すように、学習システム１は、複数の分散学習装置１０を備える。各分散学習装置は、通信ネットワークを介して接続されている。接続方法は、各分散学習装置同士が相互にそれぞれ接続されていてもよいし、ハブを用意して当該ハブを介して各分散学習装置が接続されていてもよいし、リング状の通信ネットワーク上に各分散学習装置が接続されていてもよい。
【００１３】
通信ネットワークは、必ずしも高速のものでなくともよい。例えば、一般的なＬＡＮ（Local Area Network）により形成されていてもよい。また、その通信手法や通信方式は特に限定されるものではない。
【００１４】
各分散学習装置１０内において、例えば、深層学習が行われ、各種パラメータが算出される。算出されたパラメータは、各分散学習装置１０で共有され、平均化されたものを次の学習のためのパラメータとして更新するようにしてもよい。このように分散させることにより、データ量が莫大である深層学習を並列的に実行することが可能となる。分散学習装置１０は、例えば、ＧＰＵ（Graphical Processing Unit）を備えて構成されていてもよく、この場合、学習システム１は、ＧＰＵクラスタを備えた構成となる。
【００１５】
図２は、分散学習装置１０の機能を示すブロック図である。分散学習装置１０は、通信部１００と、受信バッファ１０２と、送信バッファ１０４と、データ格納部１０６と、学習部１０８と、勾配圧縮装置２０と、を備える。
【００１６】
通信部１００は、上述した通信ネットワークと、分散学習装置１０の内部とを接続する。この通信部１００のインターフェースは、通信ネットワークの通信手法や通信方式に適切に対応しているものであればよい。通信部１００は、データを受信すると、当該データを受信バッファ１０２へと格納し、送信バッファ１０４に格納されているデータを、外部へと送信する。例えば、全て、又は、複数の分散学習装置１０は、通信のタイミングにおいて同期をとるようにする。このように同期をとることにより、勾配の値を全て、又は、複数の分散学習装置１０において共有して次のステップの学習を行うことが可能となる。
【００１７】
データ格納部１０６は、分散学習装置１０における処理に必要なデータを格納する。例えば、学習に必要となるデータが格納される。このデータは、所謂教師付データ、又は、既に学習により得られているパラメータの情報等である。受信バッファ１０２に格納されたデータを、データ格納部１０６へ転送し、受信したデータが格納されるようにしてもよい。
【００１８】
学習部１０８は、データ格納部１０６に格納されているデータに基づいて、機械学習を行う部分であり、例えば、深層学習等のニューラルネットワークによる学習演算を実行することにより、学習の対象となる各パラメータを算出する。この学習部１０８を動かすためのプログラムがデータ格納部１０６に格納されていてもよい。また、別の例としては、破線で描かれているように、受信バッファ１０２に格納されたデータを学習部１０８が直接参照し、学習を行うようにしてもよい。
【００１９】
以下、学習するパラメータの個数をｎとし、ｉ番目（０≦ｉ＜ｎ）のパラメータをｗｉとして表す。また、学習部１０８で評価のために使用する誤差関数をＥとする。
【００２０】
なお、原則的に、１つの分散学習装置１０においては、ミニバッチにより学習を行うこととするが、勾配を用いるバッチ学習等により学習を行う場合にも適用することが可能である。ミニバッチ学習とは、訓練データをある程度のサイズごとに分割したミニバッチごとにパラメータの更新を行う手法である。
【００２１】
ミニバッチにより学習を行う場合、分散学習装置１０内の学習部１０８は、分散学習装置１０に割り当てられたミニバッチに対応するパラメータｗｉの勾配を算出する。算出されたミニバッチごとの勾配の総和を全ノードで共有し、この共有された勾配を用いて確率的勾配降下法により、パラメータｗｉの次のステップにおける最適化を行う。
【００２２】
勾配圧縮装置２０は、勾配算出部２００と、統計量算出部２０２と、送信パラメータ判定部２０４と、勾配量子化部２０６と、出力部２０８と、を備える。この勾配圧縮装置２０は、機械学習の学習対象となる各パラメータの勾配を、量子化し、そのデータ量を圧縮する。
【００２３】
勾配算出部２００は、学習部１０８から出力された各パラメータの集合から、各パラメータの勾配を算出する。この勾配算出部２００における勾配の算出は、一般的な誤差逆伝播法における勾配の算出方法と同様である。例えば、パラメータｗｉによる偏微分を∇ｉとおくと、パラメータｗｉに関する勾配は、∇ｉＥと記載することができる。この勾配は、誤差逆伝播法により、例えば、入力層から順にネットワークを伝播させ、パラメータｗｉに関する層の出力を保存しておき、次に出力層から得られた出力値に基づいて、パラメータｗｉの層まで誤差（又は、誤差の偏微分値）を逆伝播させることにより求められる。勾配算出部２００は、算出された各パラメータに対する勾配の値を図示しないバッファへと格納する。
【００２４】
なお、勾配は、学習中に算出するようにしてもよい。この場合、勾配圧縮装置２０内には、勾配を算出する機能は備えられていなくてもよく、学習部１０８が勾配算出部２００の機能を備えていてもよい。すなわち、勾配算出部２００は、勾配圧縮装置２０には必須の要素ではない。そして、次に説明する統計量算出部２０２が、学習部１０８が算出した各パラメータの勾配に基づいて、統計量を算出するようにしてもよい。
【００２５】
統計量算出部２０２は、勾配算出部２００により算出された各パラメータについての勾配に関する統計量を算出する。統計量としては、例えば、平均値及び分散値を用いることができる。統計量算出部２０２は、ミニバッチ内のデータセットから算出されたパラメータｗｉごとの勾配から、ミニバッチ内における勾配の平均値及び分散値を算出する。
【００２６】
送信パラメータ判定部２０４は、求められた統計量、ここでは、平均値μｉ及び分散値ｖｉに基づいて、当該パラメータｗｉに関する勾配を送信するか否かを判定する。ここで、勾配を送信するパラメータのことを、送信パラメータと表す。
【００２７】
勾配量子化部２０６は、送信パラメータと判定されたパラメータｗｉに関する勾配の代表値の量子化を実行する。勾配の代表値とは、次のステップの学習に用いる当該パラメータｗｉに反映させる勾配の値であり、例えば、上記で求められた勾配の平均値を用いるが、モード値、メディアン値等を用いてもよい。
【００２８】
パラメータｗｉに対する勾配の代表値を、勾配代表値ｘｉとして表す。すなわち、配列ｘは、ｎ個の要素を持つ配列であり、その要素である勾配代表値ｘｉは、パラメータｗｉのうち量子化を行うパラメータｗｉ（送信パラメータ）に対応するものである。送信パラメータではないパラメータｗｉに対応する勾配代表値ｘｉには、例えば、全てのビットを０としたフラグを立て、送信しないことを通知するようにしてもよいし、別途送信パラメータのインデクスに関する配列を準備し、当該配列に基づいて送信パラメータであるか否かを判断するようにしてもよい。そして、勾配量子化部２０６は、配列ｘの最大値によりスケーリングされた配列ｘの要素を量子化ビット数ｋに基づいて量子化し、必要なデータを付与して量子化する。
【００２９】
出力部２０８は、勾配量子化部２０６が量子化したデータを送信バッファ１０４へと出力し、他の分散学習装置１０とパラメータの勾配値を共有する。
【００３０】
図３は、あるステップにおける学習により勾配が算出されてから、次のステップへと勾配を共有するまでの処理の流れを示すフローチャートである。以下、この図３を用いて勾配圧縮装置２０の動作について詳しく説明する。
【００３１】
まず、パラメータｗｉについて処理を行う（Ｓ１００）。
【００３２】
勾配算出部２００は、誤差逆伝播法によりパラメータｗｉについての誤差関数の勾配を計算する（Ｓ１０２）。なお、上述したように勾配を求めるまでを学習部１０８で行うようにしてもよい。学習部１０８で勾配を算出する場合は、Ｓ１０２の処理は、Ｓ１００のループ内に含まず、全てのパラメータについての勾配を求めてから処理を行うようにしてもよい。この場合、上述したように、勾配算出部２００は、学習部１０８に備えられており、勾配圧縮装置２０には必須の構成要素ではない。
【００３３】
次に、統計量算出部２０２は、パラメータｗｉの統計量を算出する（Ｓ１０４）。統計量として、例えば、平均値μｉと、分散値ｖｉとを算出する。
【００３４】
平均値μｉは、ミニバッチのデータセットの標本数をｍとした場合、ｊ番目のデータを用いた場合の誤差関数の値をＥｊとすると、以下のように表すことができる。
【数１】
2019080232.tif 000003
【００３５】
同様に分散値ｖｉは、以下のように表すことができる。
【数２】
2019080232.tif 000004
【００３６】
なお、以下の説明において、用いる統計量は、平均値及び分散値であるとして説明するが、これには限られず、例えば、平均値の代わりに、モード又はメディアン等の他の統計量を用いることも可能である。この場合、平均値の代わりにモード又はメディアン等の統計量を用いた疑似的な分散値を、分散値の代わりとして用いてもよい。すなわち、［数２］のμｉの代わりにモード又はメディアンを代入した値を用いてもよい。このように、平均及び分散と同じような関係性を有する統計量であれば、どのような統計量を用いても構わない。また、上記では、標本分散を用いているが、不偏分散としてもよい。
【００３７】
この平均値及び分散値を求める際に、パラメータｗｉごとに準備された図示しない第１バッファと第２バッファを用いてもよい。第１バッファは、パラメータｗｉに関する勾配の和を格納するバッファであり、第２バッファは、勾配の２乗の和を格納するバッファである。これらのバッファは、学習が開始されるタイミング、すなわち、第１ステップの開始タイミングにおいて０で初期化される。
【００３８】
統計量算出部２０２は、第１バッファに勾配の和を加算し、第２バッファに勾配の２乗の和を加算する。そして、統計量算出部２０２は、第１バッファに格納されている値を標本数ｍで割ることにより平均値を求める。同様に、第２バッファに格納されている値を標本数ｍで割り、第１バッファの格納値より求められた平均値の２乗を減ずることにより、分散値を算出する。勾配の平均値を用いない場合には、対応する統計量を第１バッファに格納するようにしてもよい。
【００３９】
なお、後述の［数４］で示すように、平均値と分散値とを比較する場合、標本自体の平均値と、標本の２乗の平均値との比較に書き換えることが可能である。このように、標本の平均値と、標本の２乗の平均値とを比較することにより、第２バッファに格納されている値から分散値を求めることなく送信パラメータの判定を行うことが可能である。
【００４０】
このようにすることにより、前のステップにおいてバッファが初期化されていない場合には、パラメータｗｉについての勾配を送信するか否かの判定に前のステップまでの状態を反映させることが可能となる。
【００４１】
次に、送信パラメータ判定部２０４は、統計量算出部２０２が算出した統計量に基づいて、パラメータｗｉが送信パラメータであるか否かを判定する（Ｓ１０６）。送信パラメータ判定部２０４は、例えば、基準分散倍率α’を用い、以下の式を満たす場合に、当該勾配に関するパラメータを送信パラメータであると判定する。
【数３】
2019080232.tif 000005
大数の弱法則を用いると、［数３］のようにｍで割ることにより、１標本の分散からミニバッチ内の勾配の平均の分散へ変換していることを示される。この式は、分散値ｖｉを、（勾配の２乗の平均値）−（勾配の平均値の２乗）で書き換えることにより、基準分散倍率α（≠α’）を用いて以下の式で書き換えられる。
【数４】
2019080232.tif 000006
【００４２】
すなわち、このように変形することにより、平均値と勾配の２乗の平均値とを比較することにより、分散値と比較しているのと同等であることが分かる。基準分散倍率αは、例えば、１．０である。これには限られず、０．８、１．５、２．０、又は、その他の値としてもよい。この基準分散倍率αは、ハイパーパラメータであり、例えば、学習方法、学習内容、学習対象等によって変更されるものであってもよい。
【００４３】
特に、［数２］の分散値の代わりに、不偏分散として以下の式を用いることにより、［数２］、［数４］において、α’＝１の場合にα＝１となる。
【数５】
2019080232.tif 000007
【００４４】
これら［数３］、［数４］及び以下の式は、ミニバッチ内で決定される値であり、ノード数ｎ及び全体のバッチサイズであるｍ×ｎには依存しない値による比較である。
【００４５】
判定式として使用する式は、［数３］、［数４］には限られず、以下に記載するような各判定式を用いるようにしてもよい。
【数６】
2019080232.tif 000008
【数７】
2019080232.tif 000009
ここで、ｐ、ｐ’、ｑ、ｑ’、βは、ハイパーパラメータとして与えられるスカラー値であり、||・||ｐは、ｐ次ノルム（Ｌｐノルム）であることを表す。その他、これらと類似した式を判定式として用いてもよい。
【００４６】
パラメータｗｉが送信パラメータであると判断された場合（Ｓ１０８：Ｙｅｓ）、パラメータｗｉを配列ｘへと追加する（Ｓ１１０）。なお、この配列ｘは、便宜的なものであり、実際には、送信パラメータとなったパラメータのインデクスｉを勾配量子化部２０６へと出力するようにし、インデクスｉに基づいてパラメータｗｉを参照することにより、続く量子化以下の処理をするようにしてもよい。また、このタイミングにおいて、第１バッファ及び第２バッファを０で初期化する。
【００４７】
一方でパラメータｗｉが送信パラメータではないと判断された場合（Ｓ１０８：Ｎｏ）、パラメータｗｉは、配列ｘには追加されず、さらに、統計量算出部２０２により算出された勾配の平均値及び分散値をハイパーパラメータである減衰率γに基づいて減衰させ、第１バッファ及び第２バッファへと格納する（Ｓ１１２）。より具体的には、γ×（勾配の平均値）を第１バッファへ格納し、γ２×（勾配の分散値）を第２バッファへと格納する。
【００４８】
減衰率γは、現在の状態を将来についてどの程度影響を与えるかの指標を示す値であり、例えば、０．９９９といった値である。この値には限られず、１以下である他の値、例えば、０．９９、０．９５といった他の値としてもよい。一般的には、１に近い値とするが、例えば、現在の状態を将来的に使用したくないのであれば、γ＝０としてもよい。このように、γは、［０，１］の任意の値をとるようにしてもよい。
【００４９】
また、平均値及び２乗の平均値に関する減衰率は、同じ値である必要は無く、別々の値としてもよい。例えば、第１バッファに関する減衰率を、減衰率γ１＝１．０００とし、第２バッファに関する減衰率を、減衰率γ２＝０．９９９としてもよい。
【００５０】
次に、全てのインデクスｉについて、送信パラメータであるか否かが判定されたかにより、ループ処理を終了させる（Ｓ１１４）。全てのインデクスｉについて処理が行われていない場合には、Ｓ１０２からＳ１１２までの処理を次のインデクスに対して行う。
【００５１】
なお、Ｓ１００からＳ１１４のループの処理は、分散学習装置１０が並列演算可能であれば、並列演算するようにしてもよい。
【００５２】
次に、勾配量子化部２０６は、送信パラメータのデータについて量子化を行う（Ｓ１１６）。図４は、送信パラメータのデータの量子化の動作の処理を示すフローチャートである。この図４に示されている動作は、勾配量子化部２０６が実行する。勾配量子化部２０６には、送信パラメータｗｉに関する勾配により構成された配列ｘと、ハイパーパラメータである量子化ビット数ｋが入力される。
【００５３】
量子化ステップにおいては、まず、配列ｘから、その要素の絶対値の最大値Ｍを抽出し、当該最大値Ｍを送信バッファ１０４へと出力する（Ｓ２００）。具体的には、以下の数式のＭの値を求め、送信バッファ１０４へと出力する。
【数８】
2019080232.tif 000010
最大値Ｍの抽出方法は、一般的な方法を用いる。このタイミングにおいて、送信バッファ１０４には、最大値Ｍの値が格納されている。
【００５４】
次に、各勾配代表値ｘｉの処理を実行する（Ｓ２０２）。まず、各勾配代表値ｘｉを、最大値Ｍで規格化する（Ｓ２０４）。すなわち、勾配代表値ｘｉを、ｘｉ＝ｘｉ／Ｍの式に基づいて変換する。なお、この処理は、分散学習装置１０がＳＩＭＤ（Single Instruction Multiple Data）演算等に対応しているのであればループに入る前にＳＩＭＤ演算等により行ってもよい。
【００５５】
規格化前の配列ｘの最大値はＭであるので、規格化後の配列ｘの要素の絶対値は、全て１以下となる。すなわち、２を基数、仮数を［−１，１］として、（仮数）×２−（正の指数）の形式へと書き換えることが可能となる。勾配量子化部２０６は、仮数の情報を省略し、最大値Ｍと、指数部の情報により、勾配の平均値を近似して圧縮しようとするものである。
【００５６】
次に、規格化された勾配代表値ｘｉの２を基数とした指数部を抽出する（Ｓ２０６）。指数部の抽出は、以下に示す式のように、規格化された勾配代表値ｘｉの絶対値の対数値を求めることにより抽出する。
【数９】
2019080232.tif 000011
【００５７】
次に、各パラメータについて、［数９］のｅｉが、量子化ビット数ｋにより表すことのできる最小値以上であるか否かを判定する（Ｓ２０８）。この判定は、以下の式により実行される。
【数１０】
2019080232.tif 000012
【００５８】
この判定結果に基づき、勾配を出力するか否かを決定する。この判定は、送信パラメータ判定部２０４により実行された判定とは異なり、例えば、勾配の平均値が量子化ビット数ｋで表すことのできる最小値を下回っている場合には、０とみなし、送信しないことにより０を表現することが可能であるために実行される。例えば、ｋ＝３である場合、最大値Ｍから、Ｍ／１２７までの２８−１までの２のべき乗（２の２３乗＝８乗まで）に基づいた８段階の値を表すことが可能となる。そして、Ｍ／１２７未満の数値については、０であるとみなす。量子化は、ｋ＝３には限られず、例えば、ｋ＝４等としてもよい。ｋが大きくなるほど、表すことのできる数値が増える。
【００５９】
［数１０］を満たす場合（Ｓ２０８：Ｙｅｓ）、ｅｉは、量子化ビット数ｋ及び最大値Ｍを用いて表すことのできる最小値を下回っているので、０と見なし、当該勾配代表値ｘｉに対応するパラメータｗｉについての勾配代表値を、送信バッファ１０４へと出力しないようにする（Ｓ２１０）。すなわち、当該判定を行うことにより、どのインデクスｉに対応する勾配代表値を送信しないのかを判定し、当該インデクスｉの勾配代表値が０であるとし、送信しないようにする。送信しないことにより、受信側では勾配代表値が０であるとみなしてパラメータの更新を行い、次のステップの学習を行う。
【００６０】
一方、［数１０］を満たさない場合（Ｓ２０８：Ｎｏ）、ｅｉは、量子化ビット数ｋ及び最大値Ｍを用いて近似して圧縮することが可能であるので、規格化された当該勾配代表値ｘｉを送信バッファ１０４へと出力する（Ｓ２１２）。ここで、出力する値は、当該パラメータｗｉに対する勾配代表値ｘｉの符号（１ビット）、−ｆｌｏｏｒ（ｅｉ）（ｋビット）、及び、インデクスｉ（ｉ≦ｎなので、ｃｅｉｌ（ｌｏｇ２  ｎ）ビット）の、１＋ｋ＋ｃｅｉｌ（ｌｏｇ２  ｎ）ビットとなる。
【００６１】
そして、全てのインデクスｉについて処理が終わったか否かを判定し（Ｓ２１４）、全てのインデクスｉについて処理が終わっている場合は、勾配圧縮の処理を終了する。まだ処理を行っていないインデクスｉがある場合には、Ｓ２０２からの処理を次のインデクスに対して行う。
【００６２】
この勾配圧縮の処理を行うと、送信バッファ１０４には、勾配代表値の最大値Ｍである例えば３２ビット（単精度の場合）のデータと、各送信パラメータｗｉについての上記の１＋ｋ＋ｃｅｉｌ（ｌｏｇ２  ｎ）ビットのデータが格納されることとなる。
【００６３】
なお、全てのインデクスについてデータの出力が完了した後に、配列ｘを０により初期化してもよいし、学習部１０８が学習を行うタイミングであって、勾配代表値の圧縮処理が始まる前に、配列ｘを０により初期化してもよい。
【００６４】
図３に戻り、次に、通信部１００は、量子化により圧縮され、送信バッファ１０４に格納されている内容を他の分散学習装置１０へと送信を行うともに、他の分散学習装置１０の送信バッファに格納されているデータを受信し、受信バッファ１０２へと格納する（Ｓ１１８）。このタイミングにおいて、送信パラメータに関する第１バッファ及び第２バッファを０で初期化するようにしてもよい。
【００６５】
この通信部１００によるデータの送受信は、例えば、ＭＰＩ（Message Passing Interface）命令のうち、Ａｌｌｇａｔｈｅｒｖ（）の処理により行われる。この命令のように、例えば、各分散学習装置１０の送信バッファ１０４に格納されている値をひとまとめにし、まとめられたデータを各分散学習装置１０の受信バッファ１０２へと格納する。
【００６６】
学習部１０８は、受信バッファ１０２に格納されたデータについて、上記と逆の演算を行うことにより勾配代表値を展開し、次のステップの学習を行う。
【００６７】
受信したデータの展開は、上述した処理と逆の処理を行うことにより実行される。まず、受信した勾配代表値の最大値Ｍを取得する。そして、続くデータがいずれのパラメータに対する勾配代表値であるかを、受信したデータのうち、インデクスｉから判別する。次に、受信したデータのうち、指数部ｅｉに当たるデータ抽出し、Ｍ×２−ｅｉを計算し、符号ビットに格納されているデータから符号を読み取り、パラメータｗｉの符号を付す。
【００６８】
全ての分散学習装置１０からのデータについて上記のようにパラメータを展開した後、学習部１０８は、ＭｏｍｅｎｔｕｍＳＧＤ、ＳＧＤ、Ａｄａｍ等の学習手法により学習を実行する。
【００６９】
なお、複数の分散学習装置１０において、同じインデクスｉのパラメータの勾配代表値が取得された場合には、取得された複数の値の和を算出して、次のステップの学習を行うようにしてもよい。
【００７０】
上述した勾配の圧縮は、１ステップごとに行われる必要はなく、例えば、ある程度まとまったステップを各分散学習装置１０において学習した後に、出力された勾配に基づいて、勾配圧縮を行い、送信をすることにより、学習を進めるようにしてもよい。
【００７１】
図５（ａ）乃至図５（ｃ）は、本実施形態に係る勾配圧縮を行った学習の様子を示すグラフである。これらの図において、点線は、勾配圧縮を行わない場合の学習の精度の最高値、破線は、本実施形態に係る勾配圧縮をした場合における評価関数の値、実線は、本実施形態に係る勾配圧縮をした場合における、学習の精度を示す曲線である。すなわち、実線は、交差検証をした結果の精度を示す曲線である。縦軸は、学習の精度を示し、横軸は、ステップ数を示す。
【００７２】
図５（ａ）は、基準分散倍率α＝１とした場合の結果を示す図である。この場合、勾配の圧縮を行わなかった場合と同等の精度を得ていることがわかる。
【００７３】
図５（ｂ）は、基準分散倍率α＝２、図５（ｃ）は、基準分散倍率α＝３とした場合であるが、それぞれ、図５（ａ）の結果よりも精度は低くなるものの、良好な精度の学習が行われていることが分かる。
【００７４】
この基準分散倍率αは、大きくなるほど送信パラメータが少なくなるので、圧縮率が低くなる。この圧縮の様子を示したのが図６（ａ）乃至図６（ｃ）に示すグラフである。それぞれ、図５（ａ）乃至図５（ｃ）に対応するグラフであり、図６（ａ）は、基準分散倍率α＝１、図６（ｂ）は、基準分散倍率α＝２、図６（ｃ）は、基準分散倍率α＝３の場合の送信データの圧縮率を示すグラフである。図６において、縦軸が圧縮率、横軸がステップ数を表し、縦軸は、１０を基数とした対数目盛となっている。
【００７５】
グラフから読み取ると、基準分散倍率α＝１の場合は、無圧縮の場合に比べて約１／４０のデータ量、すなわち、約１／４０の圧縮率となる。同様に、基準分散倍率α＝２の場合は、約１／３０００の圧縮率、基準分散倍率α＝３の場合は、約１／２００００の圧縮率となっている。これらのグラフ及び図５のグラフから、低い圧縮率を達成できているとともに、精度の減少が少ないことが読み取れる。すなわち、学習システム１において、精度の高さを保ったまま、分散学習装置１０間の通信データ量、ひいては通信スピードを向上し、学習に掛かる時間における通信時間を減少させていることが読み取れる。
【００７６】
以上のように、本実施形態に係る分散学習装置１０によれば、分散深層学習において、通信する必要があるデータの低い圧縮率を達成しつつも精度の減少を抑制することが可能である。このことから、分散深層学習を行う場合において、通信速度律速とならずに、計算機の性能を有効に活用した深層学習を行うことが可能となる。
【００７７】
なお、本実施形態に係る勾配圧縮手法は、通信一般を圧縮できるので、上記で説明したような通信のタイミングにおいて複数の分散学習装置１０が同期する同期型のみではなく、非同期型の分散深層学習にも適用可能である。また、ＧＰＵクラスタだけではなく、他のアクセラレータを用いたクラスタ上で動作するものであってもよく、例えば、ＦＰＧＡ（Field-Programmable Gate Array）等の専用のチップを複数接続する、すなわち、アクセラレータ同士を接続するような通信速度律速となる場合においても適用することができる。
【００７８】
本実施形態による勾配の圧縮は、もとのデータに依存しないものであるので、画像処理用、テキスト処理用、又は、音声処理用等、様々なニューラルネットによる学習に利用することができる。さらに、勾配の相対的な大きさに着目しているので、ハイパーパラメータの調整が容易となる。圧縮の度合いとして、１次モーメントである統計量と、２次モーメントである統計量とを比較するので、別の次元のモーメント同士で比較するという変形例も、本実施形態の均等の範囲に入る。また、指数により量子化を行いデータの圧縮を行っているので、より広い値のスケールに対応することが可能となる。
【００７９】
上記の全ての記載において、分散学習装置１０の少なくとも一部はハードウェアで構成されていてもよいし、ソフトウェアで構成され、ソフトウェアの情報処理によりＣＰＵ等が実施をしてもよい。ソフトウェアで構成される場合には、分散学習装置１０及びその少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記憶媒体に収納し、コンピュータに読み込ませて実行させるものであってもよい。記憶媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記憶媒体であってもよい。すなわち、ソフトウェアによる情報処理がハードウェア資源を用いて具体的に実装されるものであってもよい。さらに、ソフトウェアによる処理は、ＦＰＧＡ等の回路に実装され、ハードウェアが実行するものであってもよい。学習モデルの生成や、学習モデルに入力をした後の処理は、例えば、ＧＰＵ等のアクセラレータを使用して行ってもよい。
【００８０】
また、本実施形態に係る勾配圧縮モデルは、人工知能ソフトウェアの一部であるプログラムモジュールとして利用することが可能である。すなわち、コンピュータのＣＰＵが格納部に格納されているモデルに基づいて、演算を行い、結果を出力するように動作する。
【００８１】
上記の全ての記載に基づいて、本発明の追加、効果又は種々の変形を当業者であれば想到できるかもしれないが、本発明の態様は、上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更及び部分的削除が可能である。
【００８２】
例えば、図１に示すように、本実施形態に係る分散学習装置１０は、学習システム１に複数備えられるコンピュータのうち、１のコンピュータにより実装されてもよい。図２に示すように、学習部１０８が算出したパラメータの勾配を圧縮し、通信部１００が送信を行えるように送信バッファ１０４へと出力するものであればよい。また、勾配圧縮装置２０は、学習部１０８とは別のコンピュータに実装され、勾配圧縮装置２０と、学習部１０８及び通信部１００等が協働して分散学習を行えるような装置であってもよい。学習システム１は、最終的に、１つの学習を複数の通信経路を介して接続された複数の分散学習装置１０により学習を分散して実行する。なお、複数のコンピュータである必要は無く、学習システム１は、例えば、同一のコンピュータ内に複数のアクセラレータが備えられ、それら複数のアクセラレータがバスを介して通信を行いながら分散学習をするシステムであってもよい。
【符号の説明】
【００８３】
１：学習システム、１０：分散学習装置、１００：通信部、１０２：受信バッファ、１０４：送信バッファ、２０：勾配圧縮装置、２０２：統計量算出部、２０４：送信パラメータ判定部、２０６：勾配量子化部、２０８：出力部
【図１】
2019080232.tif 000013
【図２】
2019080232.tif 000014
【図３】
2019080232.tif 000015
【図４】
2019080232.tif 000016
【図５】
2019080232.tif 000017
【図６】
2019080232.tif 000018