(57)【要約】【課題】ＣＮＮにおいて、バックプロパゲーションで使用するアクティベーションの量子化を行う場合に、学習処理における十分な精度を実現できる情報処理方法を提供することにある。【解決手段】本実施形態の情報処理方法は、プロセッサ及び当該プロセッサの演算に用いられるメモリを使用し、畳み込み層を含む中間層を有する深層ニューラルネットワークの学習処理に適用する情報処理方法であって、第１の処理、第２の処理、及び第３の処理を含む。前記第１の処理は、前記深層ニューラルネットワークの前記中間層において、チャネル単位で第１の入力値を表現する第１ビット数を減少した第２ビット数を得る。前記第２の処理は、前記第１の処理により得られた第２ビット数で表現された第２の入力値を、前記メモリに保存する。前記第３の処理は、前記保存された前記第２の入力値を入力値とする誤差逆伝播処理を実行する。【選択図】図１
2020149311.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ及び当該プロセッサの演算に用いられるメモリを使用し、畳み込み層を含む中間層を有する深層ニューラルネットワークの学習処理に適用する情報処理方法であって、
前記深層ニューラルネットワークの前記中間層において、チャネル単位で第１の入力値を表現する第１ビット数を減少した第２ビット数を得る第１の処理と、
前記第１の処理により得られた第２ビット数で表現された第２の入力値を、前記メモリに保存する第２の処理と、
前記保存された前記第２の入力値を入力値とする誤差逆伝播処理を実行する第３の処理と、
を含む、情報処理方法。
【請求項２】
前記第１の処理は、
チャネル単位の前記第１の入力値の最大値又は最小値に基づいて、所定の学習精度で前記第２の入力値を表現できるビット数を、前記第２ビット数として前記チャネル単位で設定して、前記チャネル単位で前記第１ビット数を減少させる、請求項１に記載の情報処理方法。
【請求項３】
前記第１の処理は、
前記チャネル単位で前記第１ビット数を減少させる際に、前記第１の入力値の量子化により得られる値のビット数を、前記中間層に含まれる各層における所定の学習精度に基づいた固定値として設定する、請求項１に記載の情報処理方法。
【請求項４】
前記第１の処理は、前記中間層において、前記チャネル単位のアクティベーションをそれぞれ、所定の量子化ビット数に基づいて量子化することを含み、
前記第２の処理は、前記所定の量子化ビット数で表現された量子化アクティベーションを、前記メモリに保存することを含む、請求項１に記載の情報処理方法。
【請求項５】
前記第１の処理は、
前記チャネル単位の前記アクティベーションの最大値又は最小値に基づいて、所定の学習精度で量子化ビット数を、前記第２ビット数として前記チャネル単位に設定する、請求項４に記載の情報処理方法。
【請求項６】
前記第１の処理は、
チャネル単位でアクティベーションを量子化する際に、量子化により得られる値のビット数を、前記中間層に含まれる各層における所定の学習精度に基づいた固定値として設定する、請求項４に記載の情報処理方法。
【請求項７】
プロセッサ及び当該プロセッサの演算に用いられるメモリを含み、畳み込み層を含む中間層を有する深層ニューラルネットワークの学習処理に適用する情報処理装置であって、
前記プロセッサは、
前記深層ニューラルネットワークの前記中間層において、チャネル単位で第１の入力値を表現する第１ビット数を減少した第２ビット数を得る第１の処理と、
前記第１の処理により得られた第２ビット数で表現された第２の入力値を、前記メモリに保存する第２の処理と、
前記保存された前記第２の入力値を入力値とする誤差逆伝播処理を実行する第３の処理と、を実行する、情報処理装置。
【請求項８】
前記プロセッサは、
前記第１の処理として、チャネル単位の前記第１の入力値の最大値又は最小値に基づいて、所定の学習精度で前記第２の入力値を表現できるビット数を、前記第２ビット数として前記チャネル単位で設定して、前記チャネル単位で前記第１ビット数を減少させる、請求項７に記載の情報処理装置。
【請求項９】
前記プロセッサは、
前記第１の処理として、前記チャネル単位で前記第１ビット数を減少させる際に、前記第１の入力値の量子化により得られる値のビット数を、前記中間層に含まれる各層における所定の学習精度に基づいた固定値として設定する、請求項７に記載の情報処理装置。
【請求項１０】
プロセッサ及び当該プロセッサの演算に用いられるメモリを使用し、畳み込み層を含む中間層を有する深層ニューラルネットワークの学習処理に適用する情報処理方法であって、
前記深層ニューラルネットワークの前記中間層において、チャネル単位で第１の入力値を表現する第１ビット数を減少した第２ビット数を得る第１の処理と、
前記第１の処理により得られた第２ビット数で表現された第２の入力値と、前記第１の入力値との差分平均値を算出する第２の処理と、
前記第２の入力値及び前記差分平均値を前記メモリに保存する第３の処理と
を含む、情報処理方法。
【請求項１１】
前記メモリに保存された前記第２の入力値と前記差分平均値とを使用する補償処理を含む誤差逆伝播処理を実行する第４の処理を更に含む、請求項１０に記載の情報処理方法。
【請求項１２】
前記第４の処理により補償処理された前記チャネル単位の入力値を使用して、前記チャネル単位の前記誤差逆伝播処理を実行する処理を更に含む、請求項１１に記載の情報処理方法。
【請求項１３】
前記第２の処理は、
前記第１の入力値を所定の領域に分割する処理と、
前記分割された各領域の値と前記第２の入力値との差分平均値を算出する処理と
を更に含む、請求項１０に記載の情報処理方法。
【請求項１４】
前記第２の入力値と前記差分平均値とを前記メモリに保存する処理を更に含む、請求項１０に記載の情報処理方法。
【請求項１５】
プロセッサ及び当該プロセッサの演算に用いられるメモリを含み、畳み込み層を含む中間層を有する深層ニューラルネットワークの学習処理に適用する情報処理装置であって、
前記プロセッサは、
前記深層ニューラルネットワークの前記中間層において、チャネル単位で第１の入力値を表現する第１ビット数を減少した第２ビット数を得る第１の処理と、
前記第１の処理により得られた第２ビット数で表現された第２の入力値と、前記第１の入力値との差分平均値を算出する第２の処理と、
前記第２の入力値及び前記差分平均値を前記メモリに保存する第３の処理と
を実行する、情報処理装置。
【請求項１６】
前記プロセッサは、
前記メモリに保存された前記第２の入力値と前記差分平均値とを使用する補償処理を含む誤差逆伝播処理を実行する第４の処理を更に実行する、請求項１５に記載の情報処理装置。
【請求項１７】
前記プロセッサは、
前記第４の処理により補償処理された前記チャネル単位の入力値を使用して、前記チャネル単位の前記誤差逆伝播処理を実行する処理を更に実行する、請求項１５に記載の情報処理装置。
【請求項１８】
前記プロセッサは、
前記第２の処理として、
前記第１の入力値を所定の領域に分割する処理と、
前記分割された各領域の値と前記第２の入力値との差分平均値を算出する処理と
を更に実行する、請求項１５に記載の情報処理装置。
【請求項１９】
前記プロセッサは、
前記第２の入力値と前記差分平均値とを前記メモリに保存する処理を更に実行する、請求項１５に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、畳み込みニューラルネットワークの学習処理に適用する情報処理方法及び情報処理装置に関する。
【背景技術】
【０００２】
畳み込みニューラルネットワーク（Convolutional Neural Network：ＣＮＮ）は、例えば、画像認識処理に有効であり、学習処理において誤差逆伝播（back propagation：バックプロパゲーション）を適用するディープニューラルネットワーク（Deep Neural Network：ＤＮＮ）である。
【０００３】
ＣＮＮは入力層、中間層、出力層を含み、中間層において入力値とパラメータ（重み）を使用する一連の処理により、出力層から出力値を算出する。中間層では、畳み込み層を含む複数の層における入力値（前段層の出力値に相当）は、アクティベーション（Activation）と呼ばれている。
【０００４】
ＣＮＮの学習処理におけるバックプロパゲーションの間、アクティベーションはメモリに保存される。この場合、メモリ容量を節約するために、アクティベーションのビット数を削減する量子化が行われている。なお、量子化とは、いわゆるアナログ値をデジタル値に変換する処理ではなく、アクティベーションを表す値の元のビット数を削減する処理を意味する。
【０００５】
アクティベーションの量子化によりメモリの容量を節約できるが、単にアクティベーションのビット数を削減すると、ＣＮＮの学習処理の精度が低下することが確認されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１７−５９０７１号公報
【特許文献２】特開２０１７−４９６８４号公報
【特許文献３】特開２０１８−１５６４５１号公報
【非特許文献】
【０００７】
【非特許文献１】Eunhyeok Park, Sungjoo Yoo, and peter Vajda, “Value-aware Quantization for Training and Inference of Neural Networks”, ECCV 2018 paper, ［2019年１月２９日検索］インターネット＜URL: https://arxiv.org/abs/1804.07802>
【非特許文献２】Anonymous authors, “Backprop with Approximate Activations for Memory-efficient Network Training”, a conference paper at ICLR 2019, ［2019年１月３０日検索］インターネット＜URL: https://openreview.net/forum?id=rJgfjjC9Ym>
【発明の概要】
【発明が解決しようとする課題】
【０００８】
そこで、ＣＮＮにおいて、バックプロパゲーションで使用するアクティベーションの量子化を行うと共に、学習処理における十分な精度を実現できる情報処理方法及び情報処理装置を提供することにある。
【課題を解決するための手段】
【０００９】
本実施形態の情報処理方法は、プロセッサ及び当該プロセッサの演算に用いられるメモリを使用し、畳み込み層を含む中間層を有する深層ニューラルネットワークの学習処理に適用する情報処理方法であって、第１の処理、第２の処理、及び第３の処理を含む。前記第１の処理は、前記深層ニューラルネットワークの前記中間層において、チャネル単位で第１の入力値を表現する第１ビット数を減少した第２ビット数を得る。前記第２の処理は、前記第１の処理により得られた第２ビット数で表現された第２の入力値を、前記メモリに保存する。前記第３の処理は、前記保存された前記第２の入力値を入力値とする誤差逆伝播処理を実行する。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に関するシステムの構成を示すブロック図。
【図２】同実施形態に関するＣＮＮの一例を示す図。
【図３】同実施形態に関する学習処理に含まれる畳み込み処理及び量子化の概略を説明するための図。
【図４】同実施形態に関する学習処理の手順を説明するためのフローチャート。
【図５】同実施形態に関する効果の一例を説明するための図。
【図６】第２の実施形態に関するシステムにおける学習処理部の構成を説明するための図。
【図７】第２の実施形態に関する学習処理の手順を説明するためのフローチャート。
【図８】第２の実施形態に関する効果の一例を説明するための図。
【図９】第２の本実施形態の変形例を説明するための図。
【発明を実施するための形態】
【００１１】
以下図面を参照して、実施形態を説明する。
［第１の実施形態］
図１は、本第１の実施形態のシステムの構成を示すブロック図である。図１に示すように、本第１の実施形態のシステムは、プロセッサ１０、メモリ１１、及びアプリケーション（ＡＰ）システム１４を有する。
【００１２】
本実施形態では、プロセッサ１０は、例えばＧＰＵ（Graphic Processing Unit）やＣＰＵ（Central Processing Unit）であり、ハードウェア及びソフトウェアにより構成されている。プロセッサ１０は、ソフトウェアである学習処理部１２により、ディープニューラルネットワーク（ＤＮＮ又は単にニューラルネットワークと表記する）１３に対して、メモリ１１を使用して学習処理を実行する。本第１の実施形態の学習処理部１２は、後述する量子化を実行する量子化部を含む。
【００１３】
本第１の実施形態は、ＤＮＮ１３として、例えば画像認識処理に有効な畳み込みニューラルネットワーク（ＣＮＮ）２０を適用する。即ち、プロセッサ１０は、学習用データとして、例えば６万枚の画像データセットを含む入力データ１００を使用して、画像認識に関するＣＮＮ２０のパラメータの学習処理を実行する。なお、入力データ１００には、ＣＮＮの出力と比較するための正解ラベル（教師データ）も含まれる。
【００１４】
ＡＰシステム１４は、プロセッサ１０により最適化されたＣＮＮ２０を利用し、例えば、未知の入力画像を認識する画像認識システムである。画像認識システムは、ハードウェア及びソフトウェアから構成されるコンピュータ、サーバシステム、又はＷｅｂサービスを実行するクラウドシステムを含む。
【００１５】
図２は、本実施形態のＣＮＮ２０の一例を示すブロック図である。図２に示すように、ＣＮＮ２０は、図示しない入力層（input layer）と出力層（output layer）との間に中間層（internal layer）を含む。中間層は、隠れ層（hidden layer）とも呼ばれる。
【００１６】
中間層は、畳み込み層(convolution layer、以下ＣＶ層)２１-1、バッチ正規化層（Batch-Normalization layer：ＢＮ層）２２-1、活性化層（activation layer）２３-1を含む１段階層、及びＣＶ層２１-2、ＢＮ層２２-2、活性化層２３-2を含む２段階層のように、多段階層の構成である。
【００１７】
本第１の実施形態では、ＣＮＮ２０は、学習処理部１２により、入力データ１００から分割したミニバッチサイズの入力データ（入力Ｘ）に対する学習処理（ミニバッチ学習処理）を実行する。
【００１８】
ＣＮＮ２０においては、ＣＶ層２１-1（２１-2）は、入力Ｘに対する畳み込み処理を実行する。ＢＮ層２２-1（２２-2）は、正規化処理及びアフィン変換（affine transformation）を実行する。即ち、ＢＮ層２２-1（２２-2）は、ＣＶ層２１-1（２１-2）により算出される特徴の分布を調整して、当該分布の偏りを無くすように正規化処理を実行し、アフィン変換によりスケール及びシフト処理を行う。活性化層２３-1（２３-2）は、例えば活性化関数ＲｅＬＵ(Rectified linear Unit)を使用する活性化処理（数値の変換処理）を実行する。
［第１の実施形態の動作］
以下、図３及び図４を参照して、本第１の実施形態の動作を説明する。図３は、本第１の実施形態のＣＮＮ２０の学習処理に含まれる畳み込み処理及び量子化の概略を説明するための図である。図４は、当該学習処理の手順を説明するフローチャートである。なお、学習処理は学習処理部１２により実行されるが、ＣＮＮ２０の動作として説明する。
【００１９】
図３に示すように、ＣＮＮ２０では、ＣＶ層２１-1は、入力Ｘに対して、複数種類の重みフィルタ３２-1〜３２-3を用いた畳み込み処理（３１）を実行する。ここで、入力Ｘが例えばカラー画像のように、３つのチャネルＣＨ-1〜ＣＨ-3のアクティベーション３０-1〜３０-3を含む場合に、重みフィルタ３２-1（３２-2,３２-3）のチャネル数も３つとなる。具体的には、チャネルＣＨ-1〜ＣＨ-3は、例えばカラー画像の赤色画像、緑色画像、青色画像に対応する。
【００２０】
即ち、ＣＮＮ２０は、重みフィルタ３２（３２-1〜３２-3を代表して）による重みパラメータ（重みＷとバイアスＢを含む）を使用した畳み込み処理（３１）を実行する。ＣＮＮ２０は、畳み込み処理結果を、ＢＮ層２２-1や活性化層２３-1を含む各層を経由して、図示しない出力層まで伝播する（順伝搬：Forward）。出力層は、畳み込み処理（３１）により抽出された特徴量３３-1〜３３-3を含む出力Ｙと正解ラベルとの誤差を算出する。
【００２１】
出力Ｙと正解ラベルとの誤差（ｄＹ）がある場合には、ＣＮＮ２０は、バックプロパゲーション（誤差逆伝播）により、重みパラメータの更新処理を実行する。ここで、更新後の重みパラメータをｄＺとする。
【００２２】
ここで、前述したように、ＣＮＮ２０において、中間層でのＣＶ層２１-1を含む各層に対する入力値（入力Ｘ）は、アクティベーション（Activation）と呼ばれている。図３に示すように、本第１の実施形態では、アクティベーションは、チャネルＣＨ（ＣＨ-1〜ＣＨ-3を代表して）毎に量子化（３４）される。具体的には、学習処理部１２は、ＣＮＮ２０でのバックプロパゲーション（ＢＰ処理）の間に、チャネルＣＨ毎に量子化（３４）したアクティベーションをメモリ１１に保存する。これ以降の説明では、量子化（３４）したアクティベーションを量子化アクティベーションと称することもある。
【００２３】
前述のような概略による学習処理の手順を、図４のフローチャートを参照して説明する。
【００２４】
ＣＮＮ２０は、入力Ｘとして、チャネルＣＨ単位のアクティベーション３０（３０-1〜３０-3の代表として）を取得（入力）すると（Ｓ１）、前述のForward処理及びＢＰ処理（Backward処理）を実行する。即ち、Forward処理では、ＣＶ層２１は、重みフィルタ３２により、チャネルＣＨ単位のアクティベーション３０の畳み込み処理を実行する（Ｓ４）。ここで、本第１の実施形態では、Forward処理において、学習処理部１２は、ＣＮＮ２０でのＢＰ処理で使用するために、チャネルＣＨ単位でアクティベーション３０を量子化する（Ｓ２）。学習処理部１２は、量子化したチャネルＣＨ単位の量子化アクティベーションをメモリ１１に保存する（Ｓ３）。
【００２５】
一方、ＣＮＮ２０は、Forward処理として、畳み込み処理（Ｓ４）の結果を、ＢＮ層２２や活性化層２３を含む各層を経由して出力層まで伝播する。出力層は、畳み込み処理により抽出された特徴量を含む出力Ｙと正解ラベルとの誤差を算出する出力処理を実行する（Ｓ５）。
【００２６】
ＣＮＮ２０は、出力Ｙと正解ラベルとの誤差がある場合には（Ｓ６のＹＥＳ）、当該誤差を中間層に逆伝搬（Backward）して、重みパラメータの更新処理を実行するためのＢＰ処理を実行する（Ｓ７）。本第１の実施形態では、学習処理部１２は、メモリ１１に保存したチャネルＣＨ単位の量子化アクティベーションを使用して、ＢＰ処理を実行する。
【００２７】
以上のような学習処理において、図３に戻って、本第１の実施形態のＢＰ処理を説明する。
【００２８】
図３に示すように、チャネルＣＨ単位の各アクティベーション３０-1〜３０-3は、量子化（３４）されてメモリ１１に保存される。本第１の実施形態では、例えば３２ビットの精度で表現されるアクティベーションは、チャネルＣＨ毎に異なるビット数の精度で表現されるように量子化される。例えば、チャネルＣＨ-1に対応するアクティベーション３０-1は、ビット数が７ビットの精度で表現される量子化アクティベーション３５-1に量子化される。また、例えば、チャネルＣＨ-2に対応するアクティベーション３０-2は、ビット数が９ビットの精度で表現される量子化アクティベーション３５-2に量子化される。さらに、チャネルＣＨ-3に対応するアクティベーション３０-3は、例えば、ビット数が８ビットの精度で表現される量子化アクティベーション３５-3に量子化される。
【００２９】
ここで、量子化（３４）の条件としては、量子化幅（量子化により得られる値のビット数）は、各層において適切な学習精度を確保できる固定値とする。あるいは、当該量子化幅は、ＢＮ層２２-1（２２-2）による正規化処理後の分散値σに依存した値でもよい。正規化処理とは、入力Ｘの平均値μと分散値σを算出し、入力Ｘに対して平均値μを減算し、分散値σで除算する処理である。さらに、量子化（３４）の条件として、各チャネルＣＨのアクティベーション３０の最大値又は最小値により、適切な学習精度を確保できる量子化ビット数が決定される。
【００３０】
ＣＮＮ２０は、出力層において、出力Ｙと正解ラベルとの誤差ｄＹを算出すると、当該誤差ｄＹを逆伝播して、ＢＰ処理を実行する。ＢＰ処理は、チャネルＣＨ単位の量子化アクティベーションと逆伝播された誤差ｄＹとを使用して、各アクティベーション３０の重みパラメータを更新する（更新パラメータｄＺ）。例えば、７ビットの精度で量子化された、チャネルＣＨ-1の量子化アクティベーション３５-1と誤差３７-1とを使用して、更新処理（３６）を実行することで、更新パラメータ３８-1を算出する。同様にして、ＢＰ処理は、９ビットの精度で量子化された、チャネルＣＨ-2の量子化アクティベーション３５-2と誤差３７-2とを使用して、更新パラメータ３８-2を算出する。さらに、ＢＰ処理は、８ビットの精度で量子化された、チャネルＣＨ-3の量子化アクティベーション３５-3と誤差３７-3とを使用して、更新パラメータ３８-3を算出する。
【００３１】
ＣＮＮ２０は、重みパラメータを更新し、この更新パラメータ（ｄＺ）を使用して畳み込み処理を繰り返すことで、当該誤差が所定の値を下回るまで、又は学習処理の既定回数分（所定のエポック数）だけ学習処理を繰り返し実行する。
【００３２】
以上のように本第１の実施形態の方法によれば、ＣＮＮにおいて、中間層でのチャネル単位のアクティベーションを量子化して、ＢＰ処理に使用するために、量子化アクティベーションをメモリに保存する。即ち、ビット数を減少した量子化アクティベーションをメモリに保存するため、メモリ容量の削減を図ることができる。この場合、チャネル単位でアクティベーションを量子化することで、適切な精度を確保できる量子化ビット数をチャネル単位に決定できる。
【００３３】
従って、本第１の実施形態の方法は、順方向にアクティベーションをＣＮＮ内で一様に量子化する場合と比較して、適切な学習精度を確保することが可能である。また、本実施形態の量子化条件として、量子化幅（量子化により得られる値のビット数）を、各層において適切な学習精度を確保できる固定値とするため、当該量子化幅の影響による学習精度の劣化を回避できる可能性が高い。
【００３４】
さらに、チャネル単位の量子化ビット数を例えば８ビットとして設定し、チャネル毎に量子化幅を正規化処理後の分散値σの所定の範囲で量子化し、範囲外をクリップ（clip）する比較例が考えられる。この比較例では、当該クリップの影響による学習精度の劣化が予想される。図５は、本実施形態の方法による学習結果５０と、当該従来方法による学習結果５１とを比較した一例である。ここで、図５は、横軸が例えばImageNet（学習用サンプルとしてインターネット上に用意された画像データセット）の１０００クラス（class）の画像データセットから８０クラス分を抽出した学習処理の繰り返し回数（iteration）であり、縦軸が学習精度（accuracy）を示す。図５に示すように、本第１の実施形態の方法は、従来方法と比較して相対的に高い学習精度を確保できる。
【００３５】
［第２の実施形態］
図６は、第２の実施形態に関する学習処理部１２ａの内部構成の一例を示すブロック図である。なお、本第２の実施形態のシステムの構成は、図６に示す学習処理部１２ａの内部構成を除いて、前述した第１の実施形態のシステム（図１及び図２を参照）と同様である。
【００３６】
図６に示すように、本第２の実施形態の学習処理部１２ａは、前述のForward処理時に、チャネル単位でアクティベーションを量子化して、チャネル単位の量子化アクティベーションをメモリ１１に保存する量子化部６０を含む。さらに、学習処理部１２ａは、前述のBackward処理（ＢＰ処理）時に、チャネル単位の量子化アクティベーションを補償する補償処理部７０を含む。
【００３７】
量子化部６０は、前述したように、例えば３つのチャネルＣＨ-1〜ＣＨ-3の入力Ｘであるアクティベーション（６１）に対して、ＢＰ処理で使用するために、チャネル単位で量子化処理（６２）を実行する。量子化部６０は、量子化処理（６２）によりチャネル単位の量子化アクティベーション（ＸＱ）を得て、これをメモリ１１に保存する。
【００３８】
本第２の実施形態では、量子化部６０は、量子化アクティベーション（ＸＱ）と、量子化前のアクティベーション（６１）との差分を算出する算出処理（６３）を実行する。さらに、量子化部６０は、算出処理（６３）により算出した当該差分値のチャネル単位やミニバッチ単位の平均値（差分平均値）を算出する算出処理（６４）を実行する。量子化部６０は、算出処理（６４）により算出した当該差分平均値を、量子化アクティベーション（ＸＱ）と共にメモリ１１に保存する。
【００３９】
一方、補償処理部７０は、Backward処理時に、メモリ１１に保存した量子化アクティベーション（ＸＱ）と差分平均値とを加算して、量子化により消失したビット数を補償する補償処理（７１）を実行する。即ち、補償処理部７０は、補償処理（７１）による補償後のアクティベーション（７２）を、ＢＰ処理で使用するためにチャネルＣＨ単位の入力（Ｘｂ）として生成する。
【００４０】
次に、図７のフローチャート、及び前述の図２、６も合わせて参照して、本第２の実施形態による学習処理の手順を説明する。
【００４１】
本第２の実施形態のＣＮＮ２０ａ（図２に示すＣＮＮ２０と同様の構成）は、入力Ｘとして、チャネルＣＨ単位のアクティベーション（６１）を取得（入力）すると（Ｓ１０）、前述のForward処理及びBackward処理（ＢＰ処理）を実行する。即ち、Forward処理では、ＣＶ層２１は、重みフィルタ３２により、チャネルＣＨ単位のアクティベーション（６１）の畳み込み処理を実行する（Ｓ１５）。
【００４２】
ここで、本第２の実施形態では、学習処理部１２ａに含まれる量子化部６０は、ＢＰ処理で使用するために、チャネルＣＨ単位でアクティベーション（６１）を量子化する（Ｓ１１）。さらに、量子化部６０は、量子化後の量子化アクティベーション（ＸＱ）と、量子化前のアクティベーション（６１）との差分を算出する（Ｓ１２）。量子化部６０は、量子化前後の当該差分値の平均値（チャネル単位やミニバッチ単位の差分平均値）を算出する平均化処理を実行する（Ｓ１３）。量子化部６０は、当該差分平均値を、量子化アクティベーション（ＸＱ）と共にメモリ１１に保存する（Ｓ１４）。
【００４３】
一方、ＣＮＮ２０ａは、Forward処理として、畳み込み処理（Ｓ１５）の結果を、ＢＮ層２２や活性化層２３を含む各層を経由して出力層まで伝播する。出力層は、畳み込み処理により抽出された特徴量を含む出力Ｙと正解ラベルとの誤差を算出する出力処理を実行する（Ｓ１６）。ＣＮＮ２０ａは、出力Ｙと正解ラベルとの誤差がある場合には（Ｓ１７のＹＥＳ）、当該誤差を中間層に逆伝搬（Backward）して、重みパラメータの更新処理を実行するためのＢＰ処理を実行する（Ｓ１８）。
【００４４】
ここで、本第２の実施形態では、ＢＰ処理を実行する前段階として、学習処理部１２ａに含まれる補償処理部７０は、メモリ１１に保存した量子化アクティベーション（ＸＱ）を、差分平均値を用いて補償処理し、補償後のアクティベーション（７２）を出力する。具体的には、補償処理部７０は、前述したように、メモリ１１に保存した量子化アクティベーション（ＸＱ）と差分平均値とを加算して、量子化により消失したビット数を補償する。
【００４５】
本第２の実施形態では、学習処理部１２ａは、補償後のチャネルＣＨ単位のアクティベーション（７２）を使用して、重みパラメータを更新するＢＰ処理を実行する。なお、本第２の実施形態においても、補償後のチャネルＣＨ単位のアクティベーション（７２）を使用する以外は、前述したように第１の実施形態の場合と同様のＢＰ処理を実行する。また、量子化部６０による量子化処理（６２）の条件についても、第１の実施形態の場合と同様である。
【００４６】
以上のように本第２の実施形態の方法においても、中間層でのチャネル単位のアクティベーションを量子化して、ＢＰ処理に使用するためにメモリに保存する。このため、量子化前のアクティベーションに対して、ビット数を減少した量子化アクティベーションをメモリに保存できるため、メモリ容量の削減を図ることができる。
【００４７】
一方で、量子化により、量子化前に所定のビット数（例えば３２ビット）で表現されたビット列から、ＬＳＢ（Least Significant Bit）以下の情報が消失するため、学習精度が劣化する。このため、チャネル単位で量子化ビット数を設定する場合に、所定の学習精度を確保するため、削減するビット数は制限される。本第２の実施形態では、前述したように、補償処理部７０により、量子化アクティベーションに対して、量子化により消失したビット数を補償することが可能となる。従って、チャネル単位でアクティベーションを量子化する場合に、削減するビット数を相対的に増大させても、所定の学習精度を確保することが可能となる。
【００４８】
図８は、本第２の実施形態の方法による学習結果８０と、補償処理のない方法による学習結果８１とを比較した一例である。ここで、図８は、横軸が例えばImageNet（学習用サンプルとしてインターネット上に用意された画像データセット）の１０００クラス（class）の画像データセットから４０クラス分を抽出した学習処理の繰り返し回数（iteration）であり、縦軸が例えば３ビットで量子化した場合の学習精度（accuracy）を示す。図８に示すように、本実施形態の方法は、補償処理のない方法と比較して相対的に高い学習精度を確保できる。
【００４９】
［変形例］
図９は、第２の実施形態の変形例を説明するための図である。図９に示すように、本変形例のＣＮＮ９０は、図２に示すようなＣＮＮ２０の一例に対して、プーリング層（pooling layer）２４を含む一例である。プーリング層２４は、活性化層２３から出力される特徴量を縮小する処理を実行する。即ち、活性化層２３からの出力Ｙであるチャネル毎の特徴量のサイズ（ここでは画像サイズ）が１４×１４（画素）の場合に、プーリング層２４は、７×７（画素）のサイズに縮小した特徴量９２（９２-1〜９２-3）を出力する。
【００５０】
ＣＮＮ９０では、Forward処理の進行に応じて各層の特徴量のサイズが小さくなるような構成になっている。ここで、特徴量のサイズが相対的に大きい場合、量子化部６０での平均化処理（６４）において差分平均値を算出すると、いわゆるアクティベーションの局所性（即ち、画像１枚単位の特徴）が差分平均値から失われることが確認されている。
【００５１】
そこで、本変形例では、量子化部６０は、量子化前後の当該差分値の平均値を算出する場合に、量子化前のアクティベーション（６１）を特定単位のサイズ（ＨサイズやＷサイズ）の領域毎に分割する。Ｈサイズは、重みフィルタに相当する小さい画像サイズを意味する。また、Ｗサイズは、グレースケールの画像サイズに対応する。
【００５２】
具体的には、量子化部６０は、例えば、１４×１４サイズの特徴量９１（９１-1〜９１-3）を７×７サイズの各領域に分割して、分割した各領域について量子化前のアクティベーション（６１）と、量子化アクティベーション（ＸＱ）と、の差分値の平均値を算出する。量子化部６０は、各領域に対する当該差分平均値をメモリ１１に保存する。これにより、相対的に特徴量のサイズが大きい、例えば１４×１４サイズの特徴量９１に対する量子化アクティベーション（ＸＱ）を補償する場合に、７×７サイズの各領域との当該差分平均値を利用できる。従って、ＢＰ処理時にサイズが大きい特徴量の量子化アクティベーション（ＸＱ）を使用する場合、当該差分平均値を使用して補償処理を行うことにより、当該量子化アクティベーション（ＸＱ）の局所性を確保することが可能となる。
【００５３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５４】
１０…プロセッサ、１１…メモリ、１２，１２ａ…学習処理部、
１３…深層ニューラルネットワーク（ＤＮＮ）、１４…ＡＰシステム、
２０，９０…畳み込みニューラルネットワーク（ＣＮＮ）、
２１-1,２１-2…畳み込み層（ＣＶ層）、
２２-1，２２-2…バッチ正規化層（ＢＮ層）、２３-1，２３-2…活性化層、
６０…量子化部、７０…補償処理部。
【図１】
2020149311.tif 000003
【図２】
2020149311.tif 000004
【図３】
2020149311.tif 000005
【図４】
2020149311.tif 000006
【図５】
2020149311.tif 000007
【図６】
2020149311.tif 000008
【図７】
2020149311.tif 000009
【図８】
2020149311.tif 000010
【図９】
2020149311.tif 000011