IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ パナソニックIPマネジメント株式会社の特許一覧

特許7325015量子化方法、量子化装置、及び、プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-03
(45)【発行日】2023-08-14
(54)【発明の名称】量子化方法、量子化装置、及び、プログラム
(51)【国際特許分類】
   G06N 3/02 20060101AFI20230804BHJP
【FI】
G06N3/02
【請求項の数】 7
(21)【出願番号】P 2021050388
(22)【出願日】2021-03-24
(65)【公開番号】P2022148635
(43)【公開日】2022-10-06
【審査請求日】2022-03-02
(73)【特許権者】
【識別番号】314012076
【氏名又は名称】パナソニックIPマネジメント株式会社
(74)【代理人】
【識別番号】100109210
【弁理士】
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【弁理士】
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【弁理士】
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】村田 紀文
【審査官】▲はま▼中 信行
(56)【参考文献】
【文献】特開2019-046072(JP,A)
【文献】特表2018-513507(JP,A)
【文献】米国特許出願公開第2019/0095777(US,A1)
【文献】国際公開第2019/009897(WO,A1)
【文献】Amir Gholami et al.,A Survey of Quantization Methods for Efficient Neural Network Inference,v3,arXiv [online],2021年06月21日,https://arxiv.org/abs/2103.13630,[2023年6月27日検索]
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00 ー 99/00
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実行される量子化方法であって、
ニューラルネットワークで構成されるモデルを用いて得た推論結果に対する、前記モデルを構成する複数のレイヤそれぞれにおける複数の第1ニューロンを要素とする前記複数のレイヤそれぞれの影響度を示す第1推論寄与度であって予め算出された第1推論寄与度のうち対象レイヤの次のレイヤにおける複数の第2ニューロンを要素とする前記次のレイヤの影響度を示す第2推論寄与度と、前記対象レイヤの複数のパラメータの量子化前後における量子化誤差とを用いて、前記複数のパラメータの量子化ステップサイズを探索し、
探索により得られた量子化ステップサイズを用いて、前記複数のパラメータを量子化する、
量子化方法。
【請求項2】
前記量子化誤差と前記第2推論寄与度との積値からなる評価式を用いて、前記評価式が最小となるような前記複数のパラメータの量子化ステップサイズを探索する、
請求項1に記載の量子化方法。
【請求項3】
前記モデルの学習に用いた学習用データセットのうちの少なくとも一部である推論寄与度用データセットを構成するデータのそれぞれを、前記モデルに入力して推論させることで前記第1ニューロンそれぞれの値である第1ニューロン値を算出して、
前記推論寄与度用データセットを構成するすべてのデータに対して算出した前記第1ニューロン値を、前記第1ニューロンそれぞれについて累積した累積値を算出し、
前記第1ニューロンそれぞれにおける累積値を前記複数のレイヤそれぞれで正規化した値を、前記第1推論寄与度として算出する、
請求項1または2に記載の量子化方法。
【請求項4】
前記複数のパラメータは、前記対象レイヤの中間値及び前記第ニューロンに付与された複数の重みのうち少なくとも一方である、
請求項1~3のいずれか1項に記載の量子化方法。
【請求項5】
前記モデルが畳み込みニューラルネットワークであり、
前記中間値は、前記対象レイヤの特徴マップである、
請求項4に記載の量子化方法。
【請求項6】
プロセッサと、
メモリと、を備え、
前記プロセッサは、前記メモリを用いて、
ニューラルネットワークで構成されるモデルを用いて得た推論結果に対する、前記モデルを構成する複数のレイヤそれぞれにおける複数の第1ニューロンを要素とする前記複数のレイヤそれぞれの影響度を示す第1推論寄与度であって予め算出された第1推論寄与度のうち対象レイヤの次のレイヤにおける複数の第2ニューロンを要素とする前記次のレイヤの影響度を示す第2推論寄与度と、前記対象レイヤの複数のパラメータの量子化前後における量子化誤差とを用いて、前記複数のパラメータの量子化ステップサイズを探索し、
探索により得られた量子化ステップサイズを用いて、前記複数のパラメータを量子化する、
量子化装置。
【請求項7】
ニューラルネットワークで構成されるモデルを用いて得た推論結果に対する、前記モデルを構成する複数のレイヤそれぞれにおける複数の第1ニューロンを要素とする前記複数のレイヤそれぞれの影響度を示す第1推論寄与度であって予め算出された第1推論寄与度
のうち対象レイヤの次のレイヤにおける複数の第2ニューロンを要素とする前記次のレイヤの影響度を示す第2推論寄与度と、前記対象レイヤの複数のパラメータの量子化前後における量子化誤差とを用いて、前記複数のパラメータの量子化ステップサイズを探索するステップと、
探索により得られた量子化ステップサイズを用いて、前記複数のパラメータを量子化するステップとを、
コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ニューラルネットワークで構成されるモデルの量子化方法、量子化装置、及び、プログラムに関する。
【背景技術】
【0002】
高精度な認識・予測処理に深層学習を用いたアプローチが注目されている。深層学習の工程は、ニューラルネットワークで構成されるモデルを用いて行われる「学習」及び「推論」で構成される。
【0003】
深層学習では、PC(Personal Computer)上で高性能な計算リソースを活用できる場合、例えば32ビットの浮動小数点(FP32)で表現される重みなどのパラメータをもつモデルを用いて学習され、学習済のモデルを用いて推論が実行される。
【0004】
組込みシステムなど、限られた計算リソースを活用する場合、深層学習のモデルの学習はPC上で事前に実行される。一方、推論は、学習済のモデルのFP32のパラメータが例えばINT8、16などの整数のパラメータに量子化された学習済のモデルを用いて実行される。
【0005】
しかしながら、FP32のパラメータの分解能を等間隔でINT8、16などのパラメータに量子化するような単純な量子化変換では推論精度の劣化が生じる。このため、量子化によって生じる誤差(量子化誤差)を小さくするように量子化を行うことで、推論精度の劣化を抑止する方法が提案されている(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2020-177535号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1に開示される技術では、量子化誤差が大きい部分を小さくするように量子化を行ったとしても、必ずしも推論精度の劣化を抑制できるとは限らない。量子化誤差が大きくても推論精度には大きく寄与しない場合、または、量子化誤差は比較的小さくても推論精度に大きく寄与する場合がある。
【0008】
このように、量子化を行うと、モデルを用いた推論の演算量を少なくすることができるものの、推論精度が劣化する場合があるという課題がある。
【0009】
本開示は、上述の事情を鑑みてなされたもので、ニューラルネットワークで構成されるモデルの量子化を行っても推論精度の劣化を抑制できる量子化方法などを提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本開示の一形態に係る量子化方法は、コンピュータにより実行される量子化方法であって、ニューラルネットワークで構成されるモデルを用いて得た推論結果に対する、前記モデルを構成する複数のレイヤそれぞれにおける複数の第1ニューロンを要素とする前記複数のレイヤそれぞれの影響度を示す第1推論寄与度であって予め算出された第1推論寄与度のうち対象レイヤの次のレイヤにおける複数の第2ニューロンを要素とする前記次のレイヤの影響度を示す第2推論寄与度と、前記対象レイヤの複数のパラメータの量子化前後における量子化誤差とを用いて、前記複数のパラメータの量子化ステップサイズを探索し、探索により得られた量子化ステップサイズを用いて、前記複数のパラメータを量子化する。
【0011】
これにより、ニューラルネットワークで構成されるモデルの量子化を行っても推論精度の劣化を抑制できる。
【0012】
なお、これらの全般的または具体的な態様は、装置、方法、集積回路、コンピュータプログラムまたはコンピュータで読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【0013】
本開示により、ニューラルネットワークで構成されるモデルの量子化を行っても推論精度の劣化を抑制できる量子化方法などを提供できる。
【図面の簡単な説明】
【0014】
図1図1は、実施の形態に係る量子化装置の機能構成を示すブロック図である。
図2図2は、実施の形態に係る量子化装置の機能をソフトウェアにより実現するコンピュータのハードウェア構成の一例を示す図である。
図3図3は、実施の形態に係る量子化対象のモデルとパラメータの一例を示す図である。
図4A図4Aは、実施の形態に係る推論寄与度の算出方法の一例を説明するための図である。
図4B図4Bは、実施の形態に係る推論寄与度の算出方法の一例を説明するための図である。
図4C図4Cは、実施の形態に係る推論寄与度の算出方法の一例を説明するための図である。
図5図5は、実施の形態に係る推論寄与度の算出方法の別の一例を説明するための図である。
図6図6は、実施の形態に係る量子化処理を説明するための図である。
図7図7は、実施の形態に係る評価算出部が取得する推論寄与度の一例を示す図である。
図8A図8Aは、実施の形態に係る評価算出部が算出する量子化前のパラメータに関する値を示す図である。
図8B図8Bは、実施の形態に係る評価算出部が算出する量子化後のパラメータに関する値を示す図である。
図9図9は、実施の形態に係る最適な量子化ステップサイズの決定方法を説明するための図である。
図10図10は、実施の形態における量子化装置の動作概要を示すフローチャートである。
図11図11は、実施の形態における量子化装置の動作詳細の一例を示すフローチャートである。
図12図12は、図11のステップS11の具体的な動作の一例を示すフローチャートである。
図13図13は、図11のステップS13の具体的な動作の一例を示すフローチャートである。
図14図14は、図11のステップS14の具体的な動作の一例を示すフローチャートである。
図15図15は、量子化対象のモデルの一例を示す図である。
図16A図16Aは、比較例に係る量子化方法について説明するための図である。
図16B図16Bは、比較例に係る量子化方法について説明するための図である。
図16C図16Cは、比較例に係る量子化方法について説明するための図である。
図16D図16Dは、比較例に係る量子化方法について説明するための図である。
図17図17は、実施の形態に係る量子化方法を概念的に説明するための図である。
【発明を実施するための形態】
【0015】
以下、本開示の実施の形態について、図面を用いて詳細に説明する。なお、以下で説明する実施の形態は、いずれも本開示の一具体例を示す。以下の実施の形態で示される数値、形状、材料、規格、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序等は、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、本開示の最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また、各図は、必ずしも厳密に図示したものではない。各図において、実質的に同一の構成については同一の符号を付し、重複する説明は省略または簡略化する場合がある。
【0016】
(実施の形態)
まず、本実施の形態に係る量子化方法及び量子化装置について説明する。
【0017】
[1.量子化装置10]
以下、本実施の形態に係る量子化装置10の構成等について説明する。図1は、本実施の形態に係る量子化装置10の機能構成を示すブロック図である。
【0018】
量子化装置10は、コンピュータ等で実現され、ニューラルネットワークで構成されるモデルのパラメータの量子化を行っても推論精度の劣化を抑制できる最適な量子化ステップサイズを探索するための装置である。なお、モデルは、全結合型のニューラルネットワークモデルであってもよいし、畳み込みニューラルネットワークであってもよい。
【0019】
本実施の形態では、図1に示されるように、量子化装置10は、分布生成部11と、推論寄与度算出部12と、量子化ステップサイズ探索部13と、量子化部14とを備える。なお、量子化装置10において、量子化部14は必須ではない。
【0020】
量子化装置10に入力されるFPモデルは、FP32で表現されるパラメータを有するニューラルネットワークで構成されるモデルであり、図1には4層(4レイヤ)からなるモデルが例示されている。量子化装置10に入力されるデータセットは、FPモデルを学習するときに用いた学習用データセットの少なくとも一部である。量子化装置10から出力されるINTモデルは、FPモデルのFP32で表現されたパラメータが例えば整数のパラメータに量子化されたモデルを示す。なお、INTモデルは、FPモデルの浮動小数点で表現されたパラメータが例えば固定小数点で表現されるパラメータに量子化されたモデルを示していてもよい。
【0021】
本実施の形態では、パラメータは、モデルにおける量子化の対象レイヤの中間値(ニューロン値)及び当該対象レイヤの重みのうち少なくとも一方である。なお、中間値は、アクティベーションと称される場合がある。また、対象レイヤが畳み込み層であれば中間値は、特徴マップと称することができる。
【0022】
[1-1.ハードウェア構成]
本実施の形態に係る量子化装置10の機能構成を説明する前に、図2を用いて、本実施の形態に係る量子化装置10のハードウェア構成の一例について説明する。
【0023】
図2は、本実施の形態に係る量子化装置10の機能をソフトウェアにより実現するコンピュータ1000のハードウェア構成の一例を示す図である。
【0024】
コンピュータ1000は、図2に示すように、入力装置1001、出力装置1002、CPU1003、内蔵ストレージ1004、RAM1005、読取装置1007、送受信装置1008及びバス1009を備えるコンピュータである。入力装置1001、出力装置1002、CPU1003、内蔵ストレージ1004、RAM1005、読取装置1007及び送受信装置1008は、バス1009により接続される。
【0025】
入力装置1001は入力ボタン、タッチパッド、タッチパネルディスプレイなどといったユーザインタフェースとなる装置であり、ユーザの操作を受け付ける。なお、入力装置1001は、ユーザの接触操作を受け付ける他、音声での操作、リモコン等での遠隔操作を受け付ける構成であってもよい。
【0026】
出力装置1002は、例えば入力装置1001と兼用されており、タッチパッドまたはタッチパネルディスプレイなどによって構成され、ユーザに知らすべき情報を通知する。
【0027】
内蔵ストレージ1004は、フラッシュメモリなどである。また、内蔵ストレージ1004は、量子化装置10の機能を実現するためのプログラム、及び、量子化装置10の機能構成を利用したアプリケーションの少なくとも一方が、予め記憶されていてもよい。また、内蔵ストレージ1004は、入力されたFPモデル、量子化ステップサイズ探索部13で量子化処理されたINTモデル、評価を算出するための評価式及び量子化ステップサイズの初期値、更新値が記憶されるとしてもよい。
【0028】
RAM1005は、ランダムアクセスメモリ(Random Access Memory)であり、プログラムまたはアプリケーションの実行に際してデータ等の記憶に利用される。
【0029】
読取装置1007は、USB(Universal Serial Bus)メモリなどの記録媒体から情報を読み取る。読取装置1007は、上記のようなプログラムやアプリケーションが記録された記録媒体からそのプログラム、アプリケーションを読み取り、内蔵ストレージ1004に記憶させる。
【0030】
送受信装置1008は、無線または有線で通信を行うための通信回路である。送受信装置1008は、例えばネットワークに接続されたサーバ装置と通信を行い、サーバ装置から上記のようなプログラム、アプリケーションをダウンロードして内蔵ストレージ1004に記憶させてもよい。
【0031】
CPU1003は、中央演算処理装置(Central Processing Unit)であり、内蔵ストレージ1004に記憶されたプログラム、アプリケーションをRAM1005にコピーし、そのプログラムやアプリケーションに含まれる命令をRAM1005から順次読み出して実行する。
【0032】
続いて、図1に示される本実施の形態に係る量子化装置10の各機能構成について説明する。
【0033】
図3は、本実施の形態に係る量子化対象のモデルとパラメータの一例を示す図である。以下では、図3に示すように、3ニューロンで構成される入力層と、それぞれ4ニューロンで構成される2つのレイヤからなる中間層と、2ニューロンで構成される出力層とを有する4層からなる学習済のFPモデルを用いて説明する。また、図3では、量子化を行う対象レイヤがレイヤLであるとして示されており、量子化対象のパラメータがレイヤLのXとWとであるとして示されている。なお、Xは、レイヤLのニューロン値(の分布)であり、特徴マップでもよい。また、Wは、レイヤL重み(の分布)であり、フィルタであってもよい。Cは、後述するが、対象レイヤの次のレイヤの推論寄与度を示す。
【0034】
[1-2.分布生成部11]
分布生成部11は、入力されたFPモデルにおける量子化対象の対象レイヤのパラメータの分布を生成する。本実施の形態では、分布生成部11は、対象レイヤの重みの分布すなわち対象レイヤを構成する複数のニューロンに付与された複数の重みの分布を生成する。また、分布生成部11は、対象レイヤの中間値の分布すなわち対象レイヤを構成する複数のニューロンのニューロン値(中間値)の分布を生成する。
【0035】
例えば、対象レイヤの重みの分布は、横軸をニューロインデックス、縦軸を重みの値として、対象レイヤを構成する複数のニューロンに付与された複数の重みの値が釣鐘状に示されたものである。また、分布生成部11は、データセットをFPモデルに入力し、対象レイヤを構成する複数のニューロンのニューロン値(中間値)を算出することで、対象レイヤの中間値の分布を生成する。対象レイヤの中間値の分布も、横軸をニューロインデックス、縦軸を中間値として、中間値が釣鐘状に示されたものである。
【0036】
なお、分布生成部11が用いるデータセットは、学習用データセットでもよいし、学習用データセットの一部を抽出した分布生成用データセットであってもよい。
【0037】
また、分布生成部11は、生成した対象レイヤの中間値と重みとの分布に基づいて、量子化ステップサイズの初期値を算出し、量子化ステップサイズ探索部13に出力する。
【0038】
[1-3.推論寄与度算出部12]
推論寄与度算出部12は、量子化対象レイヤの次のレイヤを構成する複数のニューロンの推論寄与度を算出する。ここで、推論寄与度算出部12は、例えばGrad-CAM(Gradient-weighted Class Activation Mapping)など、推論結果への影響度を定量化及び可視化する方法を用いて、対象レイヤの次のレイヤにおける推論寄与度を定量化して算出する。Grad-CAMは、ニューラルネットワークで構成されるモデルが着目している特徴箇所を特定することができる手法である。なお、推論結果への影響度を定量化及び可視化する方法は、Grad-CAMに限らず、CAM(Class activation map)、Guided Grad-CAM、Guided Backpropagationを用いてもよい。
【0039】
例えば、まず、推論寄与度算出部12は、ニューラルネットワークで構成されるモデルを用いて得た推論結果に対する、当該モデルを構成する複数のレイヤそれぞれにおける複数の第1ニューロンを要素とする複数のレイヤそれぞれの影響度を示す推論寄与度(第1推論寄与度)を算出する。より詳細には、推論寄与度算出部12は、モデルの学習に用いた学習用データセットのうちの少なくとも一部である推論寄与度用データセットを構成するデータのそれぞれを、当該モデルに入力して推論させることで第1ニューロンそれぞれの値である第1ニューロン値を算出する。次いで、推論寄与度算出部12は、推論寄与度用データセットを構成するすべてのデータに対して算出した第1ニューロン値を、第1ニューロンそれぞれについて累積した累積値を算出する。そして、推論寄与度算出部12は、第1ニューロンそれぞれにおける累積値を複数のレイヤそれぞれで正規化した値を、第1推論寄与度として算出する。本実施の形態では、推論寄与度算出部12は、データセットのそれぞれをFPモデルに順に入力し、中間層における各レイヤを構成する複数のニューロンのニューロン値(中間値)を順に算出し、算出したニューロン値を中間層におけるニューロンごとに蓄積する。そして、推論寄与度算出部12は、蓄積したニューロン値を、レイヤごとに正規化し、正規化したFPモデルの中間層を構成する各ニューロンの値を第1推論寄与度とすればよい。なお、推論寄与度算出部12が用いるデータセットは、学習用データセットでもよいし、学習用データセットの一部を抽出した推論寄与度用データセットであってもよい。
【0040】
次に、例えば推論寄与度算出部12は、算出した第1推論寄与度を用いて、対象レイヤの次のレイヤにおける複数の第2ニューロンを要素とする次のレイヤの影響度を示す推論寄与度(第2推論寄与度)を算出する。本実施の形態では、推論寄与度算出部12は、蓄積したニューロン値をレイヤごとに正規化したFPモデルの中間層における各ニューロンの値のうち、対象レイヤの次のレイヤを構成する複数のニューロンのニューロン値を、第2推論寄与度としてもよい。
【0041】
ここで、図4A図4Cを用いて、推論寄与度の算出方法の概念について説明する。
【0042】
図4A図4Cは、本実施の形態に係る推論寄与度の算出方法の一例を説明するための図である。図4Aの(a)及び図4Bの(a)に示されるデータセットは、上述した学習用データセットでもよいし、推論寄与度用データセットであってもよい。また、図4A図4Cでは、対象レイヤがレイヤLであり、対象レイヤの次のレイヤはレイヤL+1であるとして示されている。
【0043】
図4Aに示すように、まず、FPモデルに、図4Aの(a)に示されるデータセットのうちの1つのデータを入力し、図4Aの(c)に示されるように各レイヤごとのニューロン値を算出する。なお、図4Aの(b)に示される例では、1つのデータは、犬を含む画像データである。
【0044】
次に、図4Bに示すように、FPモデルに、図4Bの(a)に示されるデータセットのうちの他の1つのデータを入力し、図4Bの(c)に示されるように各レイヤごとのニューロン値を算出して算出したニューロン値をニューロンごとに蓄積する。図4Bの(c)では、レイヤLの一番上のニューロンには、2.0の値が蓄積されている例が示されている、なお、図4Bに示される例では、他の1つのデータは、猫を含む画像データである。
【0045】
次に、FPモデルに、データセットのうちの残りのデータを順に入力して、データセットに含まれるすべてのデータに対して算出したニューロン値をニューロンごとに累積した累積値を算出して正規化する。図4Cの(a)には、レイヤL及びレイヤL+1におけるニューロンごとの累積値が示されている。図4Cの(b)には、それら累積値を各レイヤすなわちレイヤL及びレイヤL+1ごとに正規化して得たニューロンごとの値が示されている。図4Cの(b)では、例えばレイヤLの累積値の合計である160.4でレイヤLの各ニューロンの累積値を割った値を、レイヤLの累積値を正規化したときに得る値としている。そして、図4Cの(b)に示される値すなわち正規化して得たニューロンごとの値を推論寄与度とすればよい。
【0046】
このようにして、推論寄与度算出部12は、対象レイヤと次のレイヤとにおける複数のニューロンそれぞれの推論寄与度を算出する。
【0047】
なお、図4A図4Cでは、FPモデルの例として全結合型ニューラルネットワークを例に挙げて説明したが、これに限らない。FPモデルは、画像認識に有用な畳み込みニューラルネットワーク(CNN)のモデルであってもよいし、一部に畳み込み層をもつニューラルネットワークのモデルであってもよい。この場合、上述したニューロン値は、特徴マップとして算出される。すなわち、モデルが畳み込みニューラルネットワークである場合、中間値は、対象レイヤの特徴マップである。
【0048】
図5は、本実施の形態に係る推論寄与度の算出方法の別の一例を説明するための図である。図5では、1つの中間層が畳み込み層である場合の例が示されている。畳み込み層は、例えば(28×28×1)次元の入力画像から、(3×3)のN個のフィルタ(重み)を用いて複数の特徴を抽出することで得た特徴マップを出力する。なお、Nはチャネルと称される。図5に示す例では、中間層として得たN個の(26×26)の特徴マップそれぞれにGlobal Max Pooling(GP)を適用した値を上述の中間値(ニューロン値)として算出している。これにより、中間値を、上述同様に、データセットに含まれるすべてのデータに対して算出して累積し、正規化することができるので、特徴マップの推論寄与度を算出することができる。
【0049】
[1-3.量子化ステップサイズ探索部13]
量子化ステップサイズ探索部13は、対象レイヤの次のレイヤにおける推論寄与度(第2推論寄与度)と、対象レイヤの複数のパラメータの量子化前後における量子化誤差とを用いて、複数のパラメータの量子化ステップサイズを探索する。量子化ステップサイズ探索部13は、量子化誤差と第2推論寄与度との積値からなる評価式を用いて、評価式が最小となるような複数のパラメータの量子化ステップサイズを探索する。
【0050】
本実施の形態では、量子化ステップサイズ探索部13は、図1に示すように、量子化処理部131と、評価算出部132と、量子化ステップサイズ更新部133とを備える。
【0051】
<量子化処理部131>
量子化処理部131は、量子化ステップサイズの初期値または更新値を用いて対象レイヤのパラメータを量子化する。なお、対象レイヤは、特定のレイヤである場合に限らず、FPモデルの全レイヤであってもよい。また、量子化処理部131が特徴マップを中間値として量子化する場合、特徴マップ単位で量子化する場合に限らず、計算コストを考慮してチャネル単位(図5におけるN個のチャネルのうちの1つ)で量子化してもよい。
【0052】
図6は、本実施の形態に係る量子化処理を説明するための図である。
【0053】
すなわち、量子化処理部131は、図6の(a)に示されるFPモデルのレイヤLのパラメータX、Wを、量子化ステップサイズの初期値または更新値を用いて、図6の(b)で量子化し、図6の(c)に示されるINTモデルを得る。
【0054】
<評価算出部132>
評価算出部132は、推論寄与度算出部12より、対象レイヤの次のレイヤにおける推論寄与度を予め取得している。評価算出部132は、学習用データセットのうちの少なくとも一部である評価算出用データセットを構成するデータのそれぞれを順に、FPモデルとINTモデルとに入力して得た量子化前後のパラメータに関する値を算出する。評価算出部132は、算出した量子化前後のパラメータに関する値と取得した推論寄与度と量子化ステップサイズの評価式とを用いて、評価結果を算出する。
【0055】
図7図8Bは、本実施の形態に係る量子化ステップサイズの評価の算出方法を説明するための図である。図7には、本実施の形態に係る評価算出部132が取得する推論寄与度の一例が示されている。図8Aには、本実施の形態に係る評価算出部132が算出する量子化前のパラメータに関する値が示されている。図8Bには、本実施の形態に係る評価算出部132が算出する量子化後のパラメータに関する値が示されている。図8A及び図8Bに示すデータセットは、上述した評価算出用データセットであってもよい。
【0056】
図7の(c)に示すCL+1は、推論寄与度算出部12が、図7の(a)に示されるデータセットを用いて算出した、図7の(b)のFPモデルのレイヤL+1の推論寄与度である。つまり、評価算出部132は、図7の(c)に示す推論寄与度CL+1を予め取得する。
【0057】
また、評価算出部132は、図8Aの(a)に示されるデータセットを用いて、図8Aの(b)のFPモデルに入力して、図8Aの(c)に示すレイヤLの重みとニューロン値との行列積値Wを、量子化前のパラメータに関する値として算出する。
【0058】
同様に、評価算出部132は、図8Bの(a)に示されるデータセットを用いて、図8Bの(b)のINTモデルに入力して、図8Bの(c)に示すレイヤLの重みとニューロン値との行列積値
【数1】
を、量子化後のパラメータに関する値として算出する。ここで、Δは量子化ステップサイズを示し、Q(・)は量子化関数を示す。
【0059】
そして、評価算出部132は、下記の(式1)で示される評価式に、算出した量子化前後のパラメータに関する値と取得した推論寄与度とを代入して評価結果を算出する。そして、評価算出部132は、算出して得た評価結果が最小であれば、その時の量子化ステップサイズを保存する。なお、(式1)においてCは、レイヤL+1の推論寄与度CL+1を示す。また、(式1)においてX、Wは、レイヤLの重みとニューロン値(中間値)である。また、評価結果は、データセットに含まれるデータの数だけ算出された評価を蓄積した結果である。このため、評価結果の平均が最小であれば、その時の量子化ステップサイズを保存するとしてもよい。
【0060】
【数2】
【0061】
<量子化ステップサイズ更新部133>
量子化ステップサイズ更新部133は、評価算出部132が評価結果を算出したとき用いた量子化ステップサイズの全パターンが網羅していない場合、量子化ステップサイズの値を更新する。つまり、量子化ステップサイズ更新部133は、量子化ステップサイズの更新を全パターンを網羅するまで繰り返し実行する。量子化ステップサイズ更新部133は、更新した量子化ステップサイズの値すなわち量子化ステップの更新値を、量子化処理部131に出力する。
【0062】
以上のように、量子化ステップサイズ探索部13は、推論寄与度と量子化誤差とを考慮して、量子化ステップサイズを決定する。
【0063】
図9は、本実施の形態に係る最適な量子化ステップサイズの決定方法を説明するための図である。図9の(a)には、量子化誤差が大きいパラメータのニューロンがハッチングで示されている。図9の(b)には、推論寄与度が大きいニューロンがハッチングで示されている。図9の(c)には、量子化誤差が大きいパラメータのニューロンかつ推論寄与度が大きいニューロンが点線枠に囲まれている。
【0064】
つまり、本実施の形態では、量子化ステップサイズ探索部13は、量子化誤差が大きいパラメータ、かつ、推論寄与度が大きい、図9の(c)の点線枠に囲まれたニューロンのパラメータの量子化誤差を最小化するようにパラメータの量子化ステップサイズを決定する。これにより、ニューラルネットワークで構成されるモデルの量子化を行っても推論精度の劣化を抑制できる。
【0065】
[1-4.量子化部14]
量子化部14は、量子化ステップサイズ探索部13において探索により得られた量子化ステップサイズを用いて、複数のパラメータを量子化する。換言すると、量子化部14は、量子化ステップサイズ探索部13において探索の結果、決定された量子化ステップサイズを用いて、FPモデルの複数のパラメータを量子化してINTモデルを得る。
【0066】
[2.量子化装置10の動作]
以上のように構成された量子化装置10の動作の一例について以下説明する。
【0067】
図10は、本実施の形態における量子化装置10の動作概要を示すフローチャートである。
【0068】
まず、量子化装置10は、推論寄与度と量子化誤差とを考慮して、量子化ステップサイズを探索して決定する(S1)。より具体的には、量子化装置10は、対象レイヤの次のレイヤにおける複数のニューロンを要素とする次のレイヤの影響度を示す推論寄与度を予め算出する。量子化装置10は、予め算出した推論寄与度と、対象レイヤの複数のパラメータの量子化前後における量子化誤差とを用いて、複数のパラメータの量子化ステップサイズを探索する。本実施の形態では、量子化装置10は、量子化誤差と第2推論寄与度との積値からなる評価式を用いて、評価式が最小となるような複数のパラメータの量子化ステップサイズを探索する。これにより、量子化装置10は、モデルの対象レイヤのパラメータについて最適な量子化ステップサイズを決定することができる。
【0069】
次に、量子化装置10は、ステップ1で決定した量子化ステップサイズを用いて、パラメータを量子化する(S2)。
【0070】
図11は、本実施の形態における量子化装置10の動作詳細の一例を示すフローチャートである。以下、量子化対象のFPモデルの対象レイヤをレイヤLとし、対象レイヤの重みをW、中間値をX、対象レイヤの重み及び中間値の量子化ステップサイズをΔW及びΔXと表現して説明する。
【0071】
図11に示すように、まず、量子化装置10は、量子化対象のFPモデルの対象レイヤの重み(W)の分布を生成する(S10)。
【0072】
次に、量子化装置10は、対象レイヤの中間値(X)の分布を生成する(S11)。ここで、ステップS11の具体的な動作を図12を用いて説明する。
【0073】
図12は、図11のステップS11の具体的な動作の一例を示すフローチャートである。
【0074】
図12に示すように、まず、量子化装置10または量子化装置10の使用者は、分布生成用データセットを準備する(S111)。次いで、量子化装置10は、分布生成用データセットに含まれる1つのデータをFPモデルに入力し、対象レイヤの中間値(X)を算出し(S112)、中間値(X)の分布を更新する(S113)。なお、量子化装置10は、対象レイヤの中間値(X)を初めて生成した場合、生成した中間値(X)を保存すればよい。次いで、量子化装置10は、データセットを網羅したか、すなわち分布生成用に含まれるデータをすべてについて対象レイヤの中間値(X)を算出して更新したかを確認する(S114)。ステップS114において、データセットを網羅していない場合(S114でN)、量子化装置10は、ステップS112に戻り処理を繰り返す。一方、ステップS114において、データセットを網羅した場合(S114でY)、量子化装置10は、ここでの処理すなわちステップS11を終了する。なお、量子化装置10は、対象レイヤの中間値の分布を生成する場合に限らず、上述したように、対象レイヤの特徴マップの分布を生成してもよい。
【0075】
次に、量子化装置10は、内蔵ストレージ1004などに記憶している量子化ステップサイズ(ΔW、ΔX)を初期化する(S12)。
【0076】
次に、量子化装置10は、対象レイヤの次のレイヤの中間値の推論寄与度(CL+1)を算出する(S13)。ここで、ステップS13の具体的な動作を図13を用いて説明する。
【0077】
図13は、図11のステップS13の具体的な動作の一例を示すフローチャートである。
【0078】
図13に示すように、まず、量子化装置10または量子化装置10の使用者は、推論寄与度用データセットを準備する(S131)。なお、推論寄与度用データセットは、上述した分布生成用データセットと同じでもよい。次いで、量子化装置10は、推論寄与度用データセットに含まれる1つのデータをFPモデルに入力し、対象レイヤの次のレイヤの中間値(XL+1)を算出し(S132)、中間値(XL+1)を当該次のレイヤのニューロンごとに蓄積する(S133)。次いで、量子化装置10は、データセットを網羅したか、すなわち推論寄与度用に含まれるデータをすべてについて対象レイヤの次のレイヤの中間値(XL+1)を算出して蓄積したかを確認する(S134)。ステップS134において、データセットを網羅していない場合(S134でN)、量子化装置10は、ステップS132に戻り処理を繰り返す。一方、ステップS134において、データセットを網羅した場合(S134でY)、量子化装置10は、ステップS113で蓄積した中間値(XL+1)の値を正規化し、推論寄与度(CL+1)を算出する(S135)。なお、量子化装置10は、対象レイヤの次のレイヤの中間値を算出して蓄積する場合に限らず、上述したように、対象レイヤの次のレイヤの特徴マップを算出して蓄積してもよい。以下、図11に戻って説明を続ける。
【0079】
次に、量子化装置10は、最適な量子化ステップサイズを探索する(S14)。ここで、ステップS14の具体的な動作を図14を用いて説明する。
【0080】
図14は、図11のステップS14の具体的な動作の一例を示すフローチャートである。
【0081】
図14に示すように、まず、量子化装置10は、量子化ステップサイズの値を示すΔW、ΔXに初期値を設定する(S141)。量子化装置10または量子化装置10の使用者は、評価算出用データセットを準備する(S142)。なお、評価算出用データセットは、上述した推論寄与度用データセットまたは分布生成用データセットと同じでもよい。次いで、量子化装置10は、評価算出用データセットに含まれる1つのデータをFPモデル及びINTモデルに入力し、上述した(式1)に示される評価式を用いて算出した評価結果を蓄積する(S143)。次いで、量子化装置10は、データセットを網羅したか、すなわち評価算出用に含まれるデータをすべてについて(式1)に示される評価式を用いて算出した評価結果を蓄積したかを確認する(S144)。
【0082】
ステップS144において、データセットを網羅していない場合(S144でN)、量子化装置10は、ステップS143に戻り処理を繰り返す。一方、ステップS144において、データセットを網羅した場合(S144でY)、量子化装置10は、ステップS143で蓄積した評価結果の平均を算出する(S145)。次いで、量子化装置10は、ステップS145で算出した平均が最小値であれば、そのときの量子化ステップサイズの値を示すΔW、ΔXの組み合わせを保持する(S146)。なお、ステップS145で平均を算出することは必須ではない。この場合、ステップS146では評価結果が最小のときの組み合わせを保持すればよい。次いで、量子化装置10は、ΔXの全パターンを網羅したかを確認する(S147)。
【0083】
ステップS147において、全パターンを網羅していない場合(S147でN)、量子化装置10は、重みの量子化ステップサイズ(ΔX)を更新して(S148)、ステップS143に戻り処理を繰り返す。一方、ステップS147において、全パターンを網羅した場合(S147でY)、量子化装置10は、ΔWの全パターンを網羅したかを確認する(S149)。
【0084】
ステップS149において、全パターンを網羅していない場合(S149でN)、量子化装置10は、中間値の量子化ステップサイズ(ΔW)を更新して(S150)、ステップS143に戻り処理を繰り返す。一方、ステップS149において、全パターンを網羅した場合(S149でY)、量子化装置10は、ここでの処理すなわちステップS14を終了する。
【0085】
次に、量子化装置10は、ステップS14の探索により得られた(決定された)量子化ステップサイズで、重み(W)及び中間値(X)を量子化する(S2)。
【0086】
このようにして、量子化装置10は、推論寄与度と量子化誤差とを考慮して、モデルのパラメータに対する量子化ステップサイズを決定して、モデルのパラメータを量子化する。
【0087】
[3.効果等]
ここで、図を用いて、本実施の形態に係る効果について説明する。
【0088】
図15は、量子化対象のモデルの一例を示す図である。ここでは、図15に示すように、3ニューロンで構成される入力層と、4ニューロンで構成される中間層と、2ニューロンで構成される出力層とを有する3層からなる学習済のFPモデルを用いて説明する。
【0089】
図16A図16Dは、比較例に係る量子化方法について説明するための図である。なお、図16Dに示される2つのグラフの縦軸はデータ頻度を示し、横軸は数値を示す。
【0090】
図16Aには、FPモデルに入力画像を入力したことで得たニューロン値を、ニューロインデックスで並べた第1グラフが示されている。また、図16Aには、当該FPモデルを量子化したINTモデルに、入力画像を入力したことで得たニューロン値をニューロインデックスで並べた第2グラフが示されている。なお、図16Aに示すINTモデルは、図16Dの(a)に示すような等間隔の量子化ステップサイズでFPモデルが量子化された場合に該当する。図16Bには、図16Aの第1グラフと第2グラフとの差分値を量子化誤差として、ニューロインデックスで並べた第3グラフが示されている。
【0091】
図16Cに示されるモデルでは、図16Bに示される第3グラフにおいて、量子化誤差が大きい(閾値以上の大きさの)ニューロインデックスに対応するニューロンがハッチングで示されている。すなわち、図16Cに示されるFPモデルにおいてハッチングで示されるニューロンでは、量子化によって生じる誤差(量子化誤差)が大きいことが示されている。
【0092】
比較例では、モデルのニューロンのうち、量子化によって生じる量子化誤差に対して、図16Dの(a)に示すような等間隔(等分割)の量子化ステップサイズではなく、図16Dの(b)に示すような量子化誤差を最小にするように個々の量子化ステップサイズを決定する。
【0093】
しかしながら、量子化誤差が大きいニューロンのパラメータを特定し、その量子化誤差を最小にするように個々の量子化ステップサイズを決定したとしても、必ずしも推論精度の劣化を抑制できるとは限らない。
【0094】
図17は、本実施の形態に係る量子化方法を概念的に説明するための図である。
【0095】
一方、本実施の形態では、推論寄与度と量子化誤差とを考慮して、FPモデルのパラメータに対する量子化ステップサイズを決定して、FPモデルのパラメータを量子化する。
【0096】
より具体的には、FPモデルの対象レイヤに含まれるニューロンに対して、量子化によって生じる量子化誤差だけでなく、推論結果の寄与度(すなわち推論寄与度)も算出する。そして、量子化誤差と推論寄与度の双方を考慮した量子化方法によって最適な量子化ステップサイズを決定する。すなわち、本実施の形態に係る量子化方法では、図17の(a)に示すように量子化誤差の大きいハッチングされたニューロンと図17の(b)に示すように推論寄与度の大きいハッチングされたニューロンとを導出する。そして、図17の(c)に示すように、量子化誤差が大きく推論寄与度も大きい点線四角内のニューロンの量子化誤差を最小化するように、当該ニューロンのパラメータを決定する。
【0097】
これにより、推論寄与度の大きいニューロンの量子化誤差を最小にするようにステップサイズを決定することができるので、ニューラルネットワークで構成されるモデルの量子化を行っても推論精度の劣化を抑制できる。
【0098】
よって、組込みシステムなどの限られた計算リソースを活用して推論を行う場合でも、推論精度と演算量(処理速度)とを両立した深層学習の推論処理を実現できる。
【0099】
なお、推論精度は、量子化後のモデルの出力値が、正解を推論したか否かを示す場合の適合率及び再現率に限らず、適合率、再現率、適合率及び再現率の調和平均により算出されるF値、並びに、正解率のうちの少なくとも一の組み合わせであればよい。
【0100】
また、本開示では、限られた計算リソースを活用して推論を行う場合の例として、組込みシステムを挙げたがこれに限らない。車載システムなど車両に搭載されるシステムで推論を行う場合にも、利用できるだけでなく、ドローンに搭載されるシステムで推論を行う場合にも、利用できる。また、本開示に係るモデルは、画像を用いた識別向け、検知向け、セグメンテーション向けに限らず、音を用いた音、話者識別、検知向けであっもよい。
【0101】
(その他の実施の形態)
以上、本開示に係る量子化方法などについて、各実施の形態に基づいて説明したが、本開示は、これらの実施の形態に限定されるものではない。本開示の主旨を逸脱しない限り、当業者が思いつく各種変形を各実施の形態に施したものや、各実施の形態における一部の構成要素を組み合わせて構築される別の形態も、本開示の範囲内に含まれる。
【0102】
また、以下に示す形態も、本開示の一つまたは複数の態様の範囲内に含まれてもよい。
【0103】
(1)上記の量子化装置を構成する構成要素の一部は、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムであってもよい。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0104】
(2)上記の量子化装置を構成する構成要素の一部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
【0105】
(3)上記の量子化装置を構成する構成要素の一部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【0106】
(4)また、上記の量子化装置を構成する構成要素の一部は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【0107】
また、上記の量子化装置を構成する構成要素の一部は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【0108】
(5)本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【0109】
(6)また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【0110】
(7)また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【0111】
(8)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【0112】
本開示は、組込みシステムなど、限られた計算リソースを活用して推論するために用いられるニューラルネットワークで構成されるモデルの量子化方法、量子化装置、及び、プログラムなどに利用できる。
【符号の説明】
【0113】
10 量子化装置
11 分布生成部
12 推論寄与度算出部
13 量子化ステップサイズ探索部
14 量子化部
131 量子化処理部
132 評価算出部
133 量子化ステップサイズ更新部
1000 コンピュータ
1001 入力装置
1002 出力装置
1003 CPU
1004 内蔵ストレージ
1005 RAM
1007 読取装置
1008 送受信装置
1009 バス
図1
図2
図3
図4A
図4B
図4C
図5
図6
図7
図8A
図8B
図9
図10
図11
図12
図13
図14
図15
図16A
図16B
図16C
図16D
図17