(57)【要約】【課題】機械学習を効率よく行う。【解決手段】機械学習システムは、通信可能に接続された複数の情報処理装置を含み、複数の情報処理装置を用いた並列分散方式により機械学習を行う。情報処理装置は、機械学習におけるモデルの学習に用いるパラメータの送受信を他の情報処理装置との間で行い、パラメータを他の情報処理装置に送信する際、パラメータを差分符号化して圧縮し、他の情報処理装置から受信したパラメータを伸張する。情報処理装置は、モデル（例えば、畳み込みニューラルネットワーク）のモデル空間の同一時刻における隣接する位置の夫々におけるパラメータの差分を算出することにより差分符号化を行う。また情報処理装置は、モデル（例えば、フィードフォワードニューラルネットワーク）のモデル空間の同一位置における連続する時刻の夫々におけるパラメータの差分を算出することにより差分符号化を行う。【選択図】図４
2018206016.tif 000002
【特許請求の範囲】
【請求項１】
通信可能に接続された複数の情報処理装置を含み、前記複数の情報処理装置を用いた並列分散方式により機械学習を行う機械学習システムであって、
前記情報処理装置は、
前記機械学習におけるモデルの学習に用いるパラメータの送受信を他の前記情報処理装置との間で行う送受信部と、
前記パラメータを他の前記情報処理装置に送信する際、前記パラメータを差分符号化して圧縮する圧縮部と、
他の前記情報処理装置から受信した前記パラメータを伸張する伸張部と、
を備える、
機械学習システム。
【請求項２】
請求項１に記載の機械学習システムであって、
前記圧縮部は、前記モデルの空間的相関又は時間的相関を利用して前記差分符号化を行う、
機械学習システム。
【請求項３】
請求項２に記載の機械学習システムであって、
前記圧縮部は、前記モデルのモデル空間の同一時刻における隣接する位置の夫々における前記パラメータの差分を算出することにより前記差分符号化を行う、
機械学習システム。
【請求項４】
請求項３に記載の機械学習システムであって、
前記モデルは畳み込みニューラルネットワークである、
機械学習システム。
【請求項５】
請求項２に記載の機械学習システムであって、
前記圧縮部は、前記モデルのモデル空間の同一位置における連続する時刻の夫々における前記パラメータの差分を算出することにより前記差分符号化を行う、
機械学習システム。
【請求項６】
請求項５に記載の機械学習システムであって、
前記モデルは、フィードフォワードニューラルネットワーク（ＦＦＮＮ（Feedforward Neural Network））、再帰型ネットワーク（ＲＮＮ（Recurrent Neural Network））、制限付きボルツマンマシン（ＲＢＭ（Restricted Boltzmann Machine））、オートエンコーダ（AutoEncoder）、及び全結合型ネットワークのうちのいずれかである、
機械学習システム。
【請求項７】
請求項１乃至６のいずれか一項に記載の機械学習システムであって、
前記パラメータは、前記モデルの重み係数又は重み係数の更新量のうちの少なくともいずれかである、
機械学習システム。
【請求項８】
請求項１乃至６のいずれか一項に記載の機械学習システムであって、
前記情報処理装置の夫々と通信可能に接続する制御装置を含み、
前記制御装置は、前記機械学習が進むにつれ、前記情報処理装置の夫々が前記差分符号化に際して用いる量子化パラメータの値を減少させる量子化パラメータ制御部を備える、
機械学習システム。
【請求項９】
請求項１乃至６のいずれか一項に記載の機械学習システムであって、
前記情報処理装置の夫々と通信可能に接続する制御装置を含み、
前記制御装置は、前記機械学習が進むにつれ前記並列分散方式による機械学習に参加する前記情報処理装置の数を増大させる制御部を備える、
機械学習システム。
【請求項１０】
請求項１乃至６のいずれか一項に記載の機械学習システムであって、
前記情報処理装置は、
前記差分符号化による圧縮率の高いモデルを選択して学習を行うモデル選択部と、
選択した前記モデルを特定する情報であるモデル特定情報を他の前記情報処理装置との間で送受信することにより共有するモデル特定情報共有部と、
を備え、
前記圧縮部は、前記モデル特定情報に応じた算出方法により前記パラメータの前記差分符号化を行い、
前記伸張部は、前記モデル特定情報に応じた算出方法により前記パラメータを伸張する、
機械学習システム。
【請求項１１】
請求項７に記載の機械学習システムであって、
前記情報処理装置のうちの少なくとも一つは前記重み係数を更新するパラメータサーバとして機能し、
前記情報処理装置のうちの少なくとも一つは、前記重み係数の更新量を求めるワーカとして機能し、
前記パラメータサーバとして機能する前記情報処理装置は、前記ワーカから送られてくる前記重み係数の更新量に基づき前記重み係数を更新し、
前記ワーカとして機能する前記情報処理装置は、前記パラメータサーバから送られてくる前記重み係数に基づき前記重み係数の更新量を求める、
機械学習システム。
【請求項１２】
通信可能に接続された複数の情報処理装置を含み、前記複数の情報処理装置を用いた並列分散方式により機械学習を行う機械学習システムを用いた機械学習方法であって、
前記情報処理装置が、
前記機械学習におけるモデルの学習に用いるパラメータの送受信を他の前記情報処理装置との間で行うステップと、
前記パラメータを他の前記情報処理装置に送信する際、前記パラメータを差分符号化して圧縮するステップと、
他の前記情報処理装置から受信した前記パラメータを伸張するステップと、
を実行する、機械学習方法。
【請求項１３】
請求項１２に記載の機械学習方法であって、
前記情報処理装置は、前記モデルの空間的相関又は時間的相関を利用して前記差分符号化を行う、
機械学習方法。
【請求項１４】
請求項１３に記載の機械学習方法であって、
前記情報処理装置は、前記モデルのモデル空間の同一時刻における隣接する位置の夫々における前記パラメータの差分を算出することにより前記差分符号化を行う、
機械学習方法。
【請求項１５】
請求項１３に記載の機械学習方法であって、
前記情報処理装置は、前記モデルのモデル空間の同一位置における連続する時刻の夫々における前記パラメータの差分を算出することにより前記差分符号化を行う、
機械学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習システム及び機械学習方法に関する。
【背景技術】
【０００２】
特許文献１には、「機械学習装置は、層間アクセラレータを含む。層間アクセラレータは、３層以上のニューラルネットワークに含まれる第１の層の入力ベクトルと当該第１の層の学習重み行列とに基づいて当該第１の層の次の第２の層の入力ベクトルを生成する複数の層間ユニットを含む。複数の層間ユニットの各々は、結合発振器アレイと、活性化関数適用器とを含む。結合発振器アレイは、第１の層の入力ベクトルの複数の要素と学習重み行列のいずれかの行に相当する行ベクトルの複数の要素との差分に応じた周波数で発振する複数の発振器を含み、当該複数の発振器によって生成された発振信号を結合して演算信号を得る。活性化関数適用器は、演算信号に活性化関数を適用することによって、第２の層の入力ベクトルのいずれかの要素を生成する。」と記載されている。
【０００３】
非特許文献１には、高性能のハードウェアを有する複数の計算ノードを用いて並列分散処理を行うことにより、ディープラーニングにおける学習時間を削減する技術に関して記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−３３３８５号公報
【非特許文献】
【０００５】
【非特許文献１】Jeffrey Dean, Greg S. Corrado, RajatMonga, Kai Chen,  Matthieu Devin, Quoc V. Le, Mark Z.Mao, MarcAurelio Ranzato, Andrew Senior, Paul Tucker,  Ke Yang, and Andrew Y. Ng. "Large scale distributed deep networks." In NIPS, 2012.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
昨今、ディープラーニング（深層学習）の開発／研究が急速に進められており、画像認識、文字認識、音声認識、スマートフォン、自律ロボット、ドローン等の様々な分野への応用が期待されている。ディープラーニングにおいては、畳み込みニューラルネットワーク（ＣＮＮ（Convolutional Neural Network）やフィードフォワードニューラルネットワーク（ＦＦＮＮ（Feedforward Neural Network））等のモデルを用いて学習が行われる。
【０００７】
ここでモデルを用いた学習においては取り扱う重み係数の数が膨大であるため、学習に多大な時間を要する。そこで例えば、非特許文献１に開示されているように、訓練データや重み係数の更新を複数の計算ノードに分散させて行う方式（以下、並列分散方式と称する。）が提案されている。
【０００８】
しかし並列分散方式では、計算ノード間で重み係数や重み係数の更新量を共有する必要があり、学習に際して計算ノード間で行われるデータ転送により大量のトラフィックが発生し、とくに計算ノードの数が多いと転送待ちの状態が頻発し、学習時間の短縮化を図る上でボトルネックとなる。
【０００９】
本発明はこのような背景に鑑みてなされたものであり、機械学習を効率よく行うことが
可能な、機械学習システム及び機械学習方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のうちの一つは、通信可能に接続された複数の情報処理装置を含み、前記複数の情報処理装置を用いた並列分散方式により機械学習を行う機械学習システムであって、前記情報処理装置は、前記機械学習におけるモデルの学習に用いるパラメータの送受信を他の前記情報処理装置との間で行う送受信部と、前記パラメータを他の前記情報処理装置に送信する際、前記パラメータを差分符号化して圧縮する圧縮部と、他の前記情報処理装置から受信した前記パラメータを伸張する伸張部と、を備える。
【００１１】
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄、及び図面により明らかにされる。
【発明の効果】
【００１２】
本発明によれば、機械学習を効率よく行うことができる。
【図面の簡単な説明】
【００１３】
【図１】学習システムの概略的な構成を示す図である。
【図２】計算ノードの実現に用いる情報処理装置の一例を示す図である。
【図３】ワーカ及びパラメータサーバの概略的な動作を説明する図である。
【図４】ワーカ及びパラメータサーバの機能の概略を説明するブロック図である。
【図５】機械学習のモデルの空間的相関を説明する図である。
【図６】機械学習のモデルの時間的相関を説明する図である。
【図７】機械学習のモデル空間の隣接する位置の夫々について連続する更新時刻と重み係数Ｗとの関係を示す図である。
【図８】可変長符号表の一例である。
【図９】学習処理（パラメータサーバ側）を説明するフローチャートである。
【図１０】学習処理（ワーカ側）を説明するフローチャートである。
【図１１】パラメータサーバのＷ圧縮部の詳細を説明する処理ブロック図である。
【図１２】ワーカのＷ伸張部の詳細を説明する処理ブロック図である。
【図１３】ワーカのΔＷ圧縮部の詳細を説明する処理ブロック図である。
【図１４】パラメータサーバのΔＷ伸張部の詳細を説明する処理ブロック図である。
【図１５】（ａ）は更新回数の増大に対する重み係数Ｗの変化の一例を示すグラフ、（ｂ）は更新回数の増大に対するワーカ数の変化を示すグラフ、（ｃ）は更新回数に対する量子化パラメータｑの変化を示すグラフである。
【図１６】学習システムの他の構成例である。
【図１７】学習システムの他の構成例である
【図１８】学習システムの他の構成例である
【発明を実施するための形態】
【００１４】
以下、図面を参照しつつ実施形態について説明する。以下の説明において、同一の又は類似する構成について同一の符号を付して重複した説明を省略することがある。
【００１５】
［第１実施形態］
図１に第１実施形態として説明する、機械学習を行う情報処理システム（以下、学習システム１と称する。）の概略的な構成を示している。同図に示すように、学習システム１は、１つのパラメータサーバ２００と複数のワーカ１００とを含む。以下の説明において、ワーカ１００及びパラメータサーバ２００の夫々を計算ノードと称することがある。また以下の説明において、機械学習はディープラーニングであるものとして説明する。
【００１６】
パラメータサーバ２００及び複数のワーカ１００は、通信回線５０を介して互いに通信可能に接続されている。学習システム１は、機械学習における処理を複数のワーカ１００及びパラメータサーバ２００の夫々に分担させる方式（以下、並列分散方式と称する）で行う。
【００１７】
図２は計算ノードの実現に用いる情報処理装置１０の一例である。同図に示すように、情報処理装置１０は、プロセッサ１１、主記憶装置１２、補助記憶装置１３、入力装置１４、出力装置１５、及び通信装置１６の各構成を備える。これらはバス等の通信手段を介して互いに通信可能に接続されている。
【００１８】
尚、情報処理装置１０の全部又は一部が、例えば、クラウドシステムにおけるクラウドサーバ等の仮想的な資源を用いて構成されていてもよい。同図に示す構成のうち、補助記憶装置１３、入力装置１４、及び出力装置１５については必須の構成ではない。
【００１９】
プロセッサ１１は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＧＰＵ（Graphics Processing Unit）、ＤＳＰ（Digital Signal Processor）等を用いて構成されている。プロセッサ１１は、例えば、マルチコアプロセッサを構成するコアの一つであってもよい。またプロセッサ１１は、マルチプロセッサシステムを構成するプロセッサの一つでもよい。
【００２０】
主記憶装置１２は、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、不揮発性半導体メモリ（ＮＶＲＡＭ（Non Volatile RAM））等であり、プログラムやデータを記憶する。主記憶装置１２は、プロセッサ１１と同一のモジュールやパッケージに実装されたものであってもよい。
【００２１】
補助記憶装置１３は、例えば、ハードディスクドライブ、ＳＳＤ（Solid State Drive
）、光学式記憶装置（ＣＤ（Compact Disc）、ＤＶＤ(Digital Versatile Disc)等）、ストレージシステム、ＩＣカード、ＳＤメモリカードや光学式記録媒体等の記録媒体に対するデータの読取／書込装置等である。補助記憶装置１３に格納されているプログラムやデータは主記憶装置１２に随時ロードされる。補助記憶装置１３は、例えば、ネットワークストレージのように情報処理装置１０とは独立していてもよい。
【００２２】
入力装置１４は、外部からのデータの入力を受け付けるインタフェースであり、例えば、記録媒体（不揮発性メモリ、光学式記録媒体、磁気記録媒体、光磁気記録媒体等）からのデータの読取装置、キーボード、マウス、タッチパネル等である。尚、例えば、情報処理装置１０が、通信装置１６を介して他の装置からデータの入力を受け付ける構成としてもよい。
【００２３】
出力装置１５は、処理経過や処理結果等のデータや情報を外部に提供するユーザインタフェースであり、例えば、画面表示装置（液晶ディスプレイ（Liquid Crystal Display）、プロジェクタ、グラフィックカード等）、印字装置、記録媒体へのデータの記録装置等である。尚、例えば、情報処理装置１０が、処理経過や処理結果等のデータを通信装置１６を介して他の装置に提供する構成としてもよい。
【００２４】
通信装置１６は、他の装置や素子との間の通信を実現する、有線方式又は無線方式の通信インタフェースであり、例えば、ＮＩＣ（Network Interface Card）、無線通信モジュール等である。
【００２５】
図１に戻り、通信回線５０は、例えば、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide
Area Network）、インターネット、公衆通信網、専用線等である。例えば、通信回線５
０として、低レイテンシでギガbps単位のスループットが出せるInfiniBandを利用すると
効果的である。学習システム１が、例えば、マルチコアシステムやマルチプロセッサシステム等を用いて実現される場合、通信回線５０はバス（bus）を用いて構成されていても
よい。通信回線５０の全部または一部は、有線方式又は無線方式のいずれの方式で実現されていてもよい。
【００２６】
例えば、１つのＣＰＵと２つのＧＰＵを備えた計算ノードをＭ個用意し、いずれかの計算ノードのＣＰＵをパラメータサーバ２００として動作させ、各計算ノードのＧＰＵをワーカ１００として動作させると、最大で２×Ｍ個のワーカ１００を含む学習システム１を構成することができる。また例えば、１つのＣＰＵと８つのＧＰＵを備えた計算ノードを１つ用意し、上記ＣＰＵをパラメータサーバ２００として動作させ、各計算ノードのＧＰＵをワーカ１００として動作させると、最大で８個のワーカ１００を含む学習システム１を構成することができる。またこの場合、計算ノードにおける高速な内部バスを利用してデータ転送を行うことができる。尚、ＣＰＵやＧＰＵは、いずれもワーカ１００としてもパラメータサーバ２００としても利用することができる。
【００２７】
図３は、パラメータサーバ２００及びワーカ１００の概略的な動作を説明する図である。前述したように、学習システム１は、機械学習における処理を並列分散方式で行う。具体的には、各ワーカ１００には、機械学習に用いる訓練データを分割（例えば、分配先のワーカ１００の数（以下、Ｎとする。）に分割）したデータが分配される。各ワーカ１００は、分配された訓練データを機械学習のモデルに適用することによりモデルの重み係数の更新量ΔＷを求め、求めた重み係数の更新量ΔＷを通信回線５０を介してパラメータサーバ２００に送信する。一方、パラメータサーバ２００は、各ワーカ１００から送られてくる重み係数の更新量ΔＷを用いて重み係数Ｗを更新し、更新後の最新の重み係数Ｗを通信回線５０を介して各ワーカ１００に送信する。学習システム１は、以上の処理を繰り返し行うことにより機械学習を進行させる。
【００２８】
尚、重み係数の更新量ΔＷの算出方法は必ずしも限定されない。例えば、ワーカ１００は、非特許文献１に記載されている確率的勾配降下法（SGD:Stochastic Gradient Descent）、誤差逆伝搬法、準ニュートン法、遺伝的アルゴリズム等により重み係数の更新量Δ
Ｗを求める。各ワーカ１００が分担する訓練データ１０４は、予め各ワーカ１００に送信しておいてもよいし、通信回線５０等を介して計算ノード間で共有するサーバ装置等に格納しておいてもよい。
【００２９】
ここで並列分散方式により機械学習を行う際は、パラメータサーバ２００とワーカ１００との間で転送されるデータ（重み係数Ｗや重み係数の更新量ΔＷ）の量が多いことが問題となる。例えば、データ転送量が回線速度を上回れば転送待ちが発生し、スループットの低下につながる。こうした傾向はワーカ１００数が多いほど顕著となり、転送されるデータの量が多いことはワーカ１００の数（並列数）を増やして処理時間の短縮化を図る際のボトルネックとなる。
【００３０】
そこで本実施形態の学習システム１は、パラメータサーバ２００とワーカ１００との間で転送されるデータ（重み係数Ｗや重み係数の更新量ΔＷ）を差分符号化して圧縮することにより計算ノード間のトラフィック量を減らして上記ボトルネックの解消を図る。また差分符号化の効率（圧縮率）は機械学習のモデルに依存するため、学習システム１は機械学習のモデルに応じて差分符号化の方法として適切なものを選択する。
【００３１】
図４はワーカ１００及びパラメータサーバ２００の機能の概略を説明するブロック図である。同図に示すように、ワーカ１００は、Ｗ受信部１１１、Ｗ伸張部１１２、ΔＷ算出部１１３、ΔＷ圧縮部１１４、及びΔＷ送信部１１５の各機能を備える。またパラメータ
サーバ２００は、ΔＷ受信部２１１、ΔＷ伸張部２１２、Ｗ更新部２１３、Ｗ圧縮部２１４、及びＷ送信部２１５の各機能を備える。
【００３２】
ワーカ１００やパラメータサーバ２００が備える上記の各機能は、例えば、プロセッサ１１が、主記憶装置１２や補助記憶装置１３に格納されているプログラムを読み出して実行することにより実現される。またこれらの機能は、例えば、情報処理装置１０が備えるハードウェア（ＦＰＧＡ（Field-Programmable Gate Array）、ＡＳＩＣ（Application Specific Integrated Circuit）等）によって実現される。
【００３３】
ワーカ１００の各機能について順に説明する。Ｗ受信部１１１は、通信回線５０を介してパラメータサーバ２００から送られてくる重み係数Ｗを受信する。Ｗ伸張部１１２は、Ｗ受信部１１１が受信した重み係数Ｗを伸張する。ΔＷ算出部１１３は、Ｗ伸張部１１２により伸張された重み係数Ｗを用いて重み係数の更新量ΔＷを求める。ΔＷ圧縮部１１４は、ΔＷ算出部１１３が求めた重み係数の更新量ΔＷを差分符号化して圧縮した圧縮データ（以下、圧縮データ（ΔＷ）とも称する。）を生成する。ΔＷ送信部１１５は、ΔＷ圧縮部１１４が生成した圧縮データ（ΔＷ）を通信回線５０を介してパラメータサーバ２００に送信する。
【００３４】
続いて、パラメータサーバ２００の各機能について順に説明する。ΔＷ受信部２１１は、通信回線５０を介して各ワーカ１００から送られてくる圧縮データ（ΔＷ）を受信する。ΔＷ伸張部２１２は、ΔＷ受信部２１１が受信した圧縮データ（ΔＷ）を伸張し、重み係数の更新量ΔＷを復元する。Ｗ更新部２１３は、ΔＷ伸張部２１２が復元した重み係数の更新量ΔＷに基づき重み係数Ｗを更新する。Ｗ圧縮部２１４は、Ｗ更新部２１３による更新後の重み係数Ｗを圧縮したデータ（以下、圧縮データ（Ｗ）とも称する。）を生成する。Ｗ送信部２１５は、Ｗ圧縮部２１４が生成した圧縮データ（Ｗ）を通信回線５０を介して各ワーカ１００に送信する。
【００３５】
尚、Ｗ更新部２１３による重み係数Ｗの更新の方法はとくに限定されないが、一例を示せば、Ｗ更新部２１３は次式により重み係数Ｗを更新する。
Wx,n+1 = Wx,n - ηΔＷx,n              ・・・式１
ここでxはディープラーニングのモデル空間において重み係数が付与されている位置を
特定する情報、ｎは重み係数の更新回数(即ち更新時刻)、ηは学習係数である。学習係数ηは定数としてもよいが、例えば、重み係数Ｗの収束を早めるため、学習が進むにつれ値が小さくなるように変化させてもよい。
【００３６】
続いて、Ｗ伸張部１１２、ΔＷ圧縮部１１４、ΔＷ伸張部２１２、Ｗ圧縮部２１４による、重み係数Ｗや重み係数の更新量ΔＷの圧縮及び伸張方法について説明する。尚、学習システム１は、重み係数Ｗの空間的相関や時間的相関を利用した差分符号化を行うことにより、重み係数Ｗや重み係数の更新量ΔＷの圧縮並びに伸張を効率的に行う。
【００３７】
図５は、ディープラーニングのモデルの一例として示す畳み込みニューラルネットワーク（以下、ＣＮＮ（Convolutional Neural Network）とも称する。）の空間的相関を説明する図である。図５（ａ）は、ＣＮＮのモデル空間のイメージ図である。また図５（ｂ）は、更新回数ｎ（横軸）と位置ｘ−１における重み係数Ｗx-1,n（縦軸）との関係を表し
たグラフであり、図５（ｃ）は、更新回数ｎ（横軸）と位置ｘ−１に隣接する位置ｘおける重み係数Ｗx,n（縦軸）との関係を表したグラフである。これらのグラフから、ディー
プラーニングのモデルとしてＣＮＮを用いた場合、隣接する位置の間では重み係数Ｗの相関（空間的相関）が高くなる性質（同一の時刻（更新回数ｎ）において両者の差分が０に偏る性質）があることがわかる。つまりこの性質を利用して上記差分を符号化すれば圧縮率を高めることができる。
【００３８】
一方、図６は、ディープラーニングのモデルの一例として示すフィードフォワードニューラルネットワーク（以下、ＦＦＮＮ（Feedforward Neural Network）と称する。）の時間的相関を説明する図である。図６（ａ）は、ＦＦＮＮのモデル空間のイメージ図である。また図６（ｂ）は、更新回数ｎ（横軸）と位置ｘ−１における重み係数Ｗx-1,n（縦軸
）との関係を表したグラフであり、図６（ｃ）は、更新回数ｎ（横軸）と位置ｘ−１に隣接する位置ｘおける重み係数Ｗx,n（縦軸）との関係を表したグラフである。図６（ｂ）
，（ｃ）に示すように、ディープラーニングのモデルとしてＦＦＮＮを用いた場合、隣接する位置の間で重み係数Ｗの空間的相関は低いが、重み係数の時間的変動は両者とも概してなだらかであり、連続する時刻（例えば、ｎとｎ−１。）間で重み係数Ｗの時間的相関が高くなる性質（連続する時刻における係数値の差分が０に偏る性質）があることがわかる。つまりの性質を利用して上記差分を符号化すれば圧縮率を高めることができる。
【００３９】
尚、ＦＦＮＮと同様に時間的相関が高くなる傾向があるネットワークとして、他にも再帰型ネットワーク（ＲＮＮ（Recurrent Neural Network））、制限付きボルツマンマシン（ＲＢＭ（Restricted Boltzmann Machine））、オートエンコーダ（AutoEncoder）、全
結合型ネットワーク等がある。これらについてもＦＦＮＮと同様に時間的相関を利用して圧縮率を高めることができる。
【００４０】
以上のように、ディープラーニングにおけるモデルの重み係数Ｗは、モデルの種類によって空間的相関や時間的相関が異なる。そこで学習システム１は、モデルの種類に応じて差分符号化の方法を切り替える（例えば、モデルがＣＮＮである場合は空間的相関に着目した算出方式で差分符号化を行い、モデルがＣＮＮ以外である場合は時間的相関に着目した算出方式で差分符号化を行う）ことにより圧縮率の向上を図る。
【００４１】
尚、こうした仕組みの実施に際し、例えば、各ワーカ１００とパラメータサーバ２００との間（圧縮側と伸張側）でディープラーニングにおけるモデルの種類を特定する情報（以下、モデル特定情報とも称する。）を共有するようにし、各ワーカ１００やパラメータサーバ２００は、重み係数Ｗや重み係数の更新量ΔＷの圧縮又は伸張に際してモデル特定情報を参照して差分の算出方法を切り換えるようにする。
【００４２】
続いて、図７乃至図９に示す図とともに、差分符号化による重み係数Ｗや重み係数の更新量ΔＷの圧縮及び伸張について詳述する。
【００４３】
図７は、ディープラーニングのモデル空間の隣接する位置（ｘ−１とｘ）の夫々について連続する更新時刻（ｎ−１，ｎ）と重み係数Ｗとの関係を示す図である。図７（ａ）は、Wx-1,n-1とWx-1,nとの関係を示すグラフ、図７（ｂ）はWx,n-1とWx,nとの関係を示すグラフである。
【００４４】
例えば、ディープラーニングのモデルがＣＮＮである場合、学習システム１は、空間的相関を利用して、重み係数Ｗについて、次式のようにWx-1,nを一度圧縮して伸張した値<Wx-1,n>（以下、このように一度圧縮して伸張した値を<>で囲んで表記する。）をWx,nから差し引くことにより差分を求める。
重みＷの差分＝Wx,n−<Wx-1,n>      ・・・式２
【００４５】
また学習システム１は、次式に示すように、重み係数の更新量ΔＷについても同様に差分を求める。
重みの更新量ΔＷの差分＝ΔWx,n−<ΔWx-1,n>  ・・・式３
【００４６】
尚、Wx-1,nやΔWx-1,nそのものではなく、これらを圧縮して伸張した値（ <Wx-1,n>や 
<ΔWx-1,n>）を差し引いているのは、量子化誤差を考慮した上で圧縮側と伸張側とで値を合わせるためである。即ち、伸張側では量子化誤差を含んだ値を受信するため、圧縮側と伸張側とで値を合わせるには圧縮側においても圧縮及び伸張を行った値（量子化誤差を反映した値）を生成しておく必要がある。以下、圧縮側が圧縮及び伸張を行って量子化誤差を反映した値のことを「参照値」とも称する。
【００４７】
モデルがＣＮＮ以外である場合、学習システム１は、時間的相関を利用して、重み係数Ｗについて次式に示すようにWx,n-1を一度圧縮して伸張した値<Wx,n-1>をWx,nから差し引くことにより差分を求める。
重みＷの差分＝Wx,n−<Wx,n-1>      ・・・式４
【００４８】
また学習システム１は、次式に示すように、重み係数の更新量ΔＷについても同様にして差分を求める。
重みの更新量ΔＷの差分＝ΔWx,n−<ΔWx,n-1>  ・・・式５
【００４９】
続いて、学習システム１は、以上のようにして求めた差分について、例えば、量子化パラメータｑを用いて次式に基づき量子化データを生成する。
量子化データ＝差分を量子化パラメータｑで割った商  ・・・式６
【００５０】
尚、量子化パラメータｑの値は全ての重み係数Ｗについて同一としてもよいが、例えば、重み係数Ｗ毎に異なる値としてもよい。例えば、１回の更新あたりの変化が激しい重み係数Ｗについては量子化パラメータｑを大きな値に設定し、一方、１回の更新あたりの変化が小さな重み係数Ｗについては量子化パラメータｑを小さな値に設定することで、圧縮率の向上を図ることができる。
【００５１】
図８は、量子化データの符号化に際して学習システム１が参照する可変長符号表８００（量子化テーブル）の一例である。同図に示すように、可変長符号表８００には、量子化データの値８１１と符号８１２とを対応づけた情報を含む。学習システム１は、可変長符号表８００を参照して量子化データを可変長符号に変換する。尚、可変長符号表８００において、量子化パラメータｑの値が小さいほど短い符号を割り当てることで圧縮率を向上させることができる。
【００５２】
尚、伸張に際しては以上に説明した圧縮の場合と逆の手順を辿ることになる。例えば、学習システム１は、圧縮データ（Ｗ）や圧縮データ（ΔＷ）に対し、可変長符号表８００を参照して量子化データを復元し、量子化パラメータｑを掛け合わせた後、参照値を足し合わせることにより圧縮データ（Ｗ）や圧縮データ（ΔＷ）を伸張する。
【００５３】
続いて、パラメータサーバ２００並びにワーカ１００の夫々の機能について詳述する。
【００５４】
図９は、ディープラーニングの１回分の学習に際してパラメータサーバ２００が行う処理（以下、学習処理Ｓ９００と称する。）を説明するフローチャートである。以下、同図とともに学習処理Ｓ９００について説明する。
【００５５】
まずパラメータサーバ２００は、ワーカ１００から通信回線５０を介して重み係数の更新量ΔWx,nの圧縮データ（圧縮データ（ΔＷ））を受信する(Ｓ９１１)。
【００５６】
続いて、パラメータサーバ２００は、ディープラーニングのモデルがＣＮＮであるか否か（圧縮データ（ΔＷ）が空間的相関又は時間的相関のいずれを利用して符号化されたか）を判定する（Ｓ９１２）。パラメータサーバ２００がモデルはＣＮＮであると判定した場合（Ｓ９１２：ＹＥＳ）、処理はＳ９１３に進む。一方、パラメータサーバ２００がモ
デルはＣＮＮでないと判定した場合（Ｓ９１２：ＮＯ）、処理はＳ９１４に進む。
【００５７】
Ｓ９１３の処理に進んだ場合、パラメータサーバ２００は、参照値<ΔWx-1,n>を用いて圧縮データ（ΔWx,n−<ΔWx-1,n>）を伸張し、<ΔWx,n>を取得する（Ｓ９１５）。
【００５８】
Ｓ９１４の処理に進んだ場合、パラメータサーバ２００は、参照値<ΔWx,n-1>を取得して圧縮データ（ΔWx,n−<ΔWx,n-1>）を伸張し、<ΔWx,n>を取得する（Ｓ９１５）。
【００５９】
続いて、パラメータサーバ２００は、<ΔWx,n>に基づき、式１等により重み係数Ｗx,n
を更新してWx,n+1を取得する（Ｓ９１６）。
【００６０】
続いて、パラメータサーバ２００は、取得したWx,n+1を圧縮する。パラメータサーバ２００は、ディープラーニングのモデルがＣＮＮであるか否かを判定（空間的相関又は時間的相関のいずれを利用して符号化するか）し（Ｓ９１７）、判定結果に応じて参照値 <Wx-1,n+1>又は参照値<Wx,n>を取得し、取得した参照値をWx,n+1から差し引くことにより差
分を求め、求めた差分を圧縮して圧縮データ（Ｗ）を生成する（Ｓ９１８，Ｓ９１９）。
【００６１】
続いて、パラメータサーバ２００は、生成した圧縮データ（Ｗ）をワーカ１００に送信する(Ｓ９２０)。
【００６２】
図１０は、ディープラーニングの1回文の学習に際してワーカ１００が行う処理（以下
、学習処理Ｓ１０００と称する。）を説明するフローチャートである。以下、同図とともに学習処理Ｓ１０００について説明する。
【００６３】
まずワーカ１００は、パラメータサーバ２００から通信回線５０を介して重み係数Wx,nの圧縮データ（圧縮データ（Ｗ））を受信する(Ｓ１０１１)。続いて、ワーカ１００は、ディープラーニングのモデルがＣＮＮであるか否か（圧縮データが空間的相関又は時間的相関のいずれを利用して符号化されたか）を判定する（１０１２）。ワーカ１００がモデルがＣＮＮであると判定した場合（Ｓ１０１２：ＹＥＳ）、処理はＳ１０１３に進む。ワーカ１００がモデルがＣＮＮでないと判定した場合（Ｓ１０１２：ＮＯ）、処理はＳ１０１４に進む。
【００６４】
Ｓ１０１３の処理に進んだ場合、ワーカ１００は、参照値<Wｘ-1,n>を取得して圧縮デ
ータ（Wｘ,n - <Wｘ-1,n>）を伸張し、<Wｘ,n>を取得する（Ｓ１０１５）。
【００６５】
Ｓ１０１４の処理に進んだ場合、ワーカ１００は、参照値<Wx,n-1>を取得して圧縮データ（Wx,n - <Wx,n-1>）を伸張し、<Wx,n>を取得する（Ｓ１０１５）。
【００６６】
続いて、ワーカ１００は、取得した<Wx,n>に基づき、重み係数の更新量ΔWx,nを確率的勾配降下法等により更新し、ΔWx,n+1を求める（Ｓ１０１６）。
【００６７】
続いて、ワーカ１００は、求めたΔWx,n+1を圧縮する。ワーカ１００は、対象とするモデルがＣＮＮであるか否かを判定（空間的相関又は時間的相関のいずれを利用して符号化するか）を判定し（Ｓ１０１７）、判定結果に応じて参照値 <ΔWx-1,n+1>又は参照値<ΔWx,n>を取得し、取得した参照値をΔWx,n+1から差し引くことにより差分を求め、求めた
差分を圧縮して圧縮データ（ΔＷ）を生成する（Ｓ１０１８，Ｓ１０１９）。
【００６８】
続いて、ワーカ１００は、生成した圧縮データ（ΔＷ）をパラメータサーバ２００に送信する(Ｓ１０２０)。
【００６９】
次に、前述したパラメータサーバ２００のＷ圧縮部２１４、ワーカ１００のＷ伸張部１１２、ワーカ１００のΔＷ圧縮部１１４、及びパラメータサーバ２００のΔＷ伸張部２１２の各機能について詳述する。
【００７０】
図１１は、パラメータサーバ２００のＷ圧縮部２１４の詳細を説明する処理ブロック図である。同図に示すように、Ｗ圧縮部２１４は、参照値特定部２１４１、差分算出部２１４２、量子化部２１４３、可変長符号化部２１４４、逆量子化部２１４５、及び伸張部２１４６を備える。またＷ圧縮部２１４は、前述したモデル特定情報、量子化パラメータｑ、及びワーカ１００毎の参照値を記憶する。
【００７１】
参照値特定部２１４１は、モデル特定情報に基づきモデルの種類（空間的相関、時間的相関）を特定する。
【００７２】
差分算出部２１４２は、Ｓ９１６で更新された重み係数Wx,nと参照値との差分を求める。
【００７３】
量子化部２１４３は、量子化パラメータｑを用いて上記差分を量子化した量子化データを生成する。
【００７４】
可変長符号化部２１４４は、可変長符号表８００を参照して量子化データを圧縮し、圧縮データ（Ｗ）を出力する。
【００７５】
逆量子化部２１４５は、量子化データの逆量子化を行う。
【００７６】
伸張部２１４６は、上記参照値を用いて逆量子化後の重み係数Wx,nを伸張し、伸張した値を新たな参照値として記憶する。
【００７７】
図１２は、ワーカ１００のＷ伸張部１１２の詳細を説明する処理ブロック図である。
【００７８】
同図に示すように、Ｗ伸張部１１２は、可変長復元部１１２１、逆量子化部１１２２、参照値特定部１１２３、及び伸張部１１２４を備える。またＷ伸張部１１２は、モデル特定情報、量子化パラメータｑ、及び当該ワーカの参照値を記憶する。
【００７９】
可変長復元部１１２１は、可変長符号表８００を参照してＷ受信部１１１から入力された重み係数Ｗの圧縮データ（Ｗ）を復元し、量子化データを生成する。
【００８０】
逆量子化部１１２２は、量子化パラメータｑを用いて量子化データを逆量子化する。
【００８１】
参照値特定部１１２３は、モデル特定情報に基づきモデルの種類（空間的相関、時間的相関）を特定する。
【００８２】
伸張部１１２４は、記憶されている参照値との和を算出することにより重み係数Wx,nを伸張し、伸張した値を出力するとともに、記憶している参照値を更新する。
【００８３】
図１３は、ワーカ１００のΔＷ圧縮部１１４の詳細を説明する処理ブロック図である。
【００８４】
同図に示すように、ΔＷ圧縮部１１４は、参照値特定部１１４１、差分算出部１１４２、量子化部１１４３、可変長符号化部１１４４、逆量子化部１１４５、及び伸張部１１４６を備える。またΔＷ圧縮部１１４は、モデル特定情報、量子化パラメータｑ、及び当該ワーカ１００の参照値を記憶する。
【００８５】
参照値特定部１１４１は、モデル特定情報に基づきモデルの種類（空間的相関、時間的相関）を特定する。
【００８６】
差分算出部１１４２は、ΔＷ算出部１１３が算出した重み係数の更新量ΔＷと参照値との差分を求める。
【００８７】
量子化部１１４３は、量子化パラメータｑを用いて上記差分を量子化した量子化データを生成する。
【００８８】
可変長符号化部１１４４は、可変長符号表８００を参照して量子化データを圧縮し、圧縮データ（Ｗ）を出力する。
【００８９】
逆量子化部１１４５は、量子化データに対して逆量子化を行う。
【００９０】
伸張部１１４６は、上記参照値を足し合わせて重み係数の更新量ΔＷx,nの伸張値を取
得し、参照値を更新する。
【００９１】
図１４は、パラメータサーバ２００のΔＷ伸張部２１２の詳細を説明する処理ブロック図である。
【００９２】
同図に示すように、ΔＷ伸張部２１２は、可変長復元部２１２１、逆量子化部２１２２、参照値特定部２１２３、及び伸張部２１２４を備える。またΔＷ伸張部２１２は、モデル特定情報、量子化パラメータｑ、及びワーカ１００毎の参照値を記憶する。
【００９３】
可変長復元部２１２１は、可変長符号表８００を参照して入力された重み係数の更新量ΔＷx,nの圧縮データ（ΔＷ）を復元し、量子化データを生成する。
【００９４】
逆量子化部２１２２は、量子化パラメータｑを用いて量子化データを逆量子化する。
【００９５】
参照値特定部２１２３は、モデル特定情報に基づきモデルの種類（空間的相関、時間的相関）を特定する。
【００９６】
伸張部１１２４は、ワーカ１００毎に記憶されている参照値との和を算出することによりΔＷx,nを伸張し、伸張した値を出力するとともに、記憶しているワーカ１００毎の参
照値を更新する。
【００９７】
ところで、図１５（ａ）は、学習時に値の変動が激しい重み係数Wx,nについて、その値の変化の一例を示すグラフであるが、同図に示すように、ディープラーニングの学習においては、学習が進むにつれ（更新回数ｎが増えるにつれ）重み係数Ｗの変動が緩やかになる性質があり、学習が進むにつれて圧縮率は徐々に高まる。
【００９８】
そこで例えば、図１５（ｂ）に示すように、学習が進むにつれ並列分散に参加するワーカ１００数の数を増やしていくことにより、処理性能の向上や計算資源の有効活用が期待できる。またこの場合、後述するように複数のパラメータサーバ２００を用いた場合（図１７、図１８）、未稼働の計算ノードや稼働率の低い計算ノードの数が少なくなるように並列度を制御すれば、処理性能の向上や計算資源の有効活用を図ることができる。
【００９９】
さらに例えば、図１５（ｃ）に示すように、学習が進むにつれ量子化パラメータｑの値を小さくして細かく量子化を行うようにすれば、圧縮率の変動を抑えつつ学習精度を徐々
に高めていくことができる。
【０１００】
尚、図１６に示すように、例えば、通信回線５０に接続する情報処理装置（例えば、図２に示すハードウェアを備えた装置。以下、制御装置３００と称する。）に、並列分散に参加するワーカ１００の数を制御する機能（以下、ワーカ数制御部３１１と称する。）や、量子化パラメータｑの値を制御する機能（以下、量子化パラメータ制御部３１２と称する。）を設けることで、上記のように並列分散に参加するワーカ１００の数の制御や量子化パラメータｑの値の制御する仕組みを容易に実現することができる。この場合、例えば、ワーカ数制御部３１１は、データ転送量が通信回線５０の回線速度を超えない程度にワーカ１００の数を増大させる。また量子化パラメータ制御部３１２は、例えば、データ転送量の変化が少なくなるように量子化パラメータｑの値を決定し、決定した値を通信回線５０等を介してパラメータサーバ２００及びワーカ１００に随時通知する。
【０１０１】
図１７又は図１８は学習システム１のハードウェア構成の他の例である。これらの図に示すように、パラメータサーバ２００は複数存在していてもよい。図１７は、１種類の訓練データに対して、複数（本例では２つ）のパラメータサーバ２００を用いて学習を行う場合である。この場合、例えば、学習が終了した後に全てのパラメータサーバ２００が持つ重み係数の平均値や重み付き平均値等を最終的な学習結果とする。一方、図１８は、複数(本例では２つ)の訓練データＡ，Ｂを夫々に対応づけられたパラメータサーバ２００で学習する場合である。この場合、例えば、学習が終了した後に各パラメータサーバ２００が持つ重み係数を各訓練データの学習結果とする。
【０１０２】
以上、実施形態につき詳細に説明したが、本発明は上記の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記の実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また上記実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１０３】
例えば、以上の方法では、ディープラーニングのモデルに応じて参照値を決定したが（図９のＳ９１７、図１０のＳ１０１７等）、ワーカ１００やパラメータサーバ２００に、圧縮率が高くなるモデルを自動的に選択して圧縮を行う機能（モデル選択部）を設けてよい。その場合、伸張側ではどのモデルを選択して圧縮を行ったかを特定する必要があるが、これは例えば、ワーカ１００やパラメータサーバ２００に、圧縮側で選択したモデルを特定する情報（例えば、ビット）を圧縮データ（Ｗ）や圧縮データ（ΔＷ）に付与し、伸張側では、上記情報を参照していずれの方法が選択されたかを特定し、特定した方法により圧縮データ（Ｗ）や圧縮データ（ΔＷ）を伸張する機能（モデル特定情報共有部）を設ければよい。これによればより効率よく通信回線５０を介したデータ転送を行うことができる。
【０１０４】
また以上の方法では、隣接する位置の間や隣接する時間（連続する更新）の間で重み係数Ｗや重み係数ΔＷの差分を求めていたが、より遠い位置間やより離れた時間の間で重み係数Ｗや重み係数ΔＷの差分を求めるようにしてもよい。
【０１０５】
また上記の各構成、機能部、処理部、処理手段等は、それらの一部または全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、また
はＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１０６】
また上記の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。例えば、実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【０１０７】
また以上に説明した各種装置の各種機能部、各種処理部、各種データベースの配置形態は一例に過ぎない。各種機能部、各種処理部、各種データベースの配置形態は、各種装置が備えるハードウェアやソフトウェアの性能、処理効率、通信効率等の観点から最適な配置形態に変更し得る。
【０１０８】
また前述したデータベースの構成（スキーマ（Schema）等）は、リソースの効率的な利用、処理効率向上、アクセス効率向上、検索効率向上等の観点から柔軟に変更し得る。
【符号の説明】
【０１０９】
１  学習システム、１０  情報処理装置、５０  通信回線、１００  ワーカ、１１１  Ｗ受信部、１１２  Ｗ伸張部、１１２１  可変長復元部、１１２２  逆量子化部、１１２３
参照値特定部、１１２４  伸張部、１１２１  可変長復元部、１１２２  逆量子化部、１１２３  参照値特定部、１１３  ΔＷ算出部、１１４  ΔＷ圧縮部、１１４１  参照値特定部、１１４２  差分算出部、１１４３  量子化部、１１４４  可変長符号化部、１１４５  逆量子化部、１１４６  伸張部、１１５  ΔＷ送信部、２００  パラメータサーバ、２１１  ΔＷ受信部、２１２  ΔＷ伸張部、２１２１  可変長復元部、２１２２  逆量子化部、２１２３  参照値特定部、２１２４  伸張部、２１３  Ｗ更新部、２１４  Ｗ圧縮部、２１４１  参照値特定部、２１４２  差分算出部、２１４３  量子化部、２１４４  可変長符号化部、２１４５  逆量子化部、２１４６  伸張部、２１５  Ｗ送信部、３００  制御装置、３１１  ワーカ数制御部、３１２  量子化パラメータ制御部、８００  可変長符号表、Ｓ９００  学習処理、Ｓ１０００  学習処理
【図１】
2018206016.tif 000003
【図２】
2018206016.tif 000004
【図３】
2018206016.tif 000005
【図４】
2018206016.tif 000006
【図５】
2018206016.tif 000007
【図６】
2018206016.tif 000008
【図７】
2018206016.tif 000009
【図８】
2018206016.tif 000010
【図９】
2018206016.tif 000011
【図１０】
2018206016.tif 000012
【図１１】
2018206016.tif 000013
【図１２】
2018206016.tif 000014
【図１３】
2018206016.tif 000015
【図１４】
2018206016.tif 000016
【図１５】
2018206016.tif 000017
【図１６】
2018206016.tif 000018
【図１７】
2018206016.tif 000019
【図１８】
2018206016.tif 000020