以下、本発明の実施形態について図面を参照して説明する。以下では、高い精度を必要とする演算と高い精度を必要としない演算が混在する処理の例に深層学習における学習処理を用いて本発明を説明するが、本発明が適用される処理、装置およびデータ処理方法は学習処理、学習装置および学習方法に限定されない。
まず、本発明のデータ処理の例としての学習処理の概略を説明する。図1(a)は、入力層と出力層との間に1つ以上の中間層を含むニューラルネットワークにおける一般的な学習方法およびそのための回路構成の例を示す説明図であり、図1(b)は、本発明のデータ処理方法の例としての学習方法およびそのための回路構成の例を示す説明図である。
図1(a)に示す例では、汎用用途の学習アルゴリズムに対応すべく、大規模学習回路90を用いて、所定の判別モデルであるニューラルネットワーク全体を学習する。
なお、図1では、回路に付した吹き出しに、ニューラルネットワークの学習過程における処理の方向およびその範囲を模式的に示している。吹き出し内において、符号51(図中の丸)はニューラルネットワークにおけるニューロンに相当するユニットを表す。また、符号52(図中のユニット間を結ぶ線)は、ユニット間結合を表す。また、符号53(図中の右向きの太線矢印)は、推論処理およびその範囲を表す。また、符号54(図中の左向きの太線矢印)は、パラメタ更新処理およびその範囲を表す。なお、図1では、各ユニットへの入力が前段の層のユニットの出力となるフィードフォワード型のニューラルネットワークの例を示しているが、各ユニットへの入力はこれに限らない。例えば、時系列情報を保持している場合には、リカレント型のニューラルネットワークのように、各ユニットへの入力に、前の時刻における前段の層のユニットの出力を含めることも可能である。なお、そのような場合も、推論処理の方向は、入力層から出力層へと向かう方向(順方向)であるとみなされる。このように入力層から所定の順番で行われる推論処理は「順伝搬」とも呼ばれる。一方、パラメタ更新処理の方向は、特に限定されない。図中のパラメタ更新処理のように、出力層から入力層へと向かう方向(逆方向)であってもよい。なお、図中のパラメタ更新処理の方向は、誤差逆伝搬法の例であるが、パラメタ更新処理は誤差逆伝搬法に限定されない。例えば、パラメタ更新処理がSTDP(Spike Timing Dependent Plasticity)等であってもよい。
ニューラルネットワークに限らず、深層学習におけるモデルの学習方法の例としては、次のような学習方法が挙げられる。まず、入力層に学習用データを入力した後、出力層までの各層で順方向に各ユニットの出力を計算する推論処理を行う(順伝搬:図中の矢印53参照)。次いで、出力層からの出力(最終出力)と学習用データで示される入力と出力の関係等とから算出される誤差に基づいて、その誤差を最小化するように、出力層から第1層までの各層を逆方向に辿って、層内の各ユニットの出力を計算するためのパラメタを更新するパラメタ更新処理を行う(逆伝搬:図中の矢印54参照)。
図1(a)に示すように、モデル全体を学習対象とした場合、パラメタ更新処理で、入力層より後段の全ての層(第1層~第n層)において層内の各ユニットの出力を計算するためのパラメタ(例えば、層内の各ユニットと他の層のユニットを結合するユニット結合の重み等)を更新する。このようなパラメタ更新処理を、例えば学習用データを替えながら複数回繰り返すことにより、高い認識率を有する学習済みモデルを生成できる。図1(a)では、そのような学習を行う演算回路の実現例として、上記の推論処理とパラメタ更新処理とを高い演算精度で行う大規模学習回路90が示されている。しかし、推論処理やパラメタ更新処理の演算精度が高いほど、またその処理の計算範囲が広いほど、誤差関数の展開項数が増えて回路が大規模化するため、消費電力が非常に増大する。
一方、本発明では、図1(b)に示すように、モデルの一部のみを学習対象とする。なお、ここでいう学習は、上記と同様、より実際の学習処理である、パラメタ更新処理を指す。モデルの一部のみを学習対象とした場合、順伝搬までは上記と同様に行う。その上で、出力層からの出力(最終出力)と学習用データで示される入力と出力の関係等とから算出される誤差に基づいて、指定されたユニット(例えば、出力層である第n層から第k層までの各層内のユニット)についてのみ、当該ユニットの出力を計算するためのパラメタ(例えば、他ユニットとの結合にかかる重み等)を更新するパラメタ更新処理を行う。
図1(b)では、そのような学習を行う演算回路10の実現例として、高い演算精度で指定された一部のユニットのパラメタ更新処理を行う高精度演算回路12と、高精度演算回路12よりも低い演算精度で少なくとも指定されたユニットの推論処理を行う低精度演算回路11とを組み合わせた例が示されている。このような2つの異なる演算精度を有する演算回路を備えた上で、高精度演算回路12に対しては、例えば、高精度演算が必要な一部のユニットについてパラメタ更新処理を行わせ、低精度演算回路11に対しては、高精度演算が必要でない他の処理を行わせる。このようにして1つの学習用データに対する学習演算の中で、推論処理の少なくとも一部を低い演算精度で実施し、かつパラメタ更新処理の少なくとも一部を高い演算精度で実施するとともに、高い演算精度で実施するパラメタ更新処理の範囲を最適化することで、コンピュータ資源を効率化(低消費電力等)しつつ、十分な演算精度を確保する。
なお、図1(b)では出力側の一部の層をパラメタの更新を行う範囲(実際の学習範囲)とする例を示したが、パラメタの更新範囲は出力側の層に限られず、例えば、第1層~第n層のうちの奇数層や偶数層などといった個別的な指定も可能である。また、図1(b)では、パラメタ更新処理自体の範囲を制限する例を示したが、パラメタ更新処理自体の範囲は制限せず、高演算精度で実施するパラメタ更新処理の範囲を制限してもよい。すなわち、全てのユニットのうちの一部のユニットについてのみ高演算精度でパラメタ更新処理を行い、それ以外のユニットについては低い演算精度でパラメタ更新処理を行うことも可能である。なお、パラメタ更新処理の対象として、高精度演算により実施されるユニットと、低精度演算により実施されるユニットと、実施されないユニット(その際、パラメタは固定される)の3種類に分けることも可能である。
また、高精度演算と低精度演算の対象とする処理の分け方の他の例としては、全てのユニットの推論処理を低精度演算で行い、かつ全てのユニットのパラメタ更新処理を高精度演算で行うことも可能である。また、例えば、全てのユニットの推論処理を低精度演算で行い、かつ一部のユニットのパラメタ更新処理を高精度演算で行うことも可能である。その場合、高精度演算の対象外とされた残りの一部のユニットについては、低精度演算でパラメタ更新処理を行ってもよいし、パラメタ更新処理の対象外としてもよい。また、例えば、一部のユニットについては推論処理およびパラメタ更新処理を低精度演算で行い、残りの一部のユニットについては推論処理およびパラメタ更新処理を高精度演算で行うことも可能である。
換言すると、本発明のデータ処理方法の例としての学習方法は、学習装置が、相対的に低い演算精度を有する低精度演算回路と、相対的に高い演算精度を有する高精度演算回路とを備え、低精度演算回路に少なくとも一部のユニットの推論処理を行わせ、かつ高精度演算回路に少なくとも一部のユニットのパラメタ更新処理を行わせるものであればよい。その上で、残りの一部のユニットの推論処理については低精度演算回路で行ってもよいし、高精度演算回路で行ってもよい。また、上記の残りの一部のユニットのパラメタ更新処理については低精度演算回路で行ってもよいし、処理そのものを省略してもよい。どのユニットについて高精度の推論処理の対象とするか低精度の推論処理の対象とするかや、どのユニットについて高精度のパラメタ更新処理の対象とするか低精度のパラメタ更新処理の対象とするかもしくは処理対象外とするか等については、特に限定されない。
なお、上記は、異なる演算精度を有する2つの演算回路を利用する場合の例であるが、例えば、異なる演算精度を有する2以上の演算回路を利用する場合も基本的に同様である。すなわち、ある一部のユニットの推論処理を行う演算回路の演算精度に対して、より高い演算精度を有する演算回路にてある一部のユニットのパラメタ更新処理が行われる構成であれば、他の一部のユニットの推論処理およびパラメタ更新処理が具体的にどの演算回路で行われるかまたは処理自体が行われないかは特に限定されない。
図2は、1つのユニットに着目したときの当該ユニットの入出力および他ユニットとの結合の例を示す説明図である。図2(a)に1つのユニットの入出力の例、(b)に2層に並べられたユニット間の結合の例を示す。図2(a)に示すように、1つのユニットに対して4つの入力(x1~x4)と1つの出力(z)があった場合に、当該ユニットの動作は例えば、式(1A)のように表される。ここで、f()は活性化関数を表している。
z=f(u) ・・・(1A)
ただし、u=a+w1x1+w2x2+w3x3+w4x4 ・・・(1B)
式(1B)において、aは切片、w1~w4は各入力(x1~x4)に対応した重み等のパラメタを表す。
一方、図2(b)に示すように、2層に並べられた層間で各ユニットが結合されている場合、後段の層に着目すると、当該層内の各ユニットへの入力(それぞれx1~x4)に対する当該各ユニットの出力(z1~z4)は、例えば、次のように表される。なお、iは同一層内のユニットの識別子(本例ではi=1~3)である。
zi=f(ui) ・・・(2A)
ただし、ui=a+wi,1x1+wi,2x2+wi,3x3+wi,4x4 ・・・(2B)
以下では、式(2B)を単純化して、zi=Σwi,k*xkと記す場合がある。なお、切片aは省略した。なお、切片aを値1の定数項の係数(パラメタの1つ)とみなすことも可能である。ここで、kは当該層における各ユニットへの入力、より具体的にはその入力を行う他のユニットの識別子を表す。このとき、当該層における各ユニットへの入力が前段の層の各ユニットの出力のみである場合には、上述の簡略式を、ui
(L)=Σwi,k
(L)*zk
(L-1)と記すことも可能である。なお、Lは層の識別子を表す。これらの式において、wi,kが、当該層(第L層)における各ユニットiのパラメタ、より具体的には、各ユニットiと他のユニットkとの結合(ユニット間結合)の重みに相当する。以下では、ユニットを特に区別せず、ユニットの出力値を決める関数(活性化関数)を簡略化して、z=Σw*xと記す場合がある。
上記の例において、あるユニットについて入力xから出力zを求める計算が、当該ユニットにおける推論処理に相当する。このとき、パラメタwは固定される。一方、あるユニットについてパラメタwを求める計算が当該ユニットにおけるパラメタ更新処理に相当する。
実施形態1.
図3は、第1の実施形態の学習装置の構成例を示すブロック図である。図3に示す学習装置100は、学習前モデル記憶部101と、学習用データ記憶部102と、学習処理部106と、学習後モデル記憶部107とを備える。
学習前モデル記憶部101は、学習前のモデルの情報を記憶する。学習前のモデルの情報には、パラメタの初期値が含まれていてもよい。
学習用データ記憶部102は、モデルの学習に用いるデータである学習用データを記憶する。なお、学習用データの形式は特に問わない。
学習処理部106は、学習用データ記憶部102に記憶された学習用データを用いて、学習前モデル記憶部101に記憶されているモデルの学習を行う。
本実施形態の学習処理部106は、少なくとも高効率推論処理部103aと高精度パラメタ更新処理部104bと制御部105とを含む。なお、学習処理部106は、図3に示すように、さらに高精度推論処理部103bと高効率パラメタ更新処理部104aを含んでいてもよい。
高効率推論処理部103aは、指定された層またはユニットを対象とする推論処理を、第1の演算精度で行う。
高精度パラメタ更新処理部104bは、指定された層、ユニットまたはパラメタを対象とするパラメタ更新処理を、第1の演算精度よりも高い演算精度の第2の演算精度で行う。
制御部105は、学習処理を実施する各処理部(本例では、高効率推論処理部103a、高精度推論処理部103b、高効率パラメタ更新処理部104aおよび高精度パラメタ更新処理部104b)を制御して、必要な学習処理を実施させる。制御部105は、より具体的には、学習前のモデルおよび学習用データの読み込み、学習処理を実施する各処理部へ演算の指示を行うことによる学習処理にかかる演算精度の切替制御を行う。演算の指示には、演算対象とするユニットの指定や演算に必要なパラメータの入力が含まれる。
学習後モデル記憶部107は、学習後のモデルの情報を記憶する。学習後のモデルの情報には、各ユニットの更新後のパラメタの値が含まれていてもよい。
また、図4は、学習処理部106のハードウエア構成の例を示す構成図である。図4に示すように、学習処理部106は、低精度演算回路11と、高精度演算回路12と、メモリ13と、制御装置14とがそれぞれバス15を介して接続された演算処理装置等により実現されてもよい。なお、高精度演算回路12は、低精度演算回路11よりも高い演算精度で演算が可能な回路であればよい。
その場合において、高効率推論処理部103aおよび高効率パラメタ更新処理部104aは、例えば、低精度演算回路11により実現されてもよい。また、高精度推論処理部103bおよび高精度パラメタ更新処理部104bは、例えば、高精度演算回路12により実現されてもよい。また、制御部105は、例えば、制御装置14により実現されてもよい。
本例において、低精度演算回路11と高精度演算回路12はそれぞれバス15を介して接続されており、バス15を介してお互いの演算結果を通知するなどのデータのやり取りを行うことができる。なお、バス15にはさらにメモリ13が接続されていてもよく、その場合、低精度演算回路11と高精度演算回路12がそれぞれメモリ13を介してデータのやりとりを行うことも可能である。その場合、メモリ13は通信路の一部として扱われる。なお、メモリ13は、On-chip memoryとして、低精度演算回路11および高精度演算回路12と同一のチップ上に実装されてもよい。すなわち、低精度演算回路11、高精度演算回路12およびメモリ13が、チップ内で内部接続されていてもよい。また、メモリ13は、Off-chip memoryとして、低精度演算回路11や高精度演算回路12と同一のチップ上に実装されなくてもよい。すなわち、外部メモリインタフェースを介して外部接続されていてもよい。
本実施形態では、学習処理(特に、推論処理およびパラメタ更新処理)を実施する処理部が実際に演算に用いる数字データの値域の広さ・細かさの尺度(より具体的には、その処理部を実現する演算回路におけるビット幅および小数点の取り扱い等で定まる数字データの値域の広さおよび細かさの尺度)を、「精度」または「演算精度」と呼ぶ。低精度演算回路11における演算精度である低演算精度と高精度演算回路12における演算精度である高演算精度の組み合わせの例としては、例えば、図5に示すような組み合わせが挙げられる。図5は、低精度演算回路11における演算精度である低演算精度と高精度演算回路12における演算精度である高演算精度の組み合わせの例を示す説明図である。
なお、低精度演算回路11における演算精度と高精度演算回路12における演算精度の組み合わせは、図5に示すものに限定されない。例えば、低精度演算回路11における演算精度(低演算精度)を、固定少数点の{1,2,8,16}ビットのいずれかまたは整数の{1,2,8,16}ビットのいずれかとし、高精度演算回路12における演算精度(高演算精度)を、固定小数点の{2,8,16,32}ビット、浮動小数点の{9,16,32}ビットのいずれかまたはpower of 2の浮動小数点の{8,16,24,32}ビットのいずれかとしてもよい。ただし、高演算精度は、低演算精度に比べて、高精度(例えば、数字データの値域がより広い、数値データの値域がより細かいなど、表現可能な有効桁数がより大きい)であるものとする。
また、図6は、学習装置100にかかるコンピュータの構成例を示す概略ブロック図である。コンピュータ1000は、プロセッサ1008と、主記憶装置1002と、補助記憶装置1003と、インタフェース1004と、ディスプレイ装置1005と、入力デバイス1006とを備える。また、プロセッサ1008は、CPU1001や、GPU1007などの各種演算・処理装置を含んでいてもよい。
学習装置100は、例えば、図6に示すようなコンピュータ1000に実装されてもよい。その場合、学習装置100(特に、制御部105)の動作は、プログラムの形式で補助記憶装置1003に記憶されていてもよい。CPU1001は、プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、そのプログラムに従って学習装置100における所定の処理を実施する。なお、CPU1001は、プログラムに従って動作する情報処理装置の一例であり、コンピュータ1000は、CPU(Central Processing Unit)以外にも、例えば、MPU(Micro Processing Unit)やMCU(Memory Control Unit)やGPU(Graphics Processing Unit)を備えていてもよい。
図6では、コンピュータ1000が、CPU1001に加えて、上記の低精度演算回路11および高精度演算回路12を実装するGPU1007をさらに備える例が示されているが、低精度演算回路11および高精度演算回路12が他のプロセッサや演算装置(後述するMAC(multiplier-accumulator)や乗算器ツリーやALU(Arthmetic Logic Unit)アレイ等)により実装される場合は本例の限りではなく、当該他のプロセッサや演算装置を備えていればよい。また、低精度演算回路11および高精度演算回路12は異なるチップに実装されてもよく、具体的なチップ構成は特に限定されない。
補助記憶装置1003は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例として、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、CD-ROM、DVD-ROM、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ1000に配信される場合、配信を受けたコンピュータは1000がそのプログラムを主記憶装置1002に展開し、学習装置100における所定の処理を実行してもよい。
また、プログラムは、学習装置100における所定の処理の一部を実現するためのものであってもよい。さらに、プログラムは、補助記憶装置1003に既に記憶されている他のプログラムとの組み合わせで学習装置100における所定の処理を実現する差分プログラムであってもよい。
インタフェース1004は、他の装置との間で情報の送受信を行う。また、ディスプレイ装置1005は、ユーザに情報を提示する。また、入力デバイス1006は、ユーザからの情報の入力を受け付ける。
また、学習装置100における処理内容によっては、コンピュータ1000の一部の要素は省略可能である。例えば、コンピュータ1000がユーザに情報を提示しないのであれば、ディスプレイ装置1005は省略可能である。例えば、コンピュータ1000がユーザから情報入力を受け付けないのであれば、入力デバイス1006は省略可能である。
また、上記の各構成要素の一部または全部は、汎用または専用の回路(Circuitry)、プロセッサ等やこれらの組み合わせによって実施される。これらは単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。また、上記の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
上記の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
[回路構成]
次に、少なくとも高効率推論処理部103aの実装例とされる推論回路の構成をいくつか例示する。高効率推論処理部103aは、例えば、指定された層の各ユニットまたは指定されたユニットについて、当該ユニットへの入力を受け付けると、当該ユニットの出力を計算する推論処理を所定の低演算精度で行い、計算結果を出力してもよい。そのとき、高効率推論処理部103aは、ユニットの出力を計算する際に用いる入力の値および他の変数(重みや切片等のパラメタ)の値を入力として受け付けて、上記の処理を行ってもよい。以下、推論処理で行われる演算を推論演算という場合がある。
以下では、推論演算を行うための回路を「推論回路」と呼び、特に、高精度パラメタ更新処理部104bが行うパラメタ更新演算の演算精度よりも低い演算精度で推論演算を行うための回路を「高効率推論回路」と呼ぶ。このようにして、推論回路の演算精度をできるだけ低く、少なくとも高精度パラメタ更新処理部104bが行うパラメタ更新演算の演算精度よりも低くする(例えば、ビット幅を32ビットから16ビットにする、浮動小数点演算を固定少数点演算にする等)ことで、消費電力を低減する。なお、高効率推論回路と区別するために、高精度パラメタ更新処理部104bが行うパラメタ更新演算の演算精度と同じ演算精度で推論演算を行うための回路を「高精度推論回路」と呼ぶ場合がある。上述した高精度推論処理部(図示せず)は、そのような高精度推論回路により実現されてもよい。
以下に示す推論回路の構成は、推論演算が高精度で行われるか低精度で行われる回路かを問わず実現可能である。すなわち、高効率推論処理部103aと高精度推論処理部103bの違いが、当該処理部の動作を実装した演算回路において演算に用いる各変数、加算器、乗算器の精度のみであってもよい。
推論回路の最も単純な例は、乗算器と加算器を組み合わせた乗加算器(MAC)221を1つ備えた構成である(図7(a)の演算回路22a参照)。なお、符号21はバスを表している。
MAC221は、乗算器と、加算器と、3つの入力を保持する記憶素子と、1つの出力を保持する記憶素子とを含んでいてもよい(図7(b)参照)。図7(b)に示すMAC221は、3つの変数a,w,xを受け付けると、1つの出力変数z=a+w*xを計算する演算回路の例である。本例において、zがユニットの出力、a、wがパラメタ(推論処理では固定)、xがユニットの入力に相当する。このような構成において、当該回路の演算精度は、当該回路が含む乗算器や加算器のビット幅および小数点の取り扱い(浮動小数点か固定小数点か等)により決定される。例えば、高効率推論処理部103aが演算回路22aにより実現される場合、当該回路が含むMAC221における各変数(a,w,x,z)、加算器および乗算器による演算が低演算精度(第1の演算精度)に対応していればよい。このとき、当該回路における各変数、加算および乗算のすべてが同じ精度である必要はない(以下、同様)。例えば、各変数、加算および乗算のいずれかで用いられる精度が、高精度パラメタ更新処理部104bを実現する演算回路の各変数、加算および乗算のいずれかで用いられる精度よりも低ければよい。
図8~10は、推論演算用の演算回路(推論回路)の他の例を示す概略構成図である。推論回路は、例えば、図8に示す演算回路22bのように、複数のMAC221を並列に接続した構成(いわゆるGPUの構成)であってもよい。このような構成においても、当該回路の演算精度は、当該回路が含む乗算器や加算器のビット幅および小数点の取り扱い(浮動小数点か固定小数点か等)により決定される。
また、推論回路は、例えば図9に示す演算回路22cのように、メモリ層222を介して複数の乗加算ツリー223が並列に接続された構成であってもよい。図9に示す乗加算ツリー223は、4つの乗算器と2つの加算器と1つの加算器がツリー状に接続された構成の回路である。なお、図9に示す演算回路22cの一例は、非特許文献3にも開示されている。このような構成においても、当該回路の演算精度は、当該回路が含む乗算器や加算器のビット幅および小数点の取り扱い(浮動小数点か固定小数点か等)により決定される。
また、推論回路は、例えば図10に示す演算回路22dのように、メモリ層222を介して複数のALU224がアレイ状に接続された構成(シストリックアレイ構成)であってもよい。なお、図10に示す演算回路22dの一例は、非特許文献1にも開示されている。このような構成においても、当該回路の演算精度は、当該回路が含む乗算器や加算器のビット幅および小数点の取り扱い(浮動小数点か固定小数点か等)により決定される。
なお、例えば、高効率推論処理部103aが図8~図10に示した演算回路22b、演算回路22cまたは演算回路22dにより実現される場合、当該回路において演算に用いられる各変数、加算器または乗算器による演算が低演算精度(第1の演算精度)に対応していればよい。
一方、例えば、高精度推論処理部103bが演算回路22a,演算回路22b、演算回路22cまたは演算回路22dにより実現される場合、当該回路において演算に用いられる各変数、加算器または乗算器による演算が高演算精度(第2の演算精度)に対応していればよい。
次に、少なくとも高精度パラメタ更新処理部104bの実装例とされるパラメタ更新用回路の構成をいくつか例示する。高精度パラメタ更新処理部104bは、例えば、指定された層の各ユニットにおける各パラメタ、指定されたユニットにおける各パラメタまたは指定されたパラメタについて、当該パラメタを調整パラメータとして含む誤差関数などの目的関数の最適化問題を解いて該調整パラメータを更新するパラメタ更新処理を所定の高演算精度で行い、更新後の値を出力してもよい。そのとき、高精度パラメタ更新処理部104bは、最適化問題を解く際に用いる変数の値(更新前のパラメタの値を含みうる)をパラメータとして受け付けて、上記の処理を行ってもよい。以下、パラメタ更新処理で行われる演算をパラメタ更新演算という場合がある。
以下では、パラメタ更新演算を行うための回路を「パラメタ更新回路」と呼び、特に、高効率推論処理部103aが行う推論演算の演算精度よりも高い演算精度で思い学習演算を行うための回路を「高精度パラメタ更新回路」と呼ぶ。なお、高精度パラメタ更新回路と区別するために、高効率推論処理部103aが行う推論演算の演算精度と同じ演算精度でパラメタ更新演算を行うための回路を「高効率パラメタ更新回路」と呼ぶ場合がある。上述した高効率パラメタ更新処理部(図示せず)は、そのような高効率パラメタ更新回路により実現されてもよい。
以下に示すパラメタ更新回路の構成は、パラメタ更新演算が高精度で行われるか低精度で行われる回路かを問わず実現可能である。すなわち、高効率パラメタ更新処理部104aと高精度パラメタ更新処理部104bの違いが、当該処理部の動作を実装した演算回路において演算に用いる各変数、加算器または乗算器の精度のみであってもよい。
パラメタ更新回路の最も単純な例は、推論回路と同様、乗算器と加算器を組み合わせた乗加算器(MAC)221を1つ備えた構成である(図7(a)の演算回路22a,図7(b)のMAC221等参照)。また、パラメタ更新回路は、例えば、図8~10に示す演算回路22b、演算回路22c、演算回路22dによっても実現できる。すなわち、図7~図10に示す演算回路は、パラメタ更新演算用の演算回路の例でもある。
例えば、高精度パラメタ更新処理部104bが演算回路22a,演算回路22b、演算回路22cまたは演算回路22dにより実現される場合、当該回路において演算に用いられる各変数、加算器および乗算器による演算が高演算精度(第2の演算精度)に対応していればよい。このとき、各変数、加算および乗算のすべてが同じ精度である必要はなく、当該回路においてパラメタ更新演算に用いられる各変数、加算および乗算のいずれかの精度が、高効率推論処理部103aを実現する演算回路において推論演算に用いられる各変数、加算および乗算のいずれかの精度よりも高ければよい。
一方、例えば、高効率パラメタ更新処理部104aが演算回路22a,演算回路22b、演算回路22cまたは演算回路22dにより実現される場合、当該回路において演算に用いられる各変数、加算器および乗算器による演算が低演算精度(第1の演算精度)に対応していればよい。
[動作]
次に、本実施形態の学習装置100の動作を説明する。図11は、本実施形態の学習装置100の動作の例を示すフローチャートである。図11に示す動作は、例えば、制御部105による制御に基づいて実行される。
図11に示す例では、まず、制御部105が、学習前モデル記憶部101から学習前モデルを読み出すとともに、学習用データ記憶部102から学習用データを読み出す(ステップS11)。
次いで、制御部105は、必要に応じて高効率推論処理部103aおよび高精度推論処理部103bを制御して、第1層~第n層までの全ての層に含まれる各ユニットについて順に推論処理を実施する(ステップS12:順伝搬)。このとき、制御部105は、少なくとも一部のユニットの推論処理を高効率推論処理部103aに実施させる。なお、制御部105は、全てのユニットの推論処理を高効率推論処理部103aに実施させてもよいし、一部のユニットの推論処理を高効率推論処理部103aに実施させてもよい。順伝搬で、高効率推論処理部103aに一部のユニットの推論処理を実施させる場合、制御部105は、残りのユニットの推論処理を高精度推論処理部103bに実施させてもよい。
高効率推論処理部103aおよび高精度推論処理部103bは、制御部105からの指示に応じて、指定された層またはユニットの推論処理を実施する。
次いで、制御部105は、必要に応じて高効率パラメタ更新処理部104aおよび高精度パラメタ更新処理部104bを制御して、各層のユニットの出力を計算するためのパラメタのうちの所定のパラメタについて、パラメタ更新処理を実施する(ステップS13:パラメタ更新処理)。このとき、制御部105は、少なくとも一部のパラメタについてパラメタ更新処理を高精度パラメタ更新処理部104bに実施させる。なお、制御部105は、全てのパラメタのパラメタ更新処理を高精度パラメタ更新処理部104bに実施させてもよいし、一部のパラメタのパラメタ更新処理を高精度パラメタ更新処理部104bに実施させてもよい。パラメタ更新処理で、高精度パラメタ更新処理部104bに一部のパラメタのパラメタ更新処理のみを実施させる場合、制御部105は、残りのパラメタの全てのパラメタ更新処理を高効率パラメタ更新処理部104aに実施させてもよいし、残りのパラメタの一部のパラメタ更新処理を高効率パラメタ更新処理部104aに実施させてもよい。なお、後者の場合、一部のパラメタについてはパラメタ更新処理自体が省略される。
高効率パラメタ更新処理部104aおよび高精度パラメタ更新処理部104bは、制御部105からの指示に応じて、指定されたパラメタのパラメタ更新処理を実施する。
最後に、制御部105は、ステップS13で更新されたパラメタを含む学習済みモデルを学習後モデル記憶部107に記憶する(ステップS14)。
上記動作の他のバリエーションとして、例えば、複数の学習用データが保持されている場合には、学習用データの数分、ステップS11~ステップS14の動作を繰り返してもよい。なお、その場合、1つ前の学習用データに対する学習結果としての学習済みモデルが、次の学習用データに対する学習の学習前モデルとして使用される。
また、例えば、複数の学習用データが保持されている場合において、学習用データの数分、ステップS12~ステップS13の動作を繰り返し行うことも可能である。
さらには、学習用データの数に関わらず、同じ学習用データを使って上記のステップS11~ステップS14の繰り返し動作またはステップS12~ステップS14の繰り返し動作を、複数回繰り返すことも可能である(epoch処理)。
また、ステップS12の順伝搬で、例えば、低演算精度で推論処理を行う範囲(低精度推論範囲)を、予め定めておくだけでなく、ユーザから指定できるようにしたり、学習用データ毎やepoch処理の繰り返し毎に変化させることも可能である。
また、ステップS13のパラメタ更新処理で、例えば、高演算精度でパラメタ更新処理を行う範囲(高精度パラメタ更新範囲)を全結合層のみに限定してもよい。また、例えば、高精度パラメタ更新範囲、低演算精度でパラメタ更新処理を行う範囲(低精度パラメタ更新範囲)、パラメタ更新処理を行わない範囲を、予め定めておくだけでなく、ユーザから指定できるようにしたり、処理の度(学習用データ毎やepoch処理の繰り返し毎)に変化させることも可能である。
また、図12および図13は、本実施形態の学習装置100のより具体的な動作例を示すフローチャートである。なお、図12および図13に示す動作例は、学習装置100を構成するハードウエアに着目して各ステップの動作を例示した例である。なお、ハードウエア構成は図4に示す構成とした。
図12に示す例では、まず高効率推論処理部103aとしての低精度演算回路11が、制御部105としての制御装置14からの指示に応じて、学習用データ・学習前モデルをメモリ13から読み出す(ステップS111)。
次いで、該低精度演算回路11が、順伝搬の一部(本例では第1層~第(k-1)層までの各層に含まれる各ユニットの出力を計算する推論演算)を低演算精度で実施する(ステップS112)。そして、低精度演算回路11は、ステップS112の演算結果(本例では、第k-1層の各ユニットからの出力)をメモリ13に保存する(ステップS113)。
なお、本例では、学習前モデルは、入力層を第0層、出力層を第n層として、第0層から第n層までのn+1層の多層構造のニューラルネットワークであるとする。また、上記の第(k-1)層は、入力層(第0層)よりも後段でかつ出力層(第n層)よりも前段の中間層とする。すなわち、kは、0<k-1<nを満たす整数とする。
次いで、高精度推論処理部103bとしての高精度演算回路12が、制御装置14の指示に応じて、ステップS113で保存された演算結果(第k-1層の各ユニットからの出力)を読み出す(ステップS211)。
そして、該高精度演算回路12は、順伝搬の続き(本例では、第k層~第n層までの各層に含まれる各ユニットの出力を計算する推論演算)を高演算精度で実施する(ステップS212)。
次いで、高精度パラメタ更新処理部104bとしての高精度演算回路12が、制御装置14の指示に応じて、一部の層(本例では第k層~第n層までの各層)に含まれる各ユニットにおけるパラメタ(他ユニットとの結合重み等)を更新するためのパラメタ更新演算を高演算精度で実施する(ステップS212)。そして、高精度演算回路12は、ステップS212の演算結果(本例では、第k層~第n層の各層に含まれる各ユニットにおける更新後のパラメタ)をメモリ13に保存する(ステップS213)。
なお、ステップS213で演算結果として保存された更新後のパラメタが、上述した学習済みモデルに相当する。
図12に示す例は、まず低精度演算回路11が、高効率推論処理部103aとして、一部の層について推論処理を行った上で、高精度演算回路12が、高精度パラメタ更新処理部104bとして、残りの層について推論処理とパラメタ更新処理とを行う動作例である。
また、図13に示す例では、まず高効率推論処理部103aとしての低精度演算回路11が、制御部105としての制御装置14からの指示に応じて、学習用データ・学習前モデルをメモリ13から読み出す(ステップS121)。
次いで、該低精度演算回路11が、順伝搬(本例では第1層~第n層までの各層に含まれる各ユニットの出力を計算する推論演算)を低演算精度で実施する(ステップS122)。そして、低精度演算回路11は、ステップS122の演算結果(本例では、出力層である第n層のユニットからの出力)をメモリ13に保存する(ステップS123)。
なお、本例でも、学習前モデルは、入力層を第0層、出力層を第n層として、第0層から第n層までのn+1層の多層構造のニューラルネットワークであるとする。
次いで、高精度推論処理部103bとしての高精度演算回路12が、制御装置14の指示に応じて、ステップS123で保存された演算結果(出力層である第n層のユニットからの出力)を読み出す(ステップS221)。
次いで、該高精度演算回路12は、制御装置14の指示に応じて、一部の層(本例では第k層~第n層までの各層)に含まれる各ユニットにおけるパラメタ(他ユニットとの結合重み等)を更新するためのパラメタ更新演算を高演算精度で実施する(ステップS222)。そして、高精度演算回路12は、ステップS222の演算結果(本例では、第k層~第n層の各層に含まれる各ユニットにおける更新後のパラメタ)をメモリ13に保存する(ステップS223)。
なお、ステップS223で演算結果として保存された更新後のパラメタが、上述した学習済みモデルに相当する。
図13に示す例は、低精度演算回路11が、高効率推論処理部103aとして、全ての層について推論処理を行った上で、高精度演算回路12が、高精度パラメタ更新処理部104bとして、一部の層についてパラメタ更新処理を行う動作例である。
なお、図12のステップS213や図13のステップS223の後に、さらに、低精度演算回路11が、高効率パラメタ更新処理部104aとして、図14に示すような動作を行うことも可能である。
すなわち、低精度演算回路11が、高効率パラメタ更新処理部104aとして、メモリ13に保存されていた第k層~第n層の各層に含まれる各ユニットにおける更新後のパラメタを読み出す(ステップS231)。
次いで、該低精度演算回路11が、残りの層(本例では、第1層~第(k-1)層までの各層)に含まれる各ユニットにおけるパラメタ(他ユニットとの結合重み等)を更新するためのパラメタ更新演算を低演算精度で実施する(ステップS232)。そして、低精度演算回路11は、ステップS232の演算結果(本例では、第1層~第(k-1)層の各層に含まれる各ユニットにおける更新後のパラメタ)をメモリ13に保存する(ステップS233)。
本例の場合、ステップS213またはステップS223で演算結果として保存された更新後のパラメタとステップS233で演算結果として保存された更新後のパラメタとが、上述した学習済みモデルに相当する。
なお、図12~図14に示す動作は、1つの学習用データに対する学習処理の例である。したがって、複数の学習用データが保持されている場合には、学習用データの数分、上記動作や上記動作に含まれる各演算ステップを繰り返すことも可能である。また、学習用データの数に関わらず、同じ学習用データを使って上記動作または上記動作に含まれる各演算ステップを、複数回繰り返すことも可能である(epoch処理)。また、上記動作において高精度パラメタ更新範囲とされる第k層~第n層は全結合層であってもよいし、kをユーザが指定したり、処理の度に変化させることも可能である。
以上のように、本実施形態によれば、学習アルゴリズムの演算処理を、推論処理とパラメタ更新処理とに分け、推論処理の少なくとも一部を低演算精度で演算し、かつパラメタ更新処理の少なくとも一部を高演算精度で演算することで、高演算精度を必要とする演算部分を最適化できるので、消費電力を低減しつつ十分な精度での学習が可能になる。
実施形態2.
次に、本発明の第2の実施形態を説明する。図15は、第2の実施形態のデータ処理装置の要部の構成例を示すブロック図である。図15に示すデータ処理装置300は、低精度演算処理部31と、高精度演算処理部32と、通信路33と、データ変換部34とを備える。
低精度演算処理部31は、相対的に低い演算精度で所定の演算を行う処理部である。ここで、相対的に低い演算精度とは、高精度演算処理部32が行う演算の演算精度よりも低い演算精度であればよい。
高精度演算処理部32は、相対的に高い演算精度で所定の演算を行う処理部である。ここで、相対的に高い演算精度とは、低精度演算処理部31が行う演算の演算精度よりも高い演算精度であればよい。
低精度演算処理部31は、例えば、上記の高効率推論処理部103aや高効率パラメタ更新処理部104aであってもよい。また、高精度演算処理部32は、例えば、上記の高精度推論処理部103bや高精度パラメタ更新処理部104bであってもよい。本実施形態においても、低精度演算処理部31および高精度演算処理部32が行うデータ処理において実際に行われる演算に用いる数字データの値域の広さ・細かさの尺度(より具体的には、その処理部を実現する演算回路におけるビット幅および小数点の取り扱い等で定まる数字データの値域の広さ・細かさの尺度)を、「精度」または「演算精度」と呼ぶ。
本例では、低精度演算処理部31と高精度演算処理部32は、通信路33およびデータ変換部34を介して接続される。なお、データ変換部34は、高精度演算処理部32と通信路33との間に設けられる。
通信路33は、例えば、バスによって実現されてもよい。なお、通信路33は、チップ内部に設けられる接続回路(Inter-connect)によって実現されていてもよい。また、通信路33には、バスや接続回路だけでなく、該バスや該接続回路に接続されるメモリ(外部メモリやバッファ等)を含んでいてもよい。
データ変換部34は、低精度演算処理部31と高精度演算処理部32との間でやりとりされるデータを対象に、所定の変換処理を行う。このとき、データ変換部34によるデータ変換は、例えば、通信路33において行われる通信(データのやりとり)において、データ量(1データあたりの通信量)がより少なくなる演算精度のデータのデータ通信になるように行われる。
例えば、データ変換部34は、通信路33を通る各データが、低精度演算処理部31の演算精度と高精度演算処理部32の演算精度のうちのよりデータ量が少ない演算精度のデータになるように、送受信データの変換を行う。なお、データ量が同じであればより低い演算精度のデータになるように、送受信データの変換を行う。なお、図15の構成であれば、データ変換部34は、通信路33を通る各データが、低精度演算処理部31の演算精度のデータとなるようにデータの変換を行えばよい。低い方の演算精度に合わせることで、データ交換による演算精度の劣化を最小限にしつつ、低精度演算処理部31側でのデータ変換を不要にできる。
ここで、データの変換には、データ型を、通信端点とされる処理部のうちより低い演算精度のデータ型に合わせる型変換や、データの圧縮(特に、数値列圧縮や桁数の削減等の数値データ圧縮)や、2以上の変換後のデータの合成が含まれる。
データ変換部34は、例えば、低精度演算処理部31から高精度演算処理部32に向けて送信されたデータを通信路33を介して受信し、該受信データ(低演算精度のデータ)を高精度演算処理部32が扱う演算精度(高演算精度)のデータに変換して、高精度演算処理部32に渡す。また、データ変換部34は、例えば、高精度演算処理部32から低精度演算処理部31に向けて送信されたデータを受信し、該受信データ(高演算精度のデータ)を低精度演算処理部31が扱う演算精度(低演算精度)のデータに変換して、通信路33に送出する。
例えば、低精度演算処理部31の演算精度(ここでは、演算に用いられる数値のデータ型)が整数16ビット(INT16)であり、高精度演算処理部32の演算精度が浮動小数点32ビット(FP32)である場合、データ変換部34は、通信路33を通るデータが整数16ビットのデータとなるようにデータ変換を行えばよい。また、例えば、低精度演算処理部31の演算精度が整数16ビット(INT16)であり、高精度演算処理部32の演算精度が浮動小数点16ビット(FP16)である場合、データ変換部34は、通信路33を通るデータが整数16ビットのデータとなるようにデータ変換を行えばよい。
なお、通信路33を通るデータの通信が、片方向通信(例えば、低精度演算処理部31から高精度演算処理部32への送信のみ、高精度演算処理部32から低精度演算処理部31への送信のみ等)であってもよい。その場合、データ変換部34は、実際に行われる通信に対応したデータ変換のみを行えばよい。
本実施形態において、データ変換部34は、データ処理装置300の構成および動作に併せて設計されたデータ変換を行う専用のデータ変換回路により実現されていてもよい。データ変換部34を専用の回路に実装することで、設定値や状態の読み出しやそれらに応じた分岐といった汎用化のための処理を省くことができ、さらなる効率化を図ることができる。また、データ変換を専用化することで、複数のデータをまとめて変換処理したり、複数のデータのデータ変換を並列で行ってその結果をとりまとめて一括送信する等の処理も容易に実装できるので、さらなる効率化を図ることができる。ここで、データ変換の並列処理およびその結果のとりまとめは、各データの変換と変換後のデータの合成とを組み合わせたデータ変換例の1つである。データ変換部34は、そのようなデータ変換を、例えば、SIMD(Single instruction multiple data)演算により実現してもよい。
また、図16は、第2の実施形態のデータ処理装置の他の構成例を示すブロック図である。図15に示す例では、データ変換部34が、高精度演算処理部32側にのみ設けられていたが、データ変換部は低精度演算処理部31側にも設けることが可能である。図16に示すデータ処理装置300は、図15に示す構成と比べて、低精度演算処理部31と通信路33との間に、さらにデータ変換部35を備える点が異なる。すなわち、本例では、低精度演算処理部31と高精度演算処理部32が、データ変換部35、通信路33およびデータ変換部34を介して接続される。
データ変換部35は、低精度演算処理部31と高精度演算処理部32との間でやりとりされるデータを対象に、所定の変換処理を行う。
本例において、データ変換部34およびデータ変換部35によるデータ変換は、通信路33において行われる通信(データのやりとり)において、データ量が、低精度演算処理部31で扱う演算精度で行うデータ通信のデータ量よりもさらに少なくなる演算精度のデータのデータ通信になるように行われる。
例えば、データ変換部34およびデータ変換部35は、通信路33を通る各データが、低精度演算処理部31の演算精度で行うデータ通信量よりも少なくなる演算精度(以下、超低演算精度)のデータになるように、送受信データの変換を行う。
本例では、データ変換部34は、例えば、低精度演算処理部31から高精度演算処理部32に向けて送信されたデータを、データ変換部35および通信路33を介して受信し、該受信データ(データ変換部35による変換後の超低演算精度のデータ)を高精度演算処理部32が扱う演算精度(高演算精度)のデータに変換して、高精度演算処理部32に渡す。また、データ変換部34は、例えば、高精度演算処理部32から低精度演算処理部31に向けて送信されたデータを受信し、該受信データ(高演算精度のデータ)を超低演算精度のデータに変換して、通信路33に送出する。
また、データ変換部35は、例えば、高精度演算処理部32から低精度演算処理部31に向けて送信されたデータを、データ変換部34および通信路33を介して受信し、該受信データ(データ変換部34による変換後の超低演算精度のデータ)を低精度演算処理部31が扱う演算精度(低演算精度)のデータに変換して、低精度演算処理部31に渡す。また、データ変換部35は、例えば、高精度演算処理部32から低精度演算処理部31に向けて送信されたデータを受信し、該受信データ(高演算精度のデータ)を超低演算精度のデータに変換して、通信路33に送出する。
例えば、低精度演算処理部31の演算精度(ここでは、演算に用いられる数値のデータ型)が整数16ビット(INT16)であり、高精度演算処理部32の演算精度が浮動小数点32ビット(FP32)である場合、データ変換部34およびデータ変換部35は、通信路33を通るデータが、INT16よりもデータ量が小さい整数12ビット(INT12)や整数8ビット(INT8)になるようにデータを圧縮してもよい。データ変換部34およびデータ変換部35は、データ圧縮をする際、データが数値データとしての意味を失わないように精度のみを低下させる数値データ圧縮(例えば、下位ビットの削減等)を行う。
なお、データ変換部34およびデータ変換部35は、深層学習における活性化関数の特徴を用いてデータ圧縮を行うことも可能である。例えば、活性化関数の1つであるステップ関数を利用すると、データを1ビットに圧縮できる。また、ReLU(ランプ関数)を利用すると、データの符号ビットを削減できる。
また、データ変換部34およびデータ変換部35は、ビット数を削減するデータ変換を行う際に、半端なビット数の複数のデータを詰めて纏めたり、そのようにして纏められたデータを複数のデータに分解する処理(パック/アンパック処理)を行ってもよい。このようなパック/アンパック処理も、専用化することで効率化を図ることができる。
このようにして通信路33を通るデータ量を削減することで、演算精度が異なるコア(演算回路)間のデータ交換を高速化できる。さらに、コア間のデータ交換をメモリを介して行う場合には、データ交換のためのメモリの使用量を削減できるので、メモリ使用にかかる消費電力の削減も可能である。
なお、データ交換を行う異なる演算精度のコアの組み合わせが2以上ある場合、各組み合わせ毎に、当該組み合わせにおけるコア間通信の通信路の一方または両方の端点に、上記のデータ変換部34やデータ変換部35を設ければよい。
次に、本発明の概要を説明する。図17は、本発明のデータ処理装置の概要を示すブロック図である。図17に示すデータ処理装置500は、低精度演算処理手段501と、高精度演算処理手段502と、第1のデータ変換手段504とを備える。
低精度演算処理手段501(例えば、低精度演算処理部31)は、第1の精度で所定の演算を行う。
高精度演算処理手段502(例えば、高精度演算処理部32)は、第1の精度よりも高い第2の精度で所定の演算を行う。
第1のデータ変換手段504(例えば、データ変換部34)は、高精度演算処理手段502と低精度演算処理手段501との間でデータの受け渡しを行うための通信路503の高精度演算処理手段502側の端点に設けられる。
第1のデータ変換手段504は、接続先の高精度演算処理手段502との間で受け渡されるデータが高精度演算処理手段502で扱えるデータであるとともに、通信路503を通るデータ量が、第1の精度のデータを使用した場合のデータ量以下となり、かつ通信路503を通るデータの精度が第1の精度以下となるように、通信路503と高精度演算処理手段502との間を通るデータに対して所定の変換を行う。
このような構成により、高い精度を必要とする演算と高い精度を必要としない演算が混在する処理であっても効率化できる。
また、図18は、本発明のデータ処理回路の構成例を示す構成図である。図18に示すデータ処理回路600は、低精度演算回路601と、高精度演算回路602と、第1のデータ変換回路604とを備える。
低精度演算回路601(例えば、低精度演算処理部31や低精度演算回路11)は、第1の精度で所定の演算を行う。
高精度演算回路602(例えば、高精度演算処理部32や高精度演算回路12)は、第1の精度よりも高い第2の精度で所定の演算を行う。
第1のデータ変換回路604(例えば、データ変換部34)は、高精度演算回路602と低精度演算回路601との間でデータの受け渡しを行うための通信路603の高精度演算回路602側の端点に設けられ、通信路603と高精度演算回路602との間を通るデータに対して、予め定められた変換を行う。
このようなデータ処理回路600において、第1のデータ変換回路604と接続先の高精度演算回路602との間で受け渡されるデータが高精度演算回路602が扱うデータであり、通信路603を通るデータ量が、第1の精度のデータを使用した場合のデータ量以下であり、かつ当該通信路を通るデータの精度が第1の精度以下であるよう構成される。
このような構成によっても、高い精度を必要とする演算と高い精度を必要としない演算が混在する処理を効率化できる。
なお、データ処理回路600は、図19に示すように、さらに、通信路603の低精度演算回路601側の端点に設けられ、通信路603と低精度演算回路601との間を通るデータに対して、予め定められた変換を行う第2のデータ変換回路605を備えていてもよい。
このようなデータ処理回路600において、さらに、第2のデータ変換回路605と接続先の低精度演算回路601との間で受け渡されるデータが低精度演算回路601が扱うデータであるとともに、通信路603を通るデータ量が、第1の精度のデータを使用した場合のデータ量より少なく、かつ当該通信路603を通るデータの精度が第1の精度よりも低い構成であってもよい。
このような構成によれば、高い精度を必要とする演算と高い精度を必要としない演算が混在する処理をさらに効率化できる。
なお、上記の実施形態は以下の付記のようにも記載できる。
(付記1)第1の精度で所定の演算を行う低精度演算処理手段と、第1の精度よりも高い第2の精度で所定の演算を行う高精度演算処理手段と、高精度演算処理手段と低精度演算処理手段との間でデータの受け渡しを行うための通信路の高精度演算処理手段側の端点に設けられる第1のデータ変換手段とを備え、第1のデータ変換手段は、接続先の高精度演算処理手段との間で受け渡されるデータが高精度演算処理手段で扱えるデータであるとともに、通信路を通るデータ量が、第1の精度のデータを使用した場合のデータ量以下となり、かつ通信路を通るデータの精度が第1の精度以下となるように、通信路と高精度演算処理手段との間を通るデータに対して所定の変換を行うことを特徴とするデータ処理装置。
(付記2)第1のデータ変換手段は、通信路から、低精度演算処理手段より高精度演算処理手段に渡されるデータを第1の精度のデータとして受け付け、受け付けた第1の精度のデータを高精度演算処理手段で扱える精度のデータに変換し、第1のデータ変換手段は、高精度演算処理手段より低精度演算処理手段に渡されるデータを高精度演算処理手段で扱えるデータのままで受け付け、受け付けたデータを低精度演算処理手段で扱える精度のデータに変換する付記1に記載のデータ処理装置。
(付記3)通信路の低精度演算処理手段側の端点に設けられる第2のデータ変換手段をさらに備え、第1のデータ変換手段および第2のデータ変換手段は、接続先の演算処理手段との間で受け渡されるデータが接続先の演算処理手段で扱えるデータであるとともに、通信路を通るデータ量が、第1の精度のデータを使用した場合のデータ量よりも少なく、かつ通信路を通るデータの精度が第1の精度よりも低くなるように、通信路と接続先の演算処理手段との間を通るデータに対して所定の変換を行う付記1または付記2に記載のデータ処理装置。
(付記4)第1のデータ変換手段および第2のデータ変換手段は、通信路から、接続先の演算処理手段より相手側の演算処理手段に渡されるデータを第1の精度よりも低い所定の第3の精度のデータとして受け付け、受け付けた第3の精度のデータを接続先の演算処理手段で扱える精度のデータに変換し、第1のデータ変換手段および第2のデータ変換手段は、接続先の演算処理手段から相手先の演算処理手段に渡されるデータを接続先の演算処理手段で扱えるデータのままで受け付け、受け付けたデータを相手側の演算処理手段で扱える精度のデータに変換する付記3に記載のデータ処理装置。
(付記5)第1のデータ変換手段および第2のデータ変換手段の少なくともいずれかは、通信路に変換後のデータを送出する際に、複数の変換後のデータを纏めて送出し、第1のデータ変換手段および第2のデータ変換手段の少なくともいずれかは、通信路から、纏められた複数の変換後のデータを受け付け、受け付けた複数の変換後のデータを分解した上で、分解後の各データに対して、接続先の演算処理手段で扱える精度のデータへの変換を行う付記3または付記4に記載のデータ処理装置。
(付記6)第1のデータ変換手段および第2のデータ変換手段で行う変換が予め定められ、かつ固定されている付記3から付記5のうちのいずれかに記載のデータ処理装置。
(付記7)前記データ処理装置が、層状に結合された2以上のユニットで構成される所定の判別モデルを学習する学習装置であり、学習用データが入力されると、前記判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、前記推論処理の結果に基づいて、前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを行う学習手段を備え、前記学習手段は、前記低精度演算処理手段として、前記推論処理において行われる演算のうちの指定された演算を、第1の演算精度で実施する高効率推論手段と、前記高精度演算処理手段として、前記パラメタ更新処理において行われる演算のうちの指定された演算を、前記第1の演算精度よりも高い第2の演算精度で実施する高精度パラメタ更新手段とを含む付記1から付記6のうちのいずれかに記載のデータ処理装置。
(付記8A)第1の精度で所定の演算を行う低精度演算回路と、第1の精度よりも高い第2の精度で所定の演算を行う高精度演算回路と、高精度演算回路と低精度演算回路との間でデータの受け渡しを行うための通信路の高精度演算回路側の端点に設けられ、通信路と高精度演算回路との間を通るデータに対して、予め定められた変換を行う第1のデータ変換回路とを備え、第1のデータ変換回路と接続先の高精度演算回路との間で受け渡されるデータが高精度演算回路が扱うデータであり、通信路を通るデータ量が、第1の精度のデータを使用した場合のデータ量以下であり、かつ当該通信路を通るデータの精度が第1の精度以下であることを特徴とするデータ処理回路。
(付記8B)通信路の低精度演算回路側の端点に設けられ、通信路と低精度演算回路との間を通るデータに対して、予め定められた変換を行う第2のデータ変換回路をさらに備え、第2のデータ変換回路と接続先の低精度演算回路との間で受け渡されるデータが低精度演算回路が扱うデータであり、通信路を通るデータ量が、第1の精度のデータを使用した場合のデータ量より少なく、かつ当該通信路を通るデータの精度が第1の精度よりも低い付記8Bに記載のデータ処理回路。
(付記9)第1の精度で所定の演算を行う低精度演算処理手段と、第1の精度よりも高い第2の精度で所定の演算を行う高精度演算処理手段との間でデータの受け渡しを行うための通信路の高精度演算処理手段側の端点に設けられる第1のデータ変換手段が、接続先の高精度演算処理手段との間で受け渡されるデータが高精度演算処理手段で扱えるデータであるとともに、通信路を通るデータ量が、第1の精度のデータを使用した場合のデータ量以下となり、かつ通信路を通るデータの精度が第1の精度以下となるように、通信路と高精度演算処理手段との間を通るデータに対して所定の変換を行うことを特徴とするデータ処理方法。
(付記10)第1のデータ変換手段が、接続先の高精度演算処理手段との間で受け渡されるデータが高精度演算処理手段で扱えるデータであるとともに、通信路を通るデータ量が、第1の精度のデータを使用した場合のデータ量より少なく、かつ通信路を通るデータの精度が第1の精度より低くなるように、通信路と高精度演算処理手段との間を通るデータに対して所定の変換を行い、通信路の低精度演算処理手段側の端点に設けられる第2のデータ変換手段が、接続先の低精度演算処理手段との間で受け渡されるデータが低精度演算処理手段で扱えるデータであるとともに、通信路を通るデータ量が、第1の精度のデータを使用した場合のデータ量より少なく、かつ通信路を通るデータの精度が第1の精度より低くなるように、通信路と低精度演算処理手段との間を通るデータに対して所定の変換を行う付記9に記載のデータ処理方法。
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。