JP6992864B1 - ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム - Google Patents
ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム Download PDFInfo
- Publication number
- JP6992864B1 JP6992864B1 JP2020161812A JP2020161812A JP6992864B1 JP 6992864 B1 JP6992864 B1 JP 6992864B1 JP 2020161812 A JP2020161812 A JP 2020161812A JP 2020161812 A JP2020161812 A JP 2020161812A JP 6992864 B1 JP6992864 B1 JP 6992864B1
- Authority
- JP
- Japan
- Prior art keywords
- neural network
- coefficient
- channel
- layer
- learning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 184
- 239000013585 weight reducing agent Substances 0.000 title claims abstract description 44
- 238000000034 method Methods 0.000 title claims description 42
- 230000006870 function Effects 0.000 claims abstract description 182
- 238000013139 quantization Methods 0.000 claims abstract description 95
- 238000012549 training Methods 0.000 claims abstract description 73
- 238000012545 processing Methods 0.000 claims abstract description 47
- 238000012937 correction Methods 0.000 claims description 48
- 230000004048 modification Effects 0.000 claims description 37
- 238000012986 modification Methods 0.000 claims description 37
- 230000008569 process Effects 0.000 claims description 20
- 238000010606 normalization Methods 0.000 claims description 15
- 230000009466 transformation Effects 0.000 claims description 5
- 230000001131 transforming effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 abstract description 7
- 230000007423 decrease Effects 0.000 abstract description 4
- 238000007667 floating Methods 0.000 description 10
- 230000010365 information processing Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000004913 activation Effects 0.000 description 7
- 230000006866 deterioration Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 3
- 238000011478 gradient descent method Methods 0.000 description 3
- 238000003062 neural network model Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】ニューラルネットワークの処理効率の低下を抑制しつつ精度を向上させる。【解決手段】第1のニューラルネットワークの修正対象層に対して、訓練可能な第1の係数を含んだ第1の量子化関数と、訓練可能な第2の係数を含んだ第2の量子化関数と、チャネル単位の訓練可能な第3の係数を含んだチャネル減衰関数とを導入して第2のニューラルネットワークを生成し、第2のニューラルネットワークに基づく学習により、第1のニューラルネットワークの重みパラメータと第1の係数と第2の係数と第3の係数とを訓練し、学習後の第2のニューラルネットワークに基づく再学習により、重みパラメータを再訓練し、再学習後の第2のニューラルネットワークからチャネル減衰関数と修正対象層における訓練後の第3の係数に応じた冗長チャネルの重みパラメータとが削除された第3のニューラルネットワークを出力するニューラルネットワーク軽量化装置が提供される。【選択図】図1
Description
本発明は、ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラムに関する。
近年、各種の分野においてニューラルネットワークが用いられている。例えば、物体の認識または物体の位置検出などを目的とした一般的なニューラルネットワークのモデルが知られている。かかる一般的なニューラルネットワークのモデルでは、畳み込み層または全結合層における演算に、16~32ビットの浮動小数点によってそれぞれ表現される特徴量および重みパラメータが使用される。
一方、例えば、量子化ニューラルネットワークの形態の一つである2値化ニューラルネットワークでは、畳み込み層または全結合層における演算に使用される特徴量および重みパラメータは、それぞれ(-1と1で表現される)1ビット(すなわち2値)で表現され得る。これによって、畳み込み層または全結合層での浮動小数点演算がビット演算に置き換えられ得る。ビット演算が使用される場合には、浮動小数点演算が使用される場合よりも、低消費電力かつ高速な演算処理が実行され得るとともに、メモリ使用量も低減され得るため、FPGA(Field Programmable Gate Array)またはモバイル端末などといった、演算リソースの限られたデバイス上でもディープラーニングモデルの効率的な処理が可能となることが知られている。
例えば、2値化ニューラルネットワークの構築方法が開示されている(例えば、非特許文献1参照)。より詳細に、かかる非特許文献1には、全ての畳み込み層または全結合層において、浮動小数点で表現される重みパラメータを符号関数により-1または1で表現される2値に変換するとともに、入力される特徴量も符号関数により-1または1で表現される2値に変換する方法が開示されている。
また、量子化ニューラルネットワークの構築方法が開示されている(例えば、非特許文献2参照)。より詳細に、かかる非特許文献2には、あらかじめ層ごとに、異なる量子化ビット数(ビット精度)を持つ重みパラメータと入力特徴量との組み合わせが複数定義されており、畳み込みニューラルネットワークは、各層において複数の組み合わせの中から最適な組み合わせを一つ選択するように学習される方法が開示されている。
Itay Hubara、他4名、"Binarized Neural Networks"、[online]、Neural Information ProcessingSystems (2016)、[令和2年9月16日検索]、インターネット<http://papers.nips.cc/paper/6573-binarized-neural-networks>
Bichen Wu、他5名、"MixedPrecision Quantization of ConvNets via Differentiable Neural ArchitectureSearch"、[online]、2018年、[令和2年9月16日検索]、インターネット<https://arxiv.org/abs/1812.00090>
Benoit Jacob、他7名、"Quantization and Training of Neural Networksfor Efficient Integer-Arithmetic-Only Inference"、[online]、2017年、[令和2年9月16日検索]、インターネット<https://arxiv.org/abs/1712.05877>
しかしながら、非特許文献1に開示されている方法によれば、畳み込み層または全結合層に入力されるデータ(例えば、特徴量および重みパラメータなど)の2値化に伴って生じる誤差(量子化誤差)が大きく量子化ニューラルネットワークモデルの精度が大きく劣化してしまう可能性がある。また、非特許文献1に開示されている方法によれば、チャネル数が固定であるため、量子化ニューラルネットワークが冗長なチャネルを含んでしまう可能性がある。
また、非特許文献2に開示されている方法によれば、量子化ビット数を層ごとに推定することが可能である一方、学習の過程において、重みパラメータと入力特徴量との複数の組み合わせそれぞれに対応する畳み込み層をメモリ上にロードし、その全ての畳み込み層に対する順伝播および逆伝播を何度も繰り返す必要がある。そのため、非特許文献2に開示されている方法によれば、収束までに多くの時間を要する上に、全部の組み合わせをあらかじめ定義するのは困難であり得る。
そこで、あらかじめ用意すべきデータ(例えば、非特許文献2に開示されている複数の組み合わせそれぞれに対応する畳み込み層)の量を低減しつつ、処理効率の向上と精度劣化の抑制とが可能なニューラルネットワークを構築することを可能とする技術が提供されることが望まれる。
上記問題を解決するために、本発明のある観点によれば、複数の処理層を含んだ第1のニューラルネットワークを取得する入力部と、前記複数の処理層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層に対して、訓練可能な第1の係数を含んだ第1の量子化関数と、訓練可能な第2の係数を含んだ第2の量子化関数と、チャネル単位の訓練可能な第3の係数を含んだチャネル減衰関数とを導入して第2のニューラルネットワークを生成する修正部と、前記第2のニューラルネットワークに基づく学習により、前記第1のニューラルネットワークの重みパラメータと前記第1の係数と前記第2の係数と前記第3の係数とを訓練する学習部と、学習後の第2のニューラルネットワークに基づく再学習により、前記重みパラメータを再訓練する再学習部と、再学習後の第2のニューラルネットワークから前記チャネル減衰関数と前記修正対象層における訓練後の第3の係数に応じた冗長チャネルの重みパラメータとが削除された第3のニューラルネットワークを出力する出力部と、を備える、ニューラルネットワーク軽量化装置が提供される。
前記学習部は、前記重みパラメータを訓練する第1の学習と、前記第1の係数、前記第2の係数および前記第3の係数を訓練する第2の学習とを、片方ずつ行ってもよい。
前記チャネル減衰関数は、前記第2の学習に際して、前記修正対象層への入力に対して前記第3の係数に応じた値の乗算をチャネル単位に実行する処理を含んでもよい。
前記チャネル減衰関数は、前記第1の学習に際して、前記修正対象層への入力のうち、前記第3の係数に応じた値が所定の閾値を下回るチャネルに対応する入力を零にする処理を含んでもよい。
前記冗長チャネルは、訓練後の前記第3の係数に応じた値が前記所定の閾値を下回るチャネルであってもよい。
前記チャネル減衰関数は、前記第2の学習に際して、前記修正対象層への入力に対して、前記第3の係数に応じた値の乗算とともに、段階的に値が小さくなる調整パラメータの乗算を実行する処理を含んでもよい。
前記学習部は、前記第2の学習に際して、前記調整パラメータが組み込まれた損失関数に基づいて学習を行うことにより前記調整パラメータを段階的に小さくしてもよい。
前記学習部は、前記第2の学習に際して、あらかじめ定められたスケジュールに従って、前記調整パラメータを段階的に小さくしてもよい。
前記修正部は、前記修正対象層への入力に対して前記チャネル減衰関数および前記第1の量子化関数が適用されるように、前記チャネル減衰関数および前記第1の量子化関数を導入してもよい。
前記第1の量子化関数は、前記チャネル減衰関数からの出力に対して第1の正規化を行った後に前記第1の係数を乗算する処理を含んでもよい。
前記第1の正規化は、前記チャネル減衰関数からの出力を第1の値域に収める変換を含んでもよい。
前記修正部は、前記修正対象層の重みパラメータに対して前記第2の量子化関数が適用されるように、前記第2の量子化関数を導入してもよい。
前記第2の量子化関数は、前記修正対象層の重みパラメータに対して第2の正規化を行った後に前記第2の係数を乗算する処理を含んでもよい。
前記第2の正規化は、前記修正対象層の重みパラメータを第2の値域に収める変換を含んでもよい。
前記修正対象層は、畳み込み層および全結合層の少なくともいずれか一つを含んでもよい。
前記再学習部は、前記第1の係数を訓練後の第1の係数に固定し、前記第2の係数を訓練後の第2の係数に固定し、前記第3の係数を訓練後の第3の係数に固定した状態において、前記重みパラメータを再訓練してもよい。
また、本発明の別の観点によれば、複数の処理層を含んだ第1のニューラルネットワークを取得することと、前記複数の処理層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層に対して、訓練可能な第1の係数を含んだ第1の量子化関数と、訓練可能な第2の係数を含んだ第2の量子化関数と、チャネル単位の訓練可能な第3の係数を含んだチャネル減衰関数とを導入して第2のニューラルネットワークを生成することと、前記第2のニューラルネットワークに基づく学習により、前記第1のニューラルネットワークの重みパラメータと前記第1の係数と前記第2の係数と前記第3の係数とを訓練することと、学習後の第2のニューラルネットワークに基づく再学習により、前記重みパラメータを再訓練することと、再学習後の第2のニューラルネットワークから前記チャネル減衰関数と前記修正対象層における訓練後の第3の係数に応じた冗長チャネルの重みパラメータとが削除された第3のニューラルネットワークを出力することと、を含む、ニューラルネットワーク軽量化方法が提供される。
また、本発明の別の観点によれば、コンピュータを、複数の処理層を含んだ第1のニューラルネットワークを取得する入力部と、前記複数の処理層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層に対して、訓練可能な第1の係数を含んだ第1の量子化関数と、訓練可能な第2の係数を含んだ第2の量子化関数と、チャネル単位の訓練可能な第3の係数を含んだチャネル減衰関数とを導入して第2のニューラルネットワークを生成する修正部と、前記第2のニューラルネットワークに基づく学習により、前記第1のニューラルネットワークの重みパラメータと前記第1の係数と前記第2の係数と前記第3の係数とを訓練する学習部と、学習後の第2のニューラルネットワークに基づく再学習により、前記重みパラメータを再訓練する再学習部と、再学習後の第2のニューラルネットワークから前記チャネル減衰関数と前記修正対象層における訓練後の第3の係数に応じた冗長チャネルの重みパラメータとが削除された第3のニューラルネットワークを出力する出力部と、を備えるニューラルネットワーク軽量化装置として機能させるプログラムが提供される。
以上説明したように本発明によれば、あらかじめ用意すべきデータ量を低減しつつ、処理効率の向上と精度劣化の抑制とが可能なニューラルネットワークを構築することを可能とする技術が提供される。
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
また、本明細書および図面において、実質的に同一の機能構成を有する複数の構成要素を、同一の符号の後に異なる数字を付して区別する場合がある。ただし、実質的に同一の機能構成を有する複数の構成要素等の各々を特に区別する必要がない場合、同一符号のみを付する。また、異なる実施形態の類似する構成要素については、同一の符号の後に異なるアルファベットを付して区別する場合がある。ただし、異なる実施形態の類似する構成要素等の各々を特に区別する必要がない場合、同一符号のみを付する。
(1.実施形態の詳細)
続いて、本発明の実施形態の詳細について説明する。
続いて、本発明の実施形態の詳細について説明する。
(1-1.構成の説明)
まず、本発明の実施形態に係るニューラルネットワーク軽量化装置の構成例について説明する。図1は、本発明の実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。図1に示されるように、本発明の実施形態に係るニューラルネットワーク軽量化装置10は、入力部100、修正部101、学習部102、再学習部103および出力部104を備える。
まず、本発明の実施形態に係るニューラルネットワーク軽量化装置の構成例について説明する。図1は、本発明の実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。図1に示されるように、本発明の実施形態に係るニューラルネットワーク軽量化装置10は、入力部100、修正部101、学習部102、再学習部103および出力部104を備える。
ニューラルネットワーク軽量化装置10は、CPU(Central Processing Unit)などの演算装置を含み、図示しないメモリにより記憶されているプログラムがCPUによりRAM(Random Access Memory)に展開されて実行されることにより、その機能が実現され得る。このとき、当該プログラムを記録した、コンピュータに読み取り可能な記録媒体も提供され得る。あるいは、ニューラルネットワーク軽量化装置10は、専用のハードウェアにより構成されていてもよいし、複数のハードウェアの組み合わせにより構成されてもよい。
(入力部100)
入力部100は、軽量化対象のニューラルネットワーク(第1のニューラルネットワーク)および軽量化対象のニューラルネットワークの学習に使用されるデータ(学習用データセット)を取得する。例えば、入力部100は、軽量化対象のニューラルネットワークおよび学習用データセットを、図示しないメモリから読み出すことによって取得してもよい。例えば、軽量化対象のニューラルネットワークは、学習前のニューラルネットワークの構造(モデル構造)であってよい。
入力部100は、軽量化対象のニューラルネットワーク(第1のニューラルネットワーク)および軽量化対象のニューラルネットワークの学習に使用されるデータ(学習用データセット)を取得する。例えば、入力部100は、軽量化対象のニューラルネットワークおよび学習用データセットを、図示しないメモリから読み出すことによって取得してもよい。例えば、軽量化対象のニューラルネットワークは、学習前のニューラルネットワークの構造(モデル構造)であってよい。
図2は、軽量化対象のニューラルネットワークの一例を示す図である。図2に示されるように、軽量化対象のニューラルネットワークは、第1層から第N層(Nは2以上の整数)までの複数の層によって構成される。第1層には、入力データが入力され、第N層からは、出力データが出力される。第1層から第N層までの各層には、処理層が含まれており、第1層から第N層までの各層の次層には、活性化関数が挿入されている。第1層から第N層までの各層に含まれる処理層は、次層に含まれる活性化関数に対して出力を行う。
図2に示された例では、第1層から第(N-1)層までの各層に含まれる処理層は、畳み込み層であり、第N層に含まれる処理層は、全結合層である。しかし、第1層から第N層までの各層に含まれる処理層の種類は、図2に示された例に限定されない。例えば、軽量化対象のニューラルネットワークは、処理層として畳み込み層および全結合層の一方を、1または複数含んでもよいし、処理層として畳み込み層および全結合層のそれぞれを、1または複数含んでもよい。また、軽量化対象のニューラルネットワークは、畳み込み層以外かつ全結合層以外の処理層を含んでもよい。
また、図2には、軽量化対象のニューラルネットワークの第1層から第N層までの処理層によって使用される重みパラメータとして、重みパラメータw1~wNが示されている。本発明の実施形態では、軽量化対象のニューラルネットワークの各処理層による演算に、16~32ビットの浮動小数点によってそれぞれ表現される特徴量および重みパラメータが使用される場合を想定する。しかし、軽量化対象のニューラルネットワークの各処理層によって使用される特徴量および重みパラメータそれぞれの形式は、かかる例に限定されない。
図1に戻って説明を続ける。入力部100によって取得された軽量化対象のニューラルネットワークおよび学習用データセットは、修正部101に出力される。
(修正部101)
修正部101は、入力部100から入力された軽量化対象のニューラルネットワークに基づいて、軽量化対象のニューラルネットワークに含まれる少なくとも一つの処理層を修正対象層として特定する。ここでは、第1層から第(N-1)層に含まれる畳み込み層、および、第N層に含まれる全結合層の全部を、修正対象層として特定する場合を想定する。しかし、修正部101は、軽量化対象のニューラルネットワークに含まれる畳み込み層および全結合層の一部のみを修正対象層として特定してもよい(すなわち、修正対象層は、畳み込み層および全結合層の少なくともいずれか一つを含んでもよい)。
修正部101は、入力部100から入力された軽量化対象のニューラルネットワークに基づいて、軽量化対象のニューラルネットワークに含まれる少なくとも一つの処理層を修正対象層として特定する。ここでは、第1層から第(N-1)層に含まれる畳み込み層、および、第N層に含まれる全結合層の全部を、修正対象層として特定する場合を想定する。しかし、修正部101は、軽量化対象のニューラルネットワークに含まれる畳み込み層および全結合層の一部のみを修正対象層として特定してもよい(すなわち、修正対象層は、畳み込み層および全結合層の少なくともいずれか一つを含んでもよい)。
例えば、修正部101は、軽量化対象のニューラルネットワークに含まれる畳み込み層および全結合層のうち、あらかじめ定められた一部のみを修正対象層として特定してもよい。一例として、最初の畳み込み層(すなわち、第1層に含まれる畳み込み層)、および、最後の畳み込み層(すなわち、第(N-1)層に含まれる畳み込み層)は、他の層の畳み込み層よりもニューラルネットワークの精度に与える影響が大きい可能性があるため、修正対象層として特定されなくてもよい。
修正部101は、修正対象層に対して(複数の修正対象層が特定された場合には、複数の修正対象層それぞれに対して)、訓練可能な係数γ1(第1の係数)を含んだ第1の量子化関数と、訓練可能な係数γ2(第2の係数)を含んだ第2の量子化関数と、チャネル単位の訓練可能な係数α(第3の係数)を含んだチャネル減衰関数とを導入する。例えば、量子化関数は、連続的な値を離散的な値に変換する関数を意味し得る。これによって、修正部101は、訓練対象のニューラルネットワーク(第2のニューラルネットワーク)を生成する。修正部101によって生成された訓練対象のニューラルネットワークおよび学習用データセットは、学習部102に出力される。
(学習部102)
学習部102は、修正部101から入力された学習用データセットに基づいて、修正部101から入力された訓練対象のニューラルネットワークに基づく学習を行う。例えば、学習部102は、誤差逆伝播法(バックプロパゲーション)などを用いて、訓練対象のニューラルネットワークに基づく学習を行う。これによって、重みパラメータと、第1の量子化関数に含まれる係数γ1と、第2の量子化関数に含まれる係数γ2と、チャネル減衰関数に含まれる係数αとが訓練される。
学習部102は、修正部101から入力された学習用データセットに基づいて、修正部101から入力された訓練対象のニューラルネットワークに基づく学習を行う。例えば、学習部102は、誤差逆伝播法(バックプロパゲーション)などを用いて、訓練対象のニューラルネットワークに基づく学習を行う。これによって、重みパラメータと、第1の量子化関数に含まれる係数γ1と、第2の量子化関数に含まれる係数γ2と、チャネル減衰関数に含まれる係数αとが訓練される。
なお、後に詳細に説明するように、学習部102は、重みパラメータを訓練する第1の学習と、係数γ1、係数γ2および係数αを訓練する第2の学習とを、片方ずつ行うのが望ましい。また、重みパラメータの初期値には、乱数が使用されてよいが、軽量化対象のニューラルネットワークの訓練済みの重みパラメータがあれば、訓練済みの重みパラメータが初期値として利用されてもよい。学習部102による学習後の訓練対象のニューラルネットワークおよび学習用データセットは、再学習部103に出力される。
(再学習部103)
再学習部103は、学習部102から入力された学習用データセットに基づいて、学習部102から入力された学習後の訓練対象のニューラルネットワークに基づく再学習を行う。例えば、再学習部103は、重みパラメータを初期化し、誤差逆伝播法などを用いて、学習後の訓練対象のニューラルネットワークに基づく再学習を行う。これによって、重みパラメータが再訓練される。再学習部103による再学習後の訓練対象のニューラルネットワークは、出力部104に出力される。
再学習部103は、学習部102から入力された学習用データセットに基づいて、学習部102から入力された学習後の訓練対象のニューラルネットワークに基づく再学習を行う。例えば、再学習部103は、重みパラメータを初期化し、誤差逆伝播法などを用いて、学習後の訓練対象のニューラルネットワークに基づく再学習を行う。これによって、重みパラメータが再訓練される。再学習部103による再学習後の訓練対象のニューラルネットワークは、出力部104に出力される。
(出力部104)
出力部104は、再学習部103から入力された再学習後の訓練対象のニューラルネットワークから、チャネル減衰関数を削除するとともに、修正対象層における訓練後の係数αに応じた冗長チャネルの重みパラメータを削除して、出力対象のニューラルネットワーク(第3のニューラルネットワーク)を生成する。そして、出力部104は、出力対象のニューラルネットワークを出力する。なお、出力対象のニューラルネットワークは、どのように出力されてもよい。例えば、出力部104は、出力対象のニューラルネットワークを記録媒体に出力することによって、記録媒体に出力対象のニューラルネットワークを記録してもよい。あるいは、出力部104は、出力対象のニューラルネットワークを通信装置に出力することによって、通信装置を介して出力対象のニューラルネットワークを他の装置に送信してもよい。
出力部104は、再学習部103から入力された再学習後の訓練対象のニューラルネットワークから、チャネル減衰関数を削除するとともに、修正対象層における訓練後の係数αに応じた冗長チャネルの重みパラメータを削除して、出力対象のニューラルネットワーク(第3のニューラルネットワーク)を生成する。そして、出力部104は、出力対象のニューラルネットワークを出力する。なお、出力対象のニューラルネットワークは、どのように出力されてもよい。例えば、出力部104は、出力対象のニューラルネットワークを記録媒体に出力することによって、記録媒体に出力対象のニューラルネットワークを記録してもよい。あるいは、出力部104は、出力対象のニューラルネットワークを通信装置に出力することによって、通信装置を介して出力対象のニューラルネットワークを他の装置に送信してもよい。
(1-2.動作の説明)
続いて、本発明の実施形態に係るニューラルネットワーク軽量化装置10の動作例について説明する。上記したように、入力部100によって、軽量化対象のニューラルネットワーク(図2)および学習用データセットが取得される。ここでは一例として、学習用データとして2次元画像が使用される場合を想定する。このとき、軽量化対象のニューラルネットワークに含まれる第l(エル)層の畳み込み層によって行われる演算は、下記の数式(1)のように示される。
続いて、本発明の実施形態に係るニューラルネットワーク軽量化装置10の動作例について説明する。上記したように、入力部100によって、軽量化対象のニューラルネットワーク(図2)および学習用データセットが取得される。ここでは一例として、学習用データとして2次元画像が使用される場合を想定する。このとき、軽量化対象のニューラルネットワークに含まれる第l(エル)層の畳み込み層によって行われる演算は、下記の数式(1)のように示される。
ここで、xlは、第l(エル)層の畳み込み層への入力特徴量を示し、wlは、第l層の畳み込み層によって使用される重みパラメータを示し、添え字i、j、n、mは、それぞれ出力チャネル、入力チャネル、画像の幅、画像の高さを示し、f()は、活性化関数を示している。ただし、数式(1)において第(l+1)層への入力特徴量xi
l+1に対応する画像の幅と画像の高さを示す添え字は省略されている。数式(1)に示されるように、重みパラメータと入力特徴量との内積が計算された後に、活性化関数が適用される。例えば、活性化関数にはランプ関数などが利用されてよい。また、活性化関数の適用前にバッチ正規化が適用されてもよい。
図3は、第l層の畳み込み層の一般的な構成例を示す図である。図3を参照すると、第l層の畳み込み層202が示されている。第l層の畳み込み層202には、前層からの出力に対して活性化関数が適用されたデータが入力特徴量xlとして入力される。また、第l層の畳み込み層202は、重みパラメータwlを有している。第l層の畳み込み層202は、入力特徴量xlと重みパラメータwlとの内積を計算する。かかる計算結果は、次層に出力される。入力部100は、軽量化対象のニューラルネットワークおよび学習用データセットを修正部101に出力する。
図4は、修正部101の動作例を示すフローチャートである。修正部101は、入力部100から入力された軽量化対象のニューラルネットワークに基づいて、修正対象層を特定する(S100)。ここでは、第1層から第(N-1)層に含まれる畳み込み層、および、第N層に含まれる全結合層の全部を、修正対象層として特定する場合を想定する。修正部101は、修正対象層に対して、訓練可能な係数γ1を含んだ第1の量子化関数と、訓練可能な係数γ2を含んだ第2の量子化関数と、チャネル単位の訓練可能な係数αを含んだチャネル減衰関数とを導入する(S101)。一例として、第l層の畳み込み層へのチャネル減衰関数および量子化関数の導入例について説明する。
図5は、第l層の畳み込み層へのチャネル減衰関数および量子化関数の導入例を説明するための図である。図5を参照すると、第l層の畳み込み層202が示されている。また、図5を参照すると、第l層の畳み込み層202への入力として、入力特徴量xlが示され、第l層の畳み込み層202が有する重みパラメータwlが示されている。
図5に示されるように、修正部101は、第l層の畳み込み層202への入力(入力特徴量xl)に対して、チャネル減衰関数204および量子化関数205(第1の量子化関数)が適用されるように、チャネル減衰関数204および量子化関数205を導入する。チャネル減衰関数204は、チャネル単位の訓練可能な係数αlを含んでいる。量子化関数205は、訓練可能な係数γ1lを含んでいる。
一方、修正部101は、第l層の畳み込み層202の重みパラメータwlに対して、量子化関数206(第2の量子化関数)が適用されるように、量子化関数206を導入する。量子化関数206は、訓練可能な係数γ2lを含んでいる。
チャネル減衰関数204は、第l層の畳み込み層202への入力(入力特徴量xl)の各チャネルに対応する値を減衰させる関数である。後にも説明するように、重みパラメータwlを訓練する第1の学習(以下、単に「重みパラメータ訓練」とも言う)と、係数αlと係数γ1lと係数γ2lとを訓練する第2の学習(以下、単に「係数訓練」とも言う)とが、片方ずつ行われる。チャネル減衰関数204は、重みパラメータ訓練時に適用される処理と、係数訓練時に適用される処理とを含んでいる。
より詳細に、チャネル減衰関数204は、係数訓練に際して、第l層の畳み込み層202への入力(入力特徴量xl)に対して、係数αlに応じた値の乗算をチャネル単位に実行する処理を含む。さらに、チャネル減衰関数204は、係数訓練に際して、第l層の畳み込み層202への入力(入力特徴量xl)に対して、段階的に値が小さくなる調整パラメータηlの乗算を実行する処理を含む。
例えば、入力特徴量xlのチャネル数がCであるとすると、xlは、xi
l(i=1,2,...,C)と表現され、係数αlは、入力特徴量xlのチャネル数Cと同数の要素を持つベクトルαi
l(i=1,2,...,C)として表現され得る。係数αlに応じた値の例としては、係数αlにsoftmax関数を適用して得られる値が用いられ得る。このとき、チャネルiに対応する係数αi
lに応じた値は、softmaxi(αl)と表現され得る。一例として、チャネル減衰関数204は、係数訓練時の処理として、下記の数式(2)のように表現される処理を含む。
後にも説明するように、αlが訓練されていくと、αlの値はチャネル間において差が生じるようになる。より詳細には、αlの値が0に近いチャネルほど、ニューラルネットワークの精度への寄与が小さいチャネルである(冗長チャネルである可能性が高い)とみなされ得る。また、後にも説明するように、調整パラメータηlは、係数訓練時に、0以上の範囲内において段階的に値が小さくなる。調整パラメータηlが小さくなるほど、チャネル間に生じるαlの値の差が大きくなると考えられるため、冗長チャネルの特定が容易になることが期待される。
一方、チャネル減衰関数204は、重みパラメータ訓練に際して、第l層の畳み込み層202への入力(入力特徴量xl)のうち、係数αlに応じた値が所定の閾値δを下回るチャネルに対応する入力(入力特徴量xl)を零にする処理を含む。閾値δは、所与の非負値であってよい。一例として、チャネル減衰関数204は、重みパラメータ訓練時の処理として、下記の数式(3)のように表現される処理を含む。
すなわち、softmaxi(αl)が閾値δを下回った場合、チャネルiは冗長チャネルであるとみなされ、チャネルiに対応する入力特徴量xi
lは、零にされる。
量子化関数205は、チャネル減衰関数204からの出力Xlに対して正規化(第1の正規化)を行った後に係数γ1lを乗算する処理を含む。チャネル減衰関数204からの出力Xlに対する正規化は、チャネル減衰関数204からの出力Xlを所定の値域(第1の値域)に収める変換を含んでよい。ここでは、所定の値域に収める変換として、チャネル減衰関数204からの出力Xlを、出力Xlの絶対値の第l層における全チャネルにおける最大値であるmax|Xl|で割る演算を用いる場合を想定する。
一例として、チャネル減衰関数204からの出力Xlを量子化関数205によってkビットの符号付き整数に量子化する場合には、量子化関数205は、下記の数式(4)のように表現される処理を含む。
数式(4)において、Round関数は、値を(例えば、四捨五入によって)整数に丸める関数である。β1は、2k-1/max(|Xl|)の逆数(すなわち、max(|Xl|/2k-1)である。つまり、数式(4)に示されるquantize関数は、値を整数に丸めた後に浮動小数点で表現されるβ1を乗じて浮動小数点に戻す形態をしている。例えば、量子化関数205は、学習段階においては、かかる形態を有していてよい。しかし、β1の乗算は、畳み込み層202による演算の後に適用されても次層への出力は変わらない。したがって、推論段階においては、β1は畳み込み層202の後段に移動されてもよい。これによって、畳み込み層202にはRound関数によって値が丸められた後の整数が入力され、畳み込み演算による負荷が軽減され得る。
上記した非特許文献3にも量子化についての記載があるが、このように既に開示されている量子化においては、γ1=1(固定値)である。一方、数式(4)に示された量子化は、このように既に開示されている量子化とは異なり、quantize関数の中に訓練可能なγ1が含まれている。γ1の訓練によって最適な量子化ビット数が推定され得る。一例として、γ1=1かつk=8ビットである場合には、Round関数が適用された後の最大値は、27-1となる。一方、γ1=2-4かつk=8ビットである場合には、Round関数が適用された後の最大値は、23となり、Round関数が適用された後の値は、4ビットで表現可能となる。
なお、上記では、量子化関数205によってkビットの符号付き整数への量子化が行われる場合を想定した。しかし、量子化関数205は、kビットの符号なし整数への量子化を行ってもよい。かかる場合には、数式(4)における2k-1は、2kに置き換えられればよい。
量子化関数206は、重みパラメータwlに対して正規化(第2の正規化)を行った後に係数γ2lを乗算する処理を含む。重みパラメータwlに対する正規化は、重みパラメータwlを所定の値域(第2の値域)に収める変換を含んでよい。ここでは、所定の値域に収める変換として、重みパラメータwlを、wlの絶対値の第l層における全チャネルにおける最大値であるmax|wl|で割る演算を用いる場合を想定する。
一例として、重みパラメータwlを量子化関数206によってkビットの符号付き整数に量子化する場合には、量子化関数206は、下記の数式(5)のように表現される処理を含む。
数式(5)において、Round関数は、数式(4)に示されたRound関数と同様の特徴を有する。β2は、2k-1/max(|wl|)の逆数(すなわち、max(|wl|/2k-1)である。数式(5)に示されるquantize関数も、数式(4)に示されたquantize関数と同様に、値を整数に丸めた後に浮動小数点で表現されるβ2を乗じて浮動小数点に戻す形態をしている。例えば、量子化関数206は、学習段階においては、かかる形態を有していてよい。また、推論段階においては、β2は畳み込み層202の後段に移動されてもよい。
なお、量子化関数206は、量子化関数205と同様に、kビットの符号なし整数への量子化を行ってもよい。かかる場合には、数式(5)における2k-1は、2kに置き換えられればよい。
図4に戻って説明を続ける。修正部101は、チャネル減衰関数204と量子化関数205と量子化関数206とを導入していない修正対象層が存在する場合には(S102において「NO」)、まだチャネル減衰関数204と量子化関数205と量子化関数206とを導入していない修正対象層に対してS101を実行する。一方、修正部101は、全部の修正対象層に対して、チャネル減衰関数204と量子化関数205と量子化関数206とを導入し終わった場合には(S102において「YES」)、修正を終了する。
図1に戻って説明を続ける。修正部101は、チャネル減衰関数204と量子化関数205と量子化関数206との導入によって生成した訓練対象のニューラルネットワークおよび学習用データセットを、学習部102に出力する。学習部102は、上記したように、修正部101から入力された学習用データセットに基づいて、修正部101から入力された訓練対象のニューラルネットワークに基づく学習を行う。これによって、重みパラメータwと係数αと係数γ1と係数γ2とが訓練される。
図6は、学習部102の動作例を示すフローチャートである。上記したように、学習部102は、重みパラメータ訓練と係数訓練とを、片方ずつ行う。まず、学習部102は、訓練対象のニューラルネットワークの重みパラメータwを初期化し(S110)、重みパラメータ訓練を行う。より詳細に、学習部102は、係数αと係数γ1と係数γ2とを固定した状態において、損失関数に基づく誤差逆伝播法(例えば、誤差逆伝播法に基づく確率的勾配降下法)によって、重みパラメータwを更新する(S111)。重みパラメータ訓練においては、冗長チャネルに対応する入力特徴量が零にされる(数式(3))。
なお、本発明の実施形態において用いられる損失関数は特定の関数に限定されず、一般的なニューラルネットワークにおいて用いられる損失関数と同様の損失関数が用いられてよい。例えば、学習部102は、学習用データセットに基づいて、訓練対象のニューラルネットワークからの出力値と正解値との差分を算出し、当該差分に基づく平均二乗誤差を損失関数として算出してもよい。
続いて、学習部102は、重みパラメータwの更新回数が所定の回数に達したか否かを判定する(S112)。例えば、重みパラメータwの更新回数は、イテレーション数であってもよく、所定の回数は、イテレーション数の閾値(例えば、5回など)であってもよい。学習部102は、重みパラメータwの更新回数が所定の回数に達していないと判定した場合には(S112において「NO」)、S111に戻る。
一方、学習部102は、重みパラメータwの更新回数が所定の回数に達したと判定した場合には(S112において「YES」)、係数訓練を行う。より詳細に、学習部102は、重みパラメータwを固定した状態において、正則化項が付与された損失関数に基づく誤差逆伝播法(例えば、誤差逆伝播法に基づく確率的勾配降下法)によって、係数αと係数γ1と係数γ2とを更新する(S113)。例えば、正則化項が付与された損失関数は、以下の数式(6)のように表現され得る。
数式(6)において、第1項である損失関数Lは、重みパラメータ訓練の損失関数と同様に限定されない。第2項、第3項および第4項それぞれは、正則化項である。λ1、λ2およびλ3は、正則化の強度を決める係数であり、所与の非負値であってよい。第2項には、調整パラメータηlのL1ノルムの修正対象層全体における総和が含まれている。学習部102は、このように調整パラメータηが付与された損失関数に基づいて学習を行うことにより調整パラメータηを段階的に小さくすることが可能である。
しかしながら、調整パラメータηを段階的に小さくする手法は、かかる例に限定されない。例えば、学習部102は、係数訓練に際して、あらかじめ定められたスケジュールに従って、調整パラメータηを段階的に小さくしてもよい。一例として、学習部102は、所定の回数のイテレーションごとに所定の幅だけ調整パラメータηを小さくしてもよい(例えば、1イテレーションごとに0.001だけ調整パラメータηを小さくしてもよい)。なお、上記したように、調整パラメータηを段階的に小さくすることは、冗長チャネルの特定に役立つことが期待される。
第3項には、量子化関数205に含まれる係数γ1lのL1ノルムの修正対象層全体における総和が含まれている。すなわち、第3項は、量子化関数205に含まれる係数γ1に関する制約項である。同様に、第4項には、量子化関数206に含まれる係数γ2lのL1ノルムの修正対象層全体における総和が含まれている。すなわち、第4項は、量子化関数206に含まれる係数γ2に関する制約項である。
損失関数Lは、量子化ビット数が多いほど小さくなると考えられる。したがって、単純に損失関数Lに基づいて、係数γ1と係数γ2とを更新すると、係数γ1と係数γ2とが大きくなってしまい、量子化ビット数が抑えられなくなってしまうと考えられる。しかし、このような制約項が損失関数Lに付与されることによって、ニューラルネットワークの精度劣化を抑制するだけではなく、必要な程度に抑制された量子化ビット数を推定することが可能となる。
このように、学習部102による係数訓練では、チャネル数(すなわち、冗長チャネル以外のチャネル数)と量子化ビット数とが同時に推定され得る。したがって、チャネル数と量子化ビット数との間に存在するトレードオフ関係を考慮しながら、チャネル数および量子化ビット数の最適解が求められ得る。これによって、チャネル数および量子化ビット数それぞれが独立に推定される場合(例えば、チャネル削減後のモデルに対して量子化が行われる場合、または、量子化済みのモデルに対してチャネル削減が行われる場合など)よりも、精度劣化を抑制しつつ、処理効率の低下も抑制したニューラルネットワークを構築することが期待され得る。
続いて、学習部102は、係数γ1、係数γ2および係数αの更新回数が所定の回数に達したか否かを判定する(S114)。例えば、係数γ1、係数γ2および係数αの更新回数は、イテレーション数であってもよく、所定の回数は、イテレーション数の閾値(例えば、3回など)であってもよい。学習部102は、係数γ1、係数γ2および係数αの更新回数が所定の回数に達していないと判定した場合には(S114において「NO」)、S113に戻る。
一方、学習部102は、重みパラメータwの更新回数が所定の回数に達したと判定した場合には(S114において「YES」)、正則化項が付与された損失関数が収束したか否かを判定する(S115)。学習部102は、正則化項が付与された損失関数が収束していないと判定した場合には(S115において「NO」)、S111に戻る。一方、学習部102は、正則化項が付与された損失関数が収束したと判定した場合には(S115において「YES」)、訓練対象のニューラルネットワークの訓練を終了する。例えば、正則化項が付与された損失関数またはその変化が閾値よりも小さくなった場合に、正則化項が付与された損失関数が収束したと判定されてもよい。
学習後の訓練対象のニューラルネットワークおよび学習用データセットは、再学習部103に出力される。
再学習部103は、学習部102から入力された学習用データセットに基づいて、学習部102から入力された学習後の訓練対象のニューラルネットワークに基づく再学習を行う。より詳細に、再学習部103は、重みパラメータwを初期化し、係数γ1を学習部102による訓練後の係数γ1に固定し、係数γ2を学習部102による訓練後の係数γ2に固定し、係数αを学習部102による訓練後の係数αに固定した状態において、損失関数に基づく誤差逆伝播法(例えば、誤差逆伝播法に基づく確率的勾配降下法)によって、重みパラメータwを更新する。これによって、チャネル数および量子化ビット数が特定された状態における最適な重みパラメータwが獲得され、ニューラルネットワークの精度の更なる向上が期待され得る。
再学習部103による再学習後の訓練対象のニューラルネットワークは、出力部104に出力される。
出力部104は、再学習部103から入力された再学習後の訓練対象のニューラルネットワークから、修正対象層に対して導入されたチャネル減衰関数204を削除するとともに、修正対象層における訓練後の係数αに応じた冗長チャネルの重みパラメータを削除する。これによって、出力対象のニューラルネットワークが生成される。冗長チャネルは、訓練後の係数αに応じた値が閾値δを下回るチャネルであってよい。例えば、訓練後のsoftmaxi(αl)が閾値δを下回る場合には、第l層においてチャネルiが冗長チャネルであるとみなされ、第l層からチャネルiの重みパラメータwi
lが削除される。
なお、出力対象のニューラルネットワークは、かかる例に限定されず、各種の変形が施されてもよい。例えば、出力部104は、訓練後の係数γ1lと初期値として設定された量子化ビット数kとを統合してもよい(例えば、数式(4)においてγ1l=2-4かつk=8である場合、(2-4)x(28-1)-1は、23に統合されてもよい)。同様に、出力部104は、訓練後の係数γ2lとkとを統合してもよい。
さらに、上記したように、出力部104は、学習段階において量子化関数205に含まれていたβ1を畳み込み層202の後段に移動させてもよい。これによって、推論段階においては畳み込み層202に浮動小数点で表現されるβ1が含まれなくなるため、畳み込み層202による畳み込み演算の負荷が軽減され得る。同様に、出力部104は、学習段階において量子化関数206に含まれていたβ2を畳み込み層202の後段に移動させてもよい。出力部104は、このようにして生成した出力対象のニューラルネットワークを出力する。
(1-3.効果の説明)
本発明の実施形態によれば、入力部100と、修正部101と、学習部102と、再学習部103と、出力部104とを備える、ニューラルネットワーク軽量化装置10が提供される。入力部100は、複数の処理層を含んだ軽量化対象のニューラルネットワークを取得する。そして、修正部101は、複数の処理層の少なくとも一つの処理層を修正対象層として特定し、修正対象層に対して、訓練可能な係数γ1を含んだ量子化関数205と、訓練可能な係数γ2を含んだ量子化関数206と、チャネル単位の訓練可能な係数αを含んだチャネル減衰関数204とを導入して訓練対象のニューラルネットワークを生成する。
本発明の実施形態によれば、入力部100と、修正部101と、学習部102と、再学習部103と、出力部104とを備える、ニューラルネットワーク軽量化装置10が提供される。入力部100は、複数の処理層を含んだ軽量化対象のニューラルネットワークを取得する。そして、修正部101は、複数の処理層の少なくとも一つの処理層を修正対象層として特定し、修正対象層に対して、訓練可能な係数γ1を含んだ量子化関数205と、訓練可能な係数γ2を含んだ量子化関数206と、チャネル単位の訓練可能な係数αを含んだチャネル減衰関数204とを導入して訓練対象のニューラルネットワークを生成する。
学習部102は、訓練対象のニューラルネットワークに基づく学習により、軽量化対象のニューラルネットワークの重みパラメータwと係数γ1と係数γ2と係数αとを訓練する。再学習部103は、学習後の訓練対象のニューラルネットワークに基づく再学習により、重みパラメータwを再訓練する。出力部104は、再学習後の訓練対象のニューラルネットワークからチャネル減衰関数204と修正対象層における訓練後の係数αに応じた冗長チャネルの重みパラメータwとが削除された出力対象のニューラルネットワークを出力する。
かかる構成によれば、チャネル数(すなわち、冗長チャネル以外のチャネル数)と量子化ビット数とが同時に推定され得る。したがって、チャネル数と量子化ビット数との間に存在するトレードオフ関係を考慮しながら、チャネル数および量子化ビット数の最適解が求められ得る。これによって、チャネル数および量子化ビット数それぞれが独立に推定される場合よりも、精度劣化を抑制しつつ、処理効率の低下も抑制したニューラルネットワークを構築することが可能となる。
以上、本発明の実施形態の詳細について説明した。
(2.各種の変形例)
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
例えば、上記では、学習部102が、係数αと係数γ1と係数γ2とを独立的に更新する例を主に説明した。しかし、学習部102は、訓練対象のニューラルネットワークとは別のニューラルネットワーク(第4のニューラルネットワーク)に基づいて、係数αと係数γ1と係数γ2とを生成してもよい。かかる係数更新の変形例について、図7を参照しながら説明する。
図7は、係数更新の変形例について説明するための図である。図7を参照すると、訓練対象のニューラルネットワークとは別にニューラルネットワーク209(第4のニューラルネットワーク)が設けられている。ニューラルネットワーク209の構成は特に限定されない。例えば、ニューラルネットワーク209は、畳み込み層および全結合層の少なくともいずれか一つを含んでもよい。学習部102は、係数訓練において正則化項が付与された損失関数に基づく誤差逆伝播法によって、ニューラルネットワーク209の重みパラメータを更新する。
学習部102は、修正対象層への入力(入力特徴量xl)に基づくデータをニューラルネットワーク209にも入力させ、かかるデータに応じたニューラルネットワーク209からの出力に基づいて、係数αと係数γ1と係数γ2とを生成してもよい。かかる場合には、係数αと係数γ1と係数γ2が、修正対象層への入力に対して依存する。このとき、修正対象層への入力と同じデータがニューラルネットワーク209に入力されてもよいし、修正対象層への入力の平均値などといった一意に定まる統計量が代表値としてニューラルネットワーク209に入力されてもよい。
(3.ハードウェア構成例)
続いて、本発明の実施形態に係るニューラルネットワーク軽量化装置10のハードウェア構成例について説明する。以下では、本発明の実施形態に係るニューラルネットワーク軽量化装置10のハードウェア構成例として、情報処理装置900のハードウェア構成例について説明する。なお、以下に説明する情報処理装置900のハードウェア構成例は、ニューラルネットワーク軽量化装置10のハードウェア構成の一例に過ぎない。したがって、ニューラルネットワーク軽量化装置10のハードウェア構成は、以下に説明する情報処理装置900のハードウェア構成から不要な構成が削除されてもよいし、新たな構成が追加されてもよい。
続いて、本発明の実施形態に係るニューラルネットワーク軽量化装置10のハードウェア構成例について説明する。以下では、本発明の実施形態に係るニューラルネットワーク軽量化装置10のハードウェア構成例として、情報処理装置900のハードウェア構成例について説明する。なお、以下に説明する情報処理装置900のハードウェア構成例は、ニューラルネットワーク軽量化装置10のハードウェア構成の一例に過ぎない。したがって、ニューラルネットワーク軽量化装置10のハードウェア構成は、以下に説明する情報処理装置900のハードウェア構成から不要な構成が削除されてもよいし、新たな構成が追加されてもよい。
図8は、本発明の実施形態に係るニューラルネットワーク軽量化装置10の例としての情報処理装置900のハードウェア構成を示す図である。情報処理装置900は、CPU(Central Processing Unit)901と、ROM(Read Only Memory)902と、RAM(Random Access Memory)903と、ホストバス904と、ブリッジ905と、外部バス906と、インタフェース907と、入力装置908と、出力装置909と、ストレージ装置910と、通信装置911と、を備える。
CPU901は、演算処理装置および制御装置として機能し、各種プログラムに従って情報処理装置900内の動作全般を制御する。また、CPU901は、マイクロプロセッサであってもよい。ROM902は、CPU901が使用するプログラムや演算パラメータ等を記憶する。RAM903は、CPU901の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一時記憶する。これらはCPUバス等から構成されるホストバス904により相互に接続されている。
ホストバス904は、ブリッジ905を介して、PCI(Peripheral Component Interconnect/Interface)バス等の外部バス906に接続されている。なお、必ずしもホストバス904、ブリッジ905および外部バス906を分離構成する必要はなく、1つのバスにこれらの機能を実装してもよい。
入力装置908は、マウス、キーボード、タッチパネル、ボタン、マイクロフォン、スイッチおよびレバー等ユーザが情報を入力するための入力手段と、ユーザによる入力に基づいて入力信号を生成し、CPU901に出力する入力制御回路等から構成されている。情報処理装置900を操作するユーザは、この入力装置908を操作することにより、情報処理装置900に対して各種のデータを入力したり処理動作を指示したりすることができる。
出力装置909は、例えば、CRT(Cathode Ray Tube)ディスプレイ装置、液晶ディスプレイ(LCD)装置、OLED(Organic Light Emitting Diode)装置、ランプ等の表示装置およびスピーカ等の音声出力装置を含む。
ストレージ装置910は、データ格納用の装置である。ストレージ装置910は、記憶媒体、記憶媒体にデータを記録する記録装置、記憶媒体からデータを読み出す読出し装置および記憶媒体に記録されたデータを削除する削除装置等を含んでもよい。ストレージ装置910は、例えば、HDD(Hard Disk Drive)で構成される。このストレージ装置910は、ハードディスクを駆動し、CPU901が実行するプログラムや各種データを格納する。
通信装置911は、例えば、ネットワークに接続するための通信デバイス等で構成された通信インタフェースである。また、通信装置911は、無線通信または有線通信のどちらに対応してもよい。
以上、本発明の実施形態に係るニューラルネットワーク軽量化装置10のハードウェア構成例について説明した。
10 ニューラルネットワーク軽量化装置
100 入力部
101 修正部
102 学習部
103 再学習部
104 出力部
100 入力部
101 修正部
102 学習部
103 再学習部
104 出力部
Claims (18)
- 複数の処理層を含んだ第1のニューラルネットワークを取得する入力部と、
前記複数の処理層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層に対して、訓練可能な第1の係数を含んだ第1の量子化関数と、訓練可能な第2の係数を含んだ第2の量子化関数と、チャネル単位の訓練可能な第3の係数を含んだチャネル減衰関数とを導入して第2のニューラルネットワークを生成する修正部と、
前記第2のニューラルネットワークに基づく学習により、前記第1のニューラルネットワークの重みパラメータと前記第1の係数と前記第2の係数と前記第3の係数とを訓練する学習部と、
学習後の第2のニューラルネットワークに基づく再学習により、前記重みパラメータを再訓練する再学習部と、
再学習後の第2のニューラルネットワークから前記チャネル減衰関数と前記修正対象層における訓練後の第3の係数に応じた冗長チャネルの重みパラメータとが削除された第3のニューラルネットワークを出力する出力部と、
を備える、ニューラルネットワーク軽量化装置。 - 前記学習部は、前記重みパラメータを訓練する第1の学習と、前記第1の係数、前記第2の係数および前記第3の係数を訓練する第2の学習とを、片方ずつ行う、
請求項1に記載のニューラルネットワーク軽量化装置。 - 前記チャネル減衰関数は、前記第2の学習に際して、前記修正対象層への入力に対して前記第3の係数に応じた値の乗算をチャネル単位に実行する処理を含む、
請求項2に記載のニューラルネットワーク軽量化装置。 - 前記チャネル減衰関数は、前記第1の学習に際して、前記修正対象層への入力のうち、前記第3の係数に応じた値が所定の閾値を下回るチャネルに対応する入力を零にする処理を含む、
請求項3に記載のニューラルネットワーク軽量化装置。 - 前記冗長チャネルは、訓練後の前記第3の係数に応じた値が前記所定の閾値を下回るチャネルである、
請求項4に記載のニューラルネットワーク軽量化装置。 - 前記チャネル減衰関数は、前記第2の学習に際して、前記修正対象層への入力に対して、前記第3の係数に応じた値の乗算とともに、段階的に値が小さくなる調整パラメータの乗算を実行する処理を含む、
請求項3~5のいずれか一項に記載のニューラルネットワーク軽量化装置。 - 前記学習部は、前記第2の学習に際して、前記調整パラメータが組み込まれた損失関数に基づいて学習を行うことにより前記調整パラメータを段階的に小さくする、
請求項6に記載のニューラルネットワーク軽量化装置。 - 前記学習部は、前記第2の学習に際して、あらかじめ定められたスケジュールに従って、前記調整パラメータを段階的に小さくする、
請求項6に記載のニューラルネットワーク軽量化装置。 - 前記修正部は、前記修正対象層への入力に対して前記チャネル減衰関数および前記第1の量子化関数が適用されるように、前記チャネル減衰関数および前記第1の量子化関数を導入する、
請求項1~8のいずれか一項に記載のニューラルネットワーク軽量化装置。 - 前記第1の量子化関数は、前記チャネル減衰関数からの出力に対して第1の正規化を行った後に前記第1の係数を乗算する処理を含む、
請求項9に記載のニューラルネットワーク軽量化装置。 - 前記第1の正規化は、前記チャネル減衰関数からの出力を第1の値域に収める変換を含む、
請求項10に記載のニューラルネットワーク軽量化装置。 - 前記修正部は、前記修正対象層の重みパラメータに対して前記第2の量子化関数が適用されるように、前記第2の量子化関数を導入する、
請求項1~11のいずれか一項に記載のニューラルネットワーク軽量化装置。 - 前記第2の量子化関数は、前記修正対象層の重みパラメータに対して第2の正規化を行った後に前記第2の係数を乗算する処理を含む、
請求項12に記載のニューラルネットワーク軽量化装置。 - 前記第2の正規化は、前記修正対象層の重みパラメータを第2の値域に収める変換を含む、
請求項13に記載のニューラルネットワーク軽量化装置。 - 前記修正対象層は、畳み込み層および全結合層の少なくともいずれか一つを含む、
請求項1~14のいずれか一項に記載のニューラルネットワーク軽量化装置。 - 前記再学習部は、前記第1の係数を訓練後の第1の係数に固定し、前記第2の係数を訓練後の第2の係数に固定し、前記第3の係数を訓練後の第3の係数に固定した状態において、前記重みパラメータを再訓練する、
請求項1~15のいずれか一項に記載のニューラルネットワーク軽量化装置。 - 複数の処理層を含んだ第1のニューラルネットワークを取得することと、
前記複数の処理層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層に対して、訓練可能な第1の係数を含んだ第1の量子化関数と、訓練可能な第2の係数を含んだ第2の量子化関数と、チャネル単位の訓練可能な第3の係数を含んだチャネル減衰関数とを導入して第2のニューラルネットワークを生成することと、
前記第2のニューラルネットワークに基づく学習により、前記第1のニューラルネットワークの重みパラメータと前記第1の係数と前記第2の係数と前記第3の係数とを訓練することと、
学習後の第2のニューラルネットワークに基づく再学習により、前記重みパラメータを再訓練することと、
再学習後の第2のニューラルネットワークから前記チャネル減衰関数と前記修正対象層における訓練後の第3の係数に応じた冗長チャネルの重みパラメータとが削除された第3のニューラルネットワークを出力することと、
を含む、ニューラルネットワーク軽量化方法。 - コンピュータを、
複数の処理層を含んだ第1のニューラルネットワークを取得する入力部と、
前記複数の処理層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層に対して、訓練可能な第1の係数を含んだ第1の量子化関数と、訓練可能な第2の係数を含んだ第2の量子化関数と、チャネル単位の訓練可能な第3の係数を含んだチャネル減衰関数とを導入して第2のニューラルネットワークを生成する修正部と、
前記第2のニューラルネットワークに基づく学習により、前記第1のニューラルネットワークの重みパラメータと前記第1の係数と前記第2の係数と前記第3の係数とを訓練する学習部と、
学習後の第2のニューラルネットワークに基づく再学習により、前記重みパラメータを再訓練する再学習部と、
再学習後の第2のニューラルネットワークから前記チャネル減衰関数と前記修正対象層における訓練後の第3の係数に応じた冗長チャネルの重みパラメータとが削除された第3のニューラルネットワークを出力する出力部と、
を備えるニューラルネットワーク軽量化装置として機能させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020161812A JP6992864B1 (ja) | 2020-09-28 | 2020-09-28 | ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020161812A JP6992864B1 (ja) | 2020-09-28 | 2020-09-28 | ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6992864B1 true JP6992864B1 (ja) | 2022-01-13 |
JP2022054660A JP2022054660A (ja) | 2022-04-07 |
Family
ID=80213731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020161812A Active JP6992864B1 (ja) | 2020-09-28 | 2020-09-28 | ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6992864B1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190180177A1 (en) | 2017-12-08 | 2019-06-13 | Samsung Electronics Co., Ltd. | Method and apparatus for generating fixed point neural network |
JP2019164793A (ja) | 2018-03-19 | 2019-09-26 | エスアールアイ インターナショナル | ディープニューラルネットワークの動的適応 |
JP2020113273A (ja) | 2019-01-09 | 2020-07-27 | 三星電子株式会社Samsung Electronics Co.,Ltd. | ニューラルネットワーク量子化のための方法及び装置 |
JP2020119528A (ja) | 2019-01-23 | 2020-08-06 | 株式会社ストラドビジョン | モバイルデバイスまたは高精度の小型ネットワークに適用可能なハードウェアを最適化するために利用されるCNNパラメータ及び特徴値を量子化するために、重み量子化ロス値を利用してFL(Fractional Length)値を決定する方法及び装置{METHOD AND DEVICE FOR DETERMINING FL VALUE BY USING WEIGHTED QUANTIZATION LOSS VALUES TO THEREBY QUANTIZE CNN PARAMETERS AND FEATURE VALUES TO BE USED FOR OPTIMIZING HARDWARE APPLICABLE TO MOBILE DEVICES OR COMPACT NETWORKS WITH HIGH PRECISION} |
-
2020
- 2020-09-28 JP JP2020161812A patent/JP6992864B1/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190180177A1 (en) | 2017-12-08 | 2019-06-13 | Samsung Electronics Co., Ltd. | Method and apparatus for generating fixed point neural network |
JP2019164793A (ja) | 2018-03-19 | 2019-09-26 | エスアールアイ インターナショナル | ディープニューラルネットワークの動的適応 |
JP2020113273A (ja) | 2019-01-09 | 2020-07-27 | 三星電子株式会社Samsung Electronics Co.,Ltd. | ニューラルネットワーク量子化のための方法及び装置 |
JP2020119528A (ja) | 2019-01-23 | 2020-08-06 | 株式会社ストラドビジョン | モバイルデバイスまたは高精度の小型ネットワークに適用可能なハードウェアを最適化するために利用されるCNNパラメータ及び特徴値を量子化するために、重み量子化ロス値を利用してFL(Fractional Length)値を決定する方法及び装置{METHOD AND DEVICE FOR DETERMINING FL VALUE BY USING WEIGHTED QUANTIZATION LOSS VALUES TO THEREBY QUANTIZE CNN PARAMETERS AND FEATURE VALUES TO BE USED FOR OPTIMIZING HARDWARE APPLICABLE TO MOBILE DEVICES OR COMPACT NETWORKS WITH HIGH PRECISION} |
Also Published As
Publication number | Publication date |
---|---|
JP2022054660A (ja) | 2022-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12112256B2 (en) | Loss-error-aware quantization of a low-bit neural network | |
US20220012537A1 (en) | Augmentation of Audiographic Images for Improved Machine Learning | |
JP7047612B2 (ja) | ニューラルネットワーク軽量化装置、情報処理装置、ニューラルネットワーク軽量化方法およびプログラム | |
US10380479B2 (en) | Acceleration of convolutional neural network training using stochastic perforation | |
JP6620439B2 (ja) | 学習方法、プログラム及び学習装置 | |
JP6787444B1 (ja) | ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム | |
CN112771547A (zh) | 通信系统中的端到端学习 | |
CN112446888A (zh) | 图像分割模型的处理方法和处理装置 | |
JP2021103441A (ja) | ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム | |
JP7081708B1 (ja) | ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム | |
JP6992864B1 (ja) | ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム | |
US20220405561A1 (en) | Electronic device and controlling method of electronic device | |
CN113490955A (zh) | 用于产生金字塔层的架构的系统和方法 | |
CN113316791A (zh) | 通信系统中的训练 | |
JP7279225B2 (ja) | 破滅的忘却の発生を抑えつつ、転移学習を行う方法、情報処理装置及びプログラム | |
WO2020177863A1 (en) | Training of algorithms | |
KR20230000686A (ko) | 전자 장치 및 전자 장치의 제어 방법 | |
JP7120288B2 (ja) | ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム | |
CN115222012A (zh) | 用于压缩神经网络的方法和装置 | |
JP6942204B2 (ja) | データ処理システムおよびデータ処理方法 | |
WO2020054402A1 (ja) | ニューラルネットワーク処理装置、コンピュータプログラム、ニューラルネットワーク製造方法、ニューラルネットワークデータの製造方法、ニューラルネットワーク利用装置、及びニューラルネットワーク小規模化方法 | |
JP2021124974A (ja) | 演算装置、演算方法、プログラム及びテーブル生成装置 | |
JP6994572B2 (ja) | データ処理システムおよびデータ処理方法 | |
JP2023124376A (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP2019095894A (ja) | 推定装置、学習装置、学習済みモデル、推定方法、学習方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200928 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20211109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211122 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6992864 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |