(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-05
(45)【発行日】2024-08-14
(54)【発明の名称】ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、及びコンピュータプログラム
(51)【国際特許分類】
G06N 3/082 20230101AFI20240806BHJP
G06N 3/04 20230101ALI20240806BHJP
【FI】
G06N3/082
G06N3/04
(21)【出願番号】P 2020123973
(22)【出願日】2020-07-20
【審査請求日】2023-04-07
(73)【特許権者】
【識別番号】504145283
【氏名又は名称】国立大学法人 和歌山大学
(74)【代理人】
【識別番号】100111567
【氏名又は名称】坂本 寛
(72)【発明者】
【氏名】和田 俊和
(72)【発明者】
【氏名】菅間 幸司
【審査官】北川 純次
(56)【参考文献】
【文献】特開2019-105899(JP,A)
【文献】特開2020-109647(JP,A)
【文献】特開平04-175964(JP,A)
【文献】米国特許出願公開第2019/0378017(US,A1)
【文献】米国特許出願公開第2019/0347536(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02-3/10
(57)【特許請求の範囲】
【請求項1】
恒等写像パスを有する第1ニューラルネットワークから、ニューロンのプルーニングが行われる第2ニューラルネットワークを生成するための生成処理を実行するよう構成されたニューラルネットワーク処理装置であって、
前記第1ニューラルネットワークは、
それぞれがニューロンを有する複数の層と、
各ニューロンに結合する重みと、
を備え、
前記複数の層は、
前記恒等写像パスの起点となる起点層と、
前記恒等写像パスの終点となる終点層と、
前記起点層と前記終点層との間に存在する中間層と、
を有し、
前記生成処理は、前記第2ニューラルネットワークを生成するために、
補完ニューロンを前記中間層に追加するとともに、前記補完ニューロンに結合する重みを設定する第1処理と、
前記恒等写像パスを削除する第2処理と、
を有し、
前記生成処理において、前記第2ニューラルネットワークは、前記補完ニューロンと前記補完ニューロンに結合する重みが、前記恒等写像パスの役割を担うように生成される
ニューラルネットワーク処理装置。
【請求項2】
前記ニューロンは、活性化関数を有し、前記活性化関数はレルーである
請求項1に記載のニューラルネットワーク処理装置。
【請求項3】
前記第2ニューラルネットワークにプルーニングをする処理と、
前記生成処理とプルーニングをする前記処理との間において行われる、前記第2ニューラルネットワークの学習処理と、
を更に実行するよう構成されている
請求項1又は請求項2に記載のニューラルネットワーク処理装置。
【請求項4】
前記学習処理は、正則化を用いて第2ニューラルネットワークにおける重みを最適化することを含み、
前記正則化は、前記重みと、前記学習処理開始時における前記重みの初期値と、の差を用いて行われる
請求項3に記載のニューラルネットワーク処理装置。
【請求項5】
恒等写像パスを有する第1ニューラルネットワークから、ニューロンのプルーニングが行われる第2ニューラルネットワークを生成することを有するニューラルネットワーク処理
をコンピュータが実行するニューラルネットワーク処理方法であって、
前記第1ニューラルネットワークは、
それぞれがニューロンを有する複数の層と、
各ニューロンに結合する重みと、
を備え、
前記複数の層は、
前記恒等写像パスの起点となる起点層と、
前記恒等写像パスの終点となる終点層と、
前記起点層と前記終点層との間に存在する中間層と、
を有し、
前記ニューラルネットワーク
処理は、前記第2ニューラルネットワークを生成するために、
補完ニューロンを前記中間層に追加するとともに、前記補完ニューロンに結合する重みを設定すること、及び
前記恒等写像パスを削除すること、を有し、
前記第2ニューラルネットワークは、前記補完ニューロンと前記補完ニューロンに結合する重みが、前記恒等写像パスの役割を担うように生成される
ニューラルネットワーク処理方法。
【請求項6】
前記ニューロンは、活性化関数を有し、前記活性化関数はレルーである
請求項5に記載のニューラルネットワーク処理方法。
【請求項7】
前記ニューラルネットワーク処理は、
前記第2ニューラルネットワークにプルーニングをすることと、
前記第2ニューラルネットワークを生成することと前記第2ニューラルネットワークにプルーニングをすることとの間において行われる、前記第2ニューラルネットワークの学習と、
を更に有する
請求項5又は請求項6に記載のニューラルネットワーク処理方法。
【請求項8】
前記学習は、正則化を用いて第2ニューラルネットワークにおける重みを最適化することを含み、
前記正則化は、前記重みと、前記学習の開始時における前記重みの初期値と、の差を用いて行われる
請求項7に記載のニューラルネットワーク処理方法。
【請求項9】
恒等写像パスを有する第1ニューラルネットワークから、ニューロンのプルーニングが行われる第2ニューラルネットワークを生成するための生成処理を有する処理をコンピュータ
に実行させるためのコンピュータプログラムであって、
前記第1ニューラルネットワークは、
それぞれがニューロンを有する複数の層と、
各ニューロンに結合する重みと、
を備え、
前記複数の層は、
前記恒等写像パスの起点となる起点層と、
前記恒等写像パスの終点となる終点層と、
前記起点層と前記終点層との間に存在する中間層と、
を有し、
前記生成処理は、前記第2ニューラルネットワークを生成するために、
補完ニューロンを前記中間層に追加するとともに、前記補完ニューロンに結合する重みを設定する第1処理と、
前記恒等写像パスを削除する第2処理と、
を有し、
前記生成処理において、前記第2ニューラルネットワークは、前記補完ニューロンと前記補完ニューロンに結合する重みが、前記恒等写像パスの役割を担うように生成される
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、及びコンピュータプログラムに関する。
【背景技術】
【0002】
ニューラルネットワークには、Residual Network(ResNet)のように恒等写像パスを有するニューラルネットワークがある。ResNetは、非特許文献1に記載されている。ResNetは、多くの恒等写像パスを有する。ResNetは、恒等写像パスを有することにより、画像認識などのタスクをうまく学習させることができ、より高精度なモデルを構築できる。
【先行技術文献】
【非特許文献】
【0003】
【文献】He, K., Zhang, X., Ren, S., Sun, J.: Deep residual learning for image recognition. pp. 770-778 (2016)
【文献】Kamma, K., Wada, T.: Reconstruction error aware pruning for accelerating neural networks. In: Proc. International Symposium on Visual Computing (2019)
【文献】Duan, K., Bai, S., Xie, L., Qi, H., Huang, Q., Tian, Q.: Centernet: Keypoint triplets for object detection. In: The IEEE International Conference on Computer Vision (ICCV) (October 2019)
【文献】Lin, T.Y., Maire, M., Belongie, S.J., Bourdev, L.D., Girshick, R.B., Hays, J., Perona, P., Ramanan, D., Dollar, P., Zitnick, C.L.: Microsoft coco: Common objects in context. CoRR (2014)(2014)
【発明の概要】
【0004】
恒等写像パスを有するニューラルネットワークアーキテクチャは、恒等写像パスによる分岐が多い構造を持つため、プルーニング(Pruning)によって学習済みニューラルネットワーク(学習済みモデル)を圧縮する場合に不利である。プルーニングは、学習済モデルから、冗長又は不要なニューロンを取り除くことである。適切なプルーニングによって、学習済モデルの性能を保ちつつ、モデルを圧縮することができる。モデルを圧縮することにより、計算機への演算負荷を小さくすることができる。
【0005】
しかし、恒等写像パスを有するニューラルネットワークにおいてプルーニングをする際には、恒等写像パスが接続された層に含まれるニューロンを削減してはならないという制約が生じる。このため、恒等写像パスを有するニューラルネットワークにおいては、恒等写像パスが接続されていない層でのみニューロンをプルーニングにすることになる。このため、ResNetのように恒等写像パスを有するニューラルネットワークにおいては、プルーニングによるニューラルネットワークの圧縮効果は限定的である。
【0006】
したがって、恒等写像パスを有するニューラルネットワークにおけるプルーニングの制約を低減することが望まれる。本開示において、かかる課題は、恒等写像パスによる枝分かれを解消し、ニューラルネットワークを直列化することによって解決される。直列化されたニューラルネットワークは恒等写像パスを同じ機能を内包する。更なる詳細は、後述の実施形態として説明される。
【図面の簡単な説明】
【0007】
【
図1】
図1は、ニューラルネットワーク処理装置及びニューラルネットワーク利用装置の構成図である。
【
図2】
図2は、圧縮処理の手順を示すフローチャートである。
【
図3】
図3は、恒等写像パスを有しないDNNの概略構成図である。
【
図5】
図5は、ResNetに対するプルーニングの模式図である。
【
図7】
図7は、第2ニューラルネットワーク生成処理の手順を示すフローチャートである。
【
図9】
図9は、
図8のSRNに等価なResNetの概略図である。
【
図11】
図11は、実験における各実施例の削減率を示す表である。
【発明を実施するための形態】
【0008】
<1.ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、及びコンピュータプログラムの概要>
【0009】
(1)実施形態に係る装置は、恒等写像パスを有する第1ニューラルネットワークから、ニューロンのプルーニングが行われる第2ニューラルネットワークを生成するための生成処理を実行するよう構成されたニューラルネットワーク処理装置である。前記第1ニューラルネットワークは、それぞれがニューロンを有する複数の層と、各ニューロンに結合する重みと、を備える。前記複数の層は、前記恒等写像パスの起点となる起点層と、前記恒等写像パスの終点となる終点層と、前記起点層と前記終点層との間に存在する中間層と、を有する。
【0010】
前記生成処理は、前記第2ニューラルネットワークを生成するために、補完ニューロンを前記中間層に追加するとともに、前記補完ニューロンに結合する重みを設定する第1処理と、前記恒等写像パスを削除する第2処理と、を有する。前記生成処理において、前記第2ニューラルネットワークは、前記補完ニューロンと前記補完ニューロンに結合する重みが、前記恒等写像パスの役割を担うように生成される。
【0011】
第2ニューラルネットワークは、恒等写像パスを有しないため、恒等写像パスが接続された層に含まれるニューロンを削減してはならないという制約が解消されている。したがって、恒等写像パスを有するニューラルネットワークにおけるプルーニングの制約が低減される。
【0012】
(2) 前記ニューロンは、活性化関数を有し、前記活性化関数はレルーであるのが好ましい。活性化関数がレルーであると、恒等写像パスを削除しても、恒等写像パスと等価な役割を担保するのが容易である。
【0013】
(3)ニューラルネットワーク処理装置は、前記第2ニューラルネットワークにプルーニングをする処理と、前記生成処置とプルーニングをする前記処理との間において行われる、前記第2ニューラルネットワークの学習処理と、を更に実行するよう構成されているのが好ましい。プルーニングの前に学習処理を実行することで、プルーニングを実行しても、モデルの精度を高く保つことができる。
【0014】
(4)前記学習処理は、正則化を用いて第2ニューラルネットワークにおける重みを最適化することを含み、前記正則化は、前記重みと、前記学習処理開始時における前記重みの初期値と、の差を用いて行われるのが好ましい。この場合、重みが最適解から離れることを抑制できる。
【0015】
(5)実施形態に係る方法は、恒等写像パスを有する第1ニューラルネットワークから、ニューロンのプルーニングが行われる第2ニューラルネットワークを生成することを有するニューラルネットワーク処理方法である。前記第1ニューラルネットワークは、それぞれがニューロンを有する複数の層と、各ニューロンに結合する重みと、を備え、前記複数の層は、前記恒等写像パスの起点となる起点層と、前記恒等写像パスの終点となる終点層と、前記起点層と前記終点層との間に存在する中間層と、を有し、前記ニューラルネットワーク処理方法は、前記第2ニューラルネットワークを生成するために、補完ニューロンを前記中間層に追加するとともに、前記補完ニューロンに結合する重みを設定すること、及び前記恒等写像パスを削除すること、を有し、前記第2ニューラルネットワークは、前記補完ニューロンと前記補完ニューロンに結合する重みが、前記恒等写像パスの役割を担うように生成される。
【0016】
(6)前記ニューロンは、活性化関数を有し、前記活性化関数はレルーであるのが好ましい。
【0017】
(7) 前記第2ニューラルネットワークにプルーニングをすることと、前記第2ニューラルネットワークを生成することと前記第2ニューラルネットワークにプルーニングをすることとの間において行われる、前記第2ニューラルネットワークの学習と、を更に有するのが好ましい。
【0018】
(8)前記学習は、正則化を用いて第2ニューラルネットワークにおける重みを最適化することを含み、前記正則化は、前記重みと、前記学習の開始時における前記重みの初期値と、の差を用いて行われるのが好ましい。
【0019】
(9)実施形態に係るコンピュータプログラムは、恒等写像パスを有する第1ニューラルネットワークから、ニューロンのプルーニングが行われる第2ニューラルネットワークを生成するための生成処理を有する処理をコンピュータと機能させるためのコンピュータプログラムである。前記第1ニューラルネットワークは、それぞれがニューロンを有する複数の層と、各ニューロンに結合する重みと、を備え、前記複数の層は、前記恒等写像パスの起点となる起点層と、前記恒等写像パスの終点となる終点層と、前記起点層と前記終点層との間に存在する中間層と、を有し、前記生成処理は、前記第2ニューラルネットワークを生成するために、補完ニューロンを前記中間層に追加するとともに、前記補完ニューロンに結合する重みを設定する第1処理と、前記恒等写像パスを削除する第2処理と、を有し、前記生成処理において、前記第2ニューラルネットワークは、前記補完ニューロンと前記補完ニューロンに結合する重みが、前記恒等写像パスの役割を担うように生成される。
【0020】
<2.ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、及びコンピュータプログラムの例>
【0021】
図1は、実施形態に係るニューラルネットワーク処理装置10(以下、「処理装置10」という)とニューラルネットワーク利用装置100(以下、「利用装置100」という)とを示している。実施形態に係る処理装置10は、ニューラルネットワークN1を圧縮して小規模化するための圧縮処理21を実行する。すなわち、処理装置10は、ニューラルネットワークの圧縮装置でもある。
【0022】
ニューラルネットワークは、複数の人工ニューロン(「ノード」ともいう)が結合した人工的な計算機構である。以下では、人工ニューロンを単に、ニューロンともいう。ニューラルネットワークは、例えば、ディープニューラルネットワーク(DNN)である。DNNは、例えば、全結合型ニューラルネットワーク(FCN)であってもよいし、畳み込み型ニューラルネットワーク(CNN)であってもよい。以下では、圧縮処理21の対象となるニューラルネットワークN1を、「第1ニューラルネットワーク」又は「原ニューラルネットワーク」といい、圧縮されたニューラルネットワークN2を「圧縮ニューラルネットワーク」という。なお、実施形態に係る処理装置10は、原ニューラルネットワークN1の機械学習(深層学習)のための処理も実行可能である。処理装置10は、学習済の原ニューラルネットワークN1を圧縮する。
【0023】
処理装置10は、1又は複数のプロセッサ20及び記憶装置30を有するコンピュータによって構成されている。1又は複数のプロセッサ20は、例えば、グラフィックプロセッシングユニット(GPU)を含む。1又は複数のプロセッサ20は、さらにCPUを含んでもよい。GPUのような大規模並列計算機構は、大規模なニューラルネットワークに関する処理を実行するための大量の計算に適している。
【0024】
記憶装置30は、プロセッサ20によって実行されるコンピュータプログラム31を記憶している。プロセッサ20は、コンピュータプログラム31を実行することで、圧縮処理21を行う。圧縮処理21は、プルーニングの前処理としての第2ニューラルネットワークの生成処理22と、プルーニング24(Pruning;枝刈り)と、学習処理23,25と、を有する。
【0025】
記憶装置30は、圧縮処理21によって製造された圧縮ニューラルネットワークN2を表すデータ(圧縮ニューラルネットワークデータ)N20を記憶することができる。圧縮ニューラルネットワークデータN20は、圧縮ニューラルネットワークN2を表現する各種のパラメータ(重み、結合関係など)からなるデータである。処理装置10は、圧縮ニューラルネットワークデータN20を、ニューラルネットワークエンジン等へ、出力することができる。圧縮ニューラルネットワークデータN20は、ニューラルネットワークエンジンに読み込まれることで、そのニューラルネットワークエンジンを圧縮ニューラルネットワークN2として機能させる。
【0026】
利用装置100は、圧縮ニューラルネットワークデータN20を読み込んで、圧縮ニューラルネットワークN2として機能するニューラルネットワークエンジンを有する。ニューラルネットワークエンジンは、例えば、プロセッサ200と記憶装置300とを備える。プロセッサ200は、例えば、組み込み系システムにおける低消費電力のCPUでよい。圧縮ニューラルネットワークデータN20は、原ニューラルネットワークN1のデータに比べて、サイズが小さいため、低消費電力のCPUによる処理が可能である。
【0027】
組み込み系システムは、汎用的なコンピュータシステムではなく、特定の用途に向けられたコンピュータシステムであり、例えば、スマートフォン・家電などの家庭用機器、産業用ロボットなどの産業用機器、各種の医療用機器、自動車・ドローンなどのビークル、及びその他の機器におけるコンピュータシステムである。組み込み系システムでは、プロセッサとして、低消費電力のCPUが使われることが多いが、圧縮ニューラルネットワークデータN20は、データサイズが小さいため、実行が容易である。
【0028】
圧縮ニューラルネットワークN2は、例えば、画像・音声の変換、セグメンテーション、識別などの用途に用いられる。より具体的には、例えば、店舗等の客数計測、男女・年齢層分析、車両計数、車種分析など、対象物の画像から必要な情報を抽出するために用いることができる。原ニューラルネットワークN1は大規模であり、計算コストが大きいため、組み込み系システムでの実行が困難であるが、圧縮ニューラルネットワークN2は、小規模化されているため、組み込み系システムでの実行が容易である。
【0029】
以下、圧縮処理21について説明する。以下では、理解の容易のため、全結合型ニューラルネットワーク(FCN)を前提に、実施形態に係る圧縮処理21を説明するが、実施形態に係る同様の圧縮処理21は、畳み込み型ニューラルネットワーク(CNN)にも適用できる。
【0030】
図2に示すように、圧縮処理21では、まず、プルーニング24の第1前処理として、第1ニューラルネットから第2ニューラルネットワークの生成処理22が行われる。第1ニューラルネットワークは、一例として、恒等写像パスを有する学習済ResNetであるものとする。生成処理22は、学習済みResNetを直列化する。ここでは、直列化されたResNetを、Serialized Residual Network(SRN)という。つまり、実施形態に係る生成処理22は、第2ニューラルネットワークとしてのSRNモデルの生成処理である。
【0031】
ここでは、まず、ResNetのアーキテクチャとその問題点について説明する。
図3は、恒等写像パスを有しない一般的なディープニューラルネットワーク(DNN)を示している。
図3のDNNは、FCNである。
図3に示すDNNは、複数の層L1,L2,L3を備え、各層は複数のニューロンを有する。
図3において、ニューロンは丸印で示されている。ニューロンを示す丸印間を接続する直線は、ニューロン間の結合を示し、ニューロン間の結合は、重みを有する。
図3に示すDNNは、恒等写像パスによる分岐を有さず直列なアーキテクチャを有する。
【0032】
図3に示すニューラルネットワークに入力データを与えると、各ニューロンはスカラー値と出力する。したがって、各層に含まれる全てのニューロンの出力は、各層のニューロン数と同じ次元を持つベクトルとして表現できる。例えば、
図3の層L1の出力ベクトルはx
1で表され、x
1の次元数は、層L1に含まれるニューロンの数D1に等しい。同様に、層L2の出力ベクトルはx
2で表され、x
2の次元数は、層L2に含まれるニューロンの数D2に等しい。また、層L3の出力ベクトルはx
3で表され、x
3の次元数は、層L3に含まれるニューロンの数D3に等しい。各出力ベクトルx
1,x
2,x
3は、次の層に入力される入力ベクトルになる。
【0033】
各層においては、入力されるベクトルx
1,x
2,x
3に対して、重みを用いた線形写像及び活性化関数を用いた非線形写像が適用され、出力ベクトルが得られる。例えば、ニューロン数がD1である層L1に含まれる複数のニューロン全ての出力が出力ベクトルx
1で表される場合、ニューロン数がD2である次層L2にはx
1が入力ベクトルとして入力される。このとき、x
1に適用される線形写像のための重み行列をW
1とし、各ニューロンの活性化関数をfとすると、層L2における出力ベクトルx
2を求めるため、
図3の式(1)の計算が行われる。なお、重み行列W
1の行列サイズは、D2×D1である。
【0034】
また、出力ベクトルx
2が、ニューロン数がD3である次層L3に、入力ベクトルとして入力される。このとき、x
2に適用される線形写像のための重み行列をW
2とし、各ニューロンの活性化関数をfとすると、層L3における出力ベクトルx
3を求めるため、
図3の式(2)の計算が行われる。なお、重み行列W
2の行列サイズは、D3×D2である。
【0035】
図4は、ResNetを示している。
図4に示すResNetは、
図3に示すニューラルネットワークに、層L1と層L3とを接続する恒等写像パスを追加したものである。ResNetにおいて、各ニューロンは活性化関数fを有し、活性化関数fはレルー(ReLU)である。以下では、恒等写像パスの起点となる層L1を起点層L1といい、恒等写像パスの終点となる層L3を終点層L3という。起点層L1と終点層L3との間にある層L2を、中間層L2という。起点層L1と終点層L3との間には、1又は複数の中間層L2が存在する。なお、実際のResNetは、
図4に示すアーキテクチャが直列に多数積み重なって形成される。すなわち、ResNetは、複数の恒等写像パスを有する。
図4に示すアーキテクチャが直列に多数積み重なって形成される場合、ある恒等写像パスに接続された終点層は、別の恒等写像パスの起点層になることができる。
【0036】
ResNetでは、出力ベクトルx
2及びx
3を求めるため、
図4に示す式(3)及び式(4)の計算が行われる。ここで、式(1)と式(3)は同じである。一方、式(2)と式(4)とは異なる。式(2)と式(4)との違いは、ResNetの恒等写像パスにより生じたものである。ResNetにおける式(4)では、2度目の活性化関数fによる非線形写像の直前に、W
2x
2+x
1の計算が行われている。式(4)における“+x
1”が恒等写像パスに相当する計算である。
【0037】
式(4)において、“W
2x
2”と“x
1”との和を計算する際、“W
2x
2”の次元と“x
1”の次元とは一致している必要がある。しかし、
図5のように、恒等写像パスに接続された起点層L1に含まれるニューロンをプルーニングにより削減すると、x
1の次元数が減少し、“W
2x
2”の次元数と一致しなくなる。この結果、式(4)における“W
2x
2+x
1”の計算が行えなくなる。同様に、終点層L3に含まれるニューロンをプルーニングにより削減すると、やはり、“W2x2”の次元と“x1”の次元とは一致しなくなる。
【0038】
以上の理由から、ResNetでは、恒等写像パスに接続された層L1,L3においては、プルーニングを行うことができない。プルーニングによってResNetを圧縮する場合には、恒等写像パスに接続されていない中間層L2のみを対象にせざるを得ない。このため、ResNetモデルをそのままプルーニングをすると、ニューロンの削減数を多くした場合、学習済みモデルの性能が劣化しやすい。
【0039】
プルーニングが可能である層が限られているという制約を解消するため、
図2に示す生成処理22では、第1ニューラルネットワークである学習済みResNetを直列化して、学習済みResNetと等価なSRNモデル(第2ニューラルネットワーク)を生成する。SRNモデルは、一般的なDNNと同様に直列なアーキテクチャを持つが、ResNetの恒等写像パスを再現することができる。
【0040】
図6は、
図4に示すResNetを直列化したSRNモデルを示す。
図6に示すSRNモデルは、恒等写像パスによる分岐を有しておらず、直列なアーキテクチャである。
図6に示すSRNモデルにおいて、恒等写像パスに接続された起点層L1が有するニューロンの数(出力ベクトルx
1の次元数)は、
図4に示すResNetと同様である。したがって、起点層L1の出力ベクトルx
1は、
図4に示すResNetと同様である。
図6のSRNモデルにおいては、出力ベクトルx
1に適用される重み行列をW’
1と表す。重み行列をW’
1については後述する。
【0041】
SRNモデルの中間層L2には、前段である起点層L1のニューロンの数に応じた数D1の補完ニューロンが追加されている。例えば、
図4の起点層L1及び中間層L2のニューロンの数がそれぞれ4である場合、
図6に示すSRNモデルの中間層L2は、元々の4個のニューロンと、4個の補完ニューロンの計8個のニューロンを有する。これら4個の補完ニューロンと補間ニューロンに結合する重みとが、恒等写像パスの機能を代替する。なお、補完ニューロンの活性化関数もレルー(ReLU)である。
【0042】
図6のSRNモデルにおいては、中間層L2の出力ベクトルをx
2’と表し、出力ベクトルx
2’に適用される重み行列をW’
2と表す。重み行列をW’
2については後述する。
【0043】
図6に示すSRNモデルにおいて、恒等写像パスに接続された終点層L3が有するニューロンの数(出力ベクトルx
3の次元数)は、
図4に示すResNetと同様である。
図6のSRNモデルにおいては、終点層L3の出力ベクトルをx
3’と表す。
【0044】
重み行列をW’
1は、
図6の式(5A)に示すように、ResNetの重み行列W
1と単位行列Iとの連結で表される。単位行列のサイズは、D1×D1である。重み行列をW’
2は、
図6の式(6)に示すように、ResNetの重み行列W
2と単位行列Iとの連結で表される。単位行列のサイズは、D1×D1である。
【0045】
図6に示すSRNモデルにおいては、出力ベクトルx
2’を求めるため、
図6に示す式(7)の計算が行われる。また、出力ベクトルx
3’を求めるため、
図6に示す式(8)の計算が行われる。
図6に示すように、出力ベクトルx
2’は、出力ベクトルx
2と出力ベクトルx
1の連結である。また、
図6に示すように、出力ベクトルx
3’は、出力ベクトルx
3と等しい。よって、
図6に示すSRNモデルは、
図4に示すResNetと等価である。このように、恒等写像パスを有するResNetは、等価なSRNに置き換えることが可能である。
【0046】
図7は、恒等写像パスを有する第1ニューラルネットワークから、SRNのように直列化された第2ニューラルネットワークを得るための生成処理22の詳細を示している。まず、ニューラルネットワーク処理装置10のプロセッサ20は、第1ニューラルネットワークの恒等写像パスに接続されている一対の層(起点層L1及び終点層L3)を識別する(ステップS101)。また、プロセッサ20は、起点層L1と終点層L3との間にある1又は複数の中間層L2を識別する。
【0047】
続いて、プロセッサ20は、起点層L1の次元数D1に応じた数(D1個)の補完ニューロンを、中間層L2に追加する(ステップS102)。なお、起点層L1と終点層L3との間に中間層L2が複数ある場合には、複数の中間層L2それぞれに、D1個の補完ニューロンが追加される。
【0048】
プロセッサ20は、補完ニューロンが追加された中間層L2に結合する重み行列W1,W2を更新してW1’,W2’を得る(ステップS103)。中間層L2に結合する重み行列が、起点層L1から中間層L2への重み行列W1である場合、すなわち、起点層L1からの出力ベクトルx1に適用される重み行列W1である場合、式(5A)に従って、重み行列W1が、重み行列W1’に更新される(ステップS104)。
【0049】
中間層L2に結合する重み行列が、中間層L2から終点層L3への重み行列W2である場合、すなわち、終点層L3へ入力される出力ベクトルx2に適用される重み行列W2である場合、式(6)に従って、重み行列W2が、重み行列W2’に更新される(ステップS106)。
【0050】
起点層L1と終点層L3との間に中間層L2が複数ある場合、中間層L2に結合する重み行列としては第1中間層から第2中間層への重み行列W
3も存在する。重み行列W
3は、第1中間層からの出力ベクトルに適用される。重み行列W
3は、
図7に示す式(5B)に従って、重み行列W
3’に更新される(ステップS105)。なお、式(5B)において、Iは、D1×D1のサイズの単位行列であり、0はゼロ行列である。
【0051】
最後に、プロセッサ20は、恒等写像パスを削除する(ステップS107)。なお、恒等写像パスの削除は、生成処理22の最後に行われる必要はなく、生成処理22中の任意のタイミングで行われてもよい。以上により、恒等写像パスを有する第1ニューラルネットワークから、SRNのように直列化された第2ニューラルネットワークが得られる。
【0052】
なお、実施形態において、ステップS103,S104,S105を第1処理と呼び、ステップS107を第2処理という。
【0053】
図8は、生成処理22によって
図9に示すResNetから生成されるSRNとその重み行列W
1’,W
2’の具体例を示している。
図8では、簡単化のため、各層L1,L2,L3に含まれるニューロンの数を3個としている。この場合、ResNetにおける重み行列W
1,W
2は、それぞれ、
図9中に示すように表される。
図9に示すSRNでは、中間層L2に3個の補完ニューロンが追加されている。重み行列W
1’は、重み行列W
1と単位行列Iとの連結によって表される。また、重み行列W
2’は、重み行列W
2と単位行列Iとの連結によって表される。
【0054】
図2に戻り、圧縮処理21では、プルーニングの第1前処理である生成処理22の後、プルーニング24の第2前処理として、第2ニューラルネットワークであるSRNの学習処理23が行われる。前述のように、直列化された直後のSRNモデルにおける重み行列W
1’,W
2’は、元のResNetから受け継いだ重み行列W
1,W
2と単位行列を連結したものである。元のResNetから受け継いだ重み行列W
1,W
2は、ResNetモデルを学習した際に十分に最適化されたものである一方、単位行列は最適化されていない。しかし、学習処理23を行うことで、単位行列(又はゼロ行列)によって表されていた部分の重みを最適化して、モデル精度をさらに向上させることができる。プルーニング前にモデル精度を向上させておくことで、プルーニングによるモデル精度の低下を相殺して、モデル精度を高く保ちつつ圧縮をすることが可能になる。
【0055】
学習処理23の後、SRNモデルに対してプルーニング処理24が行われる。プルーニング処理によって、SRNモデルに含まれるニューロンが削減される。プルーニングは、例えば、非特許文献2に記載されているREAPと呼ばれる手法によって行うことができる。REAPは、プルーニングを行うだけでなく、プルーニングによる誤差を最小限にするために、残されたニューロンの重みを、最小二乗法を用いて更新することで、モデルの精度を保つことができる。
【0056】
最後に、圧縮処理21では、第2ニューラルネットワークであるSRNモデルの再学習処理25が行われる。再学習処理25によってプルーニング後のSRNモデルの精度を向上させることができる。
【0057】
ここで、前述のプルーニング処理24の前に行われる学習処理23では、正則化を用いて第2ニューラルネットワークであるSRNモデルにおける重みが最適化される。一般に重みの最適化のための正則化としてはL2正則化が用いられるが、本実施形態に係る正則化は、重みと重み初期値との差が用いられ、より具体的には、重みと重み初期値との差の二乗が用いられる。実施形態に係る正則化を、Elastic Weight Regularization(EWR)と呼ぶ。
【0058】
L2正則化に代えて、EWRを用いた方がよい理由は次のとおりである。
【0059】
直列化後のSRNモデルは、重み行列の一部が単位行列で構成されている。単位行列の要素は0及び1である。ここで、経験的にResNetモデルの重みは、高々10-1程度であることが多く、単位行列に含まれる1という数値は非常に大きいと言える。ここで問題になるのが、L2正則化の“副作用”である。
【0060】
ニューラルネットワークモデルの学習は、逆誤差伝搬法を用いて各重みを逐次的に最適化することにより行われる。逆誤差伝搬法を用いて各重みwを逐次的に最適化するための基本的な式は、
図10中の式(13)によって表される。
【0061】
しかし、式(13)によって学習を行うと、重みwが極端に大きな値、あるいは、小さな値(大きな負の値)をとるなどし、モデルの汎化性が失われることがある。そこで、
図10中の式(14)で示されるL2正則化が用いられる。式(14)は、式(13)にL2正則化項を追加したものである。L2正則化項によって、wの値が正負のいずれの方向にも大きくなりすぎることを防止できる。
【0062】
ただし、重み行列が単位行列を含んでいるSRNモデルに対して学習処理をする場合には、L2正則化は、副作用を生じさせる。式(14)から分かるように、重みwの二乗の値が大きいほど、その重みwを更新する際にかかるL2正則化の効果は大きくなる。単位行列の要素は0と1からなるが、経験的にResNet モデルの重みは大きくても10-1程度のオーダーであることが多く、それに比べて単位行列に含まれる1という数値は非常に大きい。このため、学習を行う際、初期値が1である重みwが、ResNetモデルから引き継いだ重みや初期値が0である重みと比較して、かなり大きく更新されてしまう。当然、SRNを含むニューラルネットワークの学習において、重みは互いに独立ではない。よって、初期値が1である重みが大きく更新されると,元のResNetモデルを学習させる段階で既に最適化された重みも再び大きく更新されることになり、結果的に最適解から離れた準最適解に収束すると考えられる。
【0063】
そこで、EWRでは、
図10の式(15)に従って、重みwが最適化される。式(15)において、w
*は、学習処理23開始時における重みwの初期値である。L2正則化は、重みwが0から離れすぎないようなペナルティを与えるのに対し、EWRは、重みwが学習を始めた時の初期値w
*から離れすぎないようなペナルティを与える。これにより、初期値が1である重みwが正則化項の影響を受けすぎる問題を回避できる。
【0064】
<3.実験>
【0065】
実施形態に係る圧縮処理21の有効性を検証するため、物体検出モデルを用いた実験を行った。実験で用いた物体検出モデルは、CenterNet(非特許文献3参照)である。CenterNetは、入力画像中の物体を検知する。CenterNetでは、Backboneと呼ばれる部分にResNet-18が用いられている。ResNet-18は、18個の層を有し、入力層と最終出力層とを除くと16個の層を有する。ResNet-18は、8個の恒等写像パスを有し、ある恒等写像パスの終点層が次の恒等写像パスの起点層になるように、
図4に示すアーキテクチャが直列に多段構成されている。ResNet-18において、起点層と終点層との間にある中間層の数は1個である。
【0066】
実験においては、ResNet-18を用いたBackboneを、直列化及びプルーニングの対象とした。CenterNetの入力画像の画素数は512×512である。
【0067】
実験には、MS-COCO(非特許文献4参照)と呼ばれるデータセットを用いた。MS-COCOは、物体検出タスク用のデータセットであり,約8万枚の学習用データと4万枚のテスト用データで構成されており、80種類の物体が対象である。前処理として、それぞれ画素数が512×512となるように、リサイズおよびクロップを行った。
【0068】
実験手順は、以下のとおりである。CenterNetのBackboneであるResNet について、分岐構造の直列化およびプルーニングを実行した。入力層から近い順に、分岐構造の直列化を行い、一カ所直列化する度に以下を行った。
手順1.学習(5エポック,学習率1.25×10-4)
手順2.プルーニングを実行
手順3.学習(5エポック,学習率1.25×10-4)
【0069】
最後に、60エポックの再学習を行った。その際、初期の学習率を1.25×10-4とし,20エポックごとに学習率を1/10倍した。
【0070】
手順2)において、backbone 全体のFLOPs(画像一枚を処理するために必要な演算回数)の削減率がResNet-18 のA)1/4倍、B)1/2倍、C)3/4倍となるようにした。A)1/4倍の場合を実施例Aといい、B)1/2倍の場合を実施例Bといい、C)3/4倍の場合を実施例Cという。
図6から分かるように、直列化された直後のSRNモデルでは,元は恒等写像パスにつながっていた層L1,L3のニューロン数には変化はないが、それ以外の層L2ではニューロン数は増加する。ここでは、便宜上、前者を「層1」、後者を「層2」と呼ぶことにする.層1は、起点層L1及び終点層L3に相当し、層2は、中間層L2に相当する。実施例A,B,Cについて、層1及び層2における具体的なニューロン削減率は、
図11のとおりである。なお、
図11において、実施例A,B,Cは、パターンA),B),C)として示されている。
【0071】
比較例として、ResNet を直列化せずにそのままプルーニングした場合についても検討した。ResNetにおいては、恒等写像パスにつながる層はプルーニングできないため、それ以外の層においてニューロンを一定の割合で削除した。プルーニング手法としては、非特許文献2記載のREAPを用いた。
【0072】
実験では、予測精度と推論速度を評価した。予測精度は、テスト用データにおけるmean Average Precision(mAP)で評価した。推論速度は、ニューラルネットワークを用いた推論に特化したデバイスであるJetsonNanoを用いて、画像一枚あたりの処理時間として計測した。
【0073】
図12は、評価結果を示す。
図12において、ResNet-18(オリジナル)は、直列化及びプルーニングをしていない元々のモデルを示す。ResNet-18-prunedは、比較例を示す。
図12において、SRN-18-pruned(A)は実施例Aを示し、SRN-18-pruned(B)は実施例Bを示し、SRN-18-pruned(C)は実施例Cを示す。
【0074】
図12に示すように、SRN-18-pruned(実施例)のほうが、ResNet-18-pruned(比較例)よりも優れていることがわかる。比較例では、FLOPS削減率にかかわらず、プルーニングによって予測精度が常に劣化していることがわかる。一方、ResNetをSRNに変換してからプルーニングした実施例では、元のモデルの精度をほぼ保っている。しかも、実施例Aのように、1.43倍の高速化を実現しているケースもみられる。実施例B,Cにおいても、mAPの値が高くなっていることが確認できる。
【0075】
SRNは、ResNetに比べニューロン数が増加しており、計算負荷が高くなっている。しかし、SRNは恒等写像パスによる分岐を持たない直列構造を持つため、どの層においてもプルーニングが行えるというメリットがある。そのため、ResNetをSRNに変換してからプルーニングを行う方が、ResNetを直接プルーニングするよりも、精度を高く保ちつつ、モデルを小さくできる、もしくは高速化できる。以上のことは、物体検出モデルを用いた上記の実験においても実証された。
【0076】
<4.付記>
【0077】
本発明は、上記実施形態に限定されるものではなく、様々な変形が可能である。
【符号の説明】
【0078】
10 :ニューラルネットワーク処理装置
20 :プロセッサ
21 :圧縮処理
22 :生成処理
23 :学習処理
24 :プルーニング処理
25 :再学習処理
30 :記憶装置
31 :コンピュータプログラム
100 :ニューラルネットワーク利用装置
200 :プロセッサ
300 :記憶装置
L1 :起点層
L2 :中間層
L3 :終点層
N1 :原ニューラルネットワーク
N2 :圧縮ニューラルネットワーク
N20 :圧縮ニューラルネットワークデータ