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