(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-12
(45)【発行日】2023-06-20
(54)【発明の名称】情報処理装置、情報処理方法および情報処理プログラム
(51)【国際特許分類】
G06N 3/02 20060101AFI20230613BHJP
【FI】
G06N3/02
(21)【出願番号】P 2019167656
(22)【出願日】2019-09-13
【審査請求日】2022-06-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】坂井 靖文
【審査官】加藤 優一
(56)【参考文献】
【文献】特開2019-139338(JP,A)
【文献】特開2019-148896(JP,A)
【文献】特許第6528893(JP,B1)
【文献】米国特許出願公開第2019/0236436(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00 -99/00
G06F 18/00 -18/40
(57)【特許請求の範囲】
【請求項1】
プロセッサを有する情報処理装置であって、
前記プロセッサが、
ニューラルネットワークで使用する変数を量子化する場合の量子化誤差を算出し、
前記ニューラルネットワークの過去の学習により得られた第1の認識率に関する参照情報と、前記ニューラルネットワークの計算により得られる第2の認識率とに基づいて、閾値を生成し、
算出された前記量子化誤差と、生成された前記閾値とに基づいて、前記ニューラルネットワークの計算に使用する変数のうち
の量子化する
第1の変数
と、データ型とを決定し、
前記第1の変数を前記データ型
で示した第2の変数を使用して、前記ニューラルネットワークの計算を実行する、情報処理装置。
【請求項2】
前記プロセッサは、複数の計算サイクルに分けて、前記ニューラルネットワークの計算を実行し、
前記ニューラルネットワークの計算を実行するステップは、前記複数の計算サイクルの各々において、
量子化する
前記第1の変数を決定する型決定期間に、1つ前の前記計算サイクルで決定したデータ型
で示された前記第2の変数を使用して前記ニューラルネットワークの計算を実行し、
前記型決定期間後の計算実行期間に、
前記第1の変数を前記決定されたデータ型
で示した前記第2の変数を使用して、前記ニューラルネットワークの計算を実行する、請求項1に記載の情報処理装置。
【請求項3】
前記量子化誤差を算出するステップ、前記閾値を生成するステップおよび前記量子化する
前記第1の変数を決定するステップは、前記型決定期間に実行され、前記計算実行期間には実行されない、請求項2に記載の情報処理装置。
【請求項4】
前記閾値を生成するステップは、
前記参照情報で示される前記第1の認識率と前記第2の認識率との第1の差分を算出し、
算出された前記第1の差分に基づいて前記閾値の更新量を生成し、
生成された前記更新量と現在の前記閾値とに基づいて、更新後の閾値を算出する、請求項1ないし請求項3のいずれか1項に記載の情報処理装置。
【請求項5】
前記閾値を生成するステップは、1つの前記閾値を
前記計算に使用する変数に共通に生成し、
前記量子化する変数を決定するステップは、生成された共通の前記閾値に基づいて、
前記計算に使用する変数のうち
の量子化する
前記第1の変数を決定する、請求項1ないし請求項4のいずれか1項に記載の情報処理装置。
【請求項6】
前記閾値を生成するステップは、変数の種類毎に前記閾値を生成し、
前記量子化する変数を決定するステップは、生成された種類別の前記閾値に基づいて、変数の種類毎に量子化する変数を決定する、請求項1ないし請求項4のいずれか1項に記載の情報処理装置。
【請求項7】
前記量子化する
前記第1の変数を決定するステップは、前記ニューラルネットワークで使用する複数の変数のうち、
前記第1の変数
を量子化するデータ型を前記量子化誤差と前記閾値とに基づいて決定し、前記第1の変数を除く
変数のデータ型を固定小数点型に固定する、請求項1ないし請求項6のいずれか1項に記載の情報処理装置。
【請求項8】
前記量子化誤差を算出するステップは、前記ニューラルネットワークに含まれる複数の層毎に、各層で使用される変数の前記量子化誤差を算出する、請求項1ないし請求項7のいずれか1項に記載の情報処理装置。
【請求項9】
前記量子化する変数を決定するステップは、前記算出された前記量子化誤差と前記生成された前記閾値とに基づいて、各層で使用される変数単位で量子化する変数を決定する、請求項8に記載の情報処理装置。
【請求項10】
前記ニューラルネットワークの計算を実行するステップは、前記決定されたデータ型
で示した前記第2の変数を使用して、前記ニューラルネットワークの学習を実行する、請求項1ないし請求項9のいずれか1項に記載の情報処理装置。
【請求項11】
前記ニューラルネットワークの計算を実行するステップは、前記決定されたデータ型
で示した前記第2の変数を使用して、前記ニューラルネットワークによる推論を実行する、請求項1ないし請求項9のいずれか1項に記載の情報処理装置。
【請求項12】
ニューラルネットワークで使用する変数を量子化する場合の量子化誤差を算出し、
前記ニューラルネットワークの過去の学習により得られた第1の認識率に関する参照情報と、前記ニューラルネットワークの計算により得られる第2の認識率とに基づいて、閾値を生成し、
算出された前記量子化誤差と、生成された前記閾値とに基づいて、前記ニューラルネットワークの計算に使用する変数のうち
の量子化する
第1の変数
と、データ型とを決定し、
前記第1の変数を前記データ型
で示した第2の変数を使用して、前記ニューラルネットワークの計算を実行する、処理を情報処理装置が有するプロセッサに実行させる情報処理方法。
【請求項13】
ニューラルネットワークで使用する変数を量子化する場合の量子化誤差を算出し、
前記ニューラルネットワークの過去の学習により得られた第1の認識率に関する参照情報と、前記ニューラルネットワークの計算により得られる第2の認識率とに基づいて、閾値を生成し、
算出された前記量子化誤差と、生成した前記閾値とに基づいて、前記ニューラルネットワークの計算に使用する変数のうち
の量子化する
第1の変数
と、データ型とを決定し、
前記第1の変数を前記データ型
で示した第2の変数を使用して、前記ニューラルネットワークの計算を実行する、処理を情報処理装置が有するプロセッサに実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【0002】
画像等のパターン認識装置において、入力パターンの特徴を抽出した特徴ベクトルを量子化誤差が小さくなるように量子化し、量子化した特徴ベクトルを用いてパターンを認識することで、メモリ量を削減する手法が提案されている(例えば、特許文献1参照)。
【0003】
学習型認識判断装置において、量子化範囲の個数が所定数になるまで量子化範囲を分割し、ネットワーク構造を入力データ分布に適合したものに変更して学習を実行することで、認識性能を向上する手法が提案されている(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2009-217583号公報
【文献】特開2001-142867号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ニューラルネットワークの計算を、浮動小数点数データを使用して実行する場合、固定小数点数データを使用する場合に比べて、メモリ量が増加し、計算時間が長くなるが、計算の精度は向上する。一方、ニューラルネットワークの計算を、固定小数点数データを使用して実行する場合、浮動小数点数データを使用する場合に比べて、メモリ量が削減され、計算時間が短くなるが、計算の精度は低下する。
【0006】
これにより、例えば、ニューラルネットワークによる画像認識等において固定小数点数データを使用する場合、浮動小数点数データを使用する場合に比べて認識率が低下するおそれがある。このように、ニューラルネットワークの計算時間と認識率とは相反する関係にある。
【0007】
1つの側面では、本発明は、ニューラルネットワークにおいて、認識率の低下を抑止しつつ計算時間を短縮することを目的とする。
【課題を解決するための手段】
【0008】
一つの観点によれば、情報処理装置は、プロセッサを有する情報処理装置であって、前記プロセッサが、ニューラルネットワークで使用する変数を量子化する場合の量子化誤差を算出し、前記ニューラルネットワークの過去の学習により得られた第1の認識率に関する参照情報と、前記ニューラルネットワークの計算により得られる第2の認識率とに基づいて、閾値を生成し、算出された前記量子化誤差と、生成された前記閾値とに基づいて、前記ニューラルネットワークの計算に使用する変数のうちの量子化する第1の変数と、データ型とを決定し、前記第1の変数を前記データ型で示した第2の変数を使用して、前記ニューラルネットワークの計算を実行する。
【発明の効果】
【0009】
1つの側面では、本発明は、ニューラルネットワークにおいて、認識率の低下を抑止しつつ計算時間を短縮することができる。
【図面の簡単な説明】
【0010】
【
図1】一実施形態における情報処理装置の一例を示すブロック図である。
【
図2】ニューラルネットワークの概要を示す説明図である。
【
図3】固定小数点による数値表現の一例を示す説明図である。
【
図4】
図1の情報処理装置によるニューラルネットワークの学習の一例を示す説明図である。
【
図5】統計情報の取得方法と、量子化範囲の決定方法と、量子化誤差の算出方法との一例を示す説明図である。
【
図6】
図1の情報処理装置によるニューラルネットワークの学習の一例を示すフロー図である。
【
図7】
図1の情報処理装置によるニューラルネットワークの学習の概要を示す説明図である。
【
図8】ニューラルネットワークの学習を実行した場合の認識率の推移の一例を示す説明図である。
【
図9】別の実施形態における情報処理装置の一例を示すブロック図である。
【
図10】
図9の情報処理装置が実行する処理の一例を示す機能ブロック図である。
【
図11】
図9の情報処理装置によるニューラルネットワークの学習の一例を示すフロー図である。
【
図12】別の実施形態における情報処理装置によるニューラルネットワークの学習の一例を示す説明図である。
【発明を実施するための形態】
【0011】
以下、図面を用いて実施形態を説明する。
【0012】
図1は、一実施形態における情報処理装置の一例を示す。
図1に示す情報処理装置100は、例えば、ニューラルネットワークを用いた画像処理等の学習または推論に使用され、あるいは、学習および推論の両方に使用される。
【0013】
情報処理装置100は、通信バス40で相互に接続されたCPU(Central Processing Unit)10、メモリ20およびアクセラレータ30を有する。なお、情報処理装置100は、CPU10の代わりに他のプロセッサを有してもよい。また、情報処理装置100は、図示した以外の要素を含んでもよく、さらに、情報処理装置100は、アクセラレータ30を持たずに、アクセラレータ30による計算処理をCPU10により実行してもよい。
【0014】
CPU10は、量子化誤差算出部12、閾値生成部14およびデータ型決定部16を有する。また、CPU10は、図示しない演算器を有する。
図1では、量子化誤差算出部12、閾値生成部14およびデータ型決定部16は、CPU10がメモリ20に保持された情報処理プログラムを実行することで実現される。
【0015】
量子化誤差算出部12、閾値生成部14およびデータ型決定部16の少なくともいずれかは、ハードウェアにより実現されてもよい。この場合、量子化誤差算出部12、閾値生成部14およびデータ型決定部16は、CPU10内ではなく、図示しないFPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)等に含まれてもよい。量子化誤差算出部12、閾値生成部14およびデータ型決定部16の機能は、後述する。
【0016】
メモリ20は、OS(Operating System)、アプリケーションプログラムおよび情報処理プログラム等の各種プログラムと、ニューラルネットワークの処理で使用するデータおよび変数等とを記憶する。メモリ20は、ニューラルネットワークの計算の途中で生成される中間データ等を記憶してもよい。また、量子化誤差算出部12、閾値生成部14およびデータ型決定部16が、CPU10により実行される情報処理プログラムにより実現される場合、メモリ20は、情報処理プログラムを記憶する。
【0017】
アクセラレータ30は、例えば、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)またはディープラーニング用の専用のプロセッサ等であり、ニューラルネットワークの計算を実行可能である。アクセラレータ30は、図示しない多数の固定小数点演算器および多数の浮動小数点演算器を有する。
【0018】
図2は、ニューラルネットワークの概要を示す。
図2に示すニューラルネットワークは、入力層と出力層との間に複数の隠れ層を含むディープニューラルネットワークである。例えば、隠れ層は、畳み込み層、プーリング層または全結合層等である。各層に示す丸印は、所定の計算をそれぞれ実行するノードを示す。
【0019】
情報処理装置100は、例えば、ミニバッチに含まれる複数の学習データ(入力データ)の各々を入力層に入力し、畳み込み層、プーリング層等の計算を順次実行することで、演算により得られる情報を入力側から出力側に順次伝える順伝播処理を実行する。ここで、ミニバッチは、学習に使用するデータセット(バッチ)を複数に分割したものであり、所定数の入力データ(画像データ等)を含む。例えば、畳み込み層では、前の層からの出力データ(中間データ)である活性と、学習データとして予め準備された重みとが畳み込み演算され、演算により得られた出力データである活性が次の層の入力データとして出力される。
【0020】
ミニバッチによる順伝播処理の実行後、出力層から出力される出力データと正解データとの差分(例えば、誤差の二乗和)を小さくするために勾配を算出する逆伝播処理が実行される。そして、逆伝播処理の結果に基づいて重み等の変数を更新する更新処理が実行される。例えば、逆伝播処理の計算に使用される重みの更新幅を決定するアルゴリズムとして、勾配降下法(gradient descent)が使用される。例えば、変数が更新された後、判定用のデータを使用してニューラルネットワークを動作させることで、認識率(正解率)が算出される。
【0021】
以下では、ニューラルネットワークの計算に使用される重み、活性および勾配を、変数とも称する。複数のミニバッチの各々において、順伝播処理、逆伝播処理および変数の更新処理を実行することで、認識率が徐々に上がっていき、ディープニューラルネットワークが最適化される。
【0022】
図3は、固定小数点による数値表現の一例を示す。
図3において、符号Sは符号ビットを示し、黒丸は小数点位置を示す。
図3の左欄に示した<a,b>は、aが固定小数点数のビット数を示し、bが小数部のビット数(すなわち、小数点位置)を示す。
【0023】
<8,3>は、固定小数点数が8ビットであり、小数部が下位の3ビットであり、整数部が符号ビットSを除く上位の4ビットであることを示す。<8,4>は、固定小数点数が8ビットであり、小数部が下位の4ビットであり、整数部が符号ビットSを除く上位の3ビットであることを示す。
【0024】
<16,10>は、固定小数点数が16ビットであり、小数部が下位の10ビットであり、整数部が符号ビットSを除く上位の5ビットであることを示す。<16,12>は、固定小数点数が16ビットであり、小数部が下位の12ビットであり、整数部が符号ビットSを除く上位の3ビットであることを示す。
【0025】
図4は、
図1の情報処理装置100によるニューラルネットワークの学習の一例を示す。
図4に示す学習では、ニューラルネットワークの計算に使用する変数のデータ型を決定するための学習期間である型決定期間と、型決定期間に決定したデータ型を使用して学習を実行する学習実行期間とを含む学習サイクルが複数回繰り返される。ここで、データ型は、浮動小数点数または固定小数点数のいずれかである。学習サイクルは、ニューラルネットワークの計算を実行する計算サイクルの一例であり、学習実行期間は、型決定期間後に、データ型決定部16が決定したデータ型の変数を使用して、ニューラルネットワークの計算を実行する計算実行期間の一例である。
【0026】
まず、最初の学習サイクルが開始される前に、ニューラルネットワークの学習を情報処理装置100に実行させるユーザ等の操作により、ニューラルネットワークのモデルが情報処理装置100に入力される(
図4(a))。
【0027】
また、ユーザ等の操作により、後述する閾値を生成するための基準となる参照情報が、情報処理装置100に入力される(
図4(b))。例えば、参照情報は、学習サイクルが開始される前(過去)において、浮動小数点数の変数を使用してニューラルネットワークの学習を実行したときの認識率の推移を示す情報を含む。あるいは、参照情報は、学習サイクルが開始される前(過去)においてニューラルネットワークの学習を実行したときに得られる最大の認識率を示す情報を含む。すなわち、参照情報は、ニューラルネットワークの過去の学習により得られた認識率に関する情報である。なお、参照情報は、
図4で学習するニューラルネットワークと類似するニューラルネットワークにおいて過去に実行した学習での認識率の推移を示す情報または最大の認識率を示す情報でもよい。
【0028】
例えば、最初の学習サイクルの型決定期間は、予め設定されたビット数(ビット幅)の固定小数点数の入力データと重み等の変数とを用いて、ニューラルネットワークの各層で計算が実行される。そして、順伝播処理の演算により固定小数点数の活性が生成され、逆伝播処理の演算により固定小数点数の勾配が層毎に生成され、重みが更新される。例えば、各層での計算は、
図1のCPU10がアクセラレータ30に指示することより、アクセラレータ30により実行される。
【0029】
図1の量子化誤差算出部12は、型決定期間でのニューラルネットワークの計算に使用する変数毎(すなわち、各層の変数毎)に固定小数点数データの統計情報を取得し、量子化範囲(ビット数とビット位置)を決定する(
図4(c))。なお、ビット数が予め決まっている場合、量子化誤差算出部12は、ビット位置(
図3に示した小数点位置)のみを決定する。
【0030】
例えば、量子化誤差算出部12は、変数毎に最上位ビットの分布を統計情報として取得する。そして、量子化誤差算出部12は、取得した統計情報を利用して、変数毎に固定小数点数データの量子化範囲を決定する。なお、各変数の統計情報は、CPU10の指示に基づいて、アクセラレータ30が演算を実行することで取得されてもよい。
【0031】
次に、量子化誤差算出部12は、決定した量子化範囲に含まれるように変換した固定小数点数データの、量子化する前の元の固定小数点数データに対する量子化誤差を、層毎に算出する(
図4(d))。例えば、量子化誤差算出部12は、各層の変数毎に、個々の固定小数点数データの量子化誤差を積算し、積算した量子化誤差の平均値を算出することで、層毎の量子化誤差を得る。
【0032】
例えば、固定小数点積和演算器を使用して畳み込み演算を実行する場合、入力オペランドと出力オペランドのビット範囲およびビット位置(すなわち、量子化範囲)は、互いに同じである。このため、層毎に、共通の量子化範囲を用いて量子化誤差を算出することができ、量子化誤差算出部12の処理量を削減することができる。統計情報の取得方法と、量子化範囲の決定方法と、量子化誤差の算出方法については、
図5で説明する。
【0033】
図1の閾値生成部14は、型決定期間での学習により得られた認識率と、参照情報として示される認識率とを比較し、比較結果に応じて閾値を生成する(
図4(e))。後述するように、閾値は、量子化誤差算出部12が算出した量子化誤差に基づいて、各変数のデータ型を浮動小数点型とするか固定小数点型とするかを決定するために使用される。
【0034】
例えば、この実施形態では、閾値生成部14は、1つの閾値を全ての変数に共通に生成する。閾値は、ニューラルネットワークの全体での学習結果である認識率に基づいて生成されるため、閾値生成部14は、学習で得た認識率と過去の認識率とを比較することで、1つの閾値を簡易に生成することができる。
【0035】
なお、量子化誤差の分布が所定量以上乖離した変数がある場合、量子化誤差のそれぞれの分布に合わせて複数の閾値が生成されてもよい。例えば、量子化誤差の分布が変数の種類毎に異なる場合、閾値生成部14は、変数の種類毎に閾値を生成してもよい。この場合、量子化誤差の分布の乖離の程度に合わせて、量子化誤差に合わせて変数の種類毎に最適な閾値を生成することができる。この結果、その後の学習での認識率を、浮動小数点数データを使用した過去の学習での認識率に近づきやすくすることができる。
【0036】
図1のデータ型決定部16は、層毎に、量子化誤差算出部12が算出した各層の変数の量子化誤差と、閾値生成部14が生成した閾値との大小関係を比較し、学習で使用するデータ型を層毎に決定する(
図4(f)、(g))。各層に入出力されるデータのビット範囲およびビット位置は互いに同じであるため、層毎に算出された量子化誤差を使用して、層毎に変数を量子化するかしないかを決定することで、データ型決定部16の処理量を削減することができる。
【0037】
例えば、量子化誤差が閾値より高い場合、認識率を上げるために浮動小数点型に決定され、量子化誤差が閾値以下の場合、認識率が浮動小数点型と同等であるため、固定小数点型に決定される。そして、決定した層毎のデータ型を使用して、型決定期間に続く学習実行期間での学習が実行される(
図4(h))。
【0038】
学習実行期間の終了後、次の学習サイクルが実行される(
図4(i))。そして、上述と同様に、量子化誤差算出部12により量子化誤差が算出され、閾値生成部14により閾値が生成され、データ型決定部16によりデータ型が決定される。
図4に示す学習サイクルは、ユーザにより入力されたデータセットに対応するデータ量(1エポック)の学習を所定の回数(エポック数)実行するまで繰り返し実行される。
【0039】
なお、型決定期間の学習は、様々な処理が含まれるため、学習するデータ量が同じ場合、型決定期間の学習時間は、学習実行期間の学習時間よりも長くなる。さらに、浮動小数点数データのみを使用した同じデータ量の学習の学習時間よりも長くなるおそれがある。このため、例えば、型決定期間で学習するデータは、学習サイクルで学習するデータの10%程度以下にすることが好ましい。例えば、学習サイクルが10エポックの場合、型決定期間は1エポック程度に設定される。しかしながら、学習サイクル中に占める型決定期間の比率は、上記に限定されるものではない。
【0040】
変数に使用するデータ型を型決定期間での学習に基づいて決定することで、変数に使用するデータ型を学習実行期間での学習を含めて決定する場合に比べて、学習サイクルの学習時間が長くなることを抑止することができる。すなわち、量子化誤差算出部12、閾値生成部14およびデータ型決定部16を型決定期間のみ動作させ、学習実行期間での動作を停止することで、学習サイクルの学習時間が長くなることを抑止することができる。
【0041】
図5は、統計情報の取得方法と、量子化範囲の決定方法と、量子化誤差の算出方法との一例を示す。
図5(a)は、
図2に丸印で示したノードの1つが入出力する変数(重み、活性または勾配)のいずれかを示す。例えば、初期の重みは、
図5に示す量子化範囲より広い所定のビット数(8ビットまたは16ビット等)を有するとする。中間データ(活性、勾配および学習により最適化された重み)は、例えば、固定小数点演算器による演算結果であり、ノードによる演算の実行毎にアキュムレータ(例えば、40ビット)に格納される。
図5の左右両側の破線は40ビットの範囲を示す。
【0042】
なお、初期の重みまたは中間データが浮動小数点数データである場合、浮動小数点数データは、40ビット以下の固定小数点数データに変換され、
図5(a)に示す状態になる。固定小数点数データへの変換は、CPU10により実行されてもよく、アクセラレータ30により実行されてもよい。
【0043】
図5(b)は、量子化誤差算出部12により取得される統計情報の一例として、変数の最上位ビットの分布を示す。例えば、変数の分布は、型決定期間で使用する各層の変数毎に取得される。固定小数点数データ(正値)において、最上位ビットは、符号ビットS(
図3)側に最初に"1"が現れるビットである。
図5において、符号a(a1-a11)は、各中間データの最上位ビットの位置を示す。符号b(b1-b11)は、各ビット位置でのビン数を示す。なお、
図5(b)において、左側は上位ビット側を示し、右側は下位ビット側を示す。
【0044】
量子化誤差算出部12は、変数の最上位ビットの分布に基づいて、量子化範囲を決定する(
図5(c))。この例では、量子化範囲は<7,3>に設定され、黒丸で示す小数点位置になる。例えば、量子化範囲は、ニューラルネットワークの層毎に決定される。
【0045】
次に、量子化誤差算出部12は、固定小数点数の変数(重み、活性、勾配)を、決定した量子化範囲に収まるように変換した場合の量子化誤差を、変数毎に算出する(
図5(d))。例えば、量子化誤差は、量子化範囲の最上位ビットを超えるビットを飽和処理し、量子化範囲の最下位ビットより下のビットを丸め処理することで算出される。
図5(d)に示す例では、量子化誤差は式(1)により算出される。
量子化誤差=|(a1・b1+a2・b2)-(a3・b1+a3・b2)|+|(a10・b10+a11・b11)-(a9・b10+a9・b11)| ‥(1)
式(1)において、"|"は絶対値を示し、"・"は、積を示す。第1項および第2項の差分の絶対値は、飽和誤差を示し、第3項および第4項の差分の絶対値は、丸め誤差を示す。そして、例えば、算出された量子化誤差の層毎の平均値が算出され、量子化誤差の平均値が、閾値と比較する量子化誤差に決定される。なお、例えば、算出された量子化誤差の層毎の最大値または分散が算出され、算出された最大値または分散が、閾値と比較する量子化誤差に決定されてもよい。
【0046】
なお、
図5(d)では、量子化誤差の算出方法を分かりやすくするために、
図5(b)の分布の絵を利用しているが、実際には、
図5(a)の各中間データにおいて、量子化範囲から外れるビットが飽和処理され、丸め処理される。また、
図5では、量子化誤差算出部12は、飽和処理と丸め処理とを両方実行して量子化誤差を算出するが、飽和処理または丸め処理のいずれかを実行して量子化誤差を算出してもよい。
【0047】
図6は、
図1の情報処理装置100によるニューラルネットワークの学習の一例を示す。
図6に示す処理は、CPU10が情報処理プログラムを実行することで実現される。すなわち、
図6は、情報処理装置100の制御方法および情報処理装置100の制御プログラムの一例を示す。
【0048】
まず、ステップS10において、情報処理装置100は、外部から入力されるニューラルネットワークのモデルをメモリ20等に格納する。なお、ステップS10において、学習に使用するデータセット(重みデータを含む)が、ニューラルネットワークのモデルとともに情報処理装置100に入力されてもよい。
【0049】
次に、ステップS12において、情報処理装置100は、外部から入力される参照情報(認識率)をメモリ20等に格納する。なお、ステップS10、S12の一方または両方は、
図6に示す処理とは別に、予め実行されてもよい。
【0050】
次に、ステップS14において、情報処理装置100は、アクセラレータ30を使用して、型決定期間でのニューラルネットワークの学習を実行する。次に、ステップS16において、量子化誤差算出部12は、
図5で説明したように、各層の変数(重み、活性および勾配)毎に、統計情報を取得し、量子化範囲(ビット数とビット位置)を決定し、層毎に量子化誤差を算出する。次に、ステップS18において、閾値生成部14は、学習により得られた認識率と、参照情報である認識率とを比較し、比較結果に応じて閾値を生成する。なお、ステップS16、S18は、逆の順で実行されてもよく、並列に実行されてもよい。
【0051】
次に、ステップS20において、データ型決定部16は、例えば、層毎に、量子化誤差算出部12が算出した量子化誤差と、閾値生成部14が生成した閾値との大小関係を比較し、学習で使用するデータ型を決定する。例えば、量子化誤差が閾値より高い場合、認識率を上げるために浮動小数点型に決定され、量子化誤差が閾値以下の場合、認識率が浮動小数点型と同等以上であるため、固定小数点型に決定される。ステップS14からステップS20までの処理は、
図4に示した型決定期間に実行される。
【0052】
次に、ステップS22において、情報処理装置100は、ステップS20で決定したデータ型の変数を使用して学習実行期間でのニューラルネットワークの学習を実行する。ニューラルネットワークの学習実行期間での学習は、アクセラレータ30を使用して実行される。次に、ステップS24において、情報処理装置100は、ユーザにより入力されたデータセットに対応するデータ量(1エポック)の学習を所定の回数(エポック数)実行した場合、
図6に示す処理を終了する。情報処理装置100は、学習を所定のエポック数実行していない場合、処理をステップS14に戻し、次の学習サイクルの型決定期間の学習が実行される。
【0053】
図7は、
図1の情報処理装置100によるニューラルネットワークの学習の概要を示す。
図7(a)は、学習の推移を示す。
図7(a)の右側は、認識率の推移を示し、横軸がイテレーション数を示し、縦軸が認識率を示す。上述したように、ニューラルネットワークのモデルと参照情報とが入力された後、型決定期間と学習実行期間とを含む学習サイクルが繰り返し実行される。参照情報は、例えば、ニューラルネットワークの過去の浮動小数点数データによる学習での認識率を示す。
【0054】
図7(b)は、順伝播処理と逆伝播処理を実行する毎に算出される変数(活性、勾配または重み)の1つの量子化誤差の変化を示す。
図7(a)の右側は、横軸がイテレーション数を示し、縦軸が量子化誤差を示す。
図7(b)に示すように、型決定期間では、まず、各層の変数毎に量子化誤差が算出される。量子化誤差算出部12は、型決定期間での学習を終了した場合、例えば、層毎に、
図7(b)に示す量子化誤差の平均値を算出する。層毎の量子化誤差の平均値は、
図7(c)に黒丸または白丸で示される。
図7(c)の右側は、横軸がイテレーション数を示し、縦軸が量子化誤差を示す。
【0055】
閾値生成部14は、
図7(a)の右側に示すように、型決定期間での学習により得られる認識率と参照情報で示される認識率との比較に基づいて、閾値を生成(更新)する。閾値生成部14は、2回目以降の型決定期間において、学習により得られる認識率が参照情報で示される認識率より低い場合、閾値を下げ、学習により得られる認識率が参照情報で示される認識率より高い場合、閾値を上げる。なお、閾値生成部14は、学習により得られる認識率が参照情報で示される認識率と同じ場合、閾値を更新しない。
【0056】
データ型決定部16は、
図7(c)の右側に示すように、量子化誤差の平均値が閾値より高い層(黒丸)の学習実行期間での学習を浮動小数点型により実行することを決定する。また、データ型決定部16は、量子化誤差の平均値が閾値以下の層(白丸)の学習実行期間での学習を固定小数点型により実行することを決定する。
図7(c)の黒丸と白丸の数の差で分かるように、認識率と相関がある閾値が低いほど学習に使用される浮動小数点数データの変数の数が増加し、学習に使用される固定小数点数データの変数の数が減少する。また、閾値が高いほど、学習に使用される浮動小数点数データの変数の数が減少し、学習に使用される固定小数点数データの変数の数が増加する。
【0057】
浮動小数点演算器による浮動小数点数データの演算に掛かる時間は、固定小数点演算器による固定小数点数データの演算に掛かる時間より長い。このため、型決定期間で得られた認識率が参照情報よる認識率より低く、閾値が低くなるほど、その後の学習実行期間において、計算時間は増加するものの、認識率を参照情報による認識率に近づけることができる。
【0058】
一方、認識率が参照情報による認識率より高く、閾値が高くなるほど、その後の学習実行期間において、認識率を参照情報による認識率と同等にして、計算時間を短縮することができる。したがって、学習による認識率に応じて、ニューラルネットワークの計算に使用する浮動小数点数データと固定小数点数データとの比率を変えることで、認識率の低下を抑止しつつ計算時間を短縮することができる。
【0059】
図8は、ニューラルネットワークの学習を実行した場合の認識率の推移の一例を示す。例えば、
図8は、データセットの一種であるImageNetを使用して、学習済みのネットワークの一種であるresnet-50の学習を実行する場合の例を示し、横軸はイテレーション数を示し、縦軸は認識率を示す。
【0060】
図4および
図6等で説明したように、認識率により変化させた閾値に応じてニューラルネットワークの各層の計算に使用するデータ型を決める本実施形態では、全てのデータ型を浮動小数点型に固定する場合と同様の認識率の推移にすることができる。
【0061】
上述したように、固定小数点型データを使用した学習に掛かる時間は、浮動小数点型データを使用した学習に掛かる時間よりも短い。したがって、複数の層の少なくともいずれかにおいて閾値に応じてデータ型を浮動小数点型から固定小数点型に変更する場合、認識率の低下を抑止しつつ計算時間を短縮することができる。
【0062】
これに対して、比較例として示すように、
図8に示すデータセットとニューラルネットワークとの条件で、全てのデータ型を固定小数点型に固定する場合、学習を繰り返しても認識率は向上しない場合がある。
【0063】
以上、この実施形態では、情報処理装置100は、今回の学習と過去の学習とでそれぞれ得られた認識率に基づいて、量子化誤差の閾値を生成し、学習により得られた変数を量子化した場合の量子化誤差を算出する。そして、情報処理装置100は、算出した量子化誤差が閾値より大きいか小さいかにより、後続の学習で使用する変数のうち、固定小数点数データに量子化する変数を決定する。
【0064】
これにより、認識率が過去の認識率に比べて高い場合に、固定小数点数データの変数の割合を相対的に増やすことができ、認識率が過去の認識率に比べて低い場合に、固定小数点数データの変数の割合を相対的に減らすことができる。閾値に応じて固定小数点数データの変数の割合を変えながらニューラルネットワークの学習を実行することで、固定小数点数データの変数のみで学習を実行する場合に比べて、認識率を向上することができる。また、浮動小数点数データの変数のみでニューラルネットワークの学習を実行する場合に比べて、計算時間を短縮することができる。この結果、ニューラルネットワークの学習において、認識率の低下を抑止しつつ計算時間を短縮することができる。
【0065】
変数に使用するデータ型を型決定期間での学習に基づいて決定することで、変数に使用するデータ型を学習実行期間での学習を含めて決定する場合に比べて、学習サイクルの学習時間が長くなることを抑止することができる。すなわち、量子化誤差算出部12、閾値生成部14およびデータ型決定部16を型決定期間のみ動作させ、学習実行期間での動作を停止することで、学習サイクルの学習時間が長くなることを抑止することができる。
【0066】
閾値は、ニューラルネットワーク全体での学習結果である認識率に基づいて生成されるため、閾値生成部14は、学習で得た認識率と過去の認識率とを比較することで、1つの閾値を簡易に生成することができる。また、例えば、量子化誤差の分布が変数の種類毎に異なる場合、量子化誤差のそれぞれの分布に合わせて複数の閾値を生成することで、その後の学習での認識率を、浮動小数点数データを使用した過去の学習での認識率に近づきやすくすることができる。
【0067】
各層に入出力されるデータのビット範囲およびビット位置は互いに同じであるため、層毎に、共通の量子化範囲を用いて量子化誤差を算出することで、量子化誤差算出部12の処理量を削減することができる。同様に、層毎に算出された量子化誤差を使用して、各層で量子化する変数を決定することで、データ型決定部16の処理量を削減することができる。
【0068】
図9は、別の実施形態における情報処理装置の一例を示す。
図1と同様の要素については同じ符号を付し、詳細な説明は省略する。また、
図2から
図8と同様の内容については、詳細な説明は省略する。
図9に示す情報処理装置100Aは、例えば、ニューラルネットワークを用いた画像処理等の学習または推論に使用され、あるいは、学習および推論の両方に使用される。
【0069】
例えば、情報処理装置100Aは、サーバであり、通信バス40で相互に接続されたCPU10A、メモリ20、アクセラレータ30、補助記憶装置50、通信インタフェース60および入出力インタフェース70を有する。なお、情報処理装置100Aは、図示した以外の要素を含んでもよい。
【0070】
CPU10Aは、
図1に示す閾値生成部14の代わりに閾値生成部14Aを有し、
図1に示すCPU10に統計情報取得部11が追加される。閾値生成部14Aについては、
図10で説明する。統計情報取得部11は、
図2に示したニューラルネットワークの計算に使用する各層の変数(重み、活性、勾配)毎に統計情報を取得する。このため、量子化誤差算出部12は、統計情報の取得機能を持たない。量子化誤差算出部12は、統計情報取得部11が取得した統計情報に基づいて、層毎に量子化誤差を算出する。
【0071】
統計情報取得部11、量子化誤差算出部12、閾値生成部14Aおよびデータ型決定部16は、CPU10がメモリ20に保持された情報処理プログラムを実行することで実現される。なお、統計情報取得部11、量子化誤差算出部12、閾値生成部14Aおよびデータ型決定部16の少なくともいずれかは、ハードウェアにより実現されてもよい。
【0072】
補助記憶装置50は、CPU10Aが実行するOS(Operating System)および情報処理プログラム等の各種プログラムと、ニューラルネットワークの計算で使用するデータ、重み等の各種変数等とを記憶する。例えば、補助記憶装置50が記憶するプログラムは、メモリ20に転送され、CPU10Aにより実行される。また、補助記憶装置50が記憶するニューラルネットワークの計算で使用するデータおよび各種変数は、ニューラルネットワークの学習時に補助記憶装置50からメモリ20に転送される。
【0073】
通信インタフェース60は、例えば、ネットワークを介して他の情報処理装置等と通信する機能を有する。これにより、ニューラルネットワークの計算を複数の情報処理装置を使用して並列に実行することが可能になる。入出力インタフェース70は、情報処理装置100Aに接続される記録媒体80に対してデータを入出力する機能を有する。
【0074】
例えば、記録媒体80は、CD(Compact Disc:登録商標)、DVD(Digital Versatile Disc:登録商標)またはUSB(Universal Serial Bus)メモリ等であり、情報処理プログラムが記録されてもよい。記録媒体80に記録された情報処理プログラムは、入出力インタフェース70を介して補助記憶装置50に転送された後、メモリ20上に展開され、CPU10Aにより実行される。
【0075】
図10は、
図9の情報処理装置100Aが実行する処理の一例を示す。閾値生成部14Aは、差分算出部14a、更新量生成部14b、差分算出部14cおよび閾値保持部14dを有する。閾値生成部14Aは、
図4に示した型決定期間の学習が終了する毎に、当該学習サイクルの学習実行期間に使用する変数のデータ型を決めるための閾値Qth(t)を生成(更新)する。
【0076】
例えば、閾値Qth(t)は、全ての層および全ての変数に共通に使用される。このため、情報処理装置100Aは、閾値生成部14Aを1つ持てばよく、閾値生成部14Aを複数持つ場合に比べて情報処理プログラムの規模またはハードウェアの規模を削減することができる。
【0077】
差分算出部14aは、ユーザ等の操作により、情報処理装置100Aに入力される認識率Aref(参照情報)と、ニューラルネットワークの学習により得られた認識率Aoとの差を算出し、算出した差を更新量生成部14bに出力する。例えば、認識率Aoは、型決定期間に複数回実行されるミニバッチ毎に得られる認識率の平均値である。なお、認識率Aoは、ミニバッチ毎に得られる認識率の最大値であってもよく、最小値であってもよい。認識率Arefは、浮動小数点数データを使用したニューラルネットワークの過去の学習により予め得られている。
【0078】
更新量生成部14bは、
図10中の式(1)に示すように、認識率Arefと認識率Aoとの差に応じて関数f(Aref-Ao)の値を算出し、算出した値を差分算出部14cに出力する。関数f(Aref-Ao)の値は、認識率Arefが認識率Aoより大きい場合、当該学習サイクルの学習実行期間での浮動小数点数データの使用率を上げて、認識率Aoを上げるために、+Gainになる。また、関数f(Aref-Ao)の値は、認識率Arefが認識率Aoより小さい場合、当該学習サイクルの学習実行期間での固定小数点数データの使用率を上げて、計算時間を短縮するために、-Gainになる。例えば、Gainは、所定の正値である。関数f(Aref-Ao)の値は、認識率Arefが認識率Aoと等しい場合、0になる。
【0079】
差分算出部14cは、
図10中の式(2)に示すように、閾値保持部14dが保持する1つ前の学習サイクルの型決定期間で算出した閾値Qth(t-1)から関数f(Aref-Ao)の値を引き、当該学習サイクルで使用する閾値Qth(t)を算出する。関数f(Aref-Ao)の値は、"+Gain"、"-Gain"または"0"である。差分算出部14cは、算出した閾値Qth(t)をデータ型決定部16および閾値保持部14dに出力する。差分算出部14cは、更新後の閾値Qth(t)を算出する閾値算出部の一例である。
【0080】
例えば、認識率Arefが認識率Aoより大きい場合、閾値Qth(t)は、閾値Qth(t-1)より小さくなる。認識率Arefが認識率Aoより小さい場合、閾値Qth(t)は、閾値Qth(t-1)より大きくなる。認識率Arefが認識率Aoと等しい場合、閾値Qth(t)は、閾値Qth(t-1)と同じ値になる。閾値保持部14dは、閾値Qth(t)を保持し、保持した閾値Qth(t)を次の学習サイクルの型決定期間において差分算出部14cに出力する。
【0081】
このように、認識率Arefと認識率Aoとの差に基づいて、閾値Qth(t)を更新するための増減量を示す関数f(Aref-Ao)の値を生成することで、前回の閾値Qth(t-1)を使用して閾値Qth(t)を生成することができる。これにより、閾値Qth(t)が前回の閾値Qth(t-1)に対して急激に変化することを抑止することができ、認識率が急激に変化することを抑止することができる。
【0082】
なお、閾値保持部14dは、初期状態において標準の閾値を保持している。これにより、閾値生成部14Aは、閾値を一度も更新していない初回の学習サイクルの型決定期間において、閾値Qth(t)を生成することができる。
【0083】
データ型決定部16は、
図4(f)、(g)および
図7(c)での説明と同様に、各層の変数毎に、量子化誤差算出部12が算出した各層の変数の量子化誤差Qerrと、閾値生成部14Aが更新した閾値Qth(t)との大小関係を比較する。そして、データ型決定部16は、比較結果に基づいて、学習で使用するデータ型を層毎に決定する。情報処理装置100Aは、決定したデータ型を使用して
図4の学習実行期間での学習を、アクセラレータ30を使用して実行する。なお、認識率Aoは、各学習サイクルにおいて、型決定期間および学習実行期間の学習のミニバッチ毎の認識率の平均値等である。また、認識率Aoの閾値生成部14Aへのフィードバックは、型決定期間のみ行われ、学習実行期間では行われない。
【0084】
型決定期間でのニューラルネットワークの学習により算出された各層の活性、勾配および重みは、統計情報取得部11に出力される。例えば、統計情報取得部11は、層毎の活性、勾配および重みのそれぞれの統計情報を取得し、取得した統計情報を量子化誤差算出部12に出力する。例えば、統計情報は、
図5で説明したように、固定小数点数データで表される変数(重み、勾配および活性)の各々の最上位ビットの分布である。なお、ニューラルネットワークで使用した変数が浮動小数点数データの場合、固定小数点数データとして統計情報が取得される。浮動小数点数データから固定小数点数データに変換する場合、変換処理は、統計情報取得部11が実行してもよく、CPU10Aが実行してもよく、アクセラレータ30が実行してもよい。
【0085】
量子化誤差算出部12は、
図5で説明したように、統計情報に基づいて、固定小数点数データの量子化範囲を決定する。また、量子化誤差算出部12は、固定小数点数の変数(重み、活性、勾配)を、決定した量子化範囲に収まるように変換した場合の量子化誤差を、変数毎に算出する。そして、量子化誤差算出部12は、変数毎に算出した量子化誤差に基づいて、例えば、層毎の量子化誤差Qerrを算出し、算出した量子化誤差Qerrをデータ型決定部16に出力する。
【0086】
図11は、
図9の情報処理装置100Aによるニューラルネットワークの学習の一例を示す。
図11に示す処理は、CPU10Aが情報処理プログラムを実行することで実現される。すなわち、
図11は、情報処理装置100Aの制御方法および情報処理装置100Aの制御プログラムの一例を示す。
図6と同様の処理については、詳細な説明は省略する。
図11の処理が開始される前、
図6のステップS10、S12によるニューラルネットワークのモデルと参照情報の情報処理装置100Aへの入力が完了している。
【0087】
まず、ステップS30において、情報処理装置100Aは、アクセラレータ30を使用して、型決定期間でのニューラルネットワークの学習(ミニバッチ)を実行する。次に、ステップS32において、情報処理装置100Aは、ミニバッチの学習での認識率を算出する。また、情報処理装置100Aは、ミニバッチの学習で算出された変数(活性、勾配および重み)をメモリ20等に記憶させる。
【0088】
次に、ステップS34において、情報処理装置100Aは、型決定期間に対応する所定数のミニバッチを実行した場合、処理をステップS36に移行し、型決定期間に対応する所定数のミニバッチを実行していない場合、処理をステップS30に戻す。
【0089】
型決定期間の全てのミニバッチ(学習)が終了した場合、ステップS36において、情報処理装置100Aは、
図6のステップS16と同様に、各層の変数(重み、活性および勾配)毎に、統計情報を取得する。そして、情報処理装置100Aは、量子化範囲(ビット数とビット位置)を決定し、層毎に量子化誤差を算出する。例えば、ステップS36の処理は、量子化誤差算出部12により実行される。
【0090】
次に、ステップS38において、情報処理装置100Aは、例えば、ステップ32で得られたミニバッチ毎の認識率の平均値が、参照情報の認識率より低いか否かを判定する。認識率の平均値が、参照情報の認識率より低い場合、処理はステップS40に移行され、認識率の平均値が、参照情報の認識率以上の場合、処理はステップS42に移行される。
【0091】
ステップS40において、情報処理装置100Aは、前回の学習サイクルの型決定期間に生成した閾値を下げることで、今回の学習サイクルの学習実行期間で使用するデータ型を決定するための閾値を更新し、処理をステップS44に移行する。ステップS42において、情報処理装置100Aは、前回の学習サイクルの型決定期間に生成した閾値を上げることで、今回の学習サイクルの学習実行期間で使用するデータ型を決定するための閾値を生成し、処理をステップS44に移行する。ステップS40、S42の処理は、閾値生成部14Aにより実行される。
【0092】
ステップS44において、情報処理装置100Aは、
図6のステップS20と同様に、層毎に量子化誤差の平均値が閾値より大きいか否かを判定する。量子化誤差が閾値より大きい場合、処理はステップS46に移行され、量子化誤差が閾値以下の場合、処理はステップS48に移行される。なお、ステップS44、S46、S48の処理は、層毎に実行される。
【0093】
ステップS46において、情報処理装置100Aは、対象の層の計算に浮動小数点数データを使用することを決定し、処理をステップS50に移行する。ステップS48において、情報処理装置100Aは、対象の層の計算に固定小数点数データを使用することを決定し、処理をステップS50に移行する。
【0094】
ステップS50において、情報処理装置100Aは、
図6のステップS22と同様に、ステップS46またはステップS48で決定した層毎のデータ型を使用して学習実行期間でのニューラルネットワークの学習を実行する。次に、ステップS52において、情報処理装置100Aは、全ての学習サイクルの学習が終了した場合、
図11に示す処理を終了する。情報処理装置100Aは、実行していない学習サイクルがある場合、処理をステップS30に戻し、次の学習サイクルを実行する。
【0095】
なお、
図9から
図11に示す実施形態での認識率の推移は、
図8における閾値に応じて浮動小数点型と固定小数点型とを切り替える場合の認識率の推移と同様であり、全てのデータ型を浮動小数点型に固定する場合の認識率の推移と同様である。
【0096】
以上、
図9から
図11に示す実施形態においても、
図1から
図8に示す実施形態と同様の効果を得ることができる。例えば、認識率が過去の認識率に比べて高い場合に、固定小数点数データの変数の割合を相対的に増やすことができ、認識率が過去の認識率に比べて低い場合に、固定小数点数データの変数の割合を相対的に減らすことができる。閾値に応じて固定小数点数データの変数の割合を変えながらニューラルネットワークの学習を実行することで、固定小数点数データの変数のみで学習を実行する場合に比べて、認識率を向上することができる。また、浮動小数点数データの変数のみでニューラルネットワークの学習を実行する場合に比べて、計算時間を短縮することができる。この結果、ニューラルネットワークの計算において、認識率の低下を抑止しつつ計算時間を短縮することができる。例えば、ニューラルネットワークの学習において、認識率の低下を抑止しつつ計算時間を短縮することができる。
【0097】
さらに、
図9から
図11に示す実施形態では、閾値生成部14Aは、認識率Arefと認識率Aoとの差に基づいて、閾値Qth(t)を更新するための増減量を示す関数f(Aref-Ao)の値を生成する。ことで、前回の閾値Qth(t-1)を使用して閾値Qth(t)を生成することができる。これにより、閾値Qth(t)が前回の閾値Qth(t-1)に対して急激に変化することを抑止することができ、認識率が急激に変化することを抑止することができる。
【0098】
図12は、別の実施形態における情報処理装置によるニューラルネットワークの学習の一例を示す。上述した実施形態と同じ要素については、詳細な説明は省略する、
図12に示すニューラルネットワークの学習を実行する情報処理装置は、
図1に示す情報処理装置100の構成と同様である。
【0099】
この実施形態は、学習実行期間の開始点が型決定期間の開始点と一致することを除き、
図7(a)の右側に示した学習の推移と同様である。すなわち、情報処理装置は、各学習サイクルにおいて、型決定期間にニューラルネットワークの計算に使用する変数のデータ型を決定する。そして、型決定期間で決定した変数のデータ型を使用して、型決定期間で使用した学習データを含めて、学習実行期間での学習を実行する。
【0100】
例えば、型決定期間では、ニューラルネットワークの計算に使用する全て変数が量子化されるため、認識率が低下する傾向にある。そこで、学習実行期間の開始点を型決定期間の開始点と同じにすることで、
図7(a)の右側に示した学習の推移に比べて、ニューラルネットワークの学習時に変数が量子化されている期間を減らすことができる。この結果、学習されるニューラルネットワークの認識率を向上することができる。
【0101】
以上、この実施形態においても、
図1から
図11に示す実施形態と同様の効果を得ることができる。例えば、認識率が過去の認識率に比べて高い場合に、固定小数点数データの変数の割合を相対的に増やすことができ、認識率が過去の認識率に比べて低い場合に、固定小数点数データの変数の割合を相対的に減らすことができる。
【0102】
さらに、
図12に示す実施形態では、各学習サイクルにおいて、学習実行期間の開始点を型決定期間の開始点と一致させることで、学習されるニューラルネットワークの認識率を向上することができる。
【0103】
なお、上述した実施形態では、浮動小数点数データを使用して学習を実行した場合の認識率を示す参照情報と、型決定期間の学習で得られる認識率とを比較することで、閾値を生成(更新)する例を示した。しかしながら、参照情報は、浮動小数点数データを使用した学習時の損失関数(Train Loss)または学習後の評価での浮動小数点数データを使用したテスト時の損失関数(Test Loss)でもよい。この場合、閾値生成部14は、浮動小数点数データでの損失関数と、型決定期間の学習で得られる損失関数とを比較することで閾値を生成(更新)する。
【0104】
また、上述した実施形態では、ニューラルネットワークの学習時に、認識率に応じて閾値を生成し、閾値と量子化誤差との大小関係に応じて学習に使用するデータ型を決定する例を示した。しかしながら、ニューラルネットワークの推論時に、認識率に応じて閾値を生成し、閾値と量子化誤差との大小関係に応じて推論に使用するデータ型を決定してもよい。
【0105】
この場合、例えば、
図4の学習サイクルは推論サイクルに変更され、
図4の学習実行期間は推論実行期間に変更される。推論サイクルの長さは、推論システムが実行する推論の対象物に応じて任意の長さに設定される。また、
図6のステップS14の"型判定期間の学習を実行"は、"型判定期間の推論を実行"に変更される。
図6のステップS18の"学習により得られた認識率"は、"推論により得られた認識率"に変更される。
図6のステップS20の"学習で使用するデータ型を決定"は、"推論で使用するデータ型に決定"に変更される。
図6のステップS22の"学習実行期間の学習を実行"は、"推論実行期間の推論を実行"に変更される。
図7においても、"学習"は、"推論"に変更される。
【0106】
これにより、ニューラルネットワークの学習時に、認識率に応じて閾値を生成し、閾値と量子化誤差との大小関係に応じて学習に使用するデータ型を決定する場合と同様の効果を得ることができる。例えば、閾値に応じて固定小数点数データの変数の割合を変えながらニューラルネットワークの推論を実行することで、固定小数点数データの変数のみで推論を実行する場合に比べて、認識率を向上することができる。また、浮動小数点数データの変数のみでニューラルネットワークの推論を実行する場合に比べて、計算時間を短縮することができる。この結果、ニューラルネットワークの推論において、認識率の低下を抑止しつつ計算時間を短縮することができる。
【0107】
上述した実施形態では、量子化誤差算出部12が、層毎に量子化誤差の平均値を算出し、学習実行期間に使用するデータ型の決定に使用する例を示した。しかしながら、量子化誤差算出部12は、層毎に量子化誤差の最大値を算出し、学習実行期間に使用するデータ型の決定に使用してもよい。量子化誤差の最大値を算出する場合、閾値生成部14は、学習により得られる認識率と参照情報で示される認識率との比較に基づいて、最大値に対応する閾値を生成(更新)する。
【0108】
あるいは、量子化誤差算出部12は、層毎に量子化誤差の分散を算出し、学習実行期間に使用するデータ型の決定に使用してもよい。量子化誤差の分散を算出する場合、閾値生成部14は、学習により得られる認識率と参照情報で示される認識率との比較に基づいて、分散で示される閾値を生成(更新)する。そして、データ型決定部16は、量子化誤差の分散が閾値で示される分散より広い場合、学習実行期間の学習を浮動小数点型により実行することを決定する。また、データ型決定部16は、量子化誤差の分散が閾値で示される分散より狭い場合、学習実行期間の学習を固定小数点型により実行することを決定する。
【0109】
さらに、上述した実施形態では、ニューラルネットワークの計算に使用する全ての変数(重み、活性、勾配)のデータ型を切り替える例を示した。しかしながら、所定の変数のみ(例えば、重みと活性、あるいは、勾配のみ)のデータ型を切り替え、他の変数は、データ型を固定してもよい。例えば、ニューラルネットワークの設計者(ユーザ等)が指定する変数のみ、データ型を切り替え、他の変数は、データ型を固定してもよい。これにより、データ型決定部16の処理量を削減することができる。また、データ型の決定に使用する量子化誤差の算出数を少なくできるため、量子化誤差算出部12の処理量を削減することができる。
【0110】
また、データ型を固定小数点型に切り替えることで、認識率の低下を抑止して計算時間を短縮する効果の高い層が予め分かっている場合、その層で使用する変数のデータ型を固定小数点型に固定してもよい。あるいは、固定小数点数データのみを使用する場合と、データ型を切り替える場合とで、認識率に影響を与えない層が予め分かっている場合、その層で使用する変数のデータ型を固定小数点型に固定してもよい。これにより、上述と同様に、量子化誤差算出部12の処理量とデータ型決定部16の処理量を削減することができる。
【0111】
なお、上述した実施形態では、全ての層と全ての変数に共通の閾値を生成する例を示した。しかしながら、所定の変数毎に閾値をそれぞれ生成してもよい。例えば、重みと活性と勾配のそれぞれに対応して3つの閾値を生成してもよい。
【0112】
以上の
図1から
図11に示す実施形態に関し、さらに以下の付記を開示する。
(付記1)
プロセッサを有する情報処理装置であって、
前記プロセッサが、
ニューラルネットワークで使用する変数を量子化する場合の量子化誤差を算出し、
前記ニューラルネットワークの過去の学習により得られた第1の認識率に関する参照情報と、前記ニューラルネットワークの計算により得られる第2の認識率とに基づいて、閾値を生成し、
算出された前記量子化誤差と、生成された前記閾値とに基づいて、前記ニューラルネットワークの計算に使用する変数のうち、量子化する変数を決定し、
決定されたデータ型の変数を使用して、前記ニューラルネットワークの計算を実行する、情報処理装置。
(付記2)
前記プロセッサは、複数の計算サイクルに分けて、前記ニューラルネットワークの計算を実行し、
前記ニューラルネットワークの計算を実行するステップは、前記複数の計算サイクルの各々において、
量子化する変数を決定する型決定期間に、1つ前の前記計算サイクルで決定したデータ型の変数を使用して前記ニューラルネットワークの計算を実行し、
前記型決定期間後の計算実行期間に、前記決定されたデータ型の変数を使用して、前記ニューラルネットワークの計算を実行する、付記1に記載の情報処理装置。
(付記3)
前記量子化誤差を算出するステップ、前記閾値を生成するステップおよび前記量子化する変数を決定するステップは、前記型決定期間に実行され、前記計算実行期間には実行されない、付記2に記載の情報処理装置。
(付記4)
前記閾値を生成するステップは、
前記参照情報で示される前記第1の認識率と前記第2の認識率との第1の差分を算出し、
算出された前記第1の差分に基づいて前記閾値の更新量を生成し、
生成された前記更新量と現在の前記閾値とに基づいて、更新後の閾値を算出する、付記1ないし付記3のいずれか1項に記載の情報処理装置。
(付記5)
前記閾値を生成するステップは、1つの前記閾値を生成し、
前記量子化する変数を決定するステップは、生成された共通の前記閾値に基づいて、全ての変数のうち、量子化する変数を決定する、付記1ないし付記4のいずれか1項に記載の情報処理装置。
(付記6)
前記閾値を生成するステップは、変数の種類毎に前記閾値を生成し、
前記量子化する変数を決定するステップは、生成された種類別の前記閾値に基づいて、変数の種類毎に量子化する変数を決定する、付記1ないし付記4のいずれか1項に記載の情報処理装置。
(付記7)
前記量子化する変数を決定するステップは、前記ニューラルネットワークで使用する複数の変数のうち、第1の変数のデータ型を前記量子化誤差と前記閾値とに基づいて決定し、前記第1の変数を除く第2の変数のデータ型を固定小数点型に固定する、付記1ないし付記6のいずれか1項に記載の情報処理装置。
(付記8)
前記量子化誤差を算出するステップは、前記ニューラルネットワークに含まれる複数の層毎に、各層で使用される変数の前記量子化誤差を算出する、付記1ないし付記7のいずれか1項に記載の情報処理装置。
(付記9)
前記量子化する変数を決定するステップは、前記算出された前記量子化誤差と前記生成された前記閾値とに基づいて、各層で使用される変数単位で量子化する変数を決定する、付記8に記載の情報処理装置。
(付記10)
前記ニューラルネットワークの計算を実行するステップは、前記決定されたデータ型の変数を使用して、前記ニューラルネットワークの学習を実行する、付記1ないし付記9のいずれか1項に記載の情報処理装置。
(付記11)
前記変数は、重み、活性および勾配を含む、付記10に記載の情報処理装置。
(付記12)
前記ニューラルネットワークの計算を実行するステップは、前記決定されたデータ型の変数を使用して、前記ニューラルネットワークによる推論を実行する、付記1ないし付記9のいずれか1項に記載の情報処理装置。
(付記13)
前記ニューラルネットワークの計算により算出された変数の統計情報を取得し、
前記量子化誤差を算出するステップは、取得された前記統計情報に基づいて、変数の量子化後のビット範囲を決定し、決定した前記ビット範囲にしたがって前記量子化誤差を算出する、付記1ないし付記12のいずれか1項に記載の情報処理装置。
(付記14)
前記変数の前記統計情報を取得するステップは、前記ニューラルネットワークの計算により算出された変数の最上位ビットの分布を前記統計情報として取得し、
前記量子化誤差を算出するステップは、前記取得された前記統計情報の分布に基づいて、前記ビット範囲を決定する、付記13に記載の情報処理装置。
(付記15)
ニューラルネットワークで使用する変数を量子化する場合の量子化誤差を算出し、
前記ニューラルネットワークの過去の学習により得られた第1の認識率に関する参照情報と、前記ニューラルネットワークの計算により得られる第2の認識率とに基づいて、閾値を生成し、
算出された前記量子化誤差と、生成された前記閾値とに基づいて、前記ニューラルネットワークの計算に使用する変数のうち、量子化する変数を決定し、
決定されたデータ型の変数を使用して、前記ニューラルネットワークの計算を実行する、処理を情報処理装置が有するプロセッサに実行させる情報処理方法。
(付記16)
ニューラルネットワークで使用する変数を量子化する場合の量子化誤差を算出し、
前記ニューラルネットワークの過去の学習により得られた第1の認識率に関する参照情報と、前記ニューラルネットワークの計算により得られる第2の認識率とに基づいて、閾値を生成し、
算出された前記量子化誤差と、生成した前記閾値とに基づいて、前記ニューラルネットワークの計算に使用する変数のうち、量子化する変数を決定し、
決定されたデータ型の変数を使用して、前記ニューラルネットワークの計算を実行する、処理を情報処理装置が有するプロセッサに実行させる情報処理プログラム。
【0113】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0114】
10、10A CPU
11 統計情報取得部
12 量子化誤差算出部
14、14A 閾値決定部
16 データ型決定部
20 メモリ
30 アクセラレータ
40 通信バス
50 補助記憶装置
60 通信インタフェース
70 入出力インタフェース
80 記録媒体
100、100A 情報処理装置