(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-27
(45)【発行日】2025-01-14
(54)【発明の名称】学習装置、学習方法、及び、プログラム
(51)【国際特許分類】
G06N 3/084 20230101AFI20250106BHJP
G06N 20/00 20190101ALI20250106BHJP
【FI】
G06N3/084
G06N20/00
(21)【出願番号】P 2021095847
(22)【出願日】2021-06-08
【審査請求日】2023-11-27
(73)【特許権者】
【識別番号】322003857
【氏名又は名称】パナソニックオートモーティブシステムズ株式会社
(74)【代理人】
【識別番号】100109210
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】矢谷 健一
(72)【発明者】
【氏名】吉濱 豊
(72)【発明者】
【氏名】中野 久幹
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2021-43495(JP,A)
【文献】特開2021-15425(JP,A)
【文献】特開2020-135011(JP,A)
【文献】特開2020-119528(JP,A)
【文献】特開2019-32833(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/084
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
それぞれ複数の出力値を出力する1以上の中間層を有するニューラルネットワークの学習を実行する学習装置であって、
予め用意された学習用データに含まれる入力データを前記ニューラルネットワークに適用して得られた前記1以上の中間層それぞれにおける複数の出力値の偏りを算出する偏り算出部と、
前記偏りを小さくするように前記ニューラルネットワークの各層のパラメータを学習させる学習実行部とを備
え、
前記偏り算出部は、前記複数の出力値の分布と、前記複数の出力値のうちの最大値を一様に並べた一様分布との差分を算出することで、前記偏りを算出する、
学習装置。
【請求項2】
前記学習実行部は、
前記入力データを前記ニューラルネットワークに適用して得られた前記ニューラルネットワークの推論結果と、前記学習用データに含まれる正解ラベルとの誤差を算出する第1損失関数を算出し、前記第1損失関数に前記偏り算出部により算出された前記偏りを加えた第2損失関数を算出する損失関数算出部と、
前記第2損失関数を最適化することにより、前記偏りを小さくするように前記ニューラルネットワークの各層のパラメータを学習させる最適化部とを備える、
請求項
1に記載の学習装置。
【請求項3】
前記偏り算出部は、前記偏りとして、前記ニューラルネットワークが有するすべての前記中間層のそれぞれにおける複数の出力値の偏りを算出する、
請求項
2に記載の学習装置。
【請求項4】
前記偏り算出部は、前記偏りとして、前記ニューラルネットワークが有するすべての前記中間層のうちの一部の前記中間層のそれぞれにおける複数の出力値の偏りを算出する、
請求項
2に記載の学習装置。
【請求項5】
前記偏り算出部は、前記偏りとして、前記1以上の中間層それぞれにおける複数の出力値のうち当該複数の出力値の最大値に応じた閾値以上の出力値の偏りを算出する、
請求項
2~
4のいずれか1項に記載の学習装置。
【請求項6】
前記損失関数算出部は、前記第1損失関数に、前記偏りを引数とする関数であって前記偏りが大きいほど前記第2損失関数への寄与が大きくなる関数を加えることで、前記第2損失関数を算出する、
請求項
2~
5のいずれか1項に記載の学習装置。
【請求項7】
前記1以上の中間層のそれぞれは、畳み込み層、Depthwise Convolution層又は全結合層である、
請求項1~
6のいずれか1項に記載の学習装置。
【請求項8】
前記1以上の中間層は、畳み込み層と前記畳み込み層に続く正規化層とで構成される層を含み、
前記層における複数の出力値の偏りは、前記正規化層より得られる複数の出力値の偏りである、
請求項1~
6のいずれか1項に記載の学習装置。
【請求項9】
前記1以上の中間層は、畳み込み層と前記畳み込み層に続くアクティベーション層とで構成される層を含み、
前記層における複数の出力値の偏りは、前記アクティベーション層より得られる複数の出力値の偏りである、
請求項1~
6のいずれか1項に記載の学習装置。
【請求項10】
コンピュータが、それぞれ複数の出力値を出力する1以上の中間層を有するニューラルネットワークの学習を実行する学習方法であって、
予め用意された学習用データに含まれる入力データを前記ニューラルネットワークに適用して得られた前記1以上の中間層それぞれにおける複数の出力値の偏りを算出する偏り算出ステップと、
前記偏りを小さくするように前記ニューラルネットワークの各層のパラメータを学習させる学習実行ステップとを含
み、
前記偏り算出ステップでは、前記複数の出力値の分布と、前記複数の出力値のうちの最大値を一様に並べた一様分布との差分を算出することで、前記偏りを算出する、
学習方法。
【請求項11】
それぞれ複数の出力値を出力する1以上の中間層を有するニューラルネットワークの学習を実行する学習方法をコンピュータに実行させるプログラムであって、
予め用意された学習用データに含まれる入力データを前記ニューラルネットワークに適用して得られた前記1以上の中間層それぞれにおける複数の出力値の偏りを算出する偏り算出ステップと、
前記偏りを小さくするように前記ニューラルネットワークの各層のパラメータを学習させる学習実行ステップとを、
コンピュータに実行させ
、
前記偏り算出ステップでは、前記複数の出力値の分布と、前記複数の出力値のうちの最大値を一様に並べた一様分布との差分を算出することで、前記偏りを算出する
、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ニューラルネットワークの学習を実行する学習装置、学習方法、及び、プログラムに関する。
【背景技術】
【0002】
従来、ニューラルネットワークをSoC(System on a Chip)のAIアクセラレータなどに搭載する場合、ニューラルネットワークの演算負荷を軽減するため、浮動小数点で表現されたニューラルネットワークの各種パラメータを固定小数点に量子化する。
【0003】
例えば畳み込み層を有する畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)では、各畳み込み層はそのチャネル数枚の数値を出力値として出力する。チャネル数は、畳み込み層のフィルタ数とも称される。CNNの量子化では、スケーリング係数を全チャネル共通にする方法(Per-Tensor量子化と称される)がよく使われる。スケーリング係数は、一定のスケールすなわち特定の範囲内におさめるために掛けられる数値である。
【0004】
ところで、Per-Tensor量子化する際、複数のチャネルにおいてチャネルごとの取りうる値(つまり出力値)に偏りがある場合、量子化後の値の差がなくなり、Per-Tensor量子化されたCNNの認識精度が劣化してしまうことが知られている。
【0005】
このため、例えば特許文献1では、CNNの隣り合う畳み込み層においてスケーリング変換することでチャネルごとの出力値の偏りを相殺するように方法が提案されている。また、例えば特許文献2では、量子化誤差が最小になるようにスケーリング係数を決定することでチャネルごとの出力値の偏りを解消する方法が提案されている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2020-119518号公報
【文献】特開2020-119528号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1に開示される技術では、例えばReLU6またはSwishなどのようなスケーリング変換との順序交換ができないアクティベーション層が含まれるニューラルネットワークには適用できないなど、適用できるニューラルネットワークの構成に制約がある。また、特許文献2に開示される技術では、畳み込み層の出力値が変わるわけでないので、チャネルごとの出力値の偏りを本質的に減らせておらず、CNNの認識精度の劣化の抑制に限度がある。
【0008】
このように、ニューラルネットワークにPer-Tensor量子化を行うと、ニューラルネットワークを用いた推論の演算量を少なくすることができるものの、推論精度が劣化する場合があるという課題がある。
【0009】
本開示は、上述の事情を鑑みてなされたもので、Per-Tensor量子化してもニューラルネットワークの推論精度の劣化を抑制できる学習装置などを提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本開示の一形態に係る学習装置は、それぞれ複数の出力値を出力する1以上の中間層を有するニューラルネットワークの学習を実行する学習装置であって、予め用意された学習用データに含まれる入力データを前記ニューラルネットワークに適用して得られた前記1以上の中間層それぞれにおける複数の出力値の偏りを算出する偏り算出部と、前記偏りを小さくするように前記ニューラルネットワークの各層のパラメータを学習させる学習実行部とを備える。
【0011】
これにより、Per-Tensor量子化してもニューラルネットワークの推論精度の劣化を抑制できる。
【0012】
なお、これらの全般的または具体的な態様は、装置、方法、集積回路、コンピュータプログラムまたはコンピュータで読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【0013】
本開示により、Per-Tensor量子化してもニューラルネットワークの推論精度の劣化を抑制できる学習装置などを提供できる。
【図面の簡単な説明】
【0014】
【
図1】
図1は、本開示のニューラルネットワークの一例を概念的に示す図である。
【
図2C】
図2Cは、
図1に示す畳み込み層のチャネルN枚の取りうる値に偏りがないことを概念的に示す図である。
【
図3A】
図3Aは、
図1に示す畳み込み層の複数の出力値をPer-Tensor量子化することを概念的に示す図である。
【
図3B】
図3Bは、
図2Aに示すチャネル1の複数の出力値を均等に量子化した場合の量子化前後の出力値を示す図である。
【
図3C】
図3Cは、
図2Bに示すチャネル2の複数の出力値を均等に量子化した場合の量子化前後の出力値を示す図である。
【
図4B】
図4Bは、
図1に示す畳み込み層のチャネルN枚の取りうる値に偏りがあることを概念的に示す図である。
【
図4C】
図4Cは、
図4Aに示すチャネル2の複数の出力値を均等に量子化した場合の量子化前後の出力値を示す図である。
【
図5】
図5は、実施の形態に係る学習装置の機能構成を示すブロック図である。
【
図6】
図6は、実施の形態に係る学習装置の機能をソフトウェアにより実現するコンピュータのハードウェア構成の一例を示す図である。
【
図7】
図7は、実施の形態に係る偏り算出部が算出する偏りを概念的に示す図である。
【
図8】
図8は、実施の形態に係るi番目の畳み込み層の偏りL
iを具体的に算出する方法の一例を説明するための図である。
【
図9】
図9は、実施の形態に係るi番目の畳み込み層の偏りL
iを具体的に算出する方法の別の例を説明するための図である。
【
図10A】
図10Aは、実施の形態に係る偏りとして加算される関数の一例を概念的に示す図である。
【
図10B】
図10Bは、実施の形態に係る偏りとして加算される関数の一例を概念的に示す図である。
【
図10C】
図10Cは、実施の形態に係る偏りとして加算される関数の一例を概念的に示す図である。
【
図11】
図11は、実施の形態における学習装置の動作概要を示すフローチャートである。
【
図12】
図12は、実施の形態における学習装置の動作詳細の一例を示すフローチャートである。
【
図13】
図13は、
図12のステップS12の具体的な動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、本開示の実施の形態について、図面を用いて詳細に説明する。なお、以下で説明する実施の形態は、いずれも本開示の一具体例を示す。以下の実施の形態で示される数値、形状、材料、規格、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序等は、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、本開示の最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また、各図は、必ずしも厳密に図示したものではない。各図において、実質的に同一の構成については同一の符号を付し、重複する説明は省略又は簡略化する場合がある。
【0016】
(実施の形態)
まず、複数の出力値を出力する中間層を有するニューラルネットワークをPer-Tensor量子化する場合、中間層が出力する複数の出力値に偏りがあると、量子化後のニューラルネットワークの推論精度が落ちてしまうことについて説明する。
【0017】
図1は、本開示のニューラルネットワークの一例を概念的に示す図である。
【0018】
図1には、本開示のニューラルネットワークの一例として、畳み込層を含むCNNが示されている。
図1に示されるCNNの畳み込み層は、本開示のニューラルネットワークの中間層の一例である。
図1に示される畳み込み層では、1つ前の畳み込み層の複数の出力値が入力され、複数の出力値としてチャネルN枚の出力値を出力する一例が示されている。上述したように、畳み込み層のフィルタ数はチャネル数とも称されるため、
図1に示される畳み込み層のフィルタ数はNである。
【0019】
図2Aは、
図1に示す畳み込み層のチャネル1の出力値の一例である。
図2Bは、
図1に示す畳み込み層のチャネル2の出力値の一例である。
【0020】
図2Aには、チャネルN枚のうちの1つであるチャネル1の複数の出力値の一例が示されている。同様に、
図2Bには、チャネルN枚のうちの1つであるチャネル2の複数の出力値の一例が示されている。
図1に示すニューラルネットワークには、画像が入力されていることから、チャネル2の複数の出力値が2次元の値として示されている。
【0021】
図2Cは、
図1に示す畳み込み層のチャネルN枚の取りうる値に偏りがないことを概念的に示す図である。横軸がチャネルを示し、縦軸がチャネルの取りうる値である。
図2Cでは、チャネルN枚のそれぞれがチャネル1~チャネルNとして示されており、チャネル1~チャネルNの取りうる値としてチャネル1~チャネルNのそれぞれの複数の出力値のうちの最大値が示されている。
【0022】
図3Aは、
図1に示す畳み込み層の複数の出力値をPer-Tensor量子化することを概念的に示す図である。
【0023】
図3Aには、
図1に示す畳み込み層のチャネルNの取りうる値である浮動小数点で表現される-2.5~2.5を、8ビット整数(0~254)など固定小数点で表現される特定の範囲内におさめるように同一の式で(量子化幅を均等にして)量子化を行っていることが示されている。
【0024】
図3Bは、
図2Aに示すチャネル1の複数の出力値を均等に量子化した場合の量子化前後の出力値を示す図である。
図3Cは、
図2Bに示すチャネル2の複数の出力値を均等に量子化した場合の量子化前後の出力値を示す図である。より具体的には、
図3B及び
図3Cの(a)で示される量子化前の複数の出力値それぞれに対して、同一の式で量子化することで、
図3B及び
図3Cの(b)で示される量子化後の複数の出力値を得ることができる。
【0025】
図2Cで示したように畳み込み層のチャネルN枚の取りうる値に偏りがない場合、
図3B及び
図3Cの(b)で示されるように量子化後の複数の出力値それぞれの差がつぶれない。このため、量子化後のCNNでは認識精度が劣化しにくい。
【0026】
次に、畳み込み層のチャネルN枚の取りうる値に偏りがある場合について説明する。
【0027】
図4Aは、
図1に示す畳み込み層のチャネル2の出力値の別の例である。
図4Bは、
図1に示す畳み込み層のチャネルN枚の取りうる値に偏りがあることを概念的に示す図である。
図4Aは、
図2Bに示すチャネル2の出力値とは別の例であり、最大値が0.025と、
図2Aに示されるチャネル1の出力値の最大値と比べると小さくなっているのがわかる。この場合、
図4Bに示すように、チャネル2の取りうる値が、他のチャネル1、3~Nと比較して小さくなっており、
図1に示す畳み込み層のチャネルN枚の取りうる値に偏りがあることがわかる。
【0028】
図4Cは、
図4Aに示すチャネル2の複数の出力値を均等に量子化した場合の量子化前後の出力値を示す図である。
図4Cには、
図4Cの(a)で示される量子化前の複数の出力値それぞれに対して、
図3B及び
図3Cと同一の式で量子化し、
図4Cの(b)で示される量子化後の複数の出力値を得た場合の例が示されている。なお、
図4Cの(a)で示される複数の出力値が
図4Aに示される複数の出力値に該当する。
【0029】
図4Cの(b)で示される量子化後の複数の出力値では、差がつぶれ、差がつかなくなっているので、このようなチャネル2の出力値を量子化すると量子化後のCNNでは認識精度が劣化しやすくなってしまう。つまり、
図4Bで示したように畳み込み層のチャネルN枚の取りうる値に偏りがある場合、
図4Cの(b)で示されるように量子化後の複数の出力値それぞれの差がつぶれてしまうので、量子化後のCNNでは認識精度が劣化しやすくなってしまう。
【0030】
続いて、本実施の形態に係る学習装置等について説明する。
【0031】
[1.学習装置10]
以下、本実施の形態に係る学習装置10について説明する。
【0032】
学習装置10は、コンピュータ等で実現され、それぞれ複数の出力値を出力する1以上の中間層を有するニューラルネットワークの学習を実行するための装置である。
【0033】
図5は、本実施の形態に係る学習装置10の機能構成を示すブロック図である。
【0034】
学習装置10は、
図5に示されるように、取得部1と、学習部2とを備える。なお、学習装置10において、取得部1は必須ではない。
【0035】
[1-1.ハードウェア構成]
本実施の形態に係る学習装置10の機能構成を説明する前に、
図6を用いて、本実施の形態に係る学習装置10のハードウェア構成の一例について説明する。
【0036】
図6は、本実施の形態に係る学習装置10の機能をソフトウェアにより実現するコンピュータ1000のハードウェア構成の一例を示す図である。
【0037】
コンピュータ1000は、
図6に示すように、入力装置1001、出力装置1002、CPU1003、内蔵ストレージ1004、RAM1005、読取装置1007、送受信装置1008及びバス1009を備えるコンピュータである。入力装置1001、出力装置1002、CPU1003、内蔵ストレージ1004、RAM1005、読取装置1007及び送受信装置1008は、バス1009により接続される。
【0038】
入力装置1001は、入力ボタン、タッチパッド、タッチパネルディスプレイなどといったユーザインタフェースとなる装置であり、ユーザの操作を受け付ける。なお、入力装置1001は、ユーザの接触操作を受け付ける他、音声での操作、リモコン等での遠隔操作を受け付ける構成であってもよい。
【0039】
出力装置1002は、入力装置1001と兼用されており、タッチパッドまたはタッチパネルディスプレイなどによって構成され、ユーザに知らすべき情報を通知する。
【0040】
内蔵ストレージ1004は、フラッシュメモリなどである。また、内蔵ストレージ1004は、学習装置10の機能を実現するためのプログラム、及び、学習装置10の機能構成を利用したアプリケーションの少なくとも一方が、予め記憶されていてもよい。また、内蔵ストレージ1004は、取得されたニューラルネットワーク111、取得された学習用データ、学習部2で用いる第1損失関数、偏りを算出する算出式もしくは手順、または学習により更新されたパラメータなどが記憶されるとしてもよい。
【0041】
RAM1005は、ランダムアクセスメモリ(Random Access Memory)であり、プログラム又はアプリケーションの実行に際してデータ等の記憶に利用される。
【0042】
読取装置1007は、USB(Universal Serial Bus)メモリなどの記録媒体から情報を読み取る。読取装置1007は、上記のようなプログラムやアプリケーションが記録された記録媒体からそのプログラム、アプリケーションを読み取り、内蔵ストレージ1004に記憶させる。
【0043】
送受信装置1008は、無線又は有線で通信を行うための通信回路である。送受信装置1008は、例えばネットワークに接続されたサーバ装置と通信を行い、サーバ装置から上記のようなプログラム、アプリケーションをダウンロードして内蔵ストレージ1004に記憶させてもよい。
【0044】
CPU1003は、中央演算処理装置(Central Processing Unit)であり、内蔵ストレージ1004に記憶されたプログラム、アプリケーションをRAM1005にコピーし、そのプログラムやアプリケーションに含まれる命令をRAM1005から順次読み出して実行する。
【0045】
続いて、
図5を用いて本実施の形態に係る学習装置10の各機能構成について説明する。
【0046】
[1-2.取得部1]
取得部1は、学習部2で学習対象のニューラルネットワーク111を取得し、例えば内蔵ストレージ1004などの記憶部に記憶させる。
【0047】
ここで、ニューラルネットワーク111は、それぞれ複数の出力値を出力する1以上の中間層を有するニューラルネットワークである。ニューラルネットワーク111は、例えば畳み込みニューラルネットワークであるが、これに限らない。それぞれ複数の出力値を出力する1以上の中間層として畳み込み層、Depthwise Convolution層又は全結合層を含むニューラルネットワークであってもよい。なお、中間層が全結合層の場合には、畳み込み層を全結合層と読み替え、チャネルをノードと読み替え、チャネルの出力値をノードの出力値と読み替えれば畳み込み層等と同様に扱うことができる。
【0048】
また、取得部1は、予め用意された学習用データを取得し、例えば内蔵ストレージ1004などの記憶部に記憶させる。
【0049】
[1-3.学習部2]
[1-3-1.偏り算出部20]
偏り算出部20は、予め用意された学習用データに含まれる入力データをニューラルネットワーク111に適用して得られた1以上の中間層それぞれにおける複数の出力値の偏りを算出する。
【0050】
例えば、ニューラルネットワーク111がCNNである場合、偏り算出部20は、1以上の中間層としての畳み込み層が出力する複数の出力値すなわちチャネル数枚の出力値の偏りを算出する。
【0051】
図7は、本実施の形態に係る偏り算出部20が算出する偏りを概念的に示す図である。
図7には、i層目の中間層としての畳み込み層のチャネル数が8である場合における当該畳み込み層のチャネル8枚の取り得る値(実際の出力値)の分布と、算出される偏りL
iとが概念的に示されている。ここで、当該畳み込み層のチャネル8枚の取り得る値の分布は、8つのチャネルのそれぞれが実際に出力する複数の出力値のうちの最大値の分布であり、以下、取り得る値の分布は実際の出力値の分布とも称する。
【0052】
図7に示す例のように、実際の出力値の分布には偏りがある。なお、
図7に示す例において、偏りのない理想的な分布とは、チャネル4の出力値をチャネル1~チャネル8に一様に並べた分布(一様分布)である。
【0053】
本実施の形態では、偏り算出部20は、
図7に示されるように、実際の出力値の分布と、理想的な分布との差分の面積として偏りL
iを算出する。
【0054】
より具体的には、偏り算出部20は、中間層の複数の出力値の分布と、当該複数の出力値のうちの最大値を一様に並べた一様分布との差分を算出することで、当該中間層における偏りを算出する。
【0055】
なお、偏り算出部20は、ニューラルネットワーク111が有するすべての中間層のそれぞれにおける複数の出力値の偏りを算出してもよいし、ニューラルネットワーク111が有するすべての中間層のうちの一部の中間層のそれぞれにおける複数の出力値の偏りを算出してもよい。
【0056】
つまり、偏り算出部20が、ニューラルネットワーク111が有する1以上の中間層のすべてを算出対象とする場合、1以上の中間層のそれぞれにおける実際の出力値の分布と理想的な分布との差分の面積を、中間層ごとの偏りとして算出すればよい。また、偏り算出部20が、当該1以上の中間層のうちの一部の中間層を算出対象とする場合、当該一部の中間層のそれぞれにおける実際の出力値の分布と理想的な分布との差分の面積を中間層ごとの偏りとして算出すればよい。
【0057】
以下、
図8を用いて、i番目の畳み込み層の偏りL
iを具体的に算出する方法の一例を説明する。
【0058】
図8は、本実施の形態に係るi番目の畳み込み層の偏りL
iを具体的に算出する方法の一例を説明するための図である。
図8では、
図7に示される実際の出力値から、畳み込み層の偏りを算出する方法の一例について説明する。
【0059】
すなわち、まず、偏り算出部20は、i番目の畳込み層におけるチャネル1~チャネル8それぞれの実際の出力値に対して絶対値を取り、チャネル毎に最大値を算出する(ステップ1)。
【0060】
次に、偏り算出部20は、ステップ1において算出した全チャネルに渡る最大値のうち最も大きな値を求める(ステップ2)。
図8に示す例では、偏り算出部20は、チャネル4の最大値を、チャネル1~8のうちで最も大きい値として求める。
【0061】
次に、偏り算出部20は、ステップ1において算出した各チャネルの最大値を、ステップ2で求めた最大値に0割り防止の小さい値を足した値で割り、チャネル1~8のうちで最も大きい値が1になるように正規化する(ステップ3)。
図8に示す例では、偏り算出部20は、ステップ1において算出したチャネル1~8のそれぞれの最大値を、例えば1×10
-7(1E-7とも表記される)で割り、チャネル4の最大値が1になるように正規化する。なお、0割り防止の小さい値は、1×10
-7に限らず、0割りを防止できる小さい値であればどのような数でもよい。
【0062】
次に、偏り算出部20は、ステップ3で正規化した各チャネルの最大値の総和を算出し、算出した総和をチャネル数で割る(ステップ4)。
図8に示す例では、偏り算出部20は、ステップ3で正規化した各チャネルの最大値の総和としてチャネル1~8の棒グラフの高さの和を算出して、算出した和を8で割る。
【0063】
次に、偏り算出部20は、ステップ4で算出した値を1から引いた値を、i番目の畳み込み層の偏りL
iとして算出する(ステップ5)。
図8に示す例では、偏り算出部20は、(1-(正規化したチャネル1~8の棒グラフの高さの和/8))を、偏りL
iとして算出する。ここで、(1-(正規化したチャネル1~8の棒グラフの高さの和/8))は、チャネル1~8の実際の出力値(最大値)の分布と、チャネル4の出力値を一様に並べたときの理想的な分布との差分の面積となる。
【0064】
なお、i番目の畳み込み層の偏りL
iを算出する具体的な方法は、
図8を用いて説明した場合に限らない。例えば、実際の出力値(最大値)が小さいチャネルの最大値を、ステップ4及びステップ5の計算に参加させないようにしてもよい。以下、この場合について
図9を用いて説明する。
【0065】
図9は、本実施の形態に係るi番目の畳み込み層の偏りL
iを具体的に算出する方法の別の例を説明するための図である。
図9でも、
図7に示される実際の出力値から畳み込み層の偏りを算出する方法を説明する。
図9に示す例は、
図8に示す例と比較して、ステップ4aが異なっている。
図9に示されるステップ1~3の計算手法は、
図8に示されるステップ1~3で説明した計算手法と同じであるので説明を省略する。
【0066】
ステップ4aでは、偏り算出部20は、ステップ3で正規化した各チャネルの最大値のうち閾値以上となるチャネルの最大値の総和を算出し、算出した総和をチャネル数で割る。
図9に示す例では、偏り算出部20は、ステップ3で正規化したチャネル1~8の最大値(棒グラフの高さ)のうち閾値以上となるチャネル1~2、4~5及び7~8の最大値の総和を算出している。そして、偏り算出部20は、算出した総和を、閾値以上のチャネル数である6で割る。
【0067】
次に、偏り算出部20は、ステップ4aで算出した値を1から引いた値を、i番目の畳み込み層の偏りL
iとして算出する(ステップ5)。
図9に示す例では、偏り算出部20は、(1-(正規化したチャネル1~2、4~5及び7~8の6本の棒グラフの高さの和/6))を、偏りL
iとして算出する。ここで、(1-(正規化したチャネル1~2、4~5及び7~8の6本の棒グラフの高さの和/6))は、チャネル1~2、4~5及び7~8の実際の出力値(最大値)の分布と、チャネル4の出力値を一様に6本並べたときの理想的な分布との差分の面積となっている。
【0068】
このように、偏り算出部20は、偏りとして、1以上の中間層それぞれにおける複数の出力値のうち当該複数の出力値の最大値に応じた閾値以上の出力値の偏りを算出してもよい。換言すると、偏り算出部20は、正規化されたチャネルの出力値(最大値)に応じて偏りの算出に参加させないようにしてもよい。これにより、ニューラルネットワーク111による推論に対して寄与の小さいチャネルの重みを0に近づけることができる。
【0069】
なお、ステップ4aに適用される閾値は、例えば、1/256であってもよいし、チャネル1~8のうちで最も大きい値の数%程度までであればよいが、これに限らない。ステップ4aに適用される閾値は、チャネルの出力値(最大値)が0に近い場合にその出力値を、偏りの算出に参加させないようにできる値であればよい。
【0070】
[1-3-2.学習実行部21]
学習実行部21は、偏り算出部20が算出した偏りを小さくするようにニューラルネットワーク111の各層のパラメータを学習させる。本実施の形態では、各層のパラメータは、中間層を含むニューラルネットワーク111の各層の重みである。
【0071】
本実施の形態では、学習実行部21は、
図5に示すように、損失関数算出部211と、最適化部212とを備える。
【0072】
<損失関数算出部211>
損失関数算出部211は、入力データをニューラルネットワーク111に適用して得られたニューラルネットワーク111の推論結果と、学習用データに含まれる正解ラベルとの誤差を算出する第1損失関数を算出する。本実施の形態では、第1損失関数には、交差エントロピー誤差(Cross-entropy Loss)を用いるとして説明するが、これに限らない。第1損失関数として、二乗和誤差(mean squared error)を用いてもよい。なお、交差エントロピー誤差を用いた場合、ニューラルネットワーク111の「推論値」の自然対数の値(ln値)と正解データ値とを乗算したものの総和を算出することになる。二乗和誤差を用いた場合、ニューラルネットワーク111の「推論値」と「正解データ値」との差の2乗の総和を算出することになる。
【0073】
また、損失関数算出部211は、算出した第1損失関数に、偏り算出部20により算出された偏りを加えた第2損失関数を算出する。
【0074】
本実施の形態では、損失関数算出部211は、第1損失関数に、偏り算出部20により算出された偏りとして、対象となる畳み込み層の偏りL
iの和を加えることで第2損失関数を算出する。より具体的には、損失関数算出部211は、第1損失関数に、
【数1】
を加えて第2損失関数を算出する。ここで、nは、ニューラルネットワーク111が有する畳み込み層の数である。また、α
i(1≦i≦n)はハイパーパラメータである。
【0075】
なお、第1損失関数に加える偏りは、ニューラルネットワーク111が有するすべての畳み込み層の偏りLiであるとして説明したが、これに限らない。当該すべての畳み込み層のうち一部の畳み込み層の偏りLiであってもよい。すなわち、上記のシグマ計算においていくつかのiでαi=0とすることで、ニューラルネットワーク111のうちの一部の畳込み層の出力値の偏りのみを第1損失関数に加えるとしてもよい。これにより、量子化誤差への寄与が小さい畳み込み層の出力値の偏りを、最適化の対象外とすることができる。
【0076】
また、損失関数算出部211は、第1損失関数に、偏り算出部20により算出された偏りとして、対象となる畳み込み層の偏りL
iの和を加えることで第2損失関数を算出すると説明したが、これに限られない。損失関数算出部211は、第1損失関数に、偏りを引数とする関数であって当該偏りが大きいほど第2損失関数への寄与が大きくなる関数を加えることで、第2損失関数を算出してもよい。より具体的には、損失関数算出部211は、第1損失関数に、
【数2】
を加えて第2損失関数を算出してもよい。
【0077】
ここで、
図10A~10Cを用いて、偏りとして加算される関数f
i(x)の一例について説明する。
【0078】
【0079】
すなわち、関数f
i(x)は、
図10Aに示すような、
【数3】
で表されるxを底とする指数関数であってもよいし、
図10Bに示すような、
【数4】
で表される関数であってもよい。また、関数f
i(x)は、
図10Cに示すような、
【数5】
で表される関数であってもよい。
【0080】
このような関数fi(x)を、偏りとして加算することで、偏りLiの値が大きいほど第2損失関数への寄与を大きくすることできる。その結果、後述する最適化の際に比較的小さな偏りLiの値は許容されつつ第2損失関数が最適化されることになる。
【0081】
<最適化部212>
最適化部212は、損失関数算出部211により算出された第2損失関数を最適化することにより、偏り算出部20により算出された偏りを小さくするようにニューラルネットワーク111の各層のパラメータを学習させる。
【0082】
つまり、最適化部212は、第2損失関数を最小化する学習(最適化)を行うことで、1以上の中間層それぞれにおける複数の出力値の偏りを減らしつつ、ニューラルネットワークの重みなどのパラメータを学習させることができる。
【0083】
本実施の形態では、最適化部212は、第2損失関数をAdamで最適化し、第2損失関数が最小となるように、ニューラルネットワーク111の重みを更新することで、ニューラルネットワーク111を学習する。ここで、Adamは、確率的勾配降下法(SGD:Stochastic Gradient Descent)にモーメンタムと適応学習率を組み合わせた最適化手法である。なお、第2損失関数の最適化手法は、Adamに限らない。例えば、第2損失関数の最適化手法は、確率的勾配降下法だけでもよいし、RMSpropまたはLARS(Layer-wise Adaptive Rate Scaling)でもよい上、これらに限らない。
【0084】
[2.学習装置10の動作]
以上のように構成された学習装置10の動作の一例について以下説明する。
【0085】
図11は、本実施の形態における学習装置10の動作概要を示すフローチャートである。
【0086】
まず、学習装置10は、予め用意された学習用データに含まれる入力データをニューラルネットワーク111に適用して得られた中間層における複数の出力値の偏りを算出する(S1)。例えば、ニューラルネットワーク111がCNNである場合、偏り算出部20は、ニューラルネットワーク111が有する畳み込み層が出力する複数の出力値であるチャネル数枚の出力値の偏りを算出する。そして、学習装置10は、複数の出力値の分布と、複数の出力値のうちの最大値を一様に並べた一様分布との差分を算出することで、チャネルごとの出力値の偏りを算出する。
【0087】
次に、学習装置10は、ステップS1で算出した偏りを小さくするようにニューラルネットワーク111の各層のパラメータを学習させる(S2)。
【0088】
図12は、本実施の形態における学習装置10の動作詳細の一例を示すフローチャートである。
【0089】
図12に示すように、まず、学習装置10は、それぞれ複数の出力値を出力する1以上の中間層を有するニューラルネットワーク111を読み込む(S10)。例えば、学習装置10は、画像の分類タスクを解くニューラルネットワーク111を読み込む。なお、学習装置10は、画像の分類タスクを解くニューラルネットワーク111を読み込む場合に限らない。学習装置10は、コンピュータビジョンにおける認識タスク、コンピュータビジョンの検出タスク、またはセグメンテーションタスクを解くニューラルネットワーク111を読み込んでもよい。また、学習装置10は、自然言語処理タスクまたは強化学習タスクを解くニューラルネットワーク111を読み込んでもよい。
【0090】
次に、学習装置10は、第1損失関数を算出する(S11)。より具体的には、学習装置10は、入力データをニューラルネットワーク111に適用して得られたニューラルネットワーク111の推論結果と学習用データに含まれる正解ラベルとの誤差を算出する第1損失関数を算出する。ここで、第1損失関数には、例えば交差エントロピー誤差が用いられる。
【0091】
次に、学習装置10は、偏りを算出する(S12)。より具体的には、学習装置10は、予め用意された学習用データに含まれる入力データをニューラルネットワーク111に適用して得られた1以上の中間層それぞれにおける複数の出力値の偏りを算出する。なお、ステップS11とステップS12との順番はこの順に限らず反対でもよい。
【0092】
ここで、ステップS12の具体的な動作例について
図13を用いて説明する。
【0093】
図13は、
図12のステップS12の具体的な動作の一例を示すフローチャートである。
【0094】
以下では、ニューラルネットワーク111が有する中間層が畳み込み層であるとして以下説明する。
【0095】
図13に示すように、まず、学習装置10は、i番目の畳込み層の複数の出力値に対して絶対値を取り、チャネル毎に最大値を算出する(S121)。より具体的には、学習装置10は、i番目の畳込み層におけるチャネルそれぞれの実際の出力値に対して絶対値を取り、チャネル毎に最大値を算出する。
【0096】
次いで、学習装置10は、ステップS121において算出した全チャネルに渡って最大値のうち最も大きな値を算出する(S122)。
【0097】
次いで、学習装置10は、ステップS122において算出した最も大きな値が1になるように正規化する(S123)。より具体的には、学習装置10は、ステップS121において算出した各チャネルの最大値を、ステップS122で算出した最大値に0割り防止の小さい値を加えた値で割り、ステップS122において算出した最も大きな値が1になるように正規化する。
【0098】
次いで、学習装置10は、ステップS123で正規化した各チャネルの最大値の総和を、チャネル数で割った値を算出する(S124)。
【0099】
次いで、学習装置10は、ステップS124で算出した値を1から引いた値を、i番目の畳み込み層の偏りLiとして算出する(S125)。
【0100】
最後に、学習装置10は、他の畳み込み層で偏りを算出しない場合(S126でNo)、ここでの処理を終了し、
図12に示すステップS13に進む。なお、学習装置10は、他の畳み込み層でも偏りを算出する場合(S126でYes)、ステップS121から処理をやり直す。
【0101】
【0102】
次に、学習装置10は、ステップS11で算出した第1損失関数に、ステップS12で算出した偏りを加えた第2損失関数を算出する(S13)。例えば、学習装置10は、ステップS11で算出した第1損失関数に、ステップS12で算出した畳み込み層の偏りLiの和を加えることで第2損失関数を算出する。なお、学習装置10は、ステップS11で算出した第1損失関数に、ステップS12で算出した偏りを引数とする関数であって当該偏りが大きいほど第2損失関数への寄与が大きくなる関数を加えることで、第2損失関数を算出してもよい。
【0103】
次に、学習装置10は、Adamで最適化し、第2損失関数が最小となるように、ニューラルネットワーク111の重みを更新する(S14)。より具体的には、学習装置10は、ステップS13で算出した第2損失関数をAdamで最適化することにより、ステップS12で算出した偏りを小さくするようにニューラルネットワーク111の各層のパラメータを学習させる。なお、上述したが、第2損失関数の最適化手法は、Adamに限らない。例えば、第2損失関数の最適化手法は、確率的勾配降下法だけでもよいし、RMSpropまたはLARSでもよい。
【0104】
このように、本実施の形態では、Per-Tensor量子化を行う前に、浮動小数点で表現されたニューラルネットワーク111の1以上の中間層の偏りを小さくするように、ニューラルネットワーク111の重みを学習する。
【0105】
[3.効果等]
本実施の形態では、Per-Tensor量子化を行う前に、浮動小数点で表現されたニューラルネットワーク111の1以上の中間層の取り得る値の偏りを小さくするように、ニューラルネットワーク111の重みを学習する。
【0106】
より具体的には、それぞれ複数の出力値を出力する1以上の中間層を有するニューラルネットワークの学習を実行する学習方法であって、予め用意された学習用データに含まれる入力データを前記ニューラルネットワークに適用して得られた前記1以上の中間層それぞれにおける複数の出力値の偏りを算出する偏り算出ステップと、前記偏りを小さくするように前記ニューラルネットワークの各層のパラメータを学習させる学習実行ステップとを含む、学習方法を実行する。
【0107】
これにより、1以上の中間層それぞれの複数の出力値の偏りを減らしたニューラルネットワークに対してPer-Tensor量子化を行うことができるので、Per-Tensor量子化しても当該ニューラルネットワークの推論精度の劣化を抑制できる。
【0108】
よって、SoCなどの限られた計算リソースでPer-Tensor量子化されたニューラルネットワークを用いて推論を行う場合でも、推論精度と演算量とを両立させることができる。
【0109】
なお、推論精度は、量子化後のモデルの出力値が、正解を推論したか否かを示す場合の適合率及び再現率に限らず、適合率、再現率、適合率及び再現率の調和平均により算出されるF値、並びに、正解率のうちの少なくとも一の組み合わせであればよい。
【0110】
また、上記の実施の形態では、ニューラルネットワークには画像などの2次元データが入力され、チャネルの出力として2次元データとなる出力値が出力されるとして説明したが、これに限らない。ニューラルネットワークには3次元データが入力され、中間層は3次元特徴マップに対する畳み込みを行い、3次元データとなる出力値が出力されるとしてもよく、同様のことが言える。
【0111】
また、上記の実施の形態では、ニューラルネットワークが有する中間層として、畳み込み層を例に挙げて説明したが、これに限らない。これについて図を用いて説明する。
【0112】
【0113】
上記の実施の形態では、ニューラルネットワーク111が有する中間層は、例えば
図14AのConvで示されるように畳み込み層であるとして説明したが、これに限らない。畳み込み層は、Depthwise Convolutionであってもよいし、Group Convolutionであってもよい。
【0114】
また、ニューラルネットワーク111が有する中間層は、
図14BのConv及びNormで示されるように、畳み込みとそれに続く正規化層とで構成されていてもよい。すなわち、ニューラルネットワーク111が有する1以上の中間層は、畳み込み層と畳み込み層に続く正規化層とで構成される層を含んでいてもよい。この場合、当該層における複数の出力値の偏りは、正規化層より得られる複数の出力値の偏りとなる。正規化層にはBatch NormalizationやLayer Normalization等を用いることができる。
【0115】
なお、ニューラルネットワーク111が有する中間層は、
図14CのConv、Activation及びNormで示されるように、畳み込みとそれに続く正規化層との間において、さらにアクティベーション層が含まれた構成であってもよい。ここで、アクティベーション層は、活性化関数と呼ばれる関数によって特徴づける層であり、活性化関数にはReLU、ReLU6、Swish、GELU、Tanh、Sigmoid等を用いることができる。
【0116】
また、ニューラルネットワーク111が有する中間層は、
図14DのConv及びActivationで示されるように、畳み込みとそれに続くアクティベーション層とで構成されていてもよい。すなわち、ニューラルネットワーク111が有する1以上の中間層は、畳み込み層と畳み込み層に続くアクティベーション層とで構成される層を含んでいてもよい。この場合、当該層における複数の出力値の偏りは、アクティベーション層より得られる複数の出力値の偏りである。
【0117】
なお、ニューラルネットワーク111が有する中間層は、
図14EのConv、Norm及びActivationで示されるように、畳み込みとそれに続くアクティベーション層との間においてさらに正規化層が含まれた構成であってもよい。
【0118】
(その他の実施の形態)
以上、本開示に係る学習装置及び学習方法などについて、各実施の形態に基づいて説明したが、本開示は、これらの実施の形態に限定されるものではない。本開示の主旨を逸脱しない限り、当業者が思いつく各種変形を各実施の形態に施したものや、各実施の形態における一部の構成要素を組み合わせて構築される別の形態も、本開示の範囲内に含まれる。
【0119】
また、以下に示す形態も、本開示の一つ又は複数の態様の範囲内に含まれてもよい。
【0120】
(1)上記の学習装置を構成する構成要素の一部は、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムであってもよい。前記RAM又はハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0121】
(2)上記の学習装置を構成する構成要素の一部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
【0122】
(3)上記の学習装置を構成する構成要素の一部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
【0123】
(4)また、上記の学習装置を構成する構成要素の一部は、前記コンピュータプログラム又は前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【0124】
また、上記の学習装置を構成する構成要素の一部は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【0125】
(5)本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【0126】
(6)また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【0127】
(7)また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【0128】
(8)また、上記の学習装置を構成する構成要素の一部をクラウドまたはサーバ装置でおこなってもよい。
【0129】
(9)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【0130】
本開示は、Socなどに組み込むために量子化処理を行うニューラルネットワークの学習を実行する学習装置、学習方法、及び、プログラムなどに利用できる。
【符号の説明】
【0131】
1 取得部
2 学習部
10 学習装置
20 偏り算出部
21 学習実行部
111 ニューラルネットワーク
211 損失関数算出部
212 最適化部
1000 コンピュータ
1001 入力装置
1002 出力装置
1003 CPU
1004 内蔵ストレージ
1005 RAM
1007 読取装置
1008 送受信装置
1009 バス