(57)【要約】畳み込みニューラルネットワークの演算を行う情報処理装置に、浮動小数点型で表された複数のデータ中の最大値に基づいて第一のビン幅を決定する第一のビン幅決定部２３と、複数のデータの夫々を、第一のビン幅に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムを作成するビン範囲決定用ヒストグラム作成部２４と、ビン範囲決定用ヒストグラムを参照し、複数のデータのうち所定割合以上の数のデータが収まるビン範囲を決定する範囲決定部２５と、ビン範囲内のデータの数に基づいて第二のビン幅を決定する第二のビン幅決定部２６と、ビン範囲内の複数のデータを、第二のビン幅に基づいて各ビンに割り当てることで、参照用ヒストグラムを作成する参照用ヒストグラム作成部２７と、を備えた。
2020049681.tif 000002
【特許請求の範囲】
【請求項１】
畳み込みニューラルネットワークの演算を行う情報処理装置であって、
浮動小数点型で表された複数のデータ中の最大値に基づいて第一のビン幅を決定する第一のビン幅決定手段と、
前記複数のデータの夫々を、前記第一のビン幅に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムを作成するビン範囲決定用ヒストグラム作成手段と、
前記ビン範囲決定用ヒストグラムを参照し、前記複数のデータのうち所定割合以上の数のデータが収まるビン範囲を決定する範囲決定手段と、
前記ビン範囲内のデータの数に基づいて第二のビン幅を決定する第二のビン幅決定手段と、
前記ビン範囲内の複数のデータを、前記第二のビン幅に基づいて各ビンに割り当てることで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、
を備える情報処理装置。
【請求項２】
値が閾値によって定まる範囲の内にあるデータについては所定の固定小数点型で表現可能な最大値又は最小値の範囲内に量子化し、値が前記閾値によって定まる範囲の外にあるデータについては前記最大値又は前記最小値に割り当てることで、前記複数のデータを固定小数点型に変換する量子化手段と、
前記複数のデータの夫々を浮動小数点型のまま任意の数のビンに割り当てることで候補ヒストグラムを作成する候補ヒストグラム作成手段と、
前記参照用ヒストグラムにおける分布と前記候補ヒストグラムにおける分布とを比較し、分布の差異が小さくなるような前記閾値を得る閾値取得手段と、
を更に備える、請求項１に記載の情報処理装置。
【請求項３】
前記閾値取得手段によって得られた前記閾値と、前記所定の固定小数点型で表現可能な段階数とに基づいて、浮動小数点型で表された前記複数のデータを該所定の固定小数点型に変換するためのスケールファクタを算出するスケールファクタ算出手段を更に備え、
前記量子化手段は、前記スケールファクタを用いて、浮動小数点型で表された前記複数のデータを前記所定の固定小数点型に変換する、
請求項２に記載の情報処理装置。
【請求項４】
前記第一のビン幅決定手段は、浮動小数点型で表された複数のデータ中の最大値を所定のビン数で割ることで、前記第一のビン幅を決定し、
請求項１から３の何れか一項に記載の情報処理装置。
【請求項５】
前記第二のビン幅決定手段は、前記ビン範囲内のデータの数に前記第一のビン幅を乗じた値を前記所定のビン数で割ることで、前記第二のビン幅を決定する、
請求項１から４の何れか一項に記載の情報処理装置。
【請求項６】
畳み込み演算結果に含まれる負の値が０に置換された、浮動小数点型で表されたデータを得るデータ取得手段を更に備え、
前記参照用ヒストグラム作成手段は、前記複数のデータのうち値が０でないデータを、所定のビン幅に基づいて各ビンに割り当て、前記複数のデータのうち値が０であるデータについては、何れのビンにも割り当てないことで、前記参照用ヒストグラムを作成する、
請求項１から５の何れか一項に記載の情報処理装置。
【請求項７】
畳み込みニューラルネットワークの演算を行う情報処理装置であって、
畳み込み演算結果に含まれる負の値が０に置換された、浮動小数点型で表されたデータを得るデータ取得手段と、
前記複数のデータのうち値が０でないデータを、所定のビン幅に基づいて各ビンに割り当て、前記複数のデータのうち値が０であるデータについては、何れのビンにも割り当てないことで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、
を備える情報処理装置。
【請求項８】
値が閾値によって定まる範囲の内にあるデータについては所定の固定小数点型で表現可能な最大値又は最小値の範囲内に量子化し、値が前記閾値によって定まる範囲の外にあるデータについては前記最大値又は前記最小値に割り当てることで、前記複数のデータを固定小数点型に変換する量子化手段と、
前記複数のデータの夫々を浮動小数点型のまま任意の数のビンに割り当てることで候補ヒストグラムを作成する候補ヒストグラム作成手段と、
前記参照用ヒストグラムにおける分布と前記候補ヒストグラムにおける分布とを比較し、分布の差異が小さくなるような前記閾値を求める閾値取得手段と、
を更に備える、請求項７に記載の情報処理装置。
【請求項９】
前記閾値取得手段によって得られた前記閾値と、前記所定の固定小数点型で表現可能な段階数とに基づいて、浮動小数点型で表された前記複数のデータを該所定の固定小数点型に変換するためのスケールファクタを算出するスケールファクタ算出手段を更に備え、
前記量子化手段は、前記スケールファクタを用いて、浮動小数点型で表された前記複数のデータを前記所定の固定小数点型に変換する、
請求項８に記載の情報処理装置。
【請求項１０】
畳み込みニューラルネットワークの演算を行うコンピューターが、
浮動小数点型で表された複数のデータ中の最大値に基づいて第一のビン幅を決定する第一のビン幅決定ステップと、
前記複数のデータの夫々を、前記第一のビン幅に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムを作成するビン範囲決定用ヒストグラム作成ステップと、
前記ビン範囲決定用ヒストグラムを参照し、前記複数のデータのうち所定割合以上の数のデータが収まるビン範囲を決定する範囲決定ステップと、
前記ビン範囲内のデータの数に基づいて第二のビン幅を決定する第二のビン幅決定ステップと、
前記ビン範囲内の複数のデータを、前記第二のビン幅に基づいて各ビンに割り当てることで、参照用ヒストグラムを作成する参照用ヒストグラム作成ステップと、
を実行する方法。
【請求項１１】
畳み込みニューラルネットワークの演算を行うコンピューターが、
畳み込み演算結果に含まれる負の値が０に置換された、浮動小数点型で表されたデータを得るデータ取得ステップと、
前記複数のデータのうち値が０でないデータを、所定のビン幅に基づいて各ビンに割り当て、前記複数のデータのうち値が０であるデータについては、何れのビンにも割り当てないことで、参照用ヒストグラムを作成する参照用ヒストグラム作成ステップと、
を実行する方法。
【請求項１２】
畳み込みニューラルネットワークの演算を行うコンピューターを、
浮動小数点型で表された複数のデータ中の最大値に基づいて第一のビン幅を決定する第一のビン幅決定手段と、
前記複数のデータの夫々を、前記第一のビン幅に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムを作成するビン範囲決定用ヒストグラム作成手段と、
前記ビン範囲決定用ヒストグラムを参照し、前記複数のデータのうち所定割合以上の数のデータが収まるビン範囲を決定する範囲決定手段と、
前記ビン範囲内のデータの数に基づいて第二のビン幅を決定する第二のビン幅決定手段と、
前記ビン範囲内の複数のデータを、前記第二のビン幅に基づいて各ビンに割り当てることで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、
として機能させるためのプログラム。
【請求項１３】
畳み込みニューラルネットワークの演算を行うコンピューターを、
畳み込み演算結果に含まれる負の値が０に置換された、浮動小数点型で表されたデータを得るデータ取得手段と、
前記複数のデータのうち値が０でないデータを、所定のビン幅に基づいて各ビンに割り当て、前記複数のデータのうち値が０であるデータについては、何れのビンにも割り当てないことで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、畳み込みニューラルネットワーク技術に関する。
【背景技術】
【０００２】
近年、深層学習、特に畳み込みニューラルネットワーク（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ。以下、「ＣＮＮ」と称する）が注目されている。一般に、ＣＮＮにおける入力／重み係数／出力の各データの表現には、学習／推論時ともに、浮動小数点数表現（３２ｂｉｔ  ｆｌｏａｔ。以下「ＦＰ３２」と称する）が用いられる。しかし、浮動小数点数表現での演算では必要とされるロジックの規模が大きくなるため、ロジック規模を低減させるために、少なくとも一部に固定小数点数表現（例えば、８ｂｉｔ  ｉｎｔｅｇｅｒ。以下「ＩＮＴ８」と称する）を用いるＣＮＮや、出力を２値化するＣＮＮが提案されている（出力を２値化するＣＮＮについては、特許文献２及び３を参照）。【０００３】
ここで、固定小数点数表現をＣＮＮへ適用する上で量子化誤差を可能な限り小さくするために、ＣＮＮの学習を行った後、事前に小さなデータセットを推論して各層の入力／出力データ分布を予測し、統計的解析によってＦＰ３２のダイナミックレンジからＩＮＴ８のダイナミックレンジへ変換するためのスケールファクタを決定する手法が提案されている（特許文献１を参照）。【０００４】
一般的に、固定小数点数表現は単一のスケールファクタを共有するが、ＣＮＮにおいては、ニューラルネットワークの各層によって入力／重み係数／出力のデータ分布が大きく異なるため、ＣＮＮにおいて単一のスケールファクタを使用し、かつ、固定小数点数表現のビット数を減らすと、認識精度が急激に低下することが指摘されている（非特許文献１を参照）。また、非特許文献１では、ニューラルネットワークの各層で異なるスケールファクタを導入することにより、固定小数点数表現のビット数が少ない場合でも、浮動小数点数表現を使用した場合と同程度の認識精度を保つことができる、と報告されている。【０００５】
そして、上述の手法において用いられるスケールファクタを求める具体的なアルゴリズムの１つとして、所謂「エントロピーキャリブレーション」が提案されている（非特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１８−０１０６１８号公報
【特許文献２】特開２０１６−２３５３８３号公報
【特許文献３】特開２０１７−２１１９７２号公報
【非特許文献】
【０００７】
【非特許文献１】P. Gysel, J. Pimentel, M. Motamedi, and S. Ghiasi. Ristretto: A Framework for Empirical Study of Resource-Efficient Inference in Convolutional Neural Networks. IEEE Transactions on Neural Networks and Learning Systems, 2018.
【非特許文献２】Szymon Migacz.8-bit Inference with TensorRT. http://on-demand.gputechconf.com/gtc/2017/presentation/s7310-8-bit-inference-with-tensorrt.pdf
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来、固定小数点数表現をＣＮＮへ適用する上で量子化誤差を可能な限り小さくするために、ＣＮＮの学習を行った後、事前に小さなキャリブレーション用データセットを推論して各層の入力／出力データ分布を予測し、統計的解析によって浮動小数点数表現のダイナミックレンジから固定小数点数表現のダイナミックレンジへ変換するためのスケールファクタを決定する手法が提案されており、また、このスケールファクタを求める具体的なアルゴリズムの１つとして、所謂エントロピーキャリブレーションと称される手法が提案されている。エントロピーキャリブレーションは、浮動小数点数表現を用いてキャリブレーション用のデータセットをまず推論し、そこで得た各層／各データの分布と、それらを量子化した分布とで情報の損失が最も小さくなるようなスケールファクタを算出する手法である。【０００９】
しかし、エントロピーキャリブレーションを用いた場合であっても、例えば、極端な外れ値が発生するデータセットに用いた場合や、活性化関数として所謂ＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）関数（φ（ｘ）＝ｍａｘ（０，  ｘ））を用いた場合等に、認識制度が低下するという問題が生じる。【００１０】
本開示は、上記した問題に鑑み、固定小数点型への量子化を行う畳み込みニューラルネットワークにおいて、認識精度の低下を抑制することを課題とする。
【課題を解決するための手段】
【００１１】
本開示の一例は、畳み込みニューラルネットワークの演算を行う情報処理装置であって、浮動小数点型で表された複数のデータ中の最大値に基づいて第一のビン幅を決定する第一のビン幅決定手段と、前記複数のデータの夫々を、前記第一のビン幅に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムを作成するビン範囲決定用ヒストグラム作成手段と、前記ビン範囲決定用ヒストグラムを参照し、前記複数のデータのうち所定割合以上の数のデータが収まるビン範囲を決定する範囲決定手段と、前記ビン範囲内のデータの数に基づいて第二のビン幅を決定する第二のビン幅決定手段と、前記ビン範囲内の複数のデータを、前記第二のビン幅に基づいて各ビンに割り当てることで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、を備える情報処理装置である。【００１２】
このような情報処理装置によれば、極端な外れ値が発生するデータセットを量子化する場合でも認識制度が低下しづらいキャリブレーションを提供することが出来る。【００１３】
本開示の一例は、畳み込みニューラルネットワークの演算を行う情報処理装置であって、畳み込み演算結果に含まれる負の値が０に置換された、浮動小数点型で表されたデータを得るデータ取得手段と、前記複数のデータのうち値が０でないデータを、所定のビン幅に基づいて各ビンに割り当て、前記複数のデータのうち値が０であるデータについては、何れのビンにも割り当てないことで、参照用ヒストグラムを作成する参照用ヒストグラム作成手段と、を備える情報処理装置である。【００１４】
このような情報処理装置によれば、活性化関数としてＲｅＬＵ関数を用いた場合でも、認識制度の低下を抑制することが出来る。【００１５】
本開示は、情報処理装置、システム、コンピューターによって実行される方法又はコンピューターに実行させるプログラムとして把握することが可能である。又、本開示は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的又は化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
【発明の効果】
【００１６】
本開示によれば、固定小数点型への量子化を行う畳み込みニューラルネットワークにおいて、認識精度の低下を抑制することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】実施形態に係るＣＮＮ処理システムのハードウェア構成を示す概略図である。
【図２】実施形態に係るＣＮＮ処理の概要を示す図である。
【図３】実施形態に係るＣＮＮ処理システムの機能構成の概略を示す図である。
【図４】実施形態に係るキャリブレーション処理の流れの概要を示すフローチャート（Ａ）である。
【図５】実施形態に係るキャリブレーション処理の流れの概要を示すフローチャート（Ｂ）である。
【図６】実施形態に係るゼロデータ除外処理の流れの概要を示すフローチャートである。
【図７】従来のエントロピーキャリブレーションで作成された参照用ヒストグラムを示す図（Ａ）である。
【図８】従来のエントロピーキャリブレーションで作成された参照用ヒストグラムを示す図（Ｂ）である。
【図９】従来のエントロピーキャリブレーションで作成された参照用ヒストグラムを示す図（Ｃ）である。
【図１０】ゼロデータ除外処理を採用したキャリブレーションで作成された参照用ヒストグラムを示す図（Ａ）である。
【図１１】ゼロデータ除外処理を採用したキャリブレーションで作成された参照用ヒストグラムを示す図（Ｂ）である。
【図１２】ゼロデータ除外処理を採用したキャリブレーションで作成された参照用ヒストグラムを示す図（Ｃ）である。
【図１３】従来のエントロピーキャリブレーションで作成した参照用ヒストグラムの例を示す図である。
【図１４】従来のエントロピーキャリブレーションで、絶対値の最大値を、その１００倍の値へ書き換えた場合の参照用ヒストグラムの例を示す図である。
【図１５】図１４のヒストグラムを元に、本実施形態に係るキャリブレーション処理のステップＳ１０６が実行される様子を示す図である。
【図１６】実施形態に係るキャリブレーション処理で作成された参照用ヒストグラムＰ２を示す図である。
【図１７】図１６の参照用ヒストグラムＰ２を元に作成された、カルバック・ライブラー情報量が最も小さくなるときの候補ヒストグラムＱを示す図である。
【図１８】図１６の先頭１／４の部分の拡大図である。
【図１９】図１７の先頭１／４の部分の拡大図である。
【発明を実施するための形態】
【００１８】
以下、本開示に係る情報処理装置、方法及びプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係る情報処理装置、方法及びプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施の態様に応じた具体的構成が適宜採用され、又、種々の改良や変形が行われてよい。
【００１９】
実施形態の説明では、本開示に係る情報処理装置、方法及びプログラムを、畳み込みニューラルネットワークの演算を行うためのシステムにおいて実施した場合の実施の形態について説明する。なお、本開示に係る情報処理装置、方法及びプログラムは、ニューラルネットワーク技術について広く用いることが可能であり、本開示の適用対象は、実施形態において示した例に限定されない。
【００２０】
＜システムの構成＞
図１は、本実施形態に係る畳み込みニューラルネットワーク（ＣＮＮ）処理システム１のハードウェア構成を示す概略図である。本実施形態に係るＣＮＮ処理システム１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の記憶装置１４、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）１５等の通信ユニット、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）１６、等を備えるコンピューターである。
【００２１】
ＣＮＮの学習／推論にあたってはＧＰＵが広く用いられているが、電力効率をより高めるために、ＦＰＧＡなどのプログラマブルデバイスが活用される場合がある。そして、ＦＰＧＡにおいては、回路規模を小さくするために、固定小数点数表現がしばしば用いられる。本実施形態に係るＣＮＮ処理システム１は、ニューラルネットワークの各層で異なるスケールファクタ（浮動小数点数から固定小数点数への変換ファクタ）を導入し、ＣＰＵを搭載するホストマシンからアクセラレータとしてＦＰＧＡを使用するシステムである。
【００２２】
図２は、本実施形態に係るＣＮＮ処理の概要を示す図である。本実施形態に係るＣＮＮ処理システム１において、量子化誤差が発生する箇所は、「（１）ＦＰ３２の入力データ、重み係数などをＩＮＴ８へ量子化する箇所」及び「（２）ＦＰＧＡ上で、ＩＮＴ８に量子化された状態で計算を行う箇所」の２箇所である。このうち、「（１）ＦＰ３２の入力データ、重み係数などをＩＮＴ８へ量子化する箇所」は、具体的には、以下の式で表されるような計算を指す。以下の式において、ｘはＦＰ３２の入力、ｓはスケールファクタ（ＦＰ３２のスカラー値）、ｒｏｕｎｄ（ｖ）はＦＰ３２の値ｖを最近傍の整数へ丸める関数、ｃｌａｍｐ（ｖ，ａ，ｂ）は整数ｖがａ未満ならａ、ｂより大きければｂ、それ以外はｖを返す関数を表す。
q = clamp(round(sx),-127,127)
【００２３】
そして、スケールファクタを求める具体的なアルゴリズムの１つとして、所謂エントロピーキャリブレーションがあるが、本アルゴリズムは以下のような実用上の課題を有している。
【００２４】
課題１：ＲｅＬＵ関数の取り扱い
ＲｅＬＵ関数を含むＣＮＮの場合、従来のエントロピーキャリブレーションで作成する参照用ヒストグラムにおいて、値０にピークが発生する。これは、ＲｅＬＵ関数によって、出力の負の部分がすべて一つの値０にまとめられているためである。このようなデータ分布になると、出力のうち正の部分の正規化頻度が減少して、スケールファクタが期待される値よりも大きくなり、オーバーフローまたはアンダーフロー（ＩＮＴ８の上限／下限である±１２７を超えた整数値となり、±１２７にクリップされること）が多発する。結果として、認識精度が大きく低下してしまう。
【００２５】
課題２：極端な外れ値が発生するデータセットの取り扱い
従来のエントロピーキャリブレーションを、極端な外れ値が発生するデータセットに対して適用した場合、出力データのヒストグラムのビン幅が極端に大きくなり、多くの値が同一のビンに丸められてしまうことで、情報の損失が大きくなる。結果として、認識精度が大きく低下してしまう。
【００２６】
本実施形態に開示されたＣＮＮ処理システム１は、従来のエントロピーキャリブレーションが有する実用上の課題を解決するものである。
【００２７】
図３は、本実施形態に係るＣＮＮ処理システム１の機能構成の概略を示す図である。ＣＮＮ処理システム１は、記憶装置１４に記録されているプログラムが、ＲＡＭ１２に読み出され、ＣＰＵ１１及び／又はＦＰＧＡ１６によって実行されて、サーバー５０に備えられた各ハードウェアが制御されることで、データ取得部２１、推論部２２、第一のビン幅決定部２３、ビン範囲決定用ヒストグラム作成部２４、範囲決定部２５、第二のビン幅決定部２６、参照用ヒストグラム作成部２７、候補ヒストグラム作成部２８、閾値取得部２９、スケールファクタ算出部３０及び量子化部３１を備える情報処理装置として機能する。なお、本実施形態及び後述する他の実施形態では、ＣＮＮ処理システム１の備える各機能は、汎用プロセッサであるＣＰＵ１１及び／又はＦＰＧＡ１６によって実行されるが、これらの機能の一部又は全部は、１又は複数の専用プロセッサによって実行されてもよい。
【００２８】
データ取得部２１は、浮動小数点型（例えば、ＦＰ３２）で表された、畳み込み演算で用いられるデータセット（複数のデータ）を得る。なお、データ取得部２１によって得られるデータセットでは、ＲｅＬＵ関数によって、データセット中の負の値が０に置換されている場合がある。本実施形態では、ＲｅＬＵ関数によってデータセット中の負の値が０に変換された場合、後述するヒストグラム作成部２４、２７及び２８（ビン範囲決定用ヒストグラム作成部２４、参照用ヒストグラム作成部２７及び候補ヒストグラム作成部２８）は、値が０でないデータについては、所定のビン幅に基づいて各ビンに割り当て、値が０であるデータについては、何れのビンにも割り当てないことで、ヒストグラムを作成する。
【００２９】
推論部２２は、一般的な畳み込みニューラルネットワークの手法に沿って、入力されたデータセットに関する推論を行い、推論結果をデータセットとして出力する。
【００３０】
第一のビン幅決定部２３は、浮動小数点型で表された複数のデータ中の最大値を所定のビン数で割ることで、第一のビン幅Δ１を決定する。
【００３１】
ビン範囲決定用ヒストグラム作成部２４は、複数のデータの夫々を、第一のビン幅Δ１に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムＰ１を作成する。
【００３２】
範囲決定部２５は、ビン範囲決定用ヒストグラムＰ１を参照し、複数のデータのうち所定割合（例えば、９９．９９％）以上の数のデータが収まるビン範囲（本実施形態では、ビン位置Ｘ）を決定する。
【００３３】
第二のビン幅決定部２６は、ビン範囲内（本実施形態では、ビン位置Ｘ以下）のデータの数に第一のビン幅Δ１を乗じた値を所定のビン数で割ることで、第二のビン幅Δ２を決定する。
【００３４】
参照用ヒストグラム作成部２７は、ビン範囲内の複数のデータを、第二のビン幅Δ２に基づいて各ビンに割り当てることで、参照用ヒストグラム（ｒｅｆｅｒｅｎｃｅ  ｈｉｓｔｏｇｒａｍ）Ｐ２を作成する。
【００３５】
候補ヒストグラム作成部２８は、複数のデータの夫々を浮動小数点型のまま任意の数ｉのビンに割り当てることで候補ヒストグラム（ｃａｎｄｉｄａｔｅ  ｈｉｓｔｏｇｒａｍ）Ｑを作成する。
【００３６】
閾値取得部２９は、参照用ヒストグラムＰ２における分布と候補ヒストグラムＱにおける分布とを比較し、分布の差異が小さくなるような閾値ｔを得る。
【００３７】
スケールファクタ算出部３０は、閾値取得部２９によって得られた閾値ｔと、所定の固定小数点型で表現可能な段階数とに基づいて、浮動小数点型で表された複数のデータを該所定の固定小数点型（例えば、ＩＮＴ８）に変換するためのスケールファクタを算出する。
【００３８】
量子化部３１は、値が閾値ｔによって定まる範囲の内にあるデータについては所定の固定小数点型で表現可能な最大値又は最小値の範囲内に量子化し、値が閾値ｔによって定まる範囲の外にあるデータについては最大値又は最小値に割り当てることで、複数のデータを固定小数点型に変換する。本実施形態では、量子化部３１は、スケールファクタ算出部３０によって算出されたスケールファクタを用いて、浮動小数点型で表された複数のデータを所定の固定小数点型に変換する。
【００３９】
＜処理の流れ＞
次に、本実施形態に係るＣＮＮ処理システム１によって実行される処理の流れを説明する。なお、以下に説明する処理の具体的な内容および処理順序は、本開示を実施するための一例である。具体的な処理内容および処理順序は、本開示の実施の形態に応じて適宜選択されてよい。
【００４０】
図４及び図５は、本実施形態に係るキャリブレーション処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、ＣＮＮにおける各層の入力／出力データのヒストグラム作成時に実行される。
【００４１】
ステップＳ１０１及びステップＳ１０２では、キャリブレーション用データセットの受け付け及び当該データセットに基づく推論が行われる。キャリブレーション用の小規模なデータセットがデータ取得部２１によって受け付けられると（ステップＳ１０１）、推論部２２は、学習済みパラメタを用いて、当該データセットについての浮動小数点数型（例えば、ＦＰ３２）での推論を行う（ステップＳ１０２）。その後、処理はステップＳ１０３へ進む。
【００４２】
その後、ステップＳ１０２の出力の全データ（の絶対値）に対して、各層毎に、ステップＳ１０３からステップＳ１１２に示す処理が実行されることで、適切なスケールファクタが決定される。なお、ここで処理されるデータは、配列の添字を除いて浮動小数点数型（例えば、ＦＰ３２）であり、固定小数点型（例えば、ＩＮＴ８）への変換等は、本フローチャートに示された処理中では行われない。
【００４３】
ステップＳ１０３からステップＳ１０５では、ビン範囲決定用ヒストグラムＰ１が作成される。はじめに、第一のビン幅決定部２３は、出力の全データ（の絶対値）の最大値を抽出する（ステップＳ１０３）。そして、第一のビン幅決定部２３は、当該最大値に基づいて、ヒストグラムの第一のビン幅Δ１を決定する（ステップＳ１０４）。具体的には、第一のビン幅決定部２３は、ステップＳ１０３で抽出された最大値を、作成したいヒストグラムのビン数で割ることで得られた値に基づいて、第一のビン幅Δ１を決定する。例えば、最大値が１０，０００であり、ビン数が２，０４８である場合、第一のビン幅Δ１は４．８８２８１２５に決定される。
【００４４】
第一のビン幅Δ１が決定されると、ビン範囲決定用ヒストグラム作成部２４は、ステップＳ１０２で得られた複数のデータの夫々を、決定された第一のビン幅Δ１に基づいて各ビンに割り当てることで、ビン範囲決定用ヒストグラムＰ１を作成する（ステップＳ１０５）。その後、処理はステップＳ１０６へ進む。
【００４５】
ステップＳ１０６からステップＳ１０８では、参照用ヒストグラムＰ２が作成される。はじめに、範囲決定部２５は、ステップＳ１０５で作成されたビン範囲決定用ヒストグラムＰ１を参照し、ビン位置０を起点としてビン範囲決定用ヒストグラムＰ１全体の頻度値のほぼ全て（例えば、９９．９９％）が収まるようなビン位置Ｘを探す（ステップＳ１０６）。そして、第二のビン幅決定部２６は、ビン位置Ｘに基づいて、第二のビン幅Δ２を決定する（ステップＳ１０７）。具体的には、第二のビン幅決定部２６は、決定されたビン位置Ｘまでの範囲（ビン範囲）内のデータの数に第一のビン幅Δ１を乗じた値を、作成したいヒストグラムのビン数で割ることで得られた値に基づいて、第二のビン幅Δ２を決定する。
【００４６】
第二のビン幅Δ２が決定されると、参照用ヒストグラム作成部２７は、ステップＳ１０２で得られた複数のデータの夫々を、決定された第二のビン幅Δ２に基づいて各ビンに割り当てることで、参照用ヒストグラムＰ２を作成する（ステップＳ１０８）。その後、処理はステップＳ１０９へ進む。
【００４７】
ステップＳ１０９では、複数パターンのビン数ｉについて、候補ヒストグラムＱが作成され、参照用ヒストグラムＰ２との間の差異が求められる。候補ヒストグラム作成部２８は、ステップＳ１０２で得られた複数のデータの夫々を、浮動小数点数型のまま１２８階調化（ＩＮＴ８の場合。なお、ここでは固定小数点型への量子化は行われない）して、ｉ個のビンに割り当てることで、候補ヒストグラムＱを作成する。この際、候補ヒストグラム作成部２８は、参照用ヒストグラムＰ２のビン数の範囲内であり且つ所定の固定小数点型で表現可能な段階数の倍数である各整数をビン数ｉとして、夫々のビン数ｉについて、複数の候補ヒストグラムＱを作成する。例えば、参照用ヒストグラムＰ２のビン数が２０４８であり、固定小数点型としてＩＮＴ８を用いる場合、ｉは［１２８，  ２５６，  ３８４，  ．．．，  ２０４８］の値をとる。そして、閾値取得部２９は、複数の候補ヒストグラムＱの夫々と、ビン数を対象となる候補ヒストグラムＱのビン数ｉに縮めた参照用ヒストグラムＰ２との間のカルバック・ライブラー情報量ｄ（確率分布の差異を測る尺度）を計算する。具体的には、ステップＳ１０９では、以下の処理が実行される。その後、処理はステップＳ１１０へ進む。
【００４８】
ステップＳ１０９．１：参照用ヒストグラムＰ２から、ビン［０］からビン［ｉ−１］までのビンを切り出すことで、参照用ヒストグラムＰｒｏｉ（＝  ［Ｐ［０］，  Ｐ［１］，  ．．．，  Ｐ［ｉ−１］］）を作成する。
【００４９】
ステップＳ１０９．２：参照用ヒストグラムＰｒｏｉの末尾にアウトライアの総和（＝  ｓｕｍ（Ｐ［ｉ］，  Ｐ［ｉ＋１］，  ．．．，  Ｐ［２０４７］）を加える。
【００５０】
ステップＳ１０９．３：以下の処理を実行して、長さ１２８の候補ヒストグラムＱ'を作成する。
（１）マージするビン数ｎ（ｎ＝ｉ／１２８）を算出する。
（２）参照用ヒストグラムＰｒｏｉの連続するビンを、以下のようにｎ個ずつマージして、候補ヒストグラムＱ'を作る。なお、ここで「ｈ（ａｒｒ）＝ｓｕｍ（ａｒｒ）／（ａｒｒに含まれる非ゼロ要素数）」であり、また、「１２８ｎ−１＝ｉ−１」である。
Q' = [h(Proi[0], ..., Proi[n-1]),
h(Proi[n], ..., Proi[2n-1]),
...,
h(Proi[127n], ..., Proi[128n-1])]
【００５１】
ステップＳ１０９．４：以下の処理を実行して、長さｉの候補ヒストグラムＱを作成する。なお、以下において、Ｐｒｏｉ［ｘ］≠０のとき「ｑ（ｘ）＝Ｑ'［ｆｌｏｏｒ（ｘ／ｎ）］」であり、Ｐｒｏｉ［ｘ］＝０のときｑ（ｘ）＝０」である。ここで、ｆｌｏｏｒ（）は床関数である。
Q = [q(0), q(0), ..., q(i-1)]
【００５２】
ステップＳ１０９．５：参照用ヒストグラムＰｒｏｉ及び候補ヒストグラムＱの夫々を、総和が１．０になるように正規化することで、参照用ヒストグラムＰｒｏｉ'及び候補ヒストグラムＱ''を作成する。
【００５３】
ステップＳ１０９．６：参照用ヒストグラムＰｒｏｉ'と候補ヒストグラムＱ''との間のカルバック・ライブラー情報量ｄを計算する。
【００５４】
ステップＳ１１０からステップＳ１１２では、スケールファクタｓが算出される。閾値取得部２９は、参照用ヒストグラムＰｒｏｉ'と候補ヒストグラムＱ''との間のカルバック・ライブラー情報量ｄが最小となる（換言すれば、参照用ヒストグラムＰｒｏｉにおける確率分布と候補ヒストグラムＱにおける確率分布とが最も近くなる）整数ｉを決定する（ステップＳ１１０）。そして、閾値取得部２９は、カルバック・ライブラー情報量ｄが最小となるときの整数ｉをｍとし、以下の式を用いて閾値ｔを算出する（ステップＳ１１１）。スケールファクタ算出部３０は、閾値ｔ及び固定小数点型で表現可能な段階数−１（ＩＮＴ８の場合、１２７）に基づいて、スケールファクタｓを算出する（ステップＳ１１２）。その後、本フローチャートに示された処理は終了する。
閾値t = (m + 0.5) * ビン幅Δ
スケールファクタs = 127 / 閾値t
【００５５】
その後、量子化部３１は、ステップＳ１１１で算出されたスケールファクタを、畳み込みニューラルネットワークにおいて不動小数点型データ（例えば、ＦＰ３２）のデータを固定小数点型（例えば、ＩＮＴ８）に量子化する際のスケールファクタとして用いる。
【００５６】
なお、本実施形態では、図４及び図５を参照して説明したキャリブレーション処理において、ビン範囲決定用ヒストグラムＰ１及び参照用ヒストグラムＰ２が作成される際には、値０のデータが除外される（値０のデータについては、ヒストグラムの対応するビンの頻度値をインクリメントしない）。以下、ヒストグラム作成時に値０のデータを除外する場合の処理の流れについて、フローチャートを参照して説明する。
【００５７】
図６は、本実施形態に係るゼロデータ除外処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、図４及び図５を参照して説明したキャリブレーション処理のみならず、ＣＮＮにおける各層の入力／出力データのヒストグラム作成時に実行される。
【００５８】
ビン範囲決定用ヒストグラム作成部２４、参照用ヒストグラム作成部２７及び候補ヒストグラム作成部２８（以下、単に「ヒストグラム作成部２４、２７及び２８」と称する）は、入力されたデータセット内の各データをビンに積み上げる際に、データアレイからデータｖを１つ取得し（ステップＳ２０１）、データｖが０であるか否かを判定する（ステップＳ２０２）。
【００５９】
取得されたデータｖが０でない場合、ヒストグラム作成部２４、２７及び２８は、従来通り、データｖの絶対値からビン位置ｉを計算し、ヒストグラム内のビン位置ｉの頻度値をインクリメントする（ステップＳ２０３）。一方、取得されたデータｖが０である場合、ヒストグラム作成部２４、２７及び２８は当該データｖについてのビン位置ｉの頻度値のインクリメントを行わない。そして、データアレイ内に未処理のデータが存在する場合、処理はステップＳ２０１へ戻る（ステップＳ２０４）。データアレイ内の全てのデータについてステップＳ２０１からステップＳ２０４の処理が終了すると、本フローチャートに示された処理は終了する。
【００６０】
なお、本実施形態では、図４及び図５を用いて説明したキャリブレーション処理と、図６を用いて説明したゼロデータ除外処理との両方を採用する例について説明したが、キャリブレーション処理及びゼロデータ除外処理は、何れか一方のみが採用されてもよい。
【００６１】
＜効果＞
上記説明した実施形態によれば、固定小数点データへの量子化を行う畳み込みニューラルネットワークにおいて、認識精度の低下を抑制することが可能となる。
【００６２】
具体的には、「課題１：ＲｅＬＵ関数の取り扱い」に対しては、ヒストグラム作成時に値０を除外すること（値０に対してはヒストグラムの対応するビンの頻度値をインクリメントしないこと）で、認識精度の低下を抑制している。
【００６３】
また、「課題２：極端な外れ値が発生するデータセットの取り扱い」に対しては、従来のエントロピーキャリブレーションにおいて作成されていた参照用ヒストグラムＰを２段階（ビン範囲決定用ヒストグラムＰ１及び参照用ヒストグラムＰ２）に分けて作成することで、認識精度の低下を抑制している。より具体的には、１つ目のヒストグラム（ビン範囲決定用ヒストグラムＰ１）を通常通りに作成したあと、１つ目のヒストグラムを解析して、全体のほぼすべて（例えば、９９．９９％）の頻度値が収まり、かつ、外れ値を除外できるような閾値と、２つ目のヒストグラム（参照用ヒストグラムＰ２）のビン幅を決める。次に、２つ目のヒストグラムを新しいビン幅の下で作成する。このとき、１つ目のヒストグラムを解析して決めた閾値ｔ以上の値は無視する。
【００６４】
［実施例］
次に、上記実施形態において説明したキャリブレーション処理及びゼロデータ除外処理をＣＮＮに採用した場合の具体的な実施例を説明する。
【００６５】
＜実施例１＞
図７から図９は、ＲｅＬＵ関数を含むＣＮＮにおいて、従来のエントロピーキャリブレーションで作成された参照用ヒストグラムを示す図である。従来のエントロピーキャリブレーションで作成された参照用ヒストグラムでは、値０に巨大なピークが発生する（図７から図９を参照）。これは、ＲｅＬＵ関数によって、出力の負の部分がすべて一つの値０にまとめられているためである。このようなデータ分布になると、出力のうち正の部分の正規化頻度が減少して、スケールファクタが期待される値よりも大きくなり、オーバーフローまたはアンダーフロー（ＩＮＴ８の上限／下限である±１２７を超えた整数値となり、±１２７にクリップされること）が多発する。結果として、認識精度が大きく低下してしまう。
【００６６】
図１０から図１２は、ＲｅＬＵ関数を含むＣＮＮにおいて、ゼロデータ除外処理を採用したキャリブレーションで作成された参照用ヒストグラムを示す図である。上記実施形態において説明したゼロデータ除外処理では、ヒストグラムを作成する際に、値０を除外する（図６のフローチャートを参照）。このようなゼロデータ除外処理を採用した場合、図７から図９のデータ分布は図１０から図１２のように変化する。図７から図１２中の黒い縦線は量子化時にクリップが行われる閾値を表しているが、図７から図９と比べると、図１０から図１２の方が閾値が右に移動しており、より広い範囲の値をクリップせずに、すなわち情報の損失をより低減した状態で量子化できることがわかる。
【００６７】
実際に、ＣＮＮとしてＧｏｏｇＬｅＮｅｔ（商標）を用いてＩＬＳＶＲＣ  ２０１２データセットのＶａｌｉｄａｔｉｏｎ  ｄａｔａで認識精度（Ｔｏｐ−５  Ａｃｃｕｒａｃｙ）を測定したところ、以下のような改善が見られた。
・量子化なし：８７．９％
・量子化あり、ゼロデータ除外処理なし：  １．２％
・量子化あり、ゼロデータ除外処理あり：８６．９％
【００６８】
＜実施例２＞
ＣＮＮの例としてＹＯＬＯｖ２（Ｔｉｎｙ）を考える。このＣＮＮは、活性化関数としてＲｅＬＵ関数ではなく、（負値に対する傾きが０．１である）Ｌｅａｋｙ  ＲｅＬＵ関数（φ（ｘ）＝ｍａｘ（０．１ｘ，ｘ））を使用する。図１３は、このＣＮＮの特定のレイヤに対して従来のエントロピーキャリブレーションで作成した参照用ヒストグラムの例を示す図である。このとき、Ｘ軸（出力の絶対値）の最大値は４４．７程度であり、データセット中の絶対値の最大値に基づいて算出されたビン幅は０．０２（＝４４．７／２０４７）、閾値は２１．７となる。
【００６９】
ここで、従来のエントロピーキャリブレーションで、絶対値の最大値（４４．７）を、その１００倍の値へ書き換えることで、極端な外れ値が生じているデータセットを用いる場合に近い状態を作出して参照用ヒストグラムを作成する。
【００７０】
図１４は、従来のエントロピーキャリブレーションで、絶対値の最大値を、その１００倍の値へ書き換えた場合の参照用ヒストグラムの例を示す図である。図１４の条件下では、データセット中の絶対値の最大値に基づいて算出されたビン幅は２．１８（＝４４７０／２０４７）となり、図１３と比べて１００倍粗いヒストグラムとなる。ヒストグラム全体のビン数は２０４８であるので、図１４のヒストグラムでは先頭１％（＝２１個）のビンに全頻度値が集まっている。なお、図１４において閾値（２８０）が頻度値０の位置に置かれているのは、従来のエントロピーキャリブレーションで作成する量子化した候補ヒストグラムＱのビン数の最小値を１２８としているためである。
【００７１】
即ち、図１４のような状況では、スケールファクタが適切な値と比べ１０倍以上離れてしまい、結果として、認識精度が大幅に低下する。
【００７２】
これに対して、上記実施形態において説明したキャリブレーション処理では、ヒストグラム作成が２段階で行われる（図４及び図５のフローチャートを参照）。図１５は、図１４のヒストグラムを元に、本実施形態に係るキャリブレーション処理のステップＳ１０６が実行される様子を示す図である。図１５の太い黒線より、図１４のヒストグラムの頻度値の９９．９９％が収まるビン位置が１０であると分かる。このとき、ステップＳ１０７で求める新しいビン幅Δ２は、０．０１（＝１０×２．１８／２０４７）となる。
【００７３】
図１６は、本実施形態に係るキャリブレーション処理のステップＳ１０８で作成された参照用ヒストグラムＰ２を示す図である。図１６の参照用ヒストグラムＰ２に対して、ステップＳ１０９以降の処理を行うことにより、閾値が１９．４と求まる。この値は、図１３のヒストグラムから求めた値２１．７と近くなっており、図１３に近い状況を再現できている（黒の縦線で表している閾値より絶対値が大きい値は上限／下限にクリップされる）。
【００７４】
なお、図１７は、図１６の参照用ヒストグラムＰ２を元にステップＳ１０９以降の処理を実行し、カルバック・ライブラー情報量が最も小さくなるときの候補ヒストグラムＱを示す図である。また、図１８及び図１９は、図１６及び図１７の夫々の先頭１／４の部分の拡大図である。
【００７５】
実際に、検証に用いたＣＮＮでＰＡＳＣＡＬ  ＶＯＣ  ２００７データセットのＴｅｓｔ  ｄａｔａを使用して認識精度（ｍＡＰ，  ｍｅａｎ  Ａｖｅｒａｇｅ  Ｐｒｅｃｉｓｉｏｎ）を測定したところ、以下のような改善を確認できた。
・量子化なし：５２．５％
・量子化あり、特定レイヤの最大値を１００倍の値に変更、キャリブレーション処理なし：３３．５％
・量子化あり、特定レイヤの最大値を１００倍の値に変更、キャリブレーション処理あり：５１．９％
【符号の説明】
【００７６】
１  ＣＮＮ処理システム
【図１】
2020049681.tif 000003
【図２】
2020049681.tif 000004
【図３】
2020049681.tif 000005
【図４】
2020049681.tif 000006
【図５】
2020049681.tif 000007
【図６】
2020049681.tif 000008
【図７】
2020049681.tif 000009
【図８】
2020049681.tif 000010
【図９】
2020049681.tif 000011
【図１０】
2020049681.tif 000012
【図１１】
2020049681.tif 000013
【図１２】
2020049681.tif 000014
【図１３】
2020049681.tif 000015
【図１４】
2020049681.tif 000016
【図１５】
2020049681.tif 000017
【図１６】
2020049681.tif 000018
【図１７】
2020049681.tif 000019
【図１８】
2020049681.tif 000020
【図１９】
2020049681.tif 000021
【国際調査報告】
2020049681.tif 000022
2020049681.tif 000023