(57)【要約】  本技術は、量子化を精度良く行えるようにする情報処理装置、情報処理方法、並びにプログラムに関する。機械学習の演算により算出された値の分布が、所定の確率分布に基づくと仮定して量子化を行う。演算は、ディープラーニングにおける演算であり、ディープラーニングに基づく演算により算出された勾配の分布が、所定の確率分布に基づくとして量子化を行う。複数の装置で分散して機械学習を行う分散学習において、１の装置での学習により得られた値を、他の装置に供給するときに、量子化が行われる。本技術は、ディープラーニングなどの機械学習を分散して行う装置に適用できる。
2018155232.tif 000002
【特許請求の範囲】
【請求項１】
機械学習の演算により算出された値の分布が、所定の確率分布に基づくと仮定して量子化を行う
情報処理装置。
【請求項２】
前記演算は、ディープラーニングにおける演算であり、前記ディープラーニングに基づく演算により算出された勾配の分布が、前記所定の確率分布に基づくとして量子化を行う
請求項１に記載の情報処理装置。
【請求項３】
複数の装置で分散して機械学習を行う分散学習において、１の装置での学習により得られた値を、他の装置に供給するときに、前記量子化が行われる
請求項１に記載の情報処理装置。
【請求項４】
前記所定の確率分布は、ピーク値を中心軸とする左右対称のグラフとなる分布である
請求項１に記載の情報処理装置。
【請求項５】
前記所定の確率分布は、平均または中央値が１つ計算可能な分布である
請求項１に記載の情報処理装置。
【請求項６】
前記所定の確率分布は、正規化分布、ラプラス分布、コーシー分布、スチューデント-T分布のいずれかである
請求項１に記載の情報処理装置。
【請求項７】
前記算出された値から、前記所定の確率分布の関数の定数を求める
請求項１に記載の情報処理装置。
【請求項８】
量子化する割合を設定し、その割合に対応する前記所定の確率分布における値を閾値とし、前記算出された値のうち、前記閾値以上または以下の値を抽出する
請求項１に記載の情報処理装置。
【請求項９】
前記量子化は、前記勾配そのものを量子化対象とする、または前記勾配を累積加算した累積勾配を量子化対象とする
請求項２に記載の情報処理装置。
【請求項１０】
機械学習の演算により算出された値の分布が、所定の確率分布に基づくと仮定して量子化を行う
ステップを含む情報処理方法。
【請求項１１】
コンピュータに、
機械学習の演算により算出された値の分布が、所定の確率分布に基づくと仮定して量子化を行う
ステップを含む処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は情報処理装置、情報処理方法、並びにプログラムに関し、例えば、複数の装置で分散して機械学習を行う場合に適用して好適な情報処理装置、情報処理方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年、人工知能における研究が盛んとなり、さまざまな学習方法が提案されている。例えば、ニューラルネットワークなどと称される学習方法が提案されている。ニューラルネットワークによる学習では、一般に計算回数が膨大になるため、１台の装置で処理すると長時間の計算が必要となる傾向にある。そこで、複数台の装置で分散して処理することが提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０５−１０８５９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数台の装置で分散して処理した場合、それぞれの装置での処理負担は軽減し、処理（計算）にかかる時間を短縮することができる。処理を行う複数台の装置が、所定のネットワークで接続されている場合、各装置で計算された結果を、他の装置に供給することで分散処理が行われる。【０００５】
計算結果であるパラメータのサイズは大きくなるため、装置間でデータ量の大きい計算結果を授受する必要があり、そのような授受に係わる時間も長くなってしまう。また複数の装置のそれぞれにおいて、そのような時間がかかるデータの授受が行われると、システム全体として、さらに時間がかかることになる。【０００６】
複数台の装置で分散して処理した場合、処理（計算）にかかる時間を短縮することはできるが、データの授受にかかる時間が長くなり、結果として学習時間自体は、望まれているほど短縮化できない。そこで学習時間を短縮することが望まれている。【０００７】
本技術は、このような状況に鑑みてなされたものであり、分散学習時の装置間でのデータの授受にかかる時間を短縮することができるようにするものである。
【課題を解決するための手段】
【０００８】
本技術の一側面の情報処理装置は、機械学習の演算により算出された値の分布が、所定の確率分布に基づくと仮定して量子化を行う。【０００９】
本技術の一側面の情報処理方法は、機械学習の演算により算出された値の分布が、所定の確率分布に基づくと仮定して量子化を行うステップを含む。【００１０】
本技術の一側面のプログラムは、コンピュータに、機械学習の演算により算出された値の分布が、所定の確率分布に基づくと仮定して量子化を行うステップを含む処理を実行させる。【００１１】
本技術の一側面の情報処理装置、情報処理方法、並びにプログラムにおいては、機械学習の演算により算出された値の分布が、所定の確率分布に基づくと仮定されて量子化される。【００１２】
なお、情報処理装置は、独立した装置であっても良いし、１つの装置を構成している内部ブロックであっても良い。【００１３】
また、プログラムは、伝送媒体を介して伝送することにより、または、記録媒体に記録して、提供することができる。
【発明の効果】
【００１４】
本技術の一側面によれば、分散学習時の装置間でのデータの授受にかかる時間を短縮することができる。【００１５】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１６】
【図１】本技術を適用したシステムの一実施の形態の構成を示す図である。
【図２】本技術を適用したシステムの他の実施の形態の構成を示す図である。
【図３】勾配の分布を表す図である。
【図４】確率分布の例を示す図である。
【図５】正規化分布の例を示す図である。
【図６】理論値と実測値との関係を示す図である。
【図７】勾配の分布を表す図である。
【図８】理論値と実測値との関係を示す図である。
【図９】適用される確率分布について説明するための図である。
【図１０】ワーカの第１の処理について説明するためのフローチャートである。
【図１１】量子化処理に関わる処理について説明するためのフローチャートである。
【図１２】ワーカの第２の処理について説明するためのフローチャートである。
【図１３】記録媒体について説明するための図である。
【発明を実施するための形態】
【００１７】
以下に、本技術を実施するための形態（以下、実施の形態という）について説明する。
【００１８】
＜システム構成例＞
本技術は、機械学習における分散学習に適用できる。機械学習としては、多層構造のニューラルネットワークを用いた機械学習であるディープラーニング（深層学習）に対して、本技術を適用できる。ここでは、ディープラーニングに本技術を適用した場合を例に挙げて説明を行うが、他の機械学習に対しても適用可能である。
【００１９】
図１は、分散学習を行うシステムの一例の構成を示す図である。図１に示したシステムは、パラメータサーバ１１とワーカ１２とから構成されている。
【００２０】
パラメータサーバ１１は、ワーカ１２−１乃至１２−Ｍ間でパラメータの状態などを共有するためのデータを管理する。ワーカ１２−１乃至１２−Ｍは、それぞれＧＰＵ（Graphics Processing Unit）を含む装置であり、分散学習における所定の演算を行う。
【００２１】
パラメータサーバ１１から複数のワーカ１２−１乃至１２−Ｍに対して、パラメータ（変数）ｗが供給される。各ワーカ１２−１乃至１２−Ｍは、供給されたパラメータｗに基づき内部モデルを更新する。また各ワーカ１２−１乃至１２−Ｍは、学習用データを受け取り、勾配ｇを計算する。学習用データは、各ワーカ１２−１乃至１２−Ｍに分散されて、供給される。
【００２２】
例えば、学習データＤ１は、｛Ｄ１１，Ｄ１２，Ｄ１３・・・ＤＭ｝のＭ個に分散され、ワーカ１２−１には、学習データＤ１１が供給され、ワーカ１２−２には、学習データＤ１２が供給され、ワーカ１２−Ｍには、学習データＤＭが供給される。
【００２３】
各ワーカ１２−１乃至１２−Ｍは、計算した勾配ｇを、パラメータサーバ１１に供給する。例えば、ワーカ１２−１は、勾配ｇ１を算出し、パラメータサーバ１１に供給し、ワーカ１２−２は、勾配ｇ２を算出し、パラメータサーバ１１に供給し、ワーカ１２−Ｍは、勾配ｇＭを算出し、パラメータサーバ１１に供給する。
【００２４】
パラメータサーバ１１は、各ワーカ１２−１乃至１２−Ｍからの勾配ｇを受け取り、その勾配ｇの平均を計算し、その平均に基づき、パラメータｗを更新する。パラメータサーバ１１において更新されたパラメータｗは、ワーカ１２−１乃至１２−Ｍにそれぞれ供給される。
【００２５】
このような処理が、パラメータサーバ１１とワーカ１２−１乃至１２−Ｍで繰り返し行われることで学習が進められる。
【００２６】
図２は、分散学習を行うシステムの他の構成例を示す図である。図２に示したシステムは、Ｐ２Ｐ（Peer to Peer）と称されるシステムである。図２に示したシステムにおいては、パラメータサーバ１１は設けられず、複数台のワーカ２２から構成されている。
【００２７】
図２に示したシステムにおいては、ワーカ２２−１乃至２２−Ｍ同士でデータの授受が行われる。ワーカ２２−１は、自己が算出した勾配ｇ１をワーカ２２−２とワーカ２２−３にそれぞれ供給する。同じく、ワーカ２２−２は、自己が算出した勾配ｇ２をワーカ２２−１とワーカ２２−３にそれぞれ供給する。同じく、ワーカ２２−３は、自己が算出した勾配ｇ３をワーカ２２−１とワーカ２２−２にそれぞれ供給する。
【００２８】
各ワーカ２２は、図１に示したワーカ１２と基本的に同様の処理を行うことで、また、パラメータサーバ１１が行う処理も併せて行うことで、勾配を算出したり、パラメータを更新したりする。
【００２９】
本技術が適用されるシステムとしては、図１または図２に示したシステムとすることができる。また、図１および図２に示したシステム以外のシステムに対しても、以下に説明する本技術を適用することはできる。以下の説明においては、図１に示したシステムを例に挙げて説明を続ける。
【００３０】
図１に示したシステムにおいて、例えば、ワーカ１２−１乃至１２−Ｍは、パラメータサーバ１１と所定のネットワークで接続されている。例えば、ワーカ１２−１から、ネットワークを介して、パラメータサーバ１１に対して、ワーカ１２−１で算出された勾配ｇ１が供給される。
【００３１】
勾配ｇ１は、一般的にパラメータサイズが大きい。例えば、勾配ｇ１は、１０００×１０００の行列で表されるとした場合、勾配ｇ１は、１００万個のパラメータを有することになる。１パラメータを例えば、４バイトなどの所定のデータ数で授受する場合、１００万×４バイトとなる。このようなデータ量のデータを、ネットワークを介して授受する場合、ネットワークの通信速度が早くても、そのデータの授受には時間がかかってしまう。
【００３２】
さらに、Ｍ個のワーカ１２から、それぞれパラメータサーバ１１に対して勾配ｇが供給されるため、パラメータサーバ１１が全てのワーカ１２から勾配ｇを受け取るまでの時間もかかってしまう。
【００３３】
分散学習することで、個々のワーカ１２での処理時間は短縮されるが、勾配ｇの授受にかかる時間が長くなってしまうと、結果として分散学習することで、より処理時間がかかってしまう可能性もある。
【００３４】
そこで、ワーカ１２とパラメータサーバ１１との間で授受される勾配ｇのデータサイズを小さくすることで、勾配ｇの授受にかかる時間を短縮する。具体的には、ワーカ１２とパラメータサーバ１１との間で授受される勾配ｇのデータサイズを小さくするために、ワーカ１２から、パラメータサーバ１１に供給する勾配ｇを量子化する。
【００３５】
このような、複数の装置で分散して機械学習を行う分散学習において、１の装置での学習により得られた値を、他の装置に供給するときに行われる量子化について説明を加える。
【００３６】
＜量子化について＞
図３は、ワーカ１２において算出された勾配ｇの結果をまとめたグラフである。図３に示した各グラフは、ワーカ１２において６４００個のパラメータから構成される勾配ｇを算出したときの、各パラメータの値とその個数の関係を示すグラフ（累積分布）である。図３に示した各グラフにおいて横軸は、勾配ｇの値を表し、縦軸は、累積個数（密度）を表す。
【００３７】
また、図３に示した各グラフは、ワーカ１２における演算を１００回行った毎にまとめた結果であり、例えば、Iter=100のグラフ（以下、適宜，グラフ100と記述する、他のグラフも同様に記述する）は、ワーカ１２における演算を１００回行った時点でのグラフであり、Iter=200のグラフは、ワーカ１２における演算を２００回行った時点でのグラフであり、Iter=900のグラフは、ワーカ１２における演算を９００回行った時点でのグラフである。
【００３８】
グラフ２００乃至９００の各グラフは、グラフの形状としては略同様な形状となっていることが読み取れる。また、その形状は、１つのピーク値(中央値)を有し、略左右対称となっている。なお、このグラフを得たワーカ１２の処理においては、図３に示したようになったが、グラフ１００も、他のグラフと同様に、１つのピーク値を有し、略左右対称となる形状のグラフとなる場合もある。
【００３９】
図示はしないが、他の学習をワーカ１２において行った場合も、基本的に、図３に示したような結果が得られる。すなわち、ワーカ１２により算出される勾配ｇをグラフにした場合、ピーク値を中心軸とした左右対称のグラフとなる（近似できる）。
【００４０】
このような左右対称のグラフとしては、例えば、図４のＡに示すような正規分布、図４のＢに示すようなラプラス分布、図４のＣに示すようなコーシー分布、図４のＤに示すようなスチューデントのt分布などがある。
【００４１】
これらの分布は、１つのピーク値を有し、そのピーク値を中心軸とした場合、左右対称となるグラフが得られる分布である。これらの分布は、平均(算術平均)または中央値が１つ計算可能な分布でもある。
【００４２】
図４に示した確率分布の形状と、図３に示した勾配ｇに関するグラフの形状を比較すると、類似していることが読み取れる。
【００４３】
そこで、勾配ｇは、左右対称な確率分布からサンプリングされたと仮定する。そして、勾配ｇを量子化するとき、所定の確率分布の上位ｐ％に該当する勾配ｇの部分を抽出することで量子化する。
【００４４】
具体的に、勾配ｇは、左右対称な確率分布からサンプリングされたと仮定した場合に、その確率分布が正規分布である場合を例に挙げて説明する。
【００４５】
図５は、平均＝０、分散＝０．５の正規分布のグラフである。図中、ｑｌは、確率がｐｌ％となる点（ｘの値）であり、ｑｇは、確率がｐｇ％となる点（ｘの値）である。値ｑｌと値ｑｇは、絶対値では同一の値となる。勾配ｇが、図５に示した正規分布となると仮定したとき、勾配ｇが値ｑｌ以下の値と、値ｑｇ以上の値を抽出することで、量子化が行われる。
【００４６】
すなわち量子化は、次式（１）に基づき行われる。
【００４７】
【数１】
2018155232.tif 000003
【００４８】
勾配ｇ（＝ｘ）が、値ｑｇよりも大きい場合、その勾配ｇは、値ｑｇであるとして、送付対象とされる。勾配ｇ（＝ｘ）が、値ｑｌよりも小さい場合、その勾配ｇは、値ｑｌであるとして、送付対象とされる。勾配ｇ（＝ｘ）が、値ｑｇ以下であり、値ｑｌ以上である場合、その勾配ｇは、０とされ、送付対象から除外される。
【００４９】
このようにした場合、勾配ｇのうちの（ｐｌ＋ｐｇ）％が送付対象とされる。例えば、５％の量子化を行いたい場合、（ｐｌ＋ｐｇ）％＝５％となり、ｐｌ＝２．５、ｐｇ＝２．５となる。
【００５０】
例えば、勾配ｇが、１００万パラメータである場合、そのうちの５％、すなわち、５万パラメータに量子化される。よって、ワーカ１２からパラメータサーバ１１に送付するデータ量を低減させることができ、勾配ｇの授受にかかる時間を低減させることができる。これにより、分散学習における時間を大幅に短縮することができる。
【００５１】
図５を再度参照するに、図５に示した正規分布は、平均と分散が求められれば、作成することができる。また、確率がｐｌ％となる値ｑｌ（確率がｐｇ％となる値ｑｇ）をｐｌ（ｐｇ）から一意的に求められることは既に知られている。
【００５２】
量子化は、まず算出された勾配ｇから、平均と分散（仮定した確率分布関数の定数）が求められ、勾配ｇに関する正規分布のグラフが作成される（実際に作成する必要はないが、説明の都合上、作成されるとする）。次に、確率ｐｌと確率ｐｇが、それぞれ設定される。上記したように、確率ｐｌと確率ｐｇが設定されれば、その確率ｐｌと確率ｐｇに対応する値ｑｌと値ｐｇを求めることができる。
【００５３】
値ｑｌと値ｐｇが求められたあと、式（１）に基づき、送付対象となる勾配ｇを抽出することで、量子化が行われる。
【００５４】
このような、所定の確率分布に勾配ｇの分布が基づく仮定して量子化を行った場合においても、量子化の精度を保てることについて、図６を参照して説明する。図６に示したグラフの横軸は、量子化率の理論値を表し、縦軸は、実施に量子化された率（実測値）を表す。
【００５５】
なお、量子化率とは、上記した確率ｐｌと確率ｐｇを加算した値であり、パラメータをどの程度まで減らすかを表す値である。例えば、上記した例において、１００万個のパラメータを、量子化せずに、１００万個のパラメータを送付する場合、量子化率は、１００％であるとし、量子化して１０万個のパラメータに減らして送付する場合、量子化率は１０％であるとして説明を続ける。
【００５６】
量子化率は、ネットワークの帯域幅などを考慮して設定されるようにしても良い。例えば、帯域幅が広く、比較的多くのデータを送付できる状態の時には、量子化率を高い値（よって、あまりデータ量は削減されない）に設定し、帯域幅が狭く、比較的少ないデータしか送付できない状態の時には、量子化率を低い値（よって、データ量は削減される）に設定されるようにしても良い。
【００５７】
このように、量子化率を設定することで、通信の帯域制御を行え、効率良いデータの授受を行えるような設定を行えるようになる。
【００５８】
図６に示したグラフにおいて、グラフＬ１は、仮定した所定の確率分布を正規化分布とした場合のグラフを表し、グラフＬ２は、仮定した所定の確率分布をラプラス分布とした場合のグラフを表す。
【００５９】
例えば、図６に示したグラフは、Ａ％の量子化を行うと設定（ｐｌ＋ｐｇ＝Ａ％と設定）し、処理したときに、実際にどの程度の量子化が行われたかを示す図である。例えば、グラフＬ１を参照するに、正規化分布を仮定したときに、１０％の量子化を行うと設定（ｐｌ＋ｐｇ＝１０％と設定）し、処理したときには、実際に１０％程度量子化されたことが読み取れる。この場合、理論値と実際の値が略同一となるため、精度良く量子化できることが証明できたことになる。
【００６０】
また例えば、グラフＬ２を参照するに、ラプラス分布を仮定したときに、１０％の量子化を行うと設定（ｐｌ＋ｐｇ＝１０％と設定）し、処理したときにも、実際に１０％程度量子化されたことが読み取れ、精度良く量子化できることが証明されている。
【００６１】
ワーカ１２からパラメータサーバ１１に送信する勾配ｇのデータ量を小さくするためには、量子化は高い（量子化率の値は低い）方がよい。量子化を高くすることは、上記した説明においては、（ｐｌ＋ｐｇ）の値を小さくすること該当する。
【００６２】
このことを考慮すると、図６に示したグラフにおいて、理論的な量子化率（ｐｌ＋ｐｇ）が小さい方で、理論的な量子化率と実際の量子化率がほぼ一致し、精度良く量子化できていれば良いことがわかる。
【００６３】
換言すれば、図６に示したグラフにおいて、理論的な量子化率（ｐｌ＋ｐｇ）が大きい方では、理論的な量子化率と実際の量子化率がかけ離れていても、ワーカ１２からパラメータサーバ１１に送信する勾配ｇのデータ量を小さくするための量子化においては、問題なく量子化を行えることがわかる。
【００６４】
例えば、図６に示したグラフにおいて、所定の確率分布として正規化分布を仮定して量子化を行った結果（グラフＬ１）を参照するに、理論的な量子化率（ｐｌ＋ｐｇ）が、１〜３０％程度の範囲内であれば、精度良く量子化できることが読み取れる。
【００６５】
また例えば、図６に示したグラフにおいて、所定の確率分布としてラプラス分布を仮定して量子化を行った結果（グラフＬ２）を参照するに、理論的な量子化率（ｐｌ＋ｐｇ）が、１〜３０％程度の範囲内であれば、精度良く量子化できることが読み取れる。
【００６６】
よって、本技術によれば、量子化を行いたい範囲内では、所望とする量子化率で量子化を行え、精度良く量子化を行えることが実証されている。
【００６７】
また、図６を参照するに、量子化に適用（仮定）する確率分布により、精度が異なる可能性があることがわかる。このことから、扱う勾配ｇに適した確率分布を用いることで、より精度良く量子化できることがわかる。
【００６８】
＜勾配の和を量子化する場合＞
図６に示したグラフは、勾配ｇそのものを量子化した場合を示している。他の量子化として、勾配ｇの和を量子化する場合もある。
【００６９】
ここで、時刻ｔ１においてワーカ１２が算出した勾配ｇを勾配ｇｔ１とし、時刻ｔ２においてワーカ１２が算出した勾配ｇを勾配ｇｔ２とし、時刻ｔ３においてワーカ１２が算出した勾配ｇを勾配ｇｔ３とする。
【００７０】
勾配ｇそのものを量子化する場合、時刻ｔ１においてワーカ１２は、算出した勾配ｇｔ１を量子化し、時刻ｔ２においてワーカ１２は、算出した勾配ｇｔ２を量子化し、時刻ｔ３においてワーカ１２は、算出した勾配ｇｔ３を量子化する。すなわち、勾配ｇそのものを量子化する場合、ワーカ１２は、所定の時刻において算出した勾配ｇのみを対象とした量子化を行う。
【００７１】
勾配ｇの和を量子化する場合、時刻ｔ１においてワーカ１２は、算出した勾配ｇｔ１を量子化するとともに、勾配ｇｔ１を保持する。時刻ｔ２においてワーカ１２は、算出した勾配ｇｔ２と、保持している勾配ｇｔ１とを加算し、その加算した（勾配ｇｔ１＋勾配ｇｔ２）を量子化するとともに、（勾配ｇｔ１＋勾配ｇｔ２）を保持する。
【００７２】
時刻ｔ３においてワーカ１２は、算出した勾配ｇｔ３と、保持している（勾配ｇｔ１＋勾配ｇｔ２）とを加算し、その加算した（勾配ｇｔ１＋勾配ｇｔ２＋勾配ｇｔ３）を量子化するとともに、（勾配ｇｔ１＋勾配ｇｔ２＋勾配ｇｔ３）を保持する。すなわち、勾配ｇの和を量子化する場合、ワーカ１２は、所定の時刻において算出した勾配ｇと、その時点より前の時点で算出した勾配ｇを累積した和（累積勾配と記述する）を対象とし量子化を行う。
【００７３】
再度図６を参照するに、上記したように、量子化に適用（仮定）する確率分布により、精度が異なる可能性があることがわかる。グラフＬ１とグラフＬ２を比較すると、グラフＬ２の方が、グラフＬ１よりも、理論値が３０％程度まで、比較的、実施の量子化率と一致しており、例えば、１５〜３０％の範囲内においては、所望（理想）とする量子化率で量子化を行えることが読み取れる。
【００７４】
図６は、勾配ｇをそのまま量子化した場合であり、グラフＬ２は、確率分布関数としてラプラス分布を仮定した場合である。このことから、勾配ｇをそのまま量子化する場合、確率分布関数としてラプラス分布を仮定して処理した方が、正規化分布を仮定して処理するよりも、精度良く量子化できることがわかる。
【００７５】
一方で、勾配ｇの和を量子化する場合、確率分布関数として正規化分布が、ラプラス分布よりも適していることについて説明を加える。図７は、図３と同じく、ワーカ１２において算出された勾配ｇの結果をまとめたグラフであるが、ワーカ１２において算出された勾配ｇを累積加算したときの結果をまとめたグラフである点が異なる。
【００７６】
図７に示した各グラフは、ワーカ１２において６４００個のパラメータから構成される勾配ｇを算出し、累積加算した値の分布を示すグラフである。図７に示した各グラフにおいて横軸は、勾配ｇの値を表し、縦軸は、累積個数（密度）を表す。
【００７７】
また、図７に示した各グラフは、ワーカ１２における演算を１００回行った毎にまとめた結果であり、例えば、Iter=100のグラフ（以下、適宜，グラフ100と記述する、他のグラフも同様に記述する）は、ワーカ１２における演算を１００回行った時点で、その１００回分の勾配ｇを累積加算したときのグラフである。
【００７８】
また同様に、Iter=200のグラフは、ワーカ１２における演算を２００回行った時点での勾配ｇを累積加算したときのグラフであり、Iter=900のグラフは、ワーカ１２における演算を９００回行った時点での勾配ｇを累積加算したときのグラフである。
【００７９】
グラフ１００乃至９００は、グラフの形状としては略同様な形状となっていることが読み取れる。また、その形状は、１つのピーク値を有し、そのピーク値を中心軸として略左右対称となっている。このようなグラフの形状は、図３で示したグラフと同様である。よって、上記した場合と同じく、確率分布関数を仮定して量子化することができる。
【００８０】
図８を参照し、勾配ｇの和を量子化するとき、正規化分布を仮定して量子化した場合の精度について説明する。図８に示したグラフの横軸は、量子化率の理論値を表し、縦軸は、実測値を表す。
【００８１】
図８では、理論値として、４〜２０％の範囲内の結果を示している。図８のグラフから、例えば、量子化率が５〜１５％の範囲内のときには、比較的、理論値と一致した量子化率で量子化されることが読み取れる。
【００８２】
このようなことを図９にまとめる。勾配ｇそのものを用いて量子化する場合、確率分布関数としては、ラプラス分布を仮定し、量子化率としては１５〜３０％の範囲内での量子化を行う。また、勾配ｇの和を用いて量子化する場合、確率分布関数としては、正規化分布を仮定し、量子化率としては５〜１５％の範囲内での量子化を行う。
【００８３】
なお、ここまでの説明においては、ラプラス分布や正規化分布を例に挙げて説明したが、これらの分布は一例であり、他の確率分布を仮定して量子化を行うことも可能である。また、上記した例においては、ラプラス分布や正規化分布が量子化に適しているとして説明したが、学習内容や分散の仕方（例えば、図１に示したようなシステムで学習を行うか、図２に示したシステムで学習を行うかなど）により、必ずしも、ラプラス分布や正規化分布が最適とは限らず、適宜、学習内容や分散の仕方などに適した確率分布関数が仮定される。
【００８４】
また、１つの確率分布を仮定して量子化が行われるのではなく、複数の確率分布を仮定して量子化が行われるようにしても良い。例えば、所望とする量子化率に応じて、仮定される確率分布が切り替えられるように構成しても良い。このようにした場合、例えば、量子化率が５〜１５％のときには、確率分布Ａが仮定されて量子化が行われ、１５〜３０％のときには、確率分布Ｂが仮定されて量子化が行われ、３０〜５０％のときには、確率分布Ｃが仮定されて量子化が行われるといったように、所望とされる量子化率に応じて、仮定される確率分布が異なるようにしても良い。
【００８５】
また例えば、学習の段階を、初期段階、中期段階、後期段階に分け、それぞれの段階で異なる確率分布が仮定されて、量子化が行われるようにしても良い。例えば、図３や図７に示したように、学習が進むにつれて、換言すれば、勾配ｇの算出回数が増えるに伴い、勾配ｇの分布に関するグラフの形状は少しずつ変化する。よって、このような形状の変化に合わせて、学習の段階に応じて、異なる確率分布が仮定されて、量子化が行われるようにしても良い。
【００８６】
また、上記した実施の形態においては、正規化分布やラプラス分布といった確率分布の関数をそのまま用いる場合を例に挙げて説明しているが、そのまま用いるのではなく、確率分布関数を変形し、その変形後の関数を用いて、上記したような量子化を行うようにしても良い。
【００８７】
例えば、ラプラス分布を仮定して量子化を行う場合、勾配の自然対数をとってから線形領域に見て、何％の値を使うかを決定して量子化を行うようにしても良い。本技術は、確率分布を仮定して、量子化を行うため、確率分布関数に対して何らかの処理を施した関数を用いて量子化を行うことも、本技術の範囲内である。
【００８８】
＜ワーカの第１の処理＞
上記した量子化を行うワーカ１２の処理(第１の処理とする)について説明する。
【００８９】
図１０は、ワーカ１２が行う処理について説明するためのフローチャートである。また、図１０では、勾配ｇそのものを量子化する場合について説明する。
【００９０】
ステップＳ１１において、ワーカ１２は、パラメータサーバ１１から圧縮されたパラメータ（勾配ｇ）を受け取る。なお、図１に示したような構成の場合、パラメータサーバ１１からパラメータを受け取り、図２に示したような構成の場合、他のワーカ１２からパラメータ（勾配ｇ）を受け取る。
【００９１】
ステップＳ１２において、ワーカ１２は、圧縮された勾配ｇを非圧縮する。ステップＳ１３において、ワーカ１２は、非圧縮した勾配ｇを、ディシリアライズする。さらにワーカ１２は、ステップＳ１４において、ディシリアライズした勾配ｇを用いて、自己の内部モデルを更新する。
【００９２】
ステップＳ１５において、ワーカ１２は、学習データを読み込む。この学習データは、他の装置から供給されるものでも良いし、予めワーカ１２が保持していても良い。また供給されるタイミングは内部モデルのアップデート後ではなく、他のタイミングであっても良い。ステップＳ１６において、ワーカ１２は、アップデートされたモデルと、読み込んだ学習データにより、勾配ｇを計算する。
【００９３】
ステップＳ１７において、量子化処理が実行される。図１１のフローチャートを参照し、ステップＳ１７において実行される量子化処理について説明する。
【００９４】
ステップＳ３１において、勾配ｇから、仮定する確率分布関数に関する平均と分散を算出する。例えば、仮定する確率分布が、正規化分布の場合、平均と分散が、算出された勾配ｇから算出される。また、例えば、仮定する確率分布が、ラプラス分布の場合、期待値と分散（ラプラス分布の関数における定数）が、算出された勾配ｇから算出される。
【００９５】
ステップＳ３１における処理が実行されるとき、量子化時に仮定される確率分布関数の種類、例えば、正規化分布、ラプラス分布といった種類が設定される処理が含まれ、その設定された確率分布関数に関する平均と分散（確率分布関数の種類による）が算出される。
【００９６】
また上記したように、所定の条件により、仮定する確率分布を切り替える場合などには、仮定する確率分布が設定され、その設定された確率分布に基づく演算が行われる。
【００９７】
ステップＳ３２において、確率ｐｌと確率ｐｇが設定される。確率ｐｌと確率ｐｇは、上記したように、量子化したい割合を示す値である。平均が０過程のもとであれば、確率ｐｌと確率ｐｇのうち、一方が設定されれば、他方を設定することは可能である。すなわち、例えば、確率ｐｌを設定すれば、確率ｐｇは、（１−ｐｌ）で算出できるため、確率ｐｌと確率ｐｇのうちのどちら一方を設定し、他方は算出されるようにしても良い。
【００９８】
また、確率ｐｌと確率ｐｇは、固定値としても良いし、可変値としても良い。固定値とした場合、ステップＳ３２は、設定されている確率ｐｌと確率ｐｇが常に用いられる。可変値とした場合、ステップＳ３２の処理が実行される毎や、ステップＳ３２の処理が複数回実行される毎に、確率ｐｌと確率ｐｇが設定（更新）される。
【００９９】
確率ｐｌと確率ｐｇが更新されるようにした場合、例えば、理論値と実測値の差分が０となるように確率ｐｌと確率ｐｇが更新される。そのような更新を行う場合、学習ベースの手法または経験ベースの手法で行われるようにすることができる。
【０１００】
学習ベースの手法で確率ｐｌと確率ｐｇを更新する場合、まず、理論値ｐから理論的に０でない量子化されたパラメータ数が求められる。パラメータ数がＮだとすると、量子化されたパラメータ数は、ｐ×Ｎ’＝Ｎとなる。量子化関数をＱ（ｇ）とし、勾配をｇであるとすると、実際のパラメータは、Ｑ（ｇ）≠０の個数Ｍになる。
【０１０１】
学習を進めると、
｛（Ｎ１，Ｍ１），・・・，（Ｎｔ，Ｍｔ），・・・，（ＮＴ，ＭＴ）｝
のデータが蓄積され、この蓄積されたデータを用いることで、学習ベースでＭ＝ｆ（ｎ）の関数ｆを求めることができる。
【０１０２】
特定範囲の理論値ｐに関しては、どのようなディープラーニングアーキテクチャを用いて、理論値と実測値の関係は略同じとなるため、事前に、学習した関数ｆを用いることも可能である。
【０１０３】
経験ベースの手法で確率ｐｌと確率ｐｇを更新する場合、まず上記した学習ベースの手法と同じく、
｛（Ｎ１，Ｍ１），・・・，（Ｎｔ，Ｍｔ），・・・，（ＮＴ，ＭＴ）｝
のデータが蓄積される。このようなデータが蓄積されると、理論値と実測値との乖離誤差の平均が次式（２）により求められる。
【０１０４】
【数２】
2018155232.tif 000004
求められた平均に理論値ｐを加算することで、確率ｐｌと確率ｐｇの補正が行われる。
【０１０５】
このような手法に基づき、確率ｐｌと確率ｐｇの更新が行われるようにしても良い。
【０１０６】
また、確率ｐｌと確率ｐｇを更新するようにした場合、上記した手法によらず、単に勾配ｇが算出された回数に応じて、確率ｐｌと確率ｐｇが更新されるようにしても良い。例えば、学習の初期段階では、確率ｐｌと確率ｐｇを大きい値に設定し、学習が進むにつれて、小さい値に設定されるようにしても良い。
【０１０７】
図１１のフローチャートの説明に戻り、ステップＳ３２において、確率ｐｌと確率ｐｇが設定されると、ステップＳ３３に処理は進められる。ステップＳ３３において、設定された確率ｐｌと確率ｐｇに対応する値ｑｌと値ｑｇが設定される。この値ｑｌと値ｑｇは、図５、式（１）を参照して説明したように、勾配ｇを抽出するための閾値として用いられる。
【０１０８】
ステップＳ３４において、算出された勾配ｇが、式（１）に基づき、値ｑｌと値ｑｇと比較され、パラメータサーバ１１に送信する勾配ｇが抽出される。式（１）に基づき、値ｑｌより小さい勾配ｇと、値ｑｇより大きい勾配ｇが抽出される。
【０１０９】
このようにして、量子化処理が実行されると、処理は、ステップＳ１８に進められる。ステップＳ１８において、量子化された勾配ｇは、シリアライズされる。そして、シリアライズされた勾配ｇは、ステップＳ１９において、圧縮される。そして、ステップＳ２０において、圧縮された勾配ｇはパラメータサーバ１１（システムによっては他のワーカ１２）に送信される。
【０１１０】
送信されるデータは、量子化により抽出された勾配ｇの位置を表すインデックス、値ｑｌまたは値ｑｇのどちらに分類されたかを表す情報が、少なくとも含まれるデータである。値ｑｌまたは値ｑｇのどちらに分類されたかを表す情報としては、値ｑｌまたは値ｑｇの値そのものであっても良いし、値ｑｌまたは値ｑｇのどちらに分類されたかを表す、例えばサイン（正負の情報）といった情報でも良い。
【０１１１】
例えば、サインを用いた場合、パラメータサーバ１１に、値ｑｌまたは値ｑｇの値そのものを送信し、その後、インデックスとサインを送信するようにしても良い。また、値ｑｌまたは値ｑｇの値そのものを送信するのではなく、勾配ｇから算出された平均と分散をパラメータサーバ１１に送信し、パラメータサーバ１１側で、値ｑｌと値ｑｇを算出し、ワーカ１２からは、インデックスとサインを送信するようにしても良い。
【０１１２】
量子化した勾配ｇをパラメータサーバ１１や他のワーカ１２に送信するときに、どのようなデータを送信するかは、適宜、システムの仕様などに合わせて設定することができる。
【０１１３】
このように、量子化した勾配ｇを送信することで、送信時のデータ量を低減させることができ、勾配ｇの授受に関わる時間を短縮することができる。例えば、ｎ個の勾配ｇを、量子化せずに送信する場合、勾配ｇの１パラメータをＢ(bits)で送信する場合、ｎ×Ｂ(bits)となる。
【０１１４】
これに対して、量子化することで、ｎ×（ｐｌ＋ｐｇ）×Ｂ（bits）となる。（ｐｌ＋ｐｇ）は、１以下の値、例えば、０．１（＝１０％）であるため、ｎ×（ｐｌ＋ｐｇ）×Ｂ（bits）＜ｎ×Ｂ(bits)となる。よって、送信するデータ量は、量子化することで大幅に低減することができる。
【０１１５】
また、上記したように、量子化するとき、勾配ｇが確率分布関数に従うと仮定して量子化を行うことで、精度良くデータ量を低減させる量子化を行うことができる。例えば、従来、確率的に量子化する手法と、決定論的に量子化する手法があった。
【０１１６】
確率的に量子化する手法の場合、乱数を発生させ、その乱数に該当する勾配ｇを抽出することで、量子化を行うことが提案されているが、この場合、乱数を発生させるコストがかかる、パラメータをどの程度減らしても精度が落ちないかを見極めるのが困難であり、結果的に良好に量子化が行えない可能性や、データ量を低減できず、勾配ｇの授受にかかる時間を短縮できない可能性があった。
【０１１７】
また、決定論的に量子化する手法の場合、決定論的な閾値を設定し、その閾値以上または以下の勾配ｇを抽出することで、量子化を行うことが提案されているが、この場合、勾配ｇをソートし、閾値と比較する必要があるため、膨大な量の勾配ｇをソートする時間がかかり、また精度が落ちないための閾値を適切に設定するのが困難であった。
【０１１８】
これらに対して、本技術によれば、例えば、図６を参照して説明したように、勾配ｇを１０％まで減らすといった量子化であっても、理論値と実測値がほぼ一致し、精度良く、かつ大幅なデータ量の削減を行える。
【０１１９】
＜ワーカの第２の処理＞
上記した量子化を行うワーカ１２の他の処理(第２の処理とする)について説明する。ワーカの第２の処理として、勾配ｇの和(以下、累積勾配ｇと記述する)を量子化する場合について説明する。なお、基本的な処理は、図１０、図１１のフローチャートを参照した説明した場合と同様であるため、同様の処理については適宜その説明を省略する。
【０１２０】
ステップＳ５１において、ワーカ１２は、パラメータサーバ１１から圧縮されたパラメータ（累積勾配ｇ）を受け取る。なお、図１に示したような構成の場合、パラメータサーバ１１からパラメータを受け取り、図２に示したような構成の場合、他のワーカ１２からパラメータ（累積勾配ｇ）を受け取る。
【０１２１】
ステップＳ５２において、ワーカ１２は、圧縮された累積勾配ｇを非圧縮する。ステップＳ５３において、ワーカ１２は、非圧縮した累積勾配ｇを、ディシリアライズする。さらにワーカ１２は、ステップＳ５４において、ディシリアライズした累積勾配ｇを用いて、自己の内部モデルを更新する。
【０１２２】
ステップＳ５５において、ワーカ１２は、学習データを読み込む。ステップＳ５６において、アップデートされたモデルと、読み込んだ学習データにより、新たな勾配ｇが計算される。
【０１２３】
ステップＳ５７において、新たに計算された勾配ｇが、累積勾配ｇに加算される。累積勾配ｇを用いた演算を行う場合、このような勾配を溜める処理が行われる。
【０１２４】
ステップＳ５８において、量子化処理が実行される。ステップＳ５８において実行される量子化処理は、図１０に示したワーカの第１の処理におけるステップＳ１７、すなわち図１１のフローチャートに基づいて行われるため、その説明は省略する。ただし、図１１に示したフローチャートの各処理において、勾配ｇを対象にして行われる処理は、累積勾配ｇを対象として行われる点は異なる。
【０１２５】
ステップＳ５８において、量子化処理が実行されると、処理は、ステップＳ５９に進められる。ステップＳ５９において、０でない量子化された累積勾配ｇは、累積勾配ｇから差分をとることで、エラーフィードバックが行われる。エラーフィードバックの後、ステップＳ６０において、量子化された累積勾配ｇは、シリアライズされる。
【０１２６】
シリアライズされた累積勾配ｇは、ステップＳ６１において、圧縮される。そして、ステップＳ６２において、圧縮された累積勾配ｇはパラメータサーバ１１（システムによっては他のワーカ１２）に送信される。
【０１２７】
送信されるデータは、勾配ｇそのものを量子化する場合と同じく、量子化により抽出された累積勾配ｇの位置を表すインデックス、値ｑｌまたは値ｑｇのどちらに分類されたかを表す情報が、少なくとも含まれるデータである。
【０１２８】
このように、量子化した累積勾配ｇを送信することで、送信時のデータ量を低減させることができ、累積勾配ｇの授受に関わる時間を短縮することができる。すなわち例えば、図８を参照して説明したように、累積勾配ｇを１０％まで減らすといった量子化であっても、理論値と実測値がほぼ一致し、精度良く、かつ大幅なデータ量の削減を行える。
【０１２９】
このように、本技術によれば、量子化を効率良く、精度良く行うことが可能となる。また、本技術は、機械学習による分散学習を行うときに適用することで、学習時間を短縮化することができる。
【０１３０】
機械学習としては、例えば、ディープラーニングを適用した学習に適用することができ、本技術によれば、分散学習するときに、勾配の授受にかかる時間を短縮することができる。よって、学習にかかる時間を短縮化することができる。
【０１３１】
＜記録媒体について＞
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【０１３２】
図１３は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。コンピュータにおいて、ＣＰＵ（Central Processing Unit）１００１、ＲＯＭ（Read Only Memory）１００２、ＲＡＭ（Random Access Memory）１００３、ＧＰＵ（Graphics Processing Unit）１００４は、バス１００５により相互に接続されている。バス１００５には、さらに、入出力インタフェース１００６が接続されている。入出力インタフェース１００６には、入力部１００７、出力部１００８、記憶部１００９、通信部１０１０、およびドライブ１０１１が接続されている。
【０１３３】
入力部１００７は、キーボード、マウス、マイクロフォンなどよりなる。出力部１００８は、ディスプレイ、スピーカなどよりなる。記憶部１００９は、ハードディスクや不揮発性のメモリなどよりなる。通信部１０１０は、ネットワークインタフェースなどよりなる。ドライブ１０１１は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア１０１２を駆動する。
【０１３４】
以上のように構成されるコンピュータでは、ＣＰＵ１００１またはＧＰＵ１００４が、例えば、記憶部１００９に記憶されているプログラムを、入出力インタフェース１００６およびバス１００５を介して、ＲＡＭ１００３にロードして実行することにより、上述した一連の処理が行われる。
【０１３５】
コンピュータ（ＣＰＵ１００１、ＧＰＵ１００４）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア１０１２に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【０１３６】
コンピュータでは、プログラムは、リムーバブルメディア１０１２をドライブ１０１１に装着することにより、入出力インタフェース１００６を介して、記憶部１００９にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部１０１０で受信し、記憶部１００９にインストールすることができる。その他、プログラムは、ＲＯＭ１００２や記憶部１００９に、予めインストールしておくことができる。
【０１３７】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１３８】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１３９】
なお、本明細書に記載された効果はあくまで例示であって限定されるものではなく、また他の効果があってもよい。
【０１４０】
なお、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０１４１】
なお、本技術は以下のような構成もとることができる。
（１）
機械学習の演算により算出された値の分布が、所定の確率分布に基づくと仮定して量子化を行う
情報処理装置。
（２）
前記演算は、ディープラーニングにおける演算であり、前記ディープラーニングに基づく演算により算出された勾配の分布が、前記所定の確率分布に基づくとして量子化を行う
前記（１）に記載の情報処理装置。
（３）
複数の装置で分散して機械学習を行う分散学習において、１の装置での学習により得られた値を、他の装置に供給するときに、前記量子化が行われる
前記（１）または（２）に記載の情報処理装置。
（４）
前記所定の確率分布は、ピーク値を中心軸とする左右対称のグラフとなる分布である
前記（１）乃至（３）のいずれかに記載の情報処理装置。
（５）
前記所定の確率分布は、平均または中央値が１つ計算可能な分布である
前記（１）乃至（３）のいずれかに記載の情報処理装置。
（６）
前記所定の確率分布は、正規化分布、ラプラス分布、コーシー分布、スチューデント-T分布のいずれかである
前記（１）乃至（３）のいずれかに記載の情報処理装置。
（７）
前記算出された値から、前記所定の確率分布の関数の定数を求める
前記（１）乃至（６）のいずれかに記載の情報処理装置。
（８）
量子化する割合を設定し、その割合に対応する前記所定の確率分布における値を閾値とし、前記算出された値のうち、前記閾値以上または以下の値を抽出する
前記（１）乃至（７）のいずれかに記載の情報処理装置。
（９）
前記量子化は、前記勾配そのものを量子化対象とする、または前記勾配を累積加算した累積勾配を量子化対象とする
前記（２）乃至（８）のいずれかに記載の情報処理装置。
（１０）
機械学習の演算により算出された値の分布が、所定の確率分布に基づくと仮定して量子化を行う
ステップを含む情報処理方法。
（１１）
コンピュータに、
機械学習の演算により算出された値の分布が、所定の確率分布に基づくと仮定して量子化を行う
ステップを含む処理を実行させるためのプログラム。
【符号の説明】
【０１４２】
１１  パラメータサーバ，  １２  ワーカ，  ２２  ワーカ
【図１】
2018155232.tif 000005
【図２】
2018155232.tif 000006
【図３】
2018155232.tif 000007
【図４】
2018155232.tif 000008
【図５】
2018155232.tif 000009
【図６】
2018155232.tif 000010
【図７】
2018155232.tif 000011
【図８】
2018155232.tif 000012
【図９】
2018155232.tif 000013
【図１０】
2018155232.tif 000014
【図１１】
2018155232.tif 000015
【図１２】
2018155232.tif 000016
【図１３】
2018155232.tif 000017
【国際調査報告】
2018155232.tif 000018
2018155232.tif 000019
2018155232.tif 000020
2018155232.tif 000021