JP7120288B2 - ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム - Google Patents

ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム Download PDF

Info

Publication number
JP7120288B2
JP7120288B2 JP2020187816A JP2020187816A JP7120288B2 JP 7120288 B2 JP7120288 B2 JP 7120288B2 JP 2020187816 A JP2020187816 A JP 2020187816A JP 2020187816 A JP2020187816 A JP 2020187816A JP 7120288 B2 JP7120288 B2 JP 7120288B2
Authority
JP
Japan
Prior art keywords
neural network
function
quantization
learning
input
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
Application number
JP2020187816A
Other languages
English (en)
Other versions
JP2022077134A (ja
Inventor
康平 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2020187816A priority Critical patent/JP7120288B2/ja
Publication of JP2022077134A publication Critical patent/JP2022077134A/ja
Application granted granted Critical
Publication of JP7120288B2 publication Critical patent/JP7120288B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラムに関する。
近年、各種の分野においてニューラルネットワークが用いられている。例えば、物体の認識または物体の位置検出などを目的とした一般的なニューラルネットワークのモデルが知られている。かかる一般的なニューラルネットワークのモデルでは、処理層(例えば、畳み込み層または全結合層など)における演算に、16~32ビットの浮動小数点によってそれぞれ表現される入力特徴量および重みパラメータ(以下、単に「重み」とも言う。)が使用される。
一方、例えば、量子化と呼称されるニューラルネットワークの軽量化技術を用いれば、入力特徴量および重みそれぞれを1~8ビットの整数に変換することができ、浮動小数点による演算を整数による演算に変換することによって、演算による消費電力の低減および演算の高速化が達成されることが知られている(例えば、特許文献1および非特許文献1~3参照)。しかしながら、演算に使用されるビット数の低下によって量子化誤差が発生し、整数による演算に使用されるビット数が小さくなるほど、浮動小数点による演算が行われる場合と同水準の精度(例えば、物体認識精度または物体検出精度など)を維持するのが困難であるのが一般的である。
特開2020-9048号公報
Benoit Jacob、他7名、"Quantization and Training of Neural Networksfor Efficient Integer-Arithmetic-Only Inference"、[online]、2017年、[令和2年10月27日検索]、インターネット<https://arxiv.org/abs/1712.05877> Daisuke Miyashita、他2名、"ConvolutionalNeural Networks using Logarithmic Data Representation"、[online]、2016年、[令和2年10月27日検索]、インターネット<https://arxiv.org/abs/1603.01025> Sangil Jung、他7名、"Learning to Quantize Deep Networks byOptimizing Quantization Intervals with Task Loss"、[online]、2017年、[令和2年10月27日検索]、インターネット<https://arxiv.org/abs/1808.05779>
そこで、精度劣化を抑制した量子化ニューラルネットワークを構築することを可能とする技術が提供されることが望まれる。
上記問題を解決するために、本発明のある観点によれば、第1のニューラルネットワークを取得する入力部と、前記第1のニューラルネットワークに含まれる少なくとも一つの乗算処理を特定し、前記乗算処理への入力に対してパラメータを含んだ量子化関数を導入して第2のニューラルネットワークを生成する修正部と、前記第2のニューラルネットワークの学習によって、前記第2のニューラルネットワークの重みパラメータと前記量子化関数に含まれるパラメータとを訓練する学習部と、学習後の第2のニューラルネットワークを出力する出力部と、を備える、ニューラルネットワーク軽量化装置が提供される。
前記量子化関数は、第1の非線形関数と、第1の一様量子化関数と、第2の非線形関数との合成関数を含んでもよい。
前記第2の非線形関数は、前記第1の非線形関数の逆関数であってもよい。
前記量子化関数は、前記合成関数の後に、前記第1の一様量子化関数の量子化ビット数よりも量子化ビット数が大きい第2の一様量子化関数を含んでもよい。
前記第1の非線形関数は、区分線形関数であってもよい。
前記学習部は、前記第2のニューラルネットワークの重みパラメータと前記量子化関数に含まれるパラメータとを同時に訓練してもよい。
前記ニューラルネットワーク軽量化装置は、学習後の第2のニューラルネットワークに基づいて、前記量子化関数をインデックス化処理に変換するとともに、前記乗算処理をメモリ参照処理に変換して第3のニューラルネットワークを生成する演算変換部を備え、前記出力部は、前記第3のニューラルネットワークを出力してもよい。
前記メモリ参照処理は、あらかじめ計算されてメモリに記録された、前記量子化関数の出力に基づく乗算処理の結果を得る処理を含んでもよい。
前記インデックス化処理は、前記量子化関数への入力を前記量子化関数の出力に基づく乗算処理の結果が記録されたメモリ領域に対応するインデックス値に変換する処理を含んでもよい。
また、本発明の別の観点によれば、第1のニューラルネットワークを取得することと、前記第1のニューラルネットワークに含まれる少なくとも一つの乗算処理を特定し、前記乗算処理への入力に対してパラメータを含んだ量子化関数を導入して第2のニューラルネットワークを生成することと、前記第2のニューラルネットワークの学習によって、前記第2のニューラルネットワークの重みパラメータと前記量子化関数に含まれるパラメータとを訓練することと、学習後の第2のニューラルネットワークを出力することと、を含む、ニューラルネットワーク軽量化方法が提供される。
また、本発明の別の観点によれば、コンピュータを、第1のニューラルネットワークを取得する入力部と、前記第1のニューラルネットワークに含まれる少なくとも一つの乗算処理を特定し、前記乗算処理への入力に対してパラメータを含んだ量子化関数を導入して第2のニューラルネットワークを生成する修正部と、前記第2のニューラルネットワークの学習によって、前記第2のニューラルネットワークの重みパラメータと前記量子化関数に含まれるパラメータとを訓練する学習部と、学習後の第2のニューラルネットワークを出力する出力部と、を備えるニューラルネットワーク軽量化装置として機能させるプログラムが提供される。
以上説明したように本発明によれば、精度劣化を抑制した量子化ニューラルネットワークを構築することを可能とする技術が提供される。
本発明の実施形態の背景について説明するための図である。 本発明の第1の実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。 軽量化対象のニューラルネットワークの一例を示す図である。 モデル修正部の動作例を示すフローチャートである。 量子化関数が導入される前の乗算処理の演算構成の例を示す図である。 量子化関数が導入された後の乗算処理の演算構成の例を示す図である。 圧縮関数、一様量子化関数、伸長関数および合成関数それぞれの例を示す図である。 変換後の演算構成の例を示す図である。 ルックアップテーブルの例を示す図である。 本発明の第2の実施形態において、量子化関数が導入された後の乗算処理の演算構成の例を示す図である。 本発明の実施形態に係るニューラルネットワーク軽量化装置の例としての情報処理装置のハードウェア構成を示す図である。
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
また、本明細書および図面において、実質的に同一の機能構成を有する複数の構成要素を、同一の符号の後に異なる数字を付して区別する場合がある。ただし、実質的に同一の機能構成を有する複数の構成要素等の各々を特に区別する必要がない場合、同一符号のみを付する。また、異なる実施形態の類似する構成要素については、同一の符号の後に異なるアルファベットを付して区別する場合がある。ただし、異なる実施形態の類似する構成要素等の各々を特に区別する必要がない場合、同一符号のみを付する。
(0.背景)
まず、本発明の実施形態の背景について説明する。
図1は、本発明の実施形態の背景について説明するための図である。なお、本発明の実施形態では、ニューラルネットワークの処理層に対して直前の活性化関数から入力されるデータ(入力特徴量)を「活性」とも言う。図1を参照すると、活性および重みの分布の例として、分布G0~G3が示されている。分布G0において、横軸は活性および重みの値であり、縦軸は活性および重みの値に対応する度数である。分布G0は、量子化前の分布である。一方、分布G1~G3は、量子化後の分布である。
上記した特許文献1および非特許文献1には、活性および重みそれぞれの値に対して等間隔な量子化(一様量子化)を適用してモデルの学習を行う技術が開示されている(分布G1)。一様量子化が適用されてモデルの学習が行われる場合には、主要な演算が整数によって実施されるため、演算の高速化および演算によって使用されるメモリ量の低減が達成され得る。
しかし、特許文献1および非特許文献1に記載のような、一様量子化を適用する技術は、活性および重みの分布形状を考慮しない。したがって、一様量子化を適用する技術では、特に活性および重みの値の小さいレンジにおいて量子化誤差が大きくなってしまい、その結果として大きな精度劣化が生じてしまうという問題点がある。活性および重みの分布は、一般的には分布G0のように零を中心としたガウス分布に近い形状を有するにも関わらず、一様量子化を適用する技術は、密度の高い零近傍に対する量子化値の割り当ての間隔を、密度の低い裾側に対する量子化値の割り当ての間隔と同じにしてしまうからである。
また、非特許文献2には、一様量子化の部分に対して2を底とした対数を適用してモデルの学習を行う技術が開示されている(分布G2)。一様量子化の部分に対する対数の適用によって非等間隔な量子化(非一様量子化)が実現される。かかる対数の適用によって、活性および重みそれぞれの値が2の冪乗の値に変換されるため、活性と重みとの乗算がより高速なシフト演算に変換され得る。
しかし、非特許文献2に記載のような、活性および重みそれぞれの値を2の冪乗の値に変換する技術では、零近傍に多くの量子化値を割り当てることができる反面、分布の裾側に対する量子化値の割り当てが少なくなりすぎてしまう(分布の裾側の疎性が高くなりすぎてしまう)。したがって、活性および重みそれぞれの値を2の冪乗の値に変換する技術では、裾側の値が精度によく貢献している場合には精度劣化が生じてしまうという問題点がある。
さらに、非特許文献3には、一様量子化を適用する直前に学習可能なパラメータを含む非線形関数を適用する技術が開示されている(分布G3)。これによって、当該分布において非線形関数の学習に基づいて決定される値域に対して多くの量子化値の割り当てが可能となるため、認識精度(例えば、画像認識タスクによる認識精度など)を高めることが可能な非一様量子化が実現され得る。
しかし、非特許文献3に記載の技術は、非線形関数の直後に、等間隔な量子化を実行する構成を有するのみである。したがって、非特許文献3に記載の技術では、入出力間の乖離(量子化誤差)が大きくなってしまい、学習によって最終的に得られるモデルの性能が低下してしまうという問題点がある。
以上の問題点を整理すると、活性および重みの分布に応じて量子化値を柔軟に割り当てることが可能であり、かつ量子化誤差を低減することが可能な技術の提供が望まれることが把握され得る。本発明の実施形態では、活性および重みの分布に応じて量子化値を柔軟に割り当てることが可能であり、かつ量子化誤差を低減することが可能な技術について主に提案する。さらに、本発明の実施形態では、高速な推論を可能とする技術についても提案する。
以上、本発明の実施形態の背景について説明した。
(1.第1の実施形態)
続いて、本発明の第1の実施形態について説明する。
(1-1.構成の説明)
まず、本発明の第1の実施形態に係るニューラルネットワーク軽量化装置の構成例について説明する。図2は、本発明の第1の実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。図2に示されるように、本発明の第1の実施形態に係るニューラルネットワーク軽量化装置10は、入力部100、モデル修正部101、学習部102、演算変換部103および出力部104を備える。なお、後にも説明するように、ニューラルネットワーク軽量化装置10は、演算変換部103を備えていなくてもよい。
ニューラルネットワーク軽量化装置10は、CPU(Central Processing Unit)などの演算装置を含み、図示しないメモリにより記憶されているプログラムがCPUによりRAM(Random Access Memory)に展開されて実行されることにより、その機能が実現され得る。このとき、当該プログラムを記録した、コンピュータに読み取り可能な記録媒体も提供され得る。あるいは、ニューラルネットワーク軽量化装置10は、専用のハードウェアにより構成されていてもよいし、複数のハードウェアの組み合わせにより構成されてもよい。
(入力部100)
入力部100は、軽量化対象のニューラルネットワーク(第1のニューラルネットワーク)および軽量化対象のニューラルネットワークの学習に使用されるデータ(学習用データセット)を取得する。例えば、入力部100は、軽量化対象のニューラルネットワークおよび学習用データセットを、図示しないメモリから読み出すことによって取得してもよい。例えば、軽量化対象のニューラルネットワークは、学習前のニューラルネットワークの構造(モデル構造)であってよい。
図3は、軽量化対象のニューラルネットワークの一例を示す図である。図3に示されるように、軽量化対象のニューラルネットワークは、第1層から第N層(Nは2以上の整数)までの複数の層によって構成される。第1層には、入力データが入力され、第N層からは、出力データが出力される。第1層から第N層までの各層には、処理層が含まれており、第1層から第N層までの各層の次層には、活性化関数が挿入されている。第1層から第N層までの各層に含まれる処理層は、次層に含まれる活性化関数に対して出力を行う。
図3に示された例では、第1層から第(N-1)層までの各層に含まれる処理層は、畳み込み層であり、第N層に含まれる処理層は、全結合層である。しかし、第1層から第N層までの各層に含まれる処理層の種類は、図3に示された例に限定されない。例えば、軽量化対象のニューラルネットワークは、処理層として畳み込み層および全結合層の一方を、1または複数含んでもよいし、処理層として畳み込み層および全結合層のそれぞれを、1または複数含んでもよい。また、軽量化対象のニューラルネットワークは、畳み込み層以外かつ全結合層以外の処理層を含んでもよい。
また、図3には、軽量化対象のニューラルネットワークの第1層から第N層までの処理層によって使用される重みとして、重みw~wが示されている。本発明の第1の実施形態では、軽量化対象のニューラルネットワークの各処理層による演算に、16~32ビットの浮動小数点によってそれぞれ表現される活性(入力特徴量)および重みが使用される場合を想定する。しかし、軽量化対象のニューラルネットワークの各処理層によって使用される活性および重みそれぞれの形式は、かかる例に限定されない。
図2に戻って説明を続ける。入力部100によって取得された軽量化対象のニューラルネットワークおよび学習用データセットは、モデル修正部101に出力される。
(モデル修正部101)
モデル修正部101は、入力部100から入力された軽量化対象のニューラルネットワークに基づいて、軽量化対象のニューラルネットワークに含まれる少なくとも一つの乗算処理を修正対象の乗算処理として特定する。ここでは、第1層から第(N-1)層に含まれる畳み込み層、および、第N層に含まれる全結合層に含まれる全部の乗算処理を、修正対象の乗算処理として特定する場合を想定する。しかし、修正対象の乗算処理は、かかる例に限定されない。例えば、軽量化対象のニューラルネットワークに含まれる一部の乗算処理(例えば、要素同士の乗算処理など)のみを修正対象の乗算処理として特定してもよい。
例えば、モデル修正部101は、軽量化対象のニューラルネットワークに含まれる畳み込み層および全結合層に含まれる乗算処理のうち、あらかじめ定められた一部の乗算処理のみを修正対象の乗算処理として特定してもよい。一例として、最初の畳み込み層(すなわち、第1層に含まれる畳み込み層)、および、最後の畳み込み層(すなわち、第(N-1)層に含まれる畳み込み層)に含まれる乗算処理は、他の層の畳み込み層に含まれる乗算処理よりもニューラルネットワークの精度に与える影響が大きい可能性があるため、修正対象の乗算処理として特定されなくてもよい。あるいは、規模が大きい(演算負荷が高い)畳み込み層および全結合層に含まれる乗算処理のみが修正対象の乗算処理として特定されてもよい。
モデル修正部101は、修正対象の乗算処理への入力に対して(複数の乗算処理が特定された場合には、複数の乗算処理それぞれに対して)、パラメータを含んだ量子化関数を導入する。例えば、量子化関数は、連続的な値を離散的な値に変換する関数を意味し得る。これによって、モデル修正部101は、訓練対象のニューラルネットワーク(第2のニューラルネットワーク)を生成する。量子化関数に含まれるパラメータは、訓練可能なパラメータである。以下では、量子化関数に含まれるパラメータを、「制御パラメータ」とも言う。モデル修正部101によって生成された訓練対象のニューラルネットワークおよび学習用データセットは、学習部102に出力される。
(学習部102)
学習部102は、モデル修正部101から入力された学習用データセットに基づいて、モデル修正部101から入力された訓練対象のニューラルネットワークの学習を行う。例えば、学習部102は、誤差逆伝播法(バックプロパゲーション)などを用いて、訓練対象のニューラルネットワークの学習を行う。これによって、重みと制御パラメータとが訓練される。なお、本明細書では、学習用データセットに適応するようにパラメータを調整することを「パラメータを訓練する」とも言い、「ニューラルネットワークの学習を行う」とも言う。
後にも説明するように、学習部102は、重みと制御パラメータとを同時に訓練するのが望ましい。また、重みの初期値には、乱数が使用されてよいが、軽量化対象のニューラルネットワークの訓練済みの重みがあれば、訓練済みの重みが初期値として利用されてもよい。学習部102による学習後のニューラルネットワークは、演算変換部103に出力される。ニューラルネットワーク軽量化装置10が演算変換部103を備えていない場合には、学習部102による学習後のニューラルネットワークは、出力部104に出力される。
(演算変換部103)
演算変換部103は、学習部102から入力された学習後のニューラルネットワークに基づいて、量子化関数をインデックス化処理に変換するとともに、修正対象の乗算処理をメモリ参照処理に変換する。これによって、演算変換部103は、変換後のニューラルネットワーク(第3のニューラルネットワーク)を生成する。インデックス化処理およびメモリ参照処理についての詳細は後に説明する。演算変換部103による変換後のニューラルネットワークは、出力部104に出力される。
(出力部104)
出力部104は、演算変換部103から入力された変換後のニューラルネットワークを出力する。なお、ニューラルネットワーク軽量化装置10が演算変換部103を備えていない場合には、学習部102から入力された学習後のニューラルネットワークを出力する。ニューラルネットワークは、どのように出力されてもよい。例えば、出力部104は、ニューラルネットワークを記録媒体に出力することによって、記録媒体にニューラルネットワークを記録してもよい。あるいは、出力部104は、ニューラルネットワークを通信装置に出力することによって、通信装置を介してニューラルネットワークを他の装置に送信してもよい。
(1-2.動作の説明)
続いて、本発明の第1の実施形態に係るニューラルネットワーク軽量化装置10の動作例について説明する。上記したように、入力部100によって、軽量化対象のニューラルネットワーク(図3)および学習用データセットが取得される。ここでは一例として、学習用データとして2次元画像が使用される場合を想定する。このとき、軽量化対象のニューラルネットワークに含まれる第l(エル)層の畳み込み層によって行われる演算は、下記の数式(1)のように示される。
Figure 0007120288000001
ここで、xは、第l(エル)層の畳み込み層への活性(入力特徴量)を示し、wは、第l層の畳み込み層によって使用される重みを示し、添え字i、j、n、mは、それぞれ出力チャネル、入力チャネル、画像の幅、画像の高さを示し、fact()は、活性化関数を示している。ただし、数式(1)において第(l+1)層への活性x l+1に対応する画像の幅と画像の高さを示す添え字は省略されている。数式(1)に示されるように、重みと活性との内積が計算された後に、活性化関数が適用される。例えば、活性化関数にはランプ関数などが利用されてよい。また、活性化関数の適用前にバッチ正規化が適用されてもよい。
入力部100は、軽量化対象のニューラルネットワークおよび学習用データセットをモデル修正部101に出力する。
図4は、モデル修正部101の動作例を示すフローチャートである。図4に示された例では、第1層から第(N-1)層に含まれる畳み込み層、および、第N層に含まれる全結合層に含まれる乗算処理の全部が修正対象の乗算処理として特定される場合を想定する。しかし、上記したように、修正対象の乗算処理は、かかる例に限定されない。
まず、モデル修正部101は、入力部100から入力された軽量化対象のニューラルネットワークに基づいて、修正対象の乗算処理を特定する(S110)。モデル修正部101は、修正対象の乗算処理への入力に対して、制御パラメータを含んだ量子化関数を導入する(S111)。以下では、一例として畳み込み層に含まれる乗算処理への入力に対する量子化関数の導入例について主に説明する。しかし、他の処理層(例えば、全結合層など)に含まれる乗算処理への入力に対する量子化関数の導入も、畳み込み層に含まれる乗算処理への入力に対する量子化関数の導入と同様に行われてよい。
図5は、量子化関数が導入される前の乗算処理の演算構成の例を示す図である。図5を参照すると、乗算処理202が示されており、乗算処理202への入力の例として、第1の入力200および第2の入力201が示されている。また、乗算処理202の出力の例として、出力203が示されている。すなわち、第1の入力200と第2の入力201との乗算処理202が行われ、乗算処理202の結果として出力203が得られる。
畳み込み層は、数式(1)に表現されるように重みと活性との乗算処理を含む。したがって、第1の入力200は、一例として重みに該当し、第2の入力201は、一例として活性に該当し、乗算処理202は、一例として重みと活性との乗算処理に該当し、出力203は、一例として重みと活性との乗算処理の結果に該当する。実際に畳み込み層においては、その出力203に対して、チャネル、フィルタの幅およびフィルタの高さに応じた加算が行われる。以下では、説明を簡便にするため、かかる加算についての詳細な説明は省略し、乗算処理の詳細について説明する。
図6は、量子化関数が導入された後の乗算処理の演算構成の例を示す図である。図6を参照すると、乗算処理202が示されており、乗算処理202への入力の例として、第1の入力200および第2の入力201が示されている。また、乗算処理202の出力の例として、出力203が示されている。また、量子化関数が導入された後においては、第1の入力200に対して第1の量子化関数304が導入され、第2の入力201に対して第2の量子化関数305が導入されている。
なお、以下では、第1の入力200および第2の入力201の双方に量子化関数が導入される場合を主に想定する。しかし、必ずしも第1の入力200および第2の入力201の双方に量子化関数が導入されなくてもよい。例えば、第1の入力200および第2の入力201の一方のみに量子化関数が導入されてもよい。
図6に示されるように、第1の入力200に対して導入される第1の量子化関数304は、第1の制御パラメータ300および第1の圧縮伸長処理301を含む。また、第2の入力201に対して導入される第2の量子化関数305は、第2の制御パラメータ303および第2の圧縮伸長処理302を含む。
第1の制御パラメータ300は、訓練可能なパラメータである。第2の制御パラメータ303は、訓練可能なパラメータである。さらに、第1の制御パラメータ300と第2の制御パラメータ303とは、互いに独立したパラメータである。
第1の圧縮伸長処理301は、第1の制御パラメータ300に基づいて第1の入力200に対して圧縮伸長処理を行い、圧縮伸長処理の結果を乗算処理202に出力する。第2の圧縮伸長処理302は、第2の制御パラメータ303に基づいて第2の入力201に対して圧縮伸長処理を行い、圧縮伸長処理の結果を乗算処理202に出力する。
第1の圧縮伸長処理301は、圧縮関数と一様量子化関数(第1の一様量子化関数)と伸長関数との合成関数を含む。これらの関数それぞれについての詳細は、後に説明する。同様に、第2の圧縮伸長処理302も、圧縮関数と一様量子化関数と伸長関数との合成関数を含む。ただし、第1の圧縮伸長処理301と第2の圧縮伸長処理302とは、全く同じ関数によって表現されなくてもよい。
一例として、第1の圧縮伸長処理301に含まれる圧縮関数と第2の圧縮伸長処理302に含まれる圧縮関数とは、異なっていてもよいし、第1の圧縮伸長処理301に含まれる一様量子化関数と第2の圧縮伸長処理302に含まれる一様量子化関数とは、異なっていてもよい。以下では、第1の圧縮伸長処理301および第2の圧縮伸長処理302を代表して、第1の圧縮伸長処理301および第1の圧縮伸長処理301に含まれるこれらの関数について主に説明する。
図7は、圧縮関数、一様量子化関数、伸長関数および合成関数それぞれの例を示す図である。図7を参照すると、圧縮関数G11、一様量子化関数G12、伸長関数G13および合成関数G14それぞれの例が示されている。
圧縮関数G11は、非線形関数(第1の非線形関数)の一例である。一様量子化関数G12は、入力値のレンジに対して等間隔な量子化を行う関数である。伸長関数G13は、非線形関数(第2の非線形関数)の一例である。伸長関数G13は、圧縮関数G11の逆関数であってよい。合成関数G14は、第1の入力200に対して、圧縮関数G11、一様量子化関数G12および伸長関数G13を順に適用する関数である。
合成関数G14を参照すると、合成関数G14によって入力値のレンジに対して非等間隔な量子化(非一様量子化)が行われることが把握される。このような量子化は、電気通信分野または信号処理分野において一般にコンパンディングと呼ばれる符号化技術によるものである。しかし、本発明の実施形態においては、ニューラルネットワークの量子化を目的として、圧縮関数および伸長関数に訓練可能な制御パラメータを導入している点が新しい。
例えば、量子化前の重み(すなわち、第1の入力200)をwとし、量子化後の重み(すなわち、第1の圧縮伸長処理301から乗算処理202への出力)をw’とし、圧縮関数をfθとし、一様量子化関数をqとし、伸長関数をfθ -1とすると、第1の圧縮伸長処理301に含まれる合成関数と、量子化前の重みwと、量子化後の重みw’との関係は、下記の数式(2)のように表現され得る。
Figure 0007120288000002
圧縮関数fθは、制御パラメータ集合θ(第1の制御パラメータ300)を有する単調増加かつ微分可能な任意の非線形関数であってよい。圧縮関数fθの具体的な例としては、K個の制御パラメータθ∈θを有する区分線形関数が採用され得る。かかる区分線形関数は、下記の数式(3)のように表現され得る。
Figure 0007120288000003
さらに、区分線形関数への入力となる重みwは、|w|∈[0,1]となるようにあらかじめ正規化されているものとする。ここで、正規化の手法は限定されない。例えば、正規化は、最大値による除算によって行われてもよいし、上限値によるクリッピングにより行われてもよい。数式(3)のように表現される区分線形関数は、ほとんど至るところで微分可能であり、その逆関数fθ -1も定義され得る。
一様量子化関数qは、非特許文献1に記載の一様量子化関数と同様の関数である。例えば、一様量子化関数qは、その入力をxとすると、下記の数式(4)のように表現され得る。
Figure 0007120288000004
ただし、dは任意の定数である。例えば、一様量子化関数qによって符号付き整数への量子化が行われる場合には、d=2B-1-1(Bは所与の量子化ビット数)と表現され得る。あるいは、一様量子化関数qによって符号なし整数への量子化が行われる場合には、d=2-1(Bは所与の量子化ビット数)と表現され得る。
ここで、一様量子化関数qは、数式(4)に示したように、小数点以下を切り捨てる床関数を含むため、微分不可能である。しかし、非特許文献1に記載のように、∂q/∂x=1としてよい(すなわち、∂q/∂fθ=1としてよい)。以上から、量子化関数(第1の量子化関数304および第2の量子化関数305)それぞれに含まれる合成関数は、微分による勾配計算が可能であることから、誤差逆伝播法に基づく学習が可能である。
例えば、損失関数をLとすると、下記の数式(5)のように表現される誤差勾配(∂L/∂θ)に基づいて、制御パラメータθを更新することができる。
Figure 0007120288000005
図4に戻って説明を続ける。モデル修正部101は、第1の量子化関数304および第2の量子化関数305を導入していない修正対象の乗算処理が存在する場合には(S112において「NO」)、S110に動作を移行させる。一方、モデル修正部101は、修正対象の乗算処理の全部に対して、第1の量子化関数304および第2の量子化関数305を導入し終わった場合には(S112において「YES」)、修正を終了する。
図2に戻って説明を続ける。モデル修正部101は、第1の量子化関数304および第2の量子化関数305の導入によって生成した訓練対象のニューラルネットワークおよび学習用データセットを、学習部102に出力する。
学習部102は、モデル修正部101から入力された訓練対象のニューラルネットワークの重みを初期化し、モデル修正部101から入力された学習用データセットに基づいて、訓練対象のニューラルネットワークの学習を行う。これによって、訓練対象のニューラルネットワークの重みと制御パラメータ(図6に示された例では、第1の制御パラメータ300および第2の制御パラメータ303)とが訓練される。
より詳細に、学習部102は、訓練対象のニューラルネットワークと学習用データセットとを用いて、損失関数に基づく誤差逆伝播法(例えば、誤差逆伝播法に基づく確率的勾配降下法)によって、重みと制御パラメータとを更新する。
学習部102は、重みと制御パラメータとを同時に訓練するのが望ましい。なお、「重みと制御パラメータとを同時に訓練する」とは、重みおよび制御パラメータの更新のタイミングが同じであることを必ずしも意味せず、ニューラルネットワークからの同一の出力に基づいて、重みと制御パラメータとを共に更新することを意味し得る。
重みと制御パラメータとが同時に訓練されることによって、認識精度(例えば、画像認識タスクによる認識精度など)がより高くなるように圧縮関数および伸長関数が変化し得る。このように変化した圧縮関数および伸長関数を含んだ非一様量子化関数が適用されることによって、一様量子化関数が適用される場合とは異なり、認識精度に寄与するような量子化値の割り当てが行われるようになる。
学習部102は、損失関数が収束したと判定した場合には、訓練対象のニューラルネットワークの学習を終了する。例えば、損失関数またはその変化が閾値よりも小さくなった場合に、損失関数が収束したと判定されてもよい。学習後のニューラルネットワークは、演算変換部103に出力される。
演算変換部103は、学習部102から入力された学習後のニューラルネットワークを推論用途に向けた効率的なニューラルネットワークに変換する。これによって、変換後のニューラルネットワークが生成される。より詳細に、演算変換部103は、学習後のニューラルネットワークに基づいて、量子化関数(第1の量子化関数304および第2の量子化関数305)をインデックス化処理に変換するとともに、乗算処理202をメモリ参照処理に変換する。
ここでは、学習後のニューラルネットワークに含まれる量子化関数の全部をインデックス化処理に変換し、学習後のニューラルネットワークに含まれる乗算処理の全部をメモリ参照処理に変換する場合を想定する。しかし、学習後のニューラルネットワークに含まれる量子化関数の一部のみがインデックス化処理に変換されてもよい。さらに、学習後のニューラルネットワークに含まれる乗算処理の一部のみがメモリ参照処理に変換されてもよい。
図8は、変換後の演算構成の例を示す図である。図8を参照すると、変換前の演算構成(図6)と比較して、第1の量子化関数304が第1のインデックス化処理401に変換されており、第2の量子化関数305が第2のインデックス化処理402に変換されている。さらに、乗算処理202がメモリ参照処理405に変換されている。
ここで、第1の量子化関数304および第2の量子化関数305それぞれは、所与の量子化ビット数に応じた数の量子化値を出力する。そこで、演算変換部103は、推論に先立って、第1の量子化関数304の出力と第2の量子化関数305の出力とに基づく乗算処理202の結果をあらかじめ計算し、計算した乗算処理202の結果をメモリに記録しておく。そして、演算変換部103は、乗算処理202を、あらかじめメモリに記録した乗算処理の結果を得る処理(メモリ参照処理405)に変換する。
これによって、推論段階において、乗算処理202の代わりにメモリ参照処理405が行われる。メモリ参照処理405に要する時間は、乗算処理202に要する時間と比較して短くて済むため、メモリ参照処理405によって、乗算処理202の出力203と同様の出力を高速に得ることが可能になる。
第1のインデックス化処理401は、第1の量子化関数304への入力(第1の入力200)を、第1の量子化関数304の(当該入力に対応する)出力に基づく乗算処理202の結果が記録されたメモリ領域に対応するインデックス値(第1の入力200に対応するインデックス値)に変換する処理を含み得る。そして、演算変換部103は、第1の量子化関数304を第1のインデックス化処理401に変換し得る。これによって、乗算処理の結果をより高速に得ることが可能になる。
第1の量子化関数304への入力(第1の入力200)を第1の入力200に対応するインデックス値に変換する手法は限定されない。例えば、第1の量子化関数304に含まれる学習済みの合成関数G14(図7)において、出力が変化する入力の値(境界値)が存在する。したがって、演算変換部103は、第1の量子化関数304に含まれる学習済みの合成関数G14に基づいて、境界値を第1の境界値400として得る。学習済みの合成関数G14は、単調増加の性質を有するため、一例として、演算変換部103は、第1の境界値400によって仕切られる第1の入力200の区間のうち、最も小さい区間に対応するインデックス値を「0」とし、区間が上がるに伴ってインデックス値を「1」ずつ増加させればよい。
なお、上記したように、第1の入力200は、一例として重みに該当し得る。重みは、推論段階において使用されるデータに依存しない。そこで、演算変換部103は、第1の入力200が重みに該当する場合には、訓練済みの重みに対応するインデックス値をあらかじめ得ておき、そのインデックス値に対応するメモリ領域のみに乗算処理の結果を記録しておけばよい。そして、演算変換部103は、推論段階においては、第1のインデックス化処理401による処理を省略し、あらかじめ得ておいた訓練済みの重みに対応するインデックス値を使用して、乗算処理の結果をメモリ領域から取得してもよい。
同様に、第2のインデックス化処理402は、第2の量子化関数305への入力(第2の入力201)を、第2の量子化関数305の(当該入力に対応する)出力に基づく乗算処理202の結果が記録されたメモリ領域に対応するインデックス値(第2の入力201に対応するインデックス値)に変換する処理を含み得る。そして、演算変換部103は、第2の量子化関数305を第2のインデックス化処理402に変換し得る。これによって、乗算処理の結果をより高速に得ることが可能になる。
第2の量子化関数305への入力(第2の入力201)を第2の入力201に対応するインデックス値に変換する手法も限定されない。例えば、演算変換部103は、第2の量子化関数305に含まれる学習済みの合成関数に基づいて、境界値を第2の境界値403として得る。学習済みの合成関数は、単調増加の性質を有するため、一例として、演算変換部103は、第2の境界値403によって仕切られる第2の入力201の区間のうち、最も小さい区間に対応するインデックス値を「0」とし、区間が上がるに伴ってインデックス値を「1」ずつ増加させればよい。
このように、乗算処理の結果は、第1の入力200に対応するインデックス値、および、第2の入力201に対応するインデックス値それぞれに対応付けられてなるテーブル(ルックアップテーブル404)の形式によってメモリ領域に記録される。
図9は、ルックアップテーブル404の例を示す図である。図9を参照すると、第1の入力200に対応するインデックス値、および、第2の入力201に対応するインデックス値それぞれに対応付けられたメモリ領域に、乗算処理の結果が記録されている。一例として、第1の入力200に対応するインデックス値「0」、および、第2の入力201に対応するインデックス値「0」それぞれに対応付けられたメモリ領域に、乗算処理の結果「16」が記録されている。
第1の入力200に対応するインデックス値が少ないほど(すなわち、第1の量子化関数304による量子化ビット数が小さいほど)、ルックアップテーブル404のサイズは小さくなり、使用メモリ量の低減が図られる。同様に、第2の入力201に対応するインデックス値が少ないほど(すなわち、第2の量子化関数305による量子化ビット数が小さいほど)、ルックアップテーブル404のサイズは小さくなり、使用メモリ量の低減が図られる。
演算変換部103による変換後のニューラルネットワークは、出力部104に出力される。
出力部104は、演算変換部103から入力された変換後のニューラルネットワークを出力する。なお、上記したように、ニューラルネットワーク軽量化装置10が演算変換部103を備えていない場合には、学習部102から入力された学習後のニューラルネットワークを出力する。
(1-3.効果の説明)
本発明の第1の実施形態によれば、入力部100と、モデル修正部101と、学習部102と、出力部104とを備える、ニューラルネットワーク軽量化装置10が提供される。入力部100は、軽量化対象のニューラルネットワークを取得する。そして、モデル修正部101は、軽量化対象のニューラルネットワークに含まれる少なくとも一つの乗算処理を特定し、特定した乗算処理への入力に対して制御パラメータを含んだ量子化関数を導入して訓練対象のニューラルネットワークを生成する。
学習部102は、訓練対象のニューラルネットワークの学習によって、訓練対象のニューラルネットワークの重みと量子化関数に含まれる制御パラメータとを訓練する。そして、出力部104は、学習後のニューラルネットワークを出力する。かかる構成によれば、精度劣化を抑制した量子化ニューラルネットワークを構築することが可能となる。
量子化関数は、第1の非線形関数(圧縮関数)と、第1の一様量子化関数と、第2の非線形関数(伸長関数)との合成関数を含み得る。すなわち、第1の非線形関数の直後に、第1の一様量子化関数が実行されるだけではなく、第2の非線形関数が実行され得る。かかる構成によれば、非特許文献3に記載の技術と異なり、入出力間の乖離(量子化誤差)を小さくすることが可能となるため、学習によって最終的に得られるモデルの性能の低下を抑制することが可能となる。
第1の非線形関数(圧縮関数)は、区分線形関数であり得る。かかる構成によれば、区分線形関数によって量子化値の割り当てが学習に基づいて柔軟に決定され得るため、量子化による性能劣化を抑制可能であるという効果が享受される。
より詳細には、区分線形関数のある区間における入力に対する出力の変化(傾き)が増加すると、区分線形関数の後に適用される一様量子化関数において当該区間に対する量子化値の割り当て数が増加する。非特許文献2および非特許文献3に記載の技術は、単一の区間に対してのみ量子化値の割り当て数を増加させる。一方、第1の非線形関数として区分線形関数が適用される場合には、複数の区間において独立に量子化数の割り当て数を増加させることが許容されるため、量子化値が柔軟に割り当てられ得る。
学習部102は、訓練対象のニューラルネットワークの重みと量子化関数に含まれる制御パラメータとを同時に訓練し得る。かかる構成によれば、重みと制御パラメータとが互いに依存関係を持ちながら最適化されるため、ニューラルネットワークの性能(認識精度など)の向上が期待される。
ニューラルネットワーク軽量化装置10は、演算変換部103を備え得る。演算変換部103は、学習後のニューラルネットワークに基づいて、量子化関数をインデックス化処理に変換するとともに、乗算処理をメモリ参照処理に変換し得る。かかる構成によれば、推論の高速化が図られるだけでなく、消費電力が低減されることが期待される。
以上、本発明の第1の実施形態について説明した。
(2.第2の実施形態)
続いて、本発明の第2の実施形態について説明する。
(2-1.構成の説明)
本発明の第2の実施形態に係るニューラルネットワーク軽量化装置10の構成は、本発明の第2の実施形態に係るニューラルネットワーク軽量化装置10の構成と同様である。したがって、以下では、図2に示したニューラルネットワーク軽量化装置10の機能構成例を用いて、本発明の第2の実施形態について詳細に説明する。具体的には、本発明の第2の実施形態は、本発明の第1の実施形態と比較して、モデル修正部101の機能が異なる。以下では、モデル修正部101の機能について主に説明し、その他の機能についての詳細な説明は省略する。
(2-2.動作の説明)
続いて、本発明の第2の実施形態に係るニューラルネットワーク軽量化装置10の動作例について説明する。本発明の第1の実施形態と同様に、本発明の第2の実施形態において、モデル修正部101は、入力部100から入力された軽量化対象のニューラルネットワークに基づいて、修正対象の乗算処理を特定し、修正対象の乗算処理への入力に対して、制御パラメータを含んだ量子化関数を導入する。
図10は、本発明の第2の実施形態において、量子化関数が導入された後の乗算処理の演算構成の例を示す図である。図10を参照すると、乗算処理506が示されており、乗算処理506への入力の例として、第1の入力500および第2の入力501が示されている。また、乗算処理506の出力の例として、出力507が示されている。また、量子化関数が導入された後においては、第1の入力500に対して第1の量子化関数508が導入され、第2の入力501に対して第2の量子化関数509が導入されている。
図10に示されるように、本発明の第2の実施形態においても、本発明の第1の実施形態と同様に、第1の量子化関数508は、第1の制御パラメータ502および第1の圧縮伸長処理503を含む。同様に、第2の量子化関数509は、第2の制御パラメータ505および第2の圧縮伸長処理504を含む。その他、本発明の第2の実施形態において、第1の量子化関数508は、第1の圧縮伸長処理503の後に、第1の高ビット量子化処理510を含む。同様に、第2の量子化関数509は、第2の圧縮伸長処理504の後に、第2の高ビット量子化処理511を含む。
第1の高ビット量子化処理510は、第1の圧縮伸長処理503の出力に対して、一様量子化関数(第2の一様量子化関数)を適用する。一様量子化関数は、上記の数式(4)のように表現され得る。ただし、第1の高ビット量子化処理510における一様量子化関数の量子化ビット数としては、第1の圧縮伸長処理503に含まれる一様量子化関数の量子化ビット数よりも大きい数を採用する。
一例として、第1の圧縮伸長処理503に含まれる一様量子化関数の量子化ビット数として、「3」を採用し、第1の高ビット量子化処理510における一様量子化関数の量子化ビット数として「8」を採用してもよい。
同様に、第2の高ビット量子化処理511は、第2の圧縮伸長処理504の出力に対して、一様量子化関数(第2の一様量子化関数)を適用する。一様量子化関数は、上記の数式(4)のように表現され得る。ただし、第2の高ビット量子化処理511における一様量子化関数の量子化ビット数としては、第2の圧縮伸長処理504に含まれる一様量子化関数の量子化ビット数よりも大きい数を採用する。
(2-3.効果の説明)
本発明の第2の実施形態によれば、量子化関数は、圧縮伸長処理(合成関数)の後に、高ビット量子化処理(第2の一様量子化関数)を含む。高ビット量子化処理の量子化ビット数は、圧縮伸長処理に含まれる一様量子化関数(第1の一様量子化関数)の量子化ビット数よりも大きい。かかる構成によれば、ルックアップテーブル404の要素値の数を、高ビット量子化処理(第1の高ビット量子化処理510および第2の高ビット量子化処理511)の量子化ビット数に合わせることができるため、メモリ消費量を低減することが可能となる。
一方、伸長関数G13(図7)が非線形関数であるため、本発明の第1の実施形態において、圧縮伸長処理(第1の圧縮伸長処理301および第2の圧縮伸長処理302)の出力が実数として得られるため、ルックアップテーブル404の要素値を16~32ビットの浮動小数点などによって表現する必要があった。
また、畳み込み層および全結合層などといった処理層における演算においては、乗算処理の後に加算処理などといった他の演算も必要となる。このような場合においても、高ビット量子化処理(第1の高ビット量子化処理510および第2の高ビット量子化処理511)によって、整数化された値が乗算処理に出力されるようにすれば、整数による演算が可能になることから、浮動小数点による演算が行われる場合と比較して、消費電力の低減と演算の高速化が期待される。
(3.各種の変形例)
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
上記した例では、ニューラルネットワーク軽量化装置10が、演算変換部103を備える場合について主に説明した。しかし、既に述べたように、ニューラルネットワーク軽量化装置10は、演算変換部103を備えていなくてもよい。かかる場合には、学習部102による学習後のニューラルネットワークは、出力部104に出力されてよく、出力部104によって、学習後のニューラルネットワークが出力されてよい。
また、上記した例では、圧縮伸長処理(第1の実施形態に係る第1の圧縮伸長処理301および第2の圧縮伸長処理302、第2の実施形態に係る第1の圧縮伸長処理503および第2の圧縮伸長処理504)に含まれる圧縮関数G11(図7)として、区分線形関数が用いられる場合について主に説明した。しかし、圧縮伸長処理に含まれる圧縮関数としては、音声符号化において一般的に用いられるμ‐Law関数を用いることも可能である。
(4.ハードウェア構成例)
続いて、本発明の実施形態に係るニューラルネットワーク軽量化装置10のハードウェア構成例について説明する。以下では、本発明の実施形態に係るニューラルネットワーク軽量化装置10のハードウェア構成例として、情報処理装置900のハードウェア構成例について説明する。なお、以下に説明する情報処理装置900のハードウェア構成例は、ニューラルネットワーク軽量化装置10のハードウェア構成の一例に過ぎない。したがって、ニューラルネットワーク軽量化装置10のハードウェア構成は、以下に説明する情報処理装置900のハードウェア構成から不要な構成が削除されてもよいし、新たな構成が追加されてもよい。
図11は、本発明の実施形態に係るニューラルネットワーク軽量化装置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 出力部

Claims (10)

  1. 第1のニューラルネットワークを取得する入力部と、
    前記第1のニューラルネットワークに含まれる少なくとも一つの乗算処理を特定し、前記乗算処理への入力に対してパラメータを含んだ、第1の非線形関数と、第1の一様量子化関数と、第2の非線形関数との合成関数を含む量子化関数を導入して第2のニューラルネットワークを生成する修正部と、
    前記第2のニューラルネットワークの学習によって、前記第2のニューラルネットワークの重みパラメータと前記量子化関数に含まれるパラメータとを訓練する学習部と、
    学習後の第2のニューラルネットワークを出力する出力部と、
    を備える、ニューラルネットワーク軽量化装置。
  2. 前記第2の非線形関数は、前記第1の非線形関数の逆関数である、
    請求項に記載のニューラルネットワーク軽量化装置。
  3. 前記量子化関数は、前記合成関数の後に、前記第1の一様量子化関数の量子化ビット数よりも量子化ビット数が大きい第2の一様量子化関数を含む、
    請求項またはに記載のニューラルネットワーク軽量化装置。
  4. 前記第1の非線形関数は、区分線形関数である、
    請求項のいずれか一項に記載のニューラルネットワーク軽量化装置。
  5. 前記学習部は、前記第2のニューラルネットワークの重みパラメータと前記量子化関数に含まれるパラメータとを同時に訓練する、
    請求項1~のいずれか一項に記載のニューラルネットワーク軽量化装置。
  6. 前記ニューラルネットワーク軽量化装置は、
    学習後の第2のニューラルネットワークに基づいて、前記量子化関数をインデックス化処理に変換するとともに、前記乗算処理をメモリ参照処理に変換して第3のニューラルネットワークを生成する演算変換部を備え、
    前記出力部は、前記第3のニューラルネットワークを出力する、
    請求項1~のいずれか一項に記載のニューラルネットワーク軽量化装置。
  7. 前記メモリ参照処理は、あらかじめ計算されてメモリに記録された、前記量子化関数の出力に基づく乗算処理の結果を得る処理を含む、
    請求項に記載のニューラルネットワーク軽量化装置。
  8. 前記インデックス化処理は、前記量子化関数への入力を前記量子化関数の出力に基づく乗算処理の結果が記録されたメモリ領域に対応するインデックス値に変換する処理を含む、
    請求項に記載のニューラルネットワーク軽量化装置。
  9. 第1のニューラルネットワークを取得することと、
    前記第1のニューラルネットワークに含まれる少なくとも一つの乗算処理を特定し、前記乗算処理への入力に対してパラメータを含んだ、第1の非線形関数と、第1の一様量子化関数と、第2の非線形関数との合成関数を含む量子化関数を導入して第2のニューラルネットワークを生成することと、
    前記第2のニューラルネットワークの学習によって、前記第2のニューラルネットワークの重みパラメータと前記量子化関数に含まれるパラメータとを訓練することと、
    学習後の第2のニューラルネットワークを出力することと、
    を含む、ニューラルネットワーク軽量化方法。
  10. コンピュータを、
    第1のニューラルネットワークを取得する入力部と、
    前記第1のニューラルネットワークに含まれる少なくとも一つの乗算処理を特定し、前記乗算処理への入力に対してパラメータを含んだ、第1の非線形関数と、第1の一様量子化関数と、第2の非線形関数との合成関数を含む量子化関数を導入して第2のニューラルネットワークを生成する修正部と、
    前記第2のニューラルネットワークの学習によって、前記第2のニューラルネットワークの重みパラメータと前記量子化関数に含まれるパラメータとを訓練する学習部と、
    学習後の第2のニューラルネットワークを出力する出力部と、
    を備えるニューラルネットワーク軽量化装置として機能させるプログラム。

JP2020187816A 2020-11-11 2020-11-11 ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム Active JP7120288B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020187816A JP7120288B2 (ja) 2020-11-11 2020-11-11 ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020187816A JP7120288B2 (ja) 2020-11-11 2020-11-11 ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2022077134A JP2022077134A (ja) 2022-05-23
JP7120288B2 true JP7120288B2 (ja) 2022-08-17

Family

ID=81654227

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020187816A Active JP7120288B2 (ja) 2020-11-11 2020-11-11 ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム

Country Status (1)

Country Link
JP (1) JP7120288B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190347550A1 (en) 2018-05-14 2019-11-14 Samsung Electronics Co., Ltd. Method and apparatus with neural network parameter quantization
US20200234126A1 (en) 2019-01-23 2020-07-23 Google Llc Look-up table based neural networks
US20200302269A1 (en) 2019-03-18 2020-09-24 Microsoft Technology Licensing, Llc Differential bit width neural architecture search

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190347550A1 (en) 2018-05-14 2019-11-14 Samsung Electronics Co., Ltd. Method and apparatus with neural network parameter quantization
US20200234126A1 (en) 2019-01-23 2020-07-23 Google Llc Look-up table based neural networks
US20200302269A1 (en) 2019-03-18 2020-09-24 Microsoft Technology Licensing, Llc Differential bit width neural architecture search

Also Published As

Publication number Publication date
JP2022077134A (ja) 2022-05-23

Similar Documents

Publication Publication Date Title
CN110363279B (zh) 基于卷积神经网络模型的图像处理方法和装置
US11468331B2 (en) Neural network load reduction device, information processing unit, and neural network load reduction method and computer-readable storage medium
TWI791610B (zh) 對人工神經網路及浮點神經網路進行量化的方法及裝置
CN110969251B (zh) 基于无标签数据的神经网络模型量化方法及装置
JP6789894B2 (ja) ネットワーク係数圧縮装置、ネットワーク係数圧縮方法およびプログラム
CN110663048A (zh) 用于深度神经网络的执行方法、执行装置、学习方法、学习装置以及程序
CN113348474A (zh) 具有非均匀尾数的神经网络激活压缩
JP6787444B1 (ja) ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム
JP6633787B2 (ja) 線形予測復号装置、方法、プログラム及び記録媒体
JP7408799B2 (ja) ニューラルネットワークモデルの圧縮
EP4008057B1 (en) Lossless exponent and lossy mantissa weight compression for training deep neural networks
CN112771547A (zh) 通信系统中的端到端学习
WO2022168604A1 (ja) ソフトマックス関数の近似計算装置、近似計算方法および近似計算プログラム
US20240080038A1 (en) Compression of Data that Exhibits Mixed Compressibility
JP7120288B2 (ja) ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム
CN113177634B (zh) 基于神经网络输入输出量化的图像分析系统、方法和设备
JP6992864B1 (ja) ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム
KR102243119B1 (ko) 가변 정밀도 양자화 장치 및 방법
JP7081708B1 (ja) ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム
CN113361701A (zh) 神经网络模型的量化方法和装置
JP2009210644A (ja) 線形予測係数算出装置、線形予測係数算出方法、線形予測係数算出プログラム、および記憶媒体
JP2021076900A (ja) データ処理装置及びその動作方法、プログラム
JP2004527172A (ja) 画像品質についてのアルゴリズムのランダムシステムを最適化するための拡張可能なシステム及び方法
US20240048703A1 (en) Encoding device, decoding device, encoding method, decoding method, and program
EP4141745A1 (en) Threshold determination program, threshold determination method, and information processing apparatus

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220310

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: 20220705

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220718

R150 Certificate of patent or registration of utility model

Ref document number: 7120288

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150