(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022049997
(43)【公開日】2022-03-30
(54)【発明の名称】情報処理装置、情報処理方法
(51)【国際特許分類】
G06N 3/08 20060101AFI20220323BHJP
【FI】
G06N3/08
【審査請求】未請求
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2020156336
(22)【出願日】2020-09-17
(71)【出願人】
【識別番号】000002185
【氏名又は名称】ソニーグループ株式会社
(74)【代理人】
【識別番号】100116942
【弁理士】
【氏名又は名称】岩田 雅信
(74)【代理人】
【識別番号】100167704
【弁理士】
【氏名又は名称】中川 裕人
(72)【発明者】
【氏名】西川 潤
(57)【要約】
【課題】学習モデルの構築に過度な時間を要せずに推論処理についての演算量を削減する。
【解決手段】情報処理装置は、Depthwise畳み込みレイヤとPointwise畳み込みレイヤとBatch正規化レイヤを有するニューラルネットワークにおいて分散が閾値よりも小さいフィルタの削除を行うフィルタ削除処理部と、前記ニューラルネットワークの量子化を行う量子化処理部と、を備えるものとした。
【選択図】
図5
【特許請求の範囲】
【請求項1】
Depthwise畳み込みレイヤとPointwise畳み込みレイヤとBatch正規化レイヤを有するニューラルネットワークにおいて分散が閾値よりも小さいフィルタの削除を行うフィルタ削除処理部と、
前記ニューラルネットワークの量子化を行う量子化処理部と、を備えた
情報処理装置。
【請求項2】
前記フィルタ削除処理部は、前記Depthwise畳み込みレイヤの後段の前記Batch正規化レイヤにおけるフィルタを前記削除の対象のフィルタとする
請求項1に記載の情報処理装置。
【請求項3】
前記フィルタ削除処理部は、前記フィルタの削除において前記Batch正規化レイヤの出力値を近似式で置き換える処理を行う
請求項2に記載の情報処理装置。
【請求項4】
前記フィルタが削除された前記Batch正規化レイヤの後段に設けられた畳み込みレイヤにおけるパラメータを調整する調整処理部を備えた
請求項2に記載の情報処理装置。
【請求項5】
前記調整処理部は、前記Batch正規化レイヤの後段に設けられた前記畳み込みレイヤのバイアスパラメータを調整する
請求項4に記載の情報処理装置。
【請求項6】
前記Batch正規化レイヤにおけるパラメータを他の畳み込みレイヤに折り込む折り込み処理部を備えた
請求項1に記載の情報処理装置。
【請求項7】
前記折り込み処理部は、前記Batch正規化レイヤにおけるパラメータを前段のDepthwise畳み込みレイヤに折り込む
請求項6に記載の情報処理装置。
【請求項8】
前記Batch正規化レイヤにおいてゼロ除算を回避するために分母に加算される変数を前記閾値として利用する
請求項1に記載の情報処理装置。
【請求項9】
Depthwise畳み込みレイヤとPointwise畳み込みレイヤとBatch正規化レイヤを有するニューラルネットワークにおいて分散が閾値よりも小さいフィルタの削除処理と、
前記ニューラルネットワークの量子化処理と、をコンピュータ装置が実行する
情報処理方法。
【請求項10】
ニューラルネットワークの量子化を行う量子化処理部を備え、
前記量子化処理部は、
前記ニューラルネットワークにおけるアクティベーションデータの量子化と、前記ニューラルネットワークにおけるウェイトデータの量子化と、を個別に行う
情報処理装置。
【請求項11】
前記アクティベーションデータの量子化後と前記ウェイトデータの量子化後のそれぞれにおいて再学習処理を行う学習モデル生成部を備えた
請求項10に記載の情報処理装置。
【請求項12】
前記ニューラルネットワークは、Depthwise畳み込みレイヤとPointwise畳み込みレイヤとBatch正規化レイヤを有し、
前記ニューラルネットワークにおいて分散が閾値よりも小さいフィルタの削除を行うフィルタ削除処理部と、を備えた
請求項10に記載の情報処理装置。
【請求項13】
前記量子化処理部は、前記フィルタ削除処理部によるフィルタの削除が実行された後に前記アクティベーションデータの量子化と前記ウェイトデータの量子化を行う
請求項12に記載の情報処理装置。
【請求項14】
前記フィルタ削除処理部は、前記アクティベーションデータの量子化の前後それぞれにおいて前記フィルタの削除を行う
請求項13に記載の情報処理装置。
【請求項15】
前記フィルタ削除処理部は、前記フィルタの削除を一度だけ行い、
前記量子化処理部は、前記一度のフィルタの削除の後に前記アクティベーションデータの量子化と前記ウェイトデータの量子化を行う
請求項13に記載の情報処理装置。
【請求項16】
ニューラルネットワークにおけるアクティベーションデータの量子化と、前記ニューラルネットワークにおけるウェイトデータの量子化と、が個別に行われるようにコンピュータ装置が実行する
情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、ニューラルネットワークの量子化のための情報処理装置及び情報処理方法に関する。
【背景技術】
【0002】
種々の情報処理装置においてニューラルネットワークが活用されてきている。ニューラルネットワークによる学習処理や分析処理(推論処理)に要する演算量は肥大化してきており、効率的な処理を行う技術が求められている。
このような問題に鑑みて、ニューラルネットワークの量子化技術が提案されている。ニューラルネットワークの量子化を行うことにより各パラメータのビット数が削減され演算コストを大幅に低減させることができる。
ところが、ニューラルネットワークの量子化においては、パラメータのダイナミックレンジが広がってしまい適切な量子化が難しい場合がある。
下記の非特許文献1においては、この問題の原因がDepthwise Convolution(以下、「DC」と記載)とBatch Normalization(以下、「BN」と記載)の組み合わせで使用されるBNにあることを主張し、この問題への対処としてDC後にBNを用いないアーキテクチャを提案している。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Tao Sheng, Chen Feng, Shaojie Zhuo, Xiaopeng Zhang, Liang Shen, Mickey Aleksic, "A Quantization-Friendly Separable Convolution for MobileNets", 2018 1st Workshop on Energy Efficient Machine Learning and Cognitive Computing for Embedded Applications, doi:10.1109/EMC2.2018.00011
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、ニューラルネットワークで用いる各パラメータを多くのbit数(例えば32bit)で表現した状態で生成された学習モデルを処理能力の低いコンピュータ装置で利用しようとした場合には、ニューラルネットワークの量子化を行うことにより、各パラメータを少ないbit数(例えば8bit)で表現することで推論処理に係る演算量を削減した上で、コンピュータ装置に移植することが考えられる。
【0005】
ところが、従来のネットワーク構造を持つ学習モデルを量子化する際に、非特許文献1に記載されたような効果を得るためには、従来のネットワーク構造を持つ学習モデルから非特許文献1に記載されたネットワーク構造(DC後にBNを配置しない構造)を持つ学習モデルへと構築し直し、その後に量子化を行う必要が生じてしまう。
これによって、量子化前に行う学習モデルの再構築に係る処理の処理負担が大きくなってしまうと共に、量子化を終えるまでに多大な時間を要してしまうという問題がある。
【0006】
本技術は上記事情に鑑み為されたものであり、学習モデルの構築に係るコストの削減を図りつつ推論処理についての演算量を削減することを目的とする。
【課題を解決するための手段】
【0007】
本技術に係る情報処理装置は、Depthwise畳み込みレイヤとPointwise畳み込みレイヤとBatch正規化レイヤを有するニューラルネットワークにおいて分散が閾値よりも小さいフィルタの削除を行うフィルタ削除処理部と、前記ニューラルネットワークの量子化を行う量子化処理部と、を備えている。
分散が小さいフィルタを削除することで、各パラメータの大小関係や差分が可能な限り保持されたままニューラルネットワークの量子化を行うことができる。
【0008】
上記した情報処理装置における前記フィルタ削除処理部は、前記Depthwise畳み込みレイヤの後段の前記Batch正規化レイヤにおけるフィルタを前記削除の対象のフィルタとしてもよい。
Depthwise畳み込みレイヤの後段、特に直後のBatch正規化レイヤにおいては、分散の小さなフィルタが存在する。
【0009】
上記した情報処理装置における前記フィルタ削除処理部は、前記フィルタ削除処理部は、前記フィルタの削除において前記Batch正規化レイヤの出力値を近似式で置き換える処理を行ってもよい。
これにより、量子化誤差を小さくすることができる。
【0010】
上記した情報処理装置においては、前記フィルタが削除された前記Batch正規化レイヤの後段に設けられた畳み込みレイヤにおけるパラメータを調整する調整処理部を備えていてもよい。
例えば、フィルタを削除したことによる推論性能への影響が少なくなるようにパラメータの調整処理を行う。
【0011】
上記した情報処理装置における前記調整処理部は、前記Batch正規化レイヤの後段に設けられた前記畳み込みレイヤのバイアスパラメータを調整してもよい。
これにより、フィルタ削除が推論結果に与える影響を小さくすることができる。
【0012】
上記した情報処理装置においては、前記Batch正規化レイヤにおけるパラメータを他の畳み込みレイヤに折り込む折り込み処理部を備えていてもよい。
これにより、例えば、フィルタ削除されたレイヤを削除することができる。
【0013】
上記した情報処理装置における前記折り込み処理部は、前記Batch正規化レイヤにおけるパラメータを前段のDepthwise畳み込みレイヤに折り込む処理を実行してもよい。
これにより、学習結果としてBatch正規化レイヤが獲得した機能がDepthwise畳み込みレイヤに集約される。
【0014】
上記した情報処理装置においては、前記Batch正規化レイヤにおいてゼロ除算を回避するために分母に加算される変数を前記閾値として利用してもよい。
これにより、閾値をユーザが入力しなくても済む。
【0015】
本技術に係るコンピュータ装置が実行する情報処理方法は、Depthwise畳み込みレイヤとPointwise畳み込みレイヤとBatch正規化レイヤを有するニューラルネットワークにおいて分散が閾値よりも小さいフィルタの削除処理と、前記ニューラルネットワークの量子化処理と、を行うものである。
このような情報処理方法によっても、上記した本技術に係る情報処理装置と同様の作用を得ることができる。
【0016】
本技術に係る情報処理装置は、ニューラルネットワークの量子化を行う量子化処理部を備え、前記量子化処理部は、前記ニューラルネットワークにおけるアクティベーションデータの量子化と、前記ニューラルネットワークにおけるウェイトデータの量子化と、を個別に行うものである。
これにより、アクティベーションデータの量子化による推論結果の変化やウェイトデータの量子化による推論結果の変化は、双方を一度に量子化した場合と比較して小さくされる。
【0017】
上記した情報処理装置においては、前記アクティベーションデータの量子化後と前記ウェイトデータの量子化後のそれぞれにおいて再学習処理を行う学習モデル生成部を備えていてもよい。
再学習を行うことで、量子化により変化した最適な学習モデルに追随させることができる。
【0018】
上記した情報処理装置において、前記ニューラルネットワークは、Depthwise畳み込みレイヤとPointwise畳み込みレイヤとBatch正規化レイヤを有し、前記ニューラルネットワークにおいて分散が閾値よりも小さいフィルタの削除を行うフィルタ削除処理部と、を備えていてもよい。
分散が小さいフィルタを削除することで、各パラメータの大小関係や差分が可能な限り保持されたままニューラルネットワークの量子化を行うことができる。
【0019】
上記した情報処理装置における前記量子化処理部は、前記フィルタ削除処理部によるフィルタの削除が実行された後に前記アクティベーションデータの量子化と前記ウェイトデータの量子化を行ってもよい。
これにより、パラメータのダイナミックレンジが狭められた状態で量子化及び再学習が行われる。
【0020】
上記した情報処理装置における前記フィルタ削除処理部は、前記アクティベーションデータの量子化の前後それぞれにおいて前記フィルタの削除を行ってもよい。
これにより、アクティベーションデータの量子化後にダイナミックレンジを広げてしまうような問題のあるフィルタが発生した場合でも当該フィルタが削除される。
【0021】
上記した情報処理装置における前記フィルタ削除処理部は、前記フィルタの削除を一度だけ行い、前記量子化処理部は、前記一度のフィルタの削除の後に前記アクティベーションデータの量子化と前記ウェイトデータの量子化を行ってもよい。
これにより、フィルタ削除処理に要する時間を短くすることができる。
【0022】
本技術に係るコンピュータ装置が実行する情報処理方法は、ニューラルネットワークにおけるアクティベーションデータの量子化と、前記ニューラルネットワークにおけるウェイトデータの量子化と、が個別に行われるようにされたものである。
このような情報処理方法によっても、上記した本技術に係る情報処理装置と同様の作用を得ることができる。
【図面の簡単な説明】
【0023】
【
図2】本技術に係る情報処理装置が実行するニューラルネットワークのレイヤ構成の例を示す図である。
【
図4】情報処理装置の機能ブロック図を示す図である。
【
図5】ニューラルネットワークの量子化についての処理フローの一例を示すフローチャートである。
【
図6】フィルタ削除処理の一例を示すフローチャートである。
【
図7】ニューラルネットワークの量子化についての処理フローの別の例を示すフローチャートである。
【発明を実施するための形態】
【0024】
以下、添付図面を参照し、本技術に係る実施の形態を次の順序で説明する。
<1.DNNの量子化の弊害>
<2.一般的なDNNのレイヤ構成>
<3.情報処理装置の構成>
<4.量子化フロー>
<5.変形例>
<6.まとめ>
<7.本技術>
<1.DNNの量子化の弊害>
本技術の情報処理装置1は、ニューラルネットワークの一種であるDNN(Deep Neural Network)による画像認識処理についての各種演算を実行可能とされている。
例えば、情報処理装置1は、DNNを用いた学習を行うことにより学習モデルを構築する。情報処理装置1の処理によって構築された学習モデルは、情報処理装置1やその他のコンピュータ装置において推論処理に用いられる。具体的には、構築された学習モデルに任意の画像データを入力することにより画像内の被写体を推論する処理が行われる。これにより、被写体の分類などが可能となる。
【0025】
情報処理装置1は、高性能なPC(Personal Computer)やコンピュータ装置だけでなく、スマートフォンや小型のコンピュータ装置などにも適用可能である。
DNNを用いて学習モデルを構築する処理や、入力された画像データの解析処理は、演算コストが高いため、演算処理能力の高くないスマートフォンや小型のコンピュータ装置においては適切なパフォーマンスを発揮できない虞がある。
【0026】
そこで、DNNの量子化を行うことが好適である。
【0027】
例えば、DNNで用いられるパラメータとしては、各層の入力データであるアクティベーションデータや、演算に用いられる係数であるウェイト(重み)データなどが存在する。これらの各パラメータを32bitで表現することで得られた学習モデルを用いることにより、適切な推論結果を得ることが可能である。
【0028】
しかし、32bitなどのように各パラメータのビット数を多くしてしまうと、高性能な学習モデルを得られる反面、演算コストが増大してしまう。ここでいう演算コストとは、演算に要する時間コストだけでなく、ハードウェアコストも含まれている。
【0029】
DNNの量子化では、DNNに用いられる各パラメータのビット数を減らすことで演算コストの削減を図るものである。即ち、32bitで表現していた各パラメータを例えば8bitや4bitなどの少ないビット数で表現することを指す。
【0030】
但し、DNNの量子化には、演算量を大幅に削減して軽量化することができるという利点だけでなく、推論結果の正しさが劣化してしまう(即ち性能が落ちる)という欠点がある。
DNNの量子化においては、この欠点を可能な限り小さくすることが好ましい。
【0031】
DNNの量子化を行ったことによる推論性能の劣化としては、量子化誤差による劣化や量子化後の学習モデルの再構築時の劣化が考えられる。
【0032】
ここで、量子化誤差による性能劣化について
図1を参照して説明する。
例えば、4bitで表現されたパラメータを2bitで表現するように量子化を行った場合について考える。
【0033】
4bitで表現されるパラメータは、例えば、0~15の範囲の値を取り得る。また、2bitで表現されるパラメータは、例えば、0~3の範囲の値を取り得る。
【0034】
[4,3,0,1,5,15]の値を取る4bitのパラメータを2bitのパラメータで表現すると、[1,0,0,0,1,3]となる。即ち、4bitにおける0~3の値は2bitにおける「0」へと変換され、4bitにおける4~7の値は2bitにおける「1」へと変換され、4bitにおける8~11の値は2bitにおける「2」へと変換され、4bitにおける12~15の値は2bitにおける「3」へと変換される。
これは、[4,3,0,1,5,15]とされたパラメータが[4,0,0,0,4,12]に変換されたことと同義であり、例えば、二つ目のパラメータである「3」と三つ目のパラメータである「0」が本来有する差分が量子化によって失われてしまうことを意味する。また、一つ目のパラメータである「4」と二つ目のパラメータである「3」の差分は量子化によってより大きく表現されてしまうことを意味する(
図1参照)。
【0035】
このようにして、4bitで表現されたパラメータを用いて最適化されたはずの学習モデルが、量子化を行うことにより最適な学習モデルではなくなってしまい、推論性能が劣化する。
【0036】
ところで、[4,3,0,1,5,15]の値を取る4bitのパラメータは、「15」の値さえなければ、値の取り得る範囲を大きく狭めること(0~5の範囲に狭めること)ができる。即ち、[4,3,0,1,5,15]で表されるパラメータは、値「15」さえ無ければ量子化時の刻み幅を小さくすることができ、ダイナミックレンジに関する問題点が解消されるため、量子化誤差を小さくすることが可能となる。
【0037】
なお、[4,3,0,1,5,15]の値を取る4bitのパラメータは、0~15の範囲において偏らずに分布されたパラメータ(例えば、[4,2,9,14,7,11]のような値を取るパラメータ)と比較して、分散σが小さくされている。
【0038】
従って、分散σが小さくなるようなパラメータを生成してしまうフィルタを削除することで、ダイナミックレンジが改善され、量子化誤差を小さくすることができる。
【0039】
但し、フィルタを削除するだけでは推論結果に影響を及ぼしてしまう可能性が高く、推論結果に影響を与えないようにパラメータ調整処理を合わせて行うことが望ましい。
【0040】
<2.一般的なDNNのレイヤ構成>
DNNにおける学習モデルの構築処理や推論処理に係る演算量の削減を実現するための一般的なDNNのレイヤ構成として、DC(Depthwise Convolution)レイヤとPC(Pointwise Convolution)レイヤを備えた構成が知られている。
【0041】
例えば、
図2に示すように、DCレイヤ(畳み込みレイヤ)L1、BN(Batch Normalization)レイヤL2、ReLU(Rectified Linear Unit)/ReLU6レイヤL3、PCレイヤ(畳み込みレイヤ)L4、BNレイヤL5、ReLU/ReLU6レイヤL6を順に備えた構成などである。
【0042】
このようなレイヤ構成において、上述したようにパラメータの分散が小さくなるのは、DCレイヤL1の直後にBNレイヤL2が配置されていることに起因する。
【0043】
<3.情報処理装置の構成>
DNNの量子化を行う情報処理装置1の構成例について、
図3及び
図4を参照して説明する。
情報処理装置1としてのコンピュータ装置のブロック図を
図3に示す。
【0044】
コンピュータ装置のCPU11は、ROM12や例えばEEP-ROM(Electrically Erasable Programmable Read-Only Memory)などの不揮発性メモリ部14に記憶されているプログラム、または記憶部19からRAM13にロードされたプログラムに従って各種の処理を実行する。RAM13にはまた、CPU11が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU11、ROM12、RAM13、不揮発性メモリ部14は、バス23を介して相互に接続されている。このバス23にはまた、入出力インタフェース(I/F)15も接続されている。
【0045】
入出力インタフェース15には、操作子や操作デバイスよりなる入力部16が接続される。
例えば入力部16としては、キーボード、マウス、キー、ダイヤル、タッチパネル、タッチパッド、リモートコントローラ等の各種の操作子や操作デバイスが想定される。
入力部16によりユーザの操作が検知され、入力された操作に応じた信号はCPU11によって解釈される。
【0046】
また入出力インタフェース15には、LCD或いは有機ELパネルなどよりなる表示部17や、スピーカなどよりなる音声出力部18が一体又は別体として接続される。
表示部17は各種表示を行う表示部であり、例えばコンピュータ装置の筐体に設けられるディスプレイデバイスや、コンピュータ装置に接続される別体のディスプレイデバイス等により構成される。
表示部17は、CPU11の指示に基づいて表示画面上に各種の画像処理のための画像や処理対象の動画等の表示を実行する。また表示部17はCPU11の指示に基づいて、各種操作メニュー、アイコン、メッセージ等、即ちGUI(Graphical User Interface)としての表示を行う。
【0047】
入出力インタフェース15には、ハードディスクや固体メモリなどより構成される記憶部19や、モデムなどより構成される通信部20が接続される場合もある。
【0048】
通信部20は、インターネット等の伝送路を介しての通信処理や、各種機器との有線/無線通信、バス通信などによる通信を行う。
【0049】
入出力インタフェース15にはまた、必要に応じてドライブ21が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブル記憶媒体22が適宜装着される。
ドライブ21により、リムーバブル記憶媒体22からはDNN処理に用いられるプログラム等のデータファイルや推論処理の対象となる画像データや教師データとしての画像データなどを読み出すことができる。読み出されたデータファイルは記憶部19に記憶されたり、データファイルに含まれる画像や音声が表示部17や音声出力部18で出力されたりする。またリムーバブル記憶媒体22から読み出されたコンピュータプログラム等は必要に応じて記憶部19にインストールされる。
【0050】
このコンピュータ装置では、例えば本実施の形態の処理のためのソフトウェアを、通信部20によるネットワーク通信やリムーバブル記憶媒体22を介してインストールすることができる。或いは当該ソフトウェアは予めROM12や記憶部19等に記憶されていてもよい。
【0051】
CPU11が各種のプログラムに基づいて処理動作を行うことで、情報処理装置1としての必要な情報処理や通信処理が実行される。
なお、情報処理装置1は、
図2のようなコンピュータ装置が単一で構成されることに限らず、複数のコンピュータ装置がシステム化されて構成されてもよい。複数のコンピュータ装置は、LAN(Local Area Network)等によりシステム化されていてもよいし、インターネット等を利用したVPN(Virtual Private Network)等により遠隔地に配置されたものでもよい。複数のコンピュータ装置には、クラウドコンピューティングサービスによって利用可能なサーバ群(クラウド)としてのコンピュータ装置が含まれてもよい。
【0052】
このような情報処理装置1のCPU11がプログラムに基づいて動作することで、情報処理装置1のCPU11は
図4に示す学習モデル生成部31、量子化処理部32、フィルタ削除処理部33、調整処理部34、折り込み処理部35として機能する。
【0053】
学習モデル生成部31は、学習用の画像データなどを入力することにより、畳み込みレイヤなどの各レイヤにおける機械学習を行う。学習を行うことにより、各レイヤにおける最適なパラメータを獲得することができる。そして、学習モデル生成部31は、学習を終えることにより学習モデルを獲得する。
【0054】
また、学習モデル生成部31は、DNNの量子化に応じて必要となる再学習処理を行う。これにより、量子化されたパラメータに適応した学習モデルが再構築される。
【0055】
量子化処理部32は、DNNにおけるアクティベーションデータの量子化とウェイトデータの量子化を行う。これらの量子化を行うことにより、扱うパラメータのデータ量を削減できると共に、推論処理の演算量を大幅に削減することができる。具体的には後述する。
【0056】
フィルタ削除処理部33は、BNレイヤL2においてパラメータの分散σが小さくなってしまうようなフィルタ、即ち、量子化において量子化誤差が大きくなってしまう要因となるフィルタの削除を行う。具体的には後述する。
【0057】
調整処理部34は、フィルタ削除処理部33によるフィルタ削除処理によって推論結果に大きな影響がでてしまうのを防止するために後段の畳み込みレイヤにおけるパラメータの調整を行う。具体的には後述する。
【0058】
折り込み処理部35は、BNレイヤL2のパラメータを直前の畳み込みレイヤ(DCレイヤL1やPCレイヤL4など)に折り込む処理を行う。これにより、DNNからBNレイヤL2を無くすことができる。また、BNレイヤL2のパラメータを直前の畳み込みレイヤに折り込むことで、BNレイヤL2の機能が畳み込みレイヤに集約される。
【0059】
<4.量子化フロー>
情報処理装置1のCPU11がDNNの量子化を行う際の処理フローについて、
図5を参照して説明する。
【0060】
DNNの量子化においては、先ず、CPU11はステップS101において、Pruning処理(フィルタ削除処理)を実行する。
フィルタ削除処理では、分散σの小さなフィルタの削除を行う。また、フィルタの削除による推論性能の劣化を抑制するためのパラメータ(係数)の調整を行う。
【0061】
ステップS101のフィルタ削除処理の一例を
図6に示す。
フィルタ削除処理では、CPU11は先ずステップS201において、DNNの中で未処理のBNレイヤが存在するか否かを判定する。未処理のBNレイヤが存在する場合には、CPU11はステップS202で未処理のBNレイヤを一つ選択すると共に、選択されたBNレイヤを処理対象としてステップS203から続く一連の処理を行う。
【0062】
一方、ステップS201において、DNNの中のBNレイヤ全てに対して一連の処理を実行し終えた場合には、CPU11は
図6に示すフィルタ削除処理を終える。
【0063】
CPU11は、ステップS202で一つの未処理のBNレイヤを選択した後、ステップS203において、処理対象のBNレイヤに未処理のフィルタが存在するか否かを判定する。BNレイヤが備える全てのフィルタについての処理を終えた場合には、CPU11はステップS203からステップS201へと戻り、次の未処理のBNレイヤを選択するための判定処理を行う。
【0064】
一方、未処理のフィルタが存在すると判定した場合、CPU11はステップS204において、未処理のフィルタを一つ選択する。
ここで、BNレイヤにおけるフィルタ演算について説明する。
先ず、BNレイヤの前段に設けられた畳み込みレイヤの演算は以下の[式1]で表すことができる。
【0065】
【0066】
[式1]における変数wはウェイトデータを表し、変数xはアクティベーションデータを表し、変数bはバイアスパラメータを表している。また、変数wと変数bはDNNの量子化を行う前の学習において獲得されたパラメータである。
次に、各変数の添え字として用いられている各変数について説明する。変数Lはレイヤを特定する数値とされ、変数oはフィルタのインデックス値とされ、変数s及び変数tは出力マップにおけるピクセル位置を特定するための値とされている。
更に、変数h及び変数vは畳み込み処理に用いられるフィルタ(カーネル)内のパラメータ位置を示す値とされ、変数iは入力画像を特定するための値とされる。例えば、R(赤)画像とG(緑)画像とB(青)画像の三つの画像が入力データとされ、各入力画像に対して畳み込み処理を行う場合において、変数iは、入力画像がR画像、G画像、B画像の何れの画像であるかを特定するための値とされる。
【0067】
BNレイヤにおけるフィルタ処理では、畳み込みレイヤの演算結果である変数Cに対して処理を行う。この演算式は、以下の[式2]で表すことができる。
【0068】
【0069】
[式2]における変数Cは前段の畳み込みレイヤの出力値(即ち[式1]の出力値)を表し、変数μは平均値を表し、変数σは分散を表す。また、変数εは、ゼロ値で除算されることを回避するために分母に加えられるゼロ値ではない微小な値とされている。更に、変数γや変数βは、DNNの量子化を行う前の学習において得られたパラメータである。
【0070】
図6のステップS204では、[式2]で表されるようなフィルタを一つ一つ選択する処理である。
CPU11は続くステップS205において、分散σが閾値よりも小さいか否かを判定する。なお、本実施の形態においては、この判定に用いる閾値として変数εを利用する。これにより、閾値を設定する手間や算出する手間を省くことができる。
【0071】
分散σが閾値よりも小さいと判定した場合、CPU11はステップS206において、選択中のフィルタを削除する処理を行う。
ここで、フィルタの削除について説明する。
【0072】
上記した[式2]における分散σは、以下の[式3]で算出される。
【0073】
【0074】
変数Bは処理対象の入力マップの数(例えば画像の枚数)を示し、変数Sと変数Tは、一枚の入力マップにおける縦の画素数と横の画素数を表している。即ち、変数Bと変数Sと変数Tを乗算した結果は、処理対象となる画素の数を表している。また、変数bは処理対象の入力マップを特定するための変数とされる。
【0075】
ここで、分散σが小さいということは、[式3]において、[式4]で表される演算の結果が小さいことと同義である。
【0076】
【0077】
ここで、分散σが小さい場合の[式2]を近似することを考える。分散σが小さい値である場合には、変数γに乗算される値の分母の値([式5])は、変数εに近づく。一方、分子の値([式6])はゼロ値に近づく。
【0078】
【0079】
【0080】
即ち、変数γに乗算される値は分散σが小さいほどゼロ値に近づく。これにより、[式2]は以下の[式7]に近似することが可能である。
【0081】
【0082】
図6のステップS206で実行するフィルタの削除処理は、[式7]に示す近似式を用いた近似を行う処理である。
【0083】
フィルタの削除の実行可否は、フィルタごとに判断される。即ち、変数oで特定されるフィルタが分散σの値が小さいフィルタである場合に限りフィルタの削除が行われる。
【0084】
フィルタを削除した後、CPU11はステップS207において、選択中のBNレイヤの後段の畳み込みレイヤで用いる変数b(バイアスパラメータ、[式1]参照)を調整する処理を行う。例えば、
図2におけるBNレイヤL2についての削除処理を実行している場合における後段の畳み込みレイヤはPCレイヤL4となる。
これにより、フィルタ削除が推論結果に与える影響を最小限にすることができる。
【0085】
変数bの調整処理の演算は、以下の[式8]で表すことができる。
【0086】
【0087】
Act関数は活性化関数を表している。変数Lは上述のようにレイヤを特定するものとされている。例えば、LはBNレイヤL2を表し、(L+1)はPCレイヤL4を表している。
【0088】
CPU11は
図6のステップS207において後段の畳み込みレイヤのパラメータ調整を行った後、次の未処理のフィルタを選択するためにステップS203へと進む。
【0089】
再び
図5の説明に戻る。
CPU11は、ステップS101のフィルタ削除処理として
図6に示す一連の処理を終えた後、ステップS102のQuantize Activation(アクティベーション量子化処理)を行う。
【0090】
なお、DNNの量子化においては、一般的に、アクティベーションデータ([式1]の変数x)の量子化とウェイトデータ([式1]の変数w)の量子化が一度に行われる。
しかし、アクティベーションデータとウェイトデータの双方の量子化を一度に行ってしまうと、量子化後の再学習において各レイヤにおける入力データや出力データが変化しすぎてしまう可能性が高い。その結果、再学習に長い時間が掛かってしまったり、完成した学習モデルの性能が低下し推論結果が劣化してしまったりする。
【0091】
本実施の形態では、アクティベーションデータとウェイトデータの量子化を個別に行うと共に、それぞれにおいて再学習処理を行う。
具体的には、先ずステップS102においてアクティベーションデータの量子化が行われる。そして、CPU11は続くステップS103においてアクティベーション量子化処理によって最適でなくなった学習モデルを最適なものへと戻すための再学習処理を行う。即ち、再学習処理では、アクティベーションデータの量子化に合わせた学習モデルの構築が行われる。
これにより、各レイヤにおける入力データや出力データの変化量を抑えた状態で再学習を行うことができるため、推論性能の劣化を抑えることが可能である。
【0092】
続いて、CPU11はステップS104のPruning処理(フィルタ削除処理)を実行する。この処理は、ステップS101のフィルタ削除処理と同様の処理である。即ち、アクティベーション量子化処理において再び発生してしまった削除対象のフィルタの削除を行う。
【0093】
CPU11は、ステップS105のFolding BN処理(折り込み処理)を行う。折り込み処理は、DCレイヤL1の直後にあるBNレイヤL2を削除するために、BNレイヤL2で用いられるパラメータを直前のDCレイヤL1に折り込む処理である。
【0094】
折り込み処理の演算は以下の[式9]で表される。
【0095】
【0096】
変数w1は変数wを新たに置き換えたものであり、DCレイヤL1におけるウェイトデータである。即ち、DCレイヤL1における畳み込み処理では、以下の[式10]で示す演算が行われる。
【0097】
【0098】
[式10]に示すように、DCレイヤL1における変数w1は、BNレイヤL2のパラメータを折り込んだものとされる。即ち、学習によりBNレイヤL2が獲得したパラメータによってBNレイヤL2に付与されていた機能がDCレイヤL1に組み込まれたことを意味する。
これにより、量子化を終えた後のDNNからBNレイヤL2を削除することができる。
【0099】
CPU11はステップS106において、この新たなウェイトデータ(変数w1)を対象としてQuantize Weight処理(ウェイト量子化処理)を実行する。そして、CPU11は、ウェイト量子化処理によって最適でなくなった学習モデルを最適なものへとするために、ステップS107において再学習処理を行う。
【0100】
このようにして、アクティベーションデータの量子化とウェイトデータの量子化を個別に実行すると共に、それぞれで再学習処理を実行することにより、推論性能の劣化の防止を図りつつ演算量の削減及び軽量化を図ることができる。
【0101】
<5.変形例>
量子化フローの変形例について説明する。
図5に示した量子化フローの変形例を
図7に示す。
CPU11は、先ずステップS101でPruning処理(フィルタ削除処理)を実行する。この処理の詳細は
図6を用いて説明したものと同様である。
【0102】
続いて、CPU11は、ステップS105のFolding BN処理(折り込み処理)を行う。折り込み処理により、BNレイヤL2で用いられるパラメータが直前のDCレイヤL1に折り込まれるため、BNレイヤL2の削除が可能となる。
【0103】
次に、CPU11は、ステップS102のQuantize Activation(アクティベーション量子化処理)を行い、ステップS103の最適化処理を行う。これにより、アクティベーション量子化処理によるパラメータの変化に追随した最適な学習モデルが構築される。
【0104】
最後に、CPU11はステップS106において、ステップS102で変換された新たなウェイトデータ(変数w1)を対象としてQuantize Weight処理(ウェイト量子化処理)を実行い、ステップS107の再学習処理を行う。これにより、ウェイト量子化処理によるパラメータの変化に追随した最適な学習モデルが構築される。
【0105】
図7に示す変形例によれば、フィルタ削除処理の実行回数が1回とされているため、DNNの量子化を進める際の演算量の削減が図られる。
【0106】
上述した例では、DCレイヤL1に着目した。即ち、DCレイヤL1の直後にBNレイヤL2が配置されている場合に、BNレイヤL2に対してフィルタ削除処理を実行する例を説明した。これに限らず、本技術は、畳み込みレイヤの直後にBNレイヤが配置されている場合に広く適用可能である。上述した例であれば、PCレイヤL4の直後にBNレイヤL5が配置されているため、BNレイヤL5に対してフィルタの削除処理を実行してもよい。これにより、ダイナミックレンジを狭めることにより量子化誤差を小さくすることができる。
【0107】
<6.まとめ>
上述したように、情報処理装置1は、Depthwise畳み込みレイヤ(DCレイヤL1)とPointwise畳み込みレイヤ(PCレイヤL4)とBatch正規化レイヤ(BNレイヤL2,L5)を有するニューラルネットワーク(例えばDNN)において分散σが閾値(変数ε)よりも小さいフィルタの削除を行うフィルタ削除処理部33と、ニューラルネットワークの量子化を行う量子化処理部32と、を備えている。
分散が小さいフィルタを削除することで、各パラメータの大小関係や差分が可能な限り保持されたままニューラルネットワークの量子化を行うことができる。
従って、ニューラルネットワークの量子化によって演算量の削減やハードウェアコストの削減が図られると共に、量子化誤差が小さくされ、推論性能の劣化を抑制することができる。これにより、処理能力の高くない小型のコンピュータ装置やスマートフォンなどにおいて推論処理を行う場合に好適な学習モデルを獲得することができる。
また、量子化前に獲得していた学習モデルの再構築を行う必要がないため、量子化された学習モデルを獲得するまでに必要な処理負担や処理時間を少なくすることができる。
【0108】
図5等で説明したように、情報処理装置1のフィルタ削除処理部33は、Depthwise畳み込みレイヤ(DCレイヤL1)の後段のBatch正規化レイヤ(BNレイヤL2)におけるフィルタを削除の対象のフィルタとしてもよい。
Depthwise畳み込みレイヤの後段、特に直後のBatch正規化レイヤにおいては、分散の小さなフィルタが存在し得る
このようなフィルタを削除することにより、量子化誤差を小さくすることができる。
【0109】
[式7]を用いて説明したように、情報処理装置1のフィルタ削除処理部33は、フィルタの削除として、Batch正規化レイヤ(BNレイヤL2)の出力値を近似式([式7])で置き換える処理を行ってもよい。
これにより、量子化誤差を小さくすることができる。
また、フィルタを適用する際の演算量を削減することもできる。
【0110】
図4等を用いて説明したように、フィルタが削除されたBatch正規化レイヤ(BNレイヤL2)の後段に設けられた畳み込みレイヤ(PCレイヤL4)におけるパラメータを調整する調整処理部34を備えていてもよい。
例えば、フィルタを削除したことによる推論性能への影響が少なくなるようにパラメータの調整処理を行う。
これにより、フィルタの削除が推論性能へ与える影響を小さくすることができ、推論性能の劣化を抑制することができる。また、演算量の削減を図ることができる。
【0111】
[式8]を用いて説明したように、調整処理部34は、Batch正規化レイヤ(BNレイヤL2)の後段に設けられた畳み込みレイヤ(PCレイヤL4)のバイアスパラメータを調整してもよい。
これにより、フィルタ削除が推論結果に与える影響を小さくすることができる。
従って、推論性能の劣化を抑制することができる。
【0112】
図4等を用いて説明したように、情報処理装置1は、Batch正規化レイヤ(BNレイヤL2,L5)におけるパラメータを他の畳み込みレイヤ(例えばDCレイヤL1やPCレイヤL4)に折り込む折り込み処理部35を備えていてもよい。
これにより、例えば、フィルタ削除されたレイヤを削除することができる。
従って、パラメータの量子化と合わせて演算量の大幅な削減を実現することができる。
【0113】
[式9]等を用いて説明したように、折り込み処理部35は、Batch正規化レイヤ(BNレイヤL2)におけるパラメータを前段のDepthwise畳み込みレイヤ(DCレイヤL1)に折り込む処理を行ってもよい。
これにより、学習結果としてBatch正規化レイヤが獲得した機能がDepthwise畳み込みレイヤに集約される。
従って、Batch正規化レイヤを削除しても推論性能の劣化を抑制することができる。
【0114】
図6等で説明したように、情報処理装置1においては、Batch正規化レイヤ(BNレイヤL2)においてゼロ除算を回避するために分母に加算される変数εを前記閾値として利用してもよい。
これにより、閾値をユーザが入力しなくても済む。
従って、ユーザの負担軽減が図られる。
【0115】
上述したように、情報処理装置1は、ニューラルネットワーク(例えばDNN)の量子化を行う量子化処理部32を備え、量子化処理部32は、ニューラルネットワークにおけるアクティベーションデータの量子化と、ニューラルネットワークにおけるウェイトデータの量子化を個別に実行するものである。
これにより、アクティベーションデータの量子化による推論結果の変化やウェイトデータの量子化による推論結果の変化は、双方を一度に量子化した場合と比較して小さくされる。
従って、量子化後の性能劣化を抑制することができると共に、再学習に要する時間を短縮することができる。
【0116】
図5等で説明したように、量子化処理部32は、アクティベーションデータの量子化後とウェイトデータの量子化後のそれぞれにおいて再学習処理を行ってもよい。
再学習を行うことで、量子化により変化した最適な学習モデルに追随させることができる。
従って、推論性能の劣化を抑制することができる。また、例えば、32bitから8bitに量子化した場合に、32bitの学習モデルの構築からやり直す必要がないため、再学習処理に要する時間を短縮することができる。
【0117】
図4等で説明したように、情報処理装置1においては、分散が閾値よりも小さいフィルタの削除を行うフィルタ削除処理部33と、を備えていてもよい。
分散が小さいフィルタを削除することで、各パラメータの大小関係や差分が可能な限り保持されたままニューラルネットワークの量子化を行うことができる。
従って、ニューラルネットワークの量子化により演算量の削減が図られると共に、量子化誤差が小さくされ、推論性能の劣化を抑制することができる。これにより、処理能力の高くない小型のコンピュータ装置やスマートフォンなどにおいて推論処理を行う場合に用いるのに好適である。
【0118】
図5や
図7等で説明したように、量子化処理部32は、フィルタ削除処理部33によるフィルタの削除が実行された後にアクティベーションデータの量子化とウェイトデータの量子化を行ってもよい。
これにより、パラメータのダイナミックレンジが狭められた状態で量子化及び再学習が行われる。
従って、再学習により獲得された学習モデルの性能が劣化しすぎずに済む。
【0119】
図5等で説明したように、フィルタ削除処理部33は、アクティベーションデータの量子化の前後それぞれにおいてフィルタの削除を行ってもよい。
これにより、アクティベーションデータの量子化後にダイナミックレンジを広げてしまうような問題のあるフィルタが発生した場合でも当該フィルタが削除される。
従って、学習モデルの性能をより劣化させずに済む。
【0120】
図7等で説明したように、フィルタ削除処理部33は、フィルタの削除を一度だけ行い、量子化処理部32は、一度のフィルタの削除の後にアクティベーションデータの量子化とウェイトデータの量子化を行ってもよい。
これにより、フィルタ削除処理に要する時間を短くすることができる。
従って、処理能力の低いコンピュータ装置においてフィルタの削除処理と量子化処理を実行する場合に好適である。
【0121】
なお、本明細書に記載された効果はあくまでも例示であって限定されるものではなく、また他の効果があってもよい。
【0122】
<7.本技術>
(1)
Depthwise畳み込みレイヤとPointwise畳み込みレイヤとBatch正規化レイヤを有するニューラルネットワークにおいて分散が閾値よりも小さいフィルタの削除を行うフィルタ削除処理部と、
前記ニューラルネットワークの量子化を行う量子化処理部と、を備えた
情報処理装置。
(2)
前記フィルタ削除処理部は、前記Depthwise畳み込みレイヤの後段の前記Batch正規化レイヤにおけるフィルタを前記削除の対象のフィルタとする
上記(1)に記載の情報処理装置。
(3)
前記フィルタ削除処理部は、前記フィルタの削除において前記Batch正規化レイヤの出力値を近似式で置き換える処理を行う
上記(2)に記載の情報処理装置。
(4)
前記フィルタが削除された前記Batch正規化レイヤの後段に設けられた畳み込みレイヤにおけるパラメータを調整する調整処理部を備えた
上記(2)から上記(3)の何れかに記載の情報処理装置。
(5)
前記調整処理部は、前記Batch正規化レイヤの後段に設けられた前記畳み込みレイヤのバイアスパラメータを調整する
上記(4)に記載の情報処理装置。
(6)
前記Batch正規化レイヤにおけるパラメータを他の畳み込みレイヤに折り込む折り込み処理部を備えた
上記(1)から上記(5)の何れかに記載の情報処理装置。
(7)
前記折り込み処理部は、前記Batch正規化レイヤにおけるパラメータを前段のDepthwise畳み込みレイヤに折り込む
上記(6)に記載の情報処理装置。
(8)
前記Batch正規化レイヤにおいてゼロ除算を回避するために分母に加算される変数を前記閾値として利用する
上記(1)から上記(7)の何れかに記載の情報処理装置。
(9)
Depthwise畳み込みレイヤとPointwise畳み込みレイヤとBatch正規化レイヤを有するニューラルネットワークにおいて分散が閾値よりも小さいフィルタの削除処理と、
前記ニューラルネットワークの量子化処理と、をコンピュータ装置が実行する
情報処理方法。
(10)
ニューラルネットワークの量子化を行う量子化処理部を備え、
前記量子化処理部は、
前記ニューラルネットワークにおけるアクティベーションデータの量子化と、前記ニューラルネットワークにおけるウェイトデータの量子化と、を個別に行う
情報処理装置。
(11)
前記アクティベーションデータの量子化後と前記ウェイトデータの量子化後のそれぞれにおいて再学習処理を行う学習モデル生成部を備えた
上記(10)に記載の情報処理装置。
(12)
前記ニューラルネットワークは、Depthwise畳み込みレイヤとPointwise畳み込みレイヤとBatch正規化レイヤを有し、
前記ニューラルネットワークにおいて分散が閾値よりも小さいフィルタの削除を行うフィルタ削除処理部と、を備えた
分散が閾値よりも小さいフィルタの削除を行うフィルタ削除処理部と、を備えた
上記(10)から上記(11)の何れかに記載の情報処理装置。
(13)
前記量子化処理部は、前記フィルタ削除処理部によるフィルタの削除が実行された後に前記アクティベーションデータの量子化と前記ウェイトデータの量子化を行う
上記(12)に記載の情報処理装置。
(14)
前記フィルタ削除処理部は、前記アクティベーションデータの量子化の前後それぞれにおいて前記フィルタの削除を行う
上記(13)に記載の情報処理装置。
(15)
前記フィルタ削除処理部は、前記フィルタの削除を一度だけ行い、
前記量子化処理部は、前記一度のフィルタの削除の後に前記アクティベーションデータの量子化と前記ウェイトデータの量子化を行う
上記(13)に記載の情報処理装置。
(16)
ニューラルネットワークにおけるアクティベーションデータの量子化と、前記ニューラルネットワークにおけるウェイトデータの量子化と、が個別に行われるようにコンピュータ装置が実行する
情報処理方法。
【符号の説明】
【0123】
1 情報処理装置
31 学習モデル生成部
32 量子化処理部
33 フィルタ削除処理部
34 調整処理部
35 折り込み処理部
L1 DCレイヤ(Depthwise畳み込みレイヤ)
L2、L5 BNレイヤ(Batch正規化レイヤ)
L4 PCレイヤ(Pointwise畳み込みレイヤ)