(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-11
(45)【発行日】2024-06-19
(54)【発明の名称】プルーニング管理装置、プルーニング管理システム及びプルーニング管理方法
(51)【国際特許分類】
G06N 3/082 20230101AFI20240612BHJP
【FI】
G06N3/082
(21)【出願番号】P 2020190834
(22)【出願日】2020-11-17
【審査請求日】2023-03-01
(73)【特許権者】
【識別番号】000233169
【氏名又は名称】株式会社日立ソリューションズ・テクノロジー
(74)【代理人】
【識別番号】110000062
【氏名又は名称】弁理士法人第一国際特許事務所
(72)【発明者】
【氏名】クレシテリ ヴィヴィアナ
(72)【発明者】
【氏名】三浦 誓士
(72)【発明者】
【氏名】高武 直弘
(72)【発明者】
【氏名】小野 豪一
【審査官】佐藤 直樹
(56)【参考文献】
【文献】特開2020-123269(JP,A)
【文献】特開2020-155010(JP,A)
【文献】特開2018-195231(JP,A)
【文献】米国特許出願公開第2019/0279089(US,A1)
【文献】中国特許出願公開第111738435(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/082
(57)【特許請求の範囲】
【請求項1】
深層ニューラルネットワークにおける重みフィルタをプルーニングするためのプルーニング管理装置であって、
前記深層ニューラルネットワークは、
入力層と、1層以上の中間層と、出力層とを畳み込み演算層として含み、
N層目の前記中間層は、N-1層目から出力される値を入力値として入力し、
前記入力値に対して、重み係数を有する複数の重みフィルタを用いて畳み込み演算を行うことで、N+1層目に出力する値を生成し、
前記プルーニング管理装置は、
所定の入力データを受け付け、当該入力データを前記深層ニューラルネットワークに入力する加工済みデータに変換するデータ加工部と、
前記入力データを前記深層ニューラルネットワークに入力した場合、各畳み込み演算層に対する感度分析を行い、前記各畳み込み演算層の検出精度への影響度を判定し、前記影響度に基づいて、前記各畳み込み演算層において前記畳み込み演算を行うための前記複数の重みフィルタに対するプルーニング率を決定するネットワーク分析部と、
前記プルーニング率に基づいて、前記深層ニューラルネットワークにおけるプルーニング対象の重みフィルタを決定し、前記プルーニング対象の重みフィルタに対するプルーニング処理を行うネットワークプルーニング部と、
を含み、
前記ネットワーク分析部は、
前記各畳み込み演算層に対する感度分析を行い、前記各畳み込み演算層において前記畳み込み演算を行うための各重みフィルタの重要度を示す重みフィルタ重要度ランキングを生成し、
前記ネットワークプルーニング部は、
前記重みフィルタ重要度ランキングと、前記プルーニング率とに基づいて、前記深層ニューラルネットワークにおけるプルーニング対象の重みフィルタを決定し、前記プルーニング対象の重みフィルタに対するプルーニング処理を行う、
ことを特徴とするプルーニング管理装置。
【請求項2】
前記ネットワーク分析部は、
前記検出精度の劣化率に基づいて前記各畳み込み演算層の前記影響度を判定する、
ことを特徴とする、請求項1に記載のプルーニング管理装置。
【請求項3】
前記ネットワーク分析部は、
前記各畳み込み演算層に含まれる前記重みフィルタの重みの和に基づいて、前記各重みフィルタの重要度を示す重みフィルタ重要度ランキングを生成する、
ことを特徴とする、請求項1に記載のプルーニング管理装置。
【請求項4】
前記ネットワーク分析部は、
前記各畳み込み演算層に含まれる前記重みフィルタの活性化値に基づいて、前記各重みフィルタの重要度を示す重みフィルタ重要度ランキングを生成する、
ことを特徴とする、請求項1に記載のプルーニング管理装置。
【請求項5】
前記ネットワーク分析部は、
前記各畳み込み演算層によって生成される特徴マップに対するクラスタリング手法を行うことで、前記畳み込み演算層を所定の数のクラスタに分類し、
前記クラスタのそれぞれを比較することで、前記各畳み込み演算層の他の畳み込み演算層に対する冗長性を判定し、
前記ネットワークプルーニング部は、
前記各畳み込み演算層の他の畳み込み演算層に対する前記冗長性と、
前記重みフィルタ重要度ランキングとに基づいて、前記深層ニューラルネットワークにおけるプルーニング対象の重みフィルタを決定し、前記プルーニング対象の重みフィルタに対するプルーニング処理を行う、
ことを特徴とする、請求項1に記載のプルーニング管理装置。
【請求項6】
プルーニング管理システムであって、
前記プルーニング管理システムにおいて、
プルーニングの対象となる深層ニューラルネットワークと、
プルーニングを行うためのプルーニング管理装置とが通信ネットワークを介して接続されており、
前記深層ニューラルネットワークは、
入力層と、1層以上の中間層と、出力層とを畳み込み演算層として含み、
N層目の前記中間層は、N-1層目から出力される値を入力値として入力し、
前記入力値に対して、重み係数を有する複数の重みフィルタを用いて畳み込み演算を行うことで、N+1層目に出力する値を生成し、
前記プルーニング管理装置は、
所定の入力データを受け付け、当該入力データを前記深層ニューラルネットワークに入力する加工済みデータに変換するデータ加工部と、
前記入力データを前記深層ニューラルネットワークに入力した場合、各畳み込み演算層に対する感度分析を行い、前記各畳み込み演算層の検出精度への影響度を判定し、前記影響度に基づいて、前記各畳み込み演算層において前記畳み込み演算を行うための前記複数の重みフィルタに対するプルーニング率を決定するネットワーク分析部と、
前記プルーニング率に基づいて、前記深層ニューラルネットワークにおけるプルーニング対象の重みフィルタを決定し、前記プルーニング対象の重みフィルタに対するプルーニング処理を行うネットワークプルーニング部と、
を含み、
前記ネットワーク分析部は、
前記各畳み込み演算層に対する感度分析を行い、前記各畳み込み演算層において前記畳み込み演算を行うための各重みフィルタの重要度を示す重みフィルタ重要度ランキングを生成し、
前記ネットワークプルーニング部は、
前記重みフィルタ重要度ランキングと、前記プルーニング率とに基づいて、前記深層ニューラルネットワークにおけるプルーニング対象の重みフィルタを決定し、前記プルーニング対象の重みフィルタに対するプルーニング処理を行う、
ことを特徴とするプルーニング管理システム。
【請求項7】
前記ネットワーク分析部は、
前記各畳み込み演算層によって生成される特徴マップに対するクラスタリング手法を行うことで、前記畳み込み演算層を所定の数のクラスタに分類し、
前記クラスタのそれぞれを比較することで、前記各畳み込み演算層の他の畳み込み演算層に対する冗長性を判定し、
前記ネットワークプルーニング部は、
前記各畳み込み演算層の他の畳み込み演算層に対する前記冗長性と、
前記重みフィルタ重要度ランキングとに基づいて、前記深層ニューラルネットワークにおけるプルーニング対象の重みフィルタを決定し、前記プルーニング対象の重みフィルタに対するプルーニング処理を行う、
ことを特徴とする、請求項6に記載のプルーニング管理システム。
【請求項8】
深層ニューラルネットワークにおける重みフィルタをプルーニングするためのプルーニング管理方法であって、
前記深層ニューラルネットワークは、
入力層と、1層以上の中間層と、出力層とを畳み込み演算層として含み、
N層目の前記中間層は、N-1層目から出力される値を入力値として入力し、
前記入力値に対して、重み係数を有する複数の重みフィルタを用いて畳み込み演算を行うことで、N+1層目に出力する値を生成し、
前記プルーニング管理方法は、
所定の入力データを受け付け、当該入力データを前記深層ニューラルネットワークに入力する加工済みデータに変換する工程と、
前記入力データを前記深層ニューラルネットワークに入力した場合、各畳み込み演算層に対する感度分析を行い、前記各畳み込み演算層の検出精度への影響度を判定し、前記影響度に基づいて、前記各畳み込み演算層において前記畳み込み演算を行うための前記複数の重みフィルタに対するプルーニング率を決定する工程と、
前記プルーニング率に基づいて、前記深層ニューラルネットワークにおけるプルーニング対象の重みフィルタを決定し、前記プルーニング対象の重みフィルタに対するプルーニング処理を行う工程と、
を含み、
各畳み込み演算層に対する感度分析を行い、前記各畳み込み演算層の検出精度への影響度を判定することは、
前記各畳み込み演算層に対する感度分析を行い、前記各畳み込み演算層において前記畳み込み演算を行うための各重みフィルタの重要度を示す重みフィルタ重要度ランキングを生成する工程を含み、
前記プルーニング率に基づいて、前記深層ニューラルネットワークにおけるプルーニング対象の重みフィルタを決定し、前記プルーニング対象の重みフィルタに対するプルーニング処理を行うことは、
前記重みフィルタ重要度ランキングと、前記プルーニング率とに基づいて、前記深層ニューラルネットワークにおけるプルーニング対象の重みフィルタを決定し、前記プルーニング対象の重みフィルタに対するプルーニング処理を行う工程を含む、
ことを特徴とするプルーニング管理方法。
【請求項9】
前記プルーニング管理方法は、
前記各畳み込み演算層によって生成される特徴マップに対するクラスタリング手法を行うことで、前記畳み込み演算層を所定の数のクラスタに分類する工程と、
前記クラスタのそれぞれを比較することで、前記各畳み込み演算層の他の畳み込み演算層に対する冗長性を判定する工程と、
前記各畳み込み演算層の他の畳み込み演算層に対する前記冗長性と、
前記重みフィルタ重要度ランキングとに基づいて、前記深層ニューラルネットワークにおけるプルーニング対象の重みフィルタを決定し、前記プルーニング対象の重みフィルタに対するプルーニング処理を行う工程と、
を更に含むことを特徴とする、請求項8に記載のプルーニング管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プルーニング管理装置、プルーニング管理システム及びプルーニング管理方法に関する。
【背景技術】
【0002】
近年、CPU(Central Processing Unit)及びGPU(Graphics Processing Unit)の高速化やメモリの大容量化により、ニューラルネットワークを用いた機械学習技術が急速に進展している。このため、数十万から百万といったオーダーの学習データを用いる機械学習が可能となり、精度の高い識別技術や分類技術を有する学習モデルが確立されつつある。
【0003】
このような優れた学習モデルをを第三者に利用させる場合には、学習モデルの前段部分をクラウド上においてその内容を秘匿し、学習モデルの後段部分を第三者に公開して利用させるビジネスモデルや、学習モデルをメモリ・計算リソースが限られているエッジデバイスにおいて実行するビジネスモデル等が考えられる。このとき、学習モデルの利用者の利用環境に応じて学習モデルを省メモリ・省計算リソースで動作させられるように軽量化できれば、クラウド利用料金の削減や、計算資源の限られるローカル端末での実行に有効である。
【0004】
学習モデルを軽量化する手段の一つとして、いわゆるニューラルネットワークのプルーニング(剪定、枝刈り)が知られている。ニューラルネットワークプルーニングとは、学習モデルを実施するニューラルネットワークの演算層間の不要なつながり(重みフィルタ、パラメーター等)を無効化又は削除することで、当該ニューラルネットワークを最適化する方法である。これにより、ニューラルネットワークの演算層における重みフィルタの数を減らして計算を高速化すると共に、ネットワーク全体を軽量化させることができる。
【0005】
従来、ニューラルネットワークプルーニングを行うためのいくつかの提案がなされている。
例えば、米国特許出願公開第2019/0279089号(特許文献1)には、「本開示は、圧縮、加速、および精度がネットワークプルーニングにおいて同時に達成できないという関連技術における問題を解決するニューラルネットワークプルーニングのための方法および装置を提供する。この方法では、ニューロンの活性化値に基づいて、プルーニングされるネットワーク層内のニューロンの(101)の重要度値を決定し、ニューロンと次のネットワーク層のニューロンとの間の接続重みに基づいて、プルーニングされるネットワーク層の各ニューロンの多様性値を決定し(102)、プルーニングされるネットワーク層から、ボリューム最大化ニューロン選択ポリシーに従ってプルーニングされるネットワーク層内のニューロンの重要度値および多様性値に基づいて保持されるニューロンを選択し(103)プルーニングされるネットワーク層から他のニューロンをプルーニングして(104)、プルーニングされたネットワーク層を取得する。上記の方法を使用すると、ニューラルネットワークの精度を維持しながら、良好な圧縮および加速効果を実現することができる」技術が記載されている。
【0006】
また、米国特許出願公開第2018/0114114号(特許文献2)には、「ニューラルネットワークプルーニングのための方法、コンピュータ可読媒体、およびシステムが開示されている。この方法には、訓練されたニューラルネットワークのレイヤーパラメーターに関連するコスト関数の1次勾配を取得するステップと、レイヤーパラメーターに対応する1次勾配に基づいて各レイヤーパラメーターのプルーニング基準を計算するステップとが含まれる。ここで、プルーニング基準は、訓練されたニューラルネットワークに含まれ、レイヤーパラメーターに関連付けられている各ニューロンの重要性を示す。この方法は、重要度が最も低い少なくとも1つのニューロンを識別し、訓練されたニューラルネットワークから少なくとも1つのニューロンを除去して、プルーニングされたニューラルネットワークを生成するステップも更に含む」技術が記載されている。
【先行技術文献】
【特許文献】
【0007】
【文献】米国特許出願公開第2019/0279089号
【文献】米国特許出願公開第2018/0114114号
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1には、深層ニューラルネットワークにおけるニューロンの活性化値に基づいてニューロンのプルーニングを行う手段が記載されている。しかし、特許文献1に記載されている手段では、プルーニングするニューロンを判定するためには、特定の演算層と、当該演算層の次の演算層の接続重みのみを考慮しており、深層ニューラルネットワークによる最終的な検出結果への影響が想定されていない。このため、深層ニューラルネットワークによる最終的な検出結果に対して影響度の高いニューロンをプルーニングしてしまい、深層ニューラルネットワークの検出精度を低下させてしまう虞がある。
【0009】
また、特許文献2には、重みフィルタの重みの和に基づいてフィルタのプルーニングを行う手段が記載されている。しかし、重みの和が少ないフィルタが、深層ニューラルネットワークによる最終的な検出結果に対して影響度の低いフィルタであるとは限らず、特許文献1と同様に、最終的な検出結果に対して影響度の高いフィルタをプルーニングしてしまい、深層ニューラルネットワークの検出精度を低下させてしまう虞がある。
【0010】
そこで、本開示は、各演算層の検出結果への影響を考慮し、影響度の低い演算層のフィルタや、他のフィルタと冗長性が高いフィルタのみをプルーニングすることで、検出精度を維持しつつ、ニューラルネットワークを軽量化させるプルーニング管理手段を提供することを目的とする。
【課題を解決するための手段】
【0011】
上記の課題を解決するために、代表的な本発明のプルーニング管理装置の一つは、深層ニューラルネットワークにおけるフィルタをプルーニングするためのプルーニング管理装置であって、前記深層ニューラルネットワークは、入力層と、1層以上の中間層と、出力層とを畳み込み演算層として含み、N層目の前記中間層は、N-1層目から出力される値を入力値として入力し、前記入力値に対して、重み係数を有する複数の重みフィルタを用いて畳み込み演算を行うことで、N+1層目に出力する値を生成し、前記プルーニング管理装置は、所定の入力データを受け付け、当該入力データを前記深層ニューラルネットワークに入力する加工済みデータに変換するデータ加工部と、前記入力データを前記深層ニューラルネットワークに入力した場合、各畳み込み演算層間感度分析を行い、前記各畳み込み演算層の検出精度への影響度を判定し、前記影響度に基づいて、前記各畳み込み演算層において前記畳み込み演算を行うための前記複数の重みフィルタに対するプルーニング率を決定するネットワーク分析部と、前記プルーニング率に基づいて、前記深層ニューラルネットワークにおけるプルーニング対象の重みフィルタを決定し、前記プルーニング対象の重みフィルタに対するプルーニング処理を行うネットワークプルーニング部とを含む。
【発明の効果】
【0012】
本開示によれば、各演算層の検出結果への影響を考慮し、影響度の低い演算層のフィルタや、他のフィルタと冗長性が高いフィルタのみをプルーニングすることで、検出精度を維持しつつ、ニューラルネットワークを軽量化させるプルーニング管理手段を提供することができる。
上記以外の課題、構成及び効果は、以下の発明を実施するための形態における説明により明らかにされる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、本開示の実施形態を実施するためのコンピュータシステムを示す図である。
【
図2】
図2は、本開示の実施形態に係るプルーニング管理システムの構成の一例を示す図である。
【
図3】
図3は、本開示の実施形態に係るプルーニング管理方法の一例を示す図である。
【
図4】
図4は、本開示の実施形態に係るネットワーク分析部による感度分析の流れの一例を示す図である。
【
図5】
図5は、本開示の実施形態に係る演算層内感度分析を重みフィルタの重みに基づいて行う場合の処理の流れの一例を示す図である
【
図6】
図6は、本開示の実施形態に係る演算層内感度分析を重みフィルタの活性化値に基づいて行う場合の処理の流れの一例を示す図である。
【
図7】
図7は、本開示の実施形態に係る演算層間感度分析を深層ニューラルネットワークの検出精度の劣化率に基づいて行う場合の処理の流れの一例を示す図である。
【
図8】
図8は、本開示の実施形態に係る演算層間感度分析を主成分分析に基づいて行う場合の処理の流れの一例を示す図である。
【
図9】
図9は、本開示の実施形態に係るプルーニング処理を、判定したプルーニング率と、重みフィルタの重要度ランキングとに基づいて行う場合の処理の一例を示す図である。
【
図10】
図10は、本開示の実施形態に係るプルーニング処理を、演算層内感度分析と、特徴マップのクラスタリングとに基づいて行う場合の処理の一例を示す図である。
【
図11】
図11は、本開示の実施形態に係る特徴マップのクラスタをK平均法によって生成する場合の処理の一例を示す図である。
【
図12】
図12は、本開示の実施形態に係る特徴マップのクラスタをハッシュアルゴリズムによって生成する場合の処理の一例を示す図である。
【
図13】
図13は、本開示の実施形態に係る入力データを加工し、加工済みデータを生成するための論理構成の一例を示す図である。
【
図14】
図14は、本開示の実施形態に係る入力データを加工し、加工済みデータを生成するためのデータ加工処理の一例を示す図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施形態を説明する。実施例は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
【0015】
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
【0016】
同一あるいは同様の機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。また、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
【0017】
実施例において、プログラムを実行して行う処理について説明する場合がある。ここで、計算機は、プロセッサ(例えばCPU、GPU)によりプログラムを実行し、記憶資源(例えばメモリ)やインターフェースデバイス(例えば通信ポート)等を用いながら、プログラムで定められた処理を行う。そのため、プログラムを実行して行う処理の主体を、プロセッサとしてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であれば良く、特定の処理を行う専用回路を含んでいてもよい。ここで、専用回路とは、例えばFPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)、CPLD(Complex Programmable Logic Device)等である。
【0018】
プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、実施例において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
(本開示の概要)
【0019】
上述したように、近年、CPU及びGPUの高速化やメモリの大容量化により、深層ニューラルネットワークを用いた機械学習技術が急速に進展している。例えば、深層ニューラルネットワークは、自動運転、自然言語処理、ロボット工学等、様々な分野応用されている。
しかし、深層ニューラルネットワークは計算コストが高く、メモリを大量に消費するため、メモリ・計算リソースが限られている環境での利用が難しい。深層ニューラルネットワークを軽量化させ、計算リソースやメモリの使用量を抑えるためのプルーニング手段が存在するが、従来のプルーニング手段は、深層ニューラルネットワークにおけるフィルタの重みや活性化のみに基づいてプルーニングを行うため、深層ニューラルネットワークの検出精度に大きく貢献しているフィルタをプルーニングしてしまい、深層ニューラルネットワークの検出精度を低下させてしまうことがある。
【0020】
従って、上記の課題を鑑み、本開示の実施形態に係るプルーニング管理手段は、以下の工程を主に含む。
入力データ加工:検出対象のオブジェクトが写る入力データに対して、検出対象のオブジェクトが強調され、当該オブジェクト以外の領域が除去されるように加工する。これにより、深層ニューラルネットワークのおけるどのフィルタがどのようなオブジェクトの検出に貢献しているかとの対応関係がより明確となる。
演算層間感度分析:深層ニューラルネットワークにおける演算層間感度分析を行い、各演算層の検出精度への影響度を判定する。これにより、各演算層が単独で評価される従来のプルーニング処理と異なり、演算層毎に、当該演算層をプルーニングした場合の検出精度への影響が考慮される。
演算層内感度分析:深層ニューラルネットワークにおける演算層の中で、それぞれの重みフィルタの重要度を判定する。
上記感度分析に基づいたプルーニング処理:演算層間感度分析及び演算層内感度分析に基づいて、深層ニューラルネットワークにおける各演算層毎に、プルーニングするフィルタの割合であるプルーニング率を判定する。
【0021】
上記の工程を備える、本開示の実施形態に係るプルーニング管理手段によれば、各演算層の検出結果への影響を考慮し、影響度の低い演算層のフィルタや、他のフィルタと冗長性が高いフィルタのみをプルーニングすることで、検出精度を維持しつつ、ニューラルネットワークを軽量化させるプルーニング管理手段を提供することができる。
【0022】
まず、
図1を参照して、本開示の実施形態を実施するためのコンピュータシステム300について説明する。本明細書で開示される様々な実施形態の機構及び装置は、任意の適切なコンピューティングシステムに適用されてもよい。コンピュータシステム300の主要コンポーネントは、1つ以上のプロセッサ302、メモリ304、端末インターフェース312、ストレージインタフェース314、I/O(入出力)デバイスインタフェース316、及びネットワークインターフェース318を含む。これらのコンポーネントは、メモリバス306、I/Oバス308、バスインターフェースユニット309、及びI/Oバスインターフェースユニット310を介して、相互的に接続されてもよい。
【0023】
コンピュータシステム300は、プロセッサ302と総称される1つ又は複数の汎用プログラマブル中央処理装置(CPU)302A及び302Bを含んでもよい。ある実施形態では、コンピュータシステム300は複数のプロセッサを備えてもよく、また別の実施形態では、コンピュータシステム300は単一のCPUシステムであってもよい。各プロセッサ302は、メモリ304に格納された命令を実行し、オンボードキャッシュを含んでもよい。
【0024】
ある実施形態では、メモリ304は、データ及びプログラムを記憶するためのランダムアクセス半導体メモリ、記憶装置、又は記憶媒体(揮発性又は不揮発性のいずれか)を含んでもよい。メモリ304は、本明細書で説明する機能を実施するプログラム、モジュール、及びデータ構造のすべて又は一部を格納してもよい。例えば、メモリ304は、プルーニング管理アプリケーション350を格納していてもよい。ある実施形態では、プルーニング管理アプリケーション350は、後述する機能をプロセッサ302上で実行する命令又は記述を含んでもよい。
【0025】
ある実施形態では、プルーニング管理アプリケーション350は、プロセッサベースのシステムの代わりに、またはプロセッサベースのシステムに加えて、半導体デバイス、チップ、論理ゲート、回路、回路カード、および/または他の物理ハードウェアデバイスを介してハードウェアで実施されてもよい。ある実施形態では、プルーニング管理アプリケーション350は、命令又は記述以外のデータを含んでもよい。ある実施形態では、カメラ、センサ、または他のデータ入力デバイス(図示せず)が、バスインターフェースユニット309、プロセッサ302、またはコンピュータシステム300の他のハードウェアと直接通信するように提供されてもよい。
【0026】
コンピュータシステム300は、プロセッサ302、メモリ304、表示システム324、及びI/Oバスインターフェースユニット310間の通信を行うバスインターフェースユニット309を含んでもよい。I/Oバスインターフェースユニット310は、様々なI/Oユニットとの間でデータを転送するためのI/Oバス308と連結していてもよい。I/Oバスインターフェースユニット310は、I/Oバス308を介して、I/Oプロセッサ(IOP)又はI/Oアダプタ(IOA)としても知られる複数のI/Oインタフェースユニット312,314,316、及び318と通信してもよい。
【0027】
表示システム324は、表示コントローラ、表示メモリ、又はその両方を含んでもよい。表示コントローラは、ビデオ、オーディオ、又はその両方のデータを表示装置326に提供することができる。また、コンピュータシステム300は、データを収集し、プロセッサ302に当該データを提供するように構成された1つまたは複数のセンサ等のデバイスを含んでもよい。
【0028】
例えば、コンピュータシステム300は、心拍数データやストレスレベルデータ等を収集するバイオメトリックセンサ、湿度データ、温度データ、圧力データ等を収集する環境センサ、及び加速度データ、運動データ等を収集するモーションセンサ等を含んでもよい。これ以外のタイプのセンサも使用可能である。表示システム324は、単独のディスプレイ画面、テレビ、タブレット、又は携帯型デバイスなどの表示装置326に接続されてもよい。
【0029】
I/Oインタフェースユニットは、様々なストレージ又はI/Oデバイスと通信する機能を備える。例えば、端末インタフェースユニット312は、ビデオ表示装置、スピーカテレビ等のユーザ出力デバイスや、キーボード、マウス、キーパッド、タッチパッド、トラックボール、ボタン、ライトペン、又は他のポインティングデバイス等のユーザ入力デバイスのようなユーザI/Oデバイス320の取り付けが可能である。ユーザは、ユーザインターフェースを使用して、ユーザ入力デバイスを操作することで、ユーザI/Oデバイス320及びコンピュータシステム300に対して入力データや指示を入力し、コンピュータシステム300からの出力データを受け取ってもよい。ユーザインターフェースは例えば、ユーザI/Oデバイス320を介して、表示装置に表示されたり、スピーカによって再生されたり、プリンタを介して印刷されたりしてもよい。
【0030】
ストレージインタフェース314は、1つ又は複数のディスクドライブや直接アクセスストレージ装置322(通常は磁気ディスクドライブストレージ装置であるが、単一のディスクドライブとして見えるように構成されたディスクドライブのアレイ又は他のストレージ装置であってもよい)の取り付けが可能である。ある実施形態では、ストレージ装置322は、任意の二次記憶装置として実装されてもよい。メモリ304の内容は、ストレージ装置322に記憶され、必要に応じてストレージ装置322から読み出されてもよい。I/Oデバイスインタフェース316は、プリンタ、ファックスマシン等の他のI/Oデバイスに対するインターフェースを提供してもよい。ネットワークインターフェース318は、コンピュータシステム300と他のデバイスが相互的に通信できるように、通信経路を提供してもよい。この通信経路は、例えば、ネットワーク330であってもよい。
【0031】
ある実施形態では、コンピュータシステム300は、マルチユーザメインフレームコンピュータシステム、シングルユーザシステム、又はサーバコンピュータ等の、直接的ユーザインターフェースを有しない、他のコンピュータシステム(クライアント)からの要求を受信するデバイスであってもよい。他の実施形態では、コンピュータシステム300は、デスクトップコンピュータ、携帯型コンピュータ、ノートパソコン、タブレットコンピュータ、ポケットコンピュータ、電話、スマートフォン、又は任意の他の適切な電子機器であってもよい。
【0032】
次に、
図2を参照して、本開示の実施形態に係るプルーニング管理システムの構成について説明する。
【0033】
図2は、本開示の実施形態に係るプルーニング管理システム200の構成の一例を示す図である。
図2に示すように、本開示の実施形態に係るプルーニング管理システム200は、プルーニング管理装置210と、深層ニューラルネットワーク220とを主に含む。プルーニング管理装置210及び深層ニューラルネットワーク220は、同じネットワークに含まれてもよく、LANやインターネット等の通信ネットワークを介して接続されてもよく、同一のハードウェアデバイスに格納されてもよい。
【0034】
プルーニング管理装置210は、所定の深層ニューラルネットワーク(例えば深層ニューラルネットワーク220)に対するプルーニング処理を行うための装置である。
図2に示すように、プルーニング管理装置210は、データ加工部212、ネットワーク分析部214、及びネットワークプルーニング部216を含む。
【0035】
データ加工部212は、所定の入力データ205を受け付け、当該入力データを深層ニューラルネットワーク220に入力する加工済みデータに変換するための機能部である。この入力データ205は、深層ニューラルネットワーク220の検出精度を検証するために用いられる画像データである。深層ニューラルネットワーク220の、特定の対象オブジェクトに対する検出精度を検出するためには、データ加工部212は、入力データ205を加工し、当該対象オブジェクトが強調される加工済みデータを生成してもよい。
なお、データ加工部212によるデータ加工の詳細については後述するため、ここではその説明を省略する。
【0036】
ネットワーク分析部214は、深層ニューラルネットワーク220に対する感度分析を行うことにより、深層ニューラルネットワーク220からプルーニングする重みフィルタを判定するための機能部である。後述するように、本開示の実施形態に係るネットワーク分析部214は、感度分析として、演算層における重みフィルタの重要度を判定するための感度分析である演算層内感度分析と、各演算層の影響度を判定するための感度分析である演算層間感度分析との二種類の感度分析を行うことができる。
なお、ネットワーク分析部214による感度分析処理の詳細については後述するため、ここではその説明を省略する。
【0037】
ネットワークプルーニング部216は、深層ニューラルネットワーク220に対するプルーニング処理を行うための機能部である。ネットワークプルーニング部は、ネットワーク分析部によって行われた感度分析の結果に基づいて、特定の重みフィルタをプルーニング(削除したり、排除したり)してもよい。
なお、ネットワークプルーニング部216によるプルーニング処理の詳細については後述するため、ここではその説明を省略する。
【0038】
深層ニューラルネットワーク220は、プルーニング処理の対象となる深層ニューラルネットワークである。
図2に示すように、深層ニューラルネットワーク220は、入力層222と、1層以上の中間層224と、出力層226とを畳み込み演算層として含む。深層ニューラルネットワーク220では、N層目の中間層は、N-1層目から出力される値を入力値として入力し、当該入力値に対して、重み係数を有する複数の重みフィルタを用いて畳み込み演算を行うことで、N+1層目に出力する値を生成する。
なお、
図2では、深層ニューラルネットワーク220は、プルーニング管理装置210から独立したものとして示されているが、本開示はこれに限定されない。例えば、ある実施形態では、深層ニューラルネットワーク220とプルーニング管理装置210とが同一のハードウェアデバイスに格納されてもよい。
また、ある実施形態では、深層ニューラルネットワーク220は、
図2に図示されていないクライアント端末に格納されてもよい。この場合、このクライアント端末は、通信ネットワークを介して、深層ニューラルネットワーク220に対するプルーニング処理要求をプルーニング管理装置210に送信し、深層ニューラルネットワーク220へのアクセス権限をプルーニング管理装置210に付与した後、プルーニング管理装置210は深層ニューラルネットワーク220に対するプルーニング処理を行ってもよい。
【0039】
以上説明したように構成したプルーニング管理システム200によれば、深層ニューラルネットワークにおける各演算層の検出結果への影響を考慮し、影響度の低い演算層のフィルタや、他のフィルタと冗長性が高いフィルタのみをプルーニングすることで、検出精度を維持しつつ、ニューラルネットワークを軽量化させることができる。
【0040】
次に、
図3を参照して、本開示の実施形態に係るプルーニング管理方法について説明する。
【0041】
図3は、本開示の実施形態に係るプルーニング管理方法360の一例を示す図である。
図3に示すプルーニング管理方法360は、本開示の実施形態に係るプルーニング管理装置(例えば、
図2に示すプルーニング管理装置210)の各機能部によって実施され、検出精度を維持しつつ、対象の深層ニューラルネットワークを軽量化させるためのプルーニング方法である。
【0042】
まず、ステップS362では、データ加工部(例えば、
図2に示すデータ加工部212)は、所定の入力データを受け付け、当該入力データを加工済みデータに変換した後、この加工済みデータを深層ニューラルネットワーク(例えば、
図2に示す深層ニューラルネットワーク220)に入力する。ここでの入力データは、例えばプルーニング管理装置の管理者によって選択されてもよく、深層ニューラルネットワークの管理者によって選択されてもよい。
上述したように、データ加工部は、入力データを加工し、当該対象オブジェクトが強調される加工済みデータを生成してもよい。なお、データ加工部によるデータ加工の詳細については後述するため、ここではその説明を省略する。
【0043】
次に、ステップS364では、ネットワーク分析部(例えば、
図2に示すネットワーク分析部214)は、深層ニューラルネットワークに対する感度分析を行う。後述するように、本開示の実施形態に係るネットワーク分析部は、感度分析として、演算層内感度分析と、演算層間感度分析との二種類の感度分析を行うことができる。
なお、ネットワーク分析部による感度分析処理の詳細については後述するため、ここではその説明を省略する。
【0044】
次に、ステップS366では、ネットワークプルーニング部(例えば、
図2に示すネットワークプルーニング部216)は、ステップS364でのネットワーク分析の結果に基づいて、深層ニューラルネットワークに対するプルーニング処理を行い、プルーニング済みの深層ニューラルネットワークを生成する。ここでは、プルーニング処理として、ネットワークプルーニング部は、ネットワーク分析部によって行われる感度分析の結果に基づいて、深層ニューラルネットワークの検出精度に対する影響度が低い演算層のフィルタや、他のフィルタと冗長性が高いフィルタを削除してもよい。
なお、ステップS366の終了後、深層ニューラルネットワークが所定の圧縮率基準を満たさない場合、本処理はステップS364へ戻り、所定の圧縮率基準を満たすまで、深層ニューラルネットワークに対する感度分析及びプルーニング処理を繰り返してもよい。所定の圧縮率基準が満たされると、本処理は終了する。
【0045】
次に、
図4を参照して、本開示の実施形態に係るネットワーク分析部による感度分析について説明する。
【0046】
図4は、本開示の実施形態に係るネットワーク分析部による感度分析の流れの一例を示す図である。上述したように、本開示の実施形態に係るネットワーク分析部(例えば、
図2に示すネットワーク分析部214)は、演算層に対する感度分析として、演算層における重みフィルタの重要度を判定するための感度分析である演算層内感度分析410と、各演算層の影響度を判定するための感度分析である演算層間感度分析420との二種類の感度分析を行うことができる。そして、プルーニングの対象となる重みフィルタは、この二種類の感度分析の結果に基づいて判定されてもよい。
【0047】
演算層内感度分析410とは、プルーニング対象の深層ニューラルネットワーク(例えば、
図2に示す深層ニューラルネットワーク220)の各演算層における重みフィルタの重要度を判定するための処理である。
図4に示すように、演算層内感度分析410は、ステップS412とS414とを含む。
ステップS412では、ネットワーク分析部214は、プルーニング対象の深層ニューラルネットワークの各演算層における重みフィルタの特徴値を分析する。この特徴値は、例えば、重みフィルタの重みや、活性化値であってもよい。
次に、ステップS414では、ネットワーク分析部214は、ステップS412での重みフィルタの特徴の分析に基づいて、深層ニューラルネットワークにおける演算層毎に、当該演算層に含まれる重みフィルタの重要度を判定し、重みフィルタを重要度が高い順に並べた重みフィルタ重要度ランキングを生成する。ここでの重要度とは、オブジェクト検出に有用な特徴マップを生成する際の、各重みフィルタの重要性を定量的に示す尺度であり、上述したように、重みフィルタの重みや活性化値に基づいて判定されてもよい。
なお、演算層内感度分析410の詳細については後述するため、ここではその説明を省略する。
【0048】
演算層間感度分析420とは、プルーニング対象の深層ニューラルネットワークにおける各演算層の、深層ニューラルネットワークによる検出結果に対する影響度を判定するための処理である。
図4に示すように、演算層内感度分析410は、ステップS422とS424とを含む。
ステップS422では、ネットワーク分析部214は、プルーニング対象の深層ニューラルネットワークの各演算層の、深層ニューラルネットワークによる検出結果に対する影響度を判定する。ここでは、ネットワーク分析部214は、例えば深層ニューラルネットワークの検出精度の劣化率に基づいて各演算層の影響度を判定してもよく、PCA(Principal Component Analysis)によって各演算層の影響度を判定してもよい。
次に、ステップS424では、ネットワーク分析部214は、ステップS422で判定された各演算層の影響度に基づいて、プルーニングするフィルタの割合を示すプルーニング率を判定してもよい。
なお、演算層間感度分析420の詳細については後述するため、ここではその説明を省略する。
【0049】
以上説明した演算層内感度分析410と、演算層間感度分析420との二種類の感度分析の結果に基づいて深層ニューラルネットワークからプルーニングするフィルタを判定することで、検出精度を維持しつつ、ニューラルネットワークを軽量化させることができる。
なお、以上説明した演算層内感度分析410と、演算層間感度分析420とは、並行(つまり、同時)に行われてもよく、順番に行われてもよい。
また、以上では、演算層内感度分析410と、演算層間感度分析420との二種類の感度分析の結果に基づいて深層ニューラルネットワークからプルーニングするフィルタを判定する一例を説明したが、本開示はこれに限定されず、演算層内感度分析410と、演算層間感度分析420との中から、1種類の感度分析に基づいてプルーニングするフィルタを判定してもよい。
ただし、検出精度の劣化を抑えるためには、演算層内感度分析410と、演算層間感度分析420との二種類の感度分析の結果に基づいて深層ニューラルネットワークからプルーニングするフィルタを判定することが望ましい。
【0050】
次に、
図5及び
図6を参照して、本開示の実施形態に係る演算層内感度分析の具体例について説明する。
【0051】
図5は、本開示の実施形態に係る演算層内感度分析410を重みフィルタの重みに基づいて行う場合の処理410Aの流れの一例を示す図である。
図5に示す処理410Aは、上述した演算層内感度分析410の具体例の1つであり、ネットワーク分析部(例えば
図2に示すネットワーク分析部214)によって実施される処理である。
【0052】
まず、ステップS502では、ネットワーク分析部214は、プルーニング対象の深層ニューラルネットワークの各演算層毎に、当該演算層に含まれる各重みフィルタの重みの和を計算する。この重みフィルタの重みは、重みフィルタの重要度を示す1つの尺度であり、
図4を参照して説明した演算層内感度分析410における特徴値に対応する。
ここで、重みファイルの重みの和を計算する手段は特に限定されず、任意の既存の手段を用いてもよい。
【0053】
次に、ステップS504では、ネットワーク分析部214は、ステップS502で計算した各演算層毎の各重みファイルの重みの和に基づいて、これらの重みフィルタを分類する。例えば、ここでは、ネットワーク分析部214は、重みフィルタを重みの和が高い順に並べたフィルタ重要度ランキングを生成してもよい。
【0054】
以上説明した処理410Aでは、各重みフィルタの重みの和を計算して、重みフィルタを重みの和が高い順に並べたフィルタ重要度ランキングを生成することができる。また、後述するように、ここで生成した、重みフィルタの重みの和に基づいたフィルタ重要度ランキングに基づいて、深層ニューラルネットワークからプルーニングする重みフィルタを判定することができる。
【0055】
図6は、本開示の実施形態に係る演算層内感度分析410を重みフィルタの活性化値に基づいて行う場合の処理410Bの流れの一例を示す図である。
図6に示す処理410Bは、上述した演算層内感度分析410の具体例の1つであり、ネットワーク分析部(例えば
図2に示すネットワーク分析部214)によって実施される処理である。
【0056】
まず、ステップS602では、ネットワーク分析部214は、プルーニング対象の深層ニューラルネットワークの各演算層毎に、当該演算層に含まれる各重みフィルタの活性化値を計算する。この重みフィルタの活性化値は、重みフィルタの重要度を示す1つの尺度であり、
図4を参照して説明した演算層内感度分析410における特徴値に対応する。
ここで、重みファイルの活性化値を計算する手段は特に限定されず、任意の既存の手段を用いてもよい。
【0057】
次に、ステップS604では、ネットワーク分析部214は、ステップS602で計算した各演算層毎の各重みファイルの活性化値に基づいて、これらの重みフィルタを分類する。例えば、ここでは、ネットワーク分析部214は、重みフィルタを活性化値が高い順に並べたフィルタ重要度ランキングを生成してもよい。
【0058】
以上説明した処理410Bでは、各重みフィルタの活性化値を計算して、重みフィルタを活性化値が高い順に並べたフィルタ重要度ランキングを生成することができる。また、後述するように、ここで生成した、重みフィルタの活性化値に基づいたフィルタ重要度ランキングに基づいて、深層ニューラルネットワークからプルーニングする重みフィルタを判定することができる。
【0059】
次に、
図7及び
図8を参照して、本開示の実施形態に係る演算層間感度分析420の具体例について説明する。
【0060】
図7は、本開示の実施形態に係る演算層間感度分析420を深層ニューラルネットワークの検出精度の劣化率に基づいて行う場合の処理420Aの流れの一例を示す図である。
図7に示す処理420Aは、上述した演算層間感度分析420の具体例の1つであり、ネットワーク分析部(例えば
図2に示すネットワーク分析部214)によって実施される処理である。
【0061】
まず、ステップS702では、ネットワーク分析部214は、プルーニング前の深層ニューラルネットワークの検出精度を判定する。ここでは、ネットワーク分析部214は、例えば上述した加工済みデータが深層ニューラルネットワークに入力された場合、深層ニューラルネットワークの加工済みデータについて判定した検出結果(加工済みデータにおけるオブジェクトのカテゴリー及び位置等)を、正しい検出結果を示すグラウンドトゥルースに比較することで深層ニューラルネットワークの検出精度を判定してもよい。
【0062】
次に、ステップS704では、ネットワーク分析部214は、プルーニングするフィルタの割合を示すプルーニング率の初期値P(以下、「初期プルーニング率」という)を設定する。この初期プルーニング率Pは、例えばプルーニング管理装置の管理者やユーザによって設定されてもよい。
なお、ここでの初期プルーニング率は、任意の値に設定されてもよい。しかし、深層ニューラルネットワークの軽量化と検出精度の劣化率とのバランスを考慮し、初期プルーニング率を50~60%に設定することが望ましい。
【0063】
次に、ステップS706では、ネットワーク分析部214は、ステップS704で設定された初期プルーニング率を用いて、深層ニューラルネットワークのi番目の演算層(なお、初回ではiは0である)に対してプルーニング処理を実行する。一例として、ステップS704では、初期プルーニング率が「55%」として設定された場合、ネットワーク分析部214は、i番目の演算層において、55%の重みフィルタを削除する。これにより、プルーニング済みの深層ニューラルネットワークが生成される。
【0064】
次に、ステップS708では、ネットワーク分析部214は、ステップS706で生成したプルーニング済みの深層ニューラルネットワークの検出精度を判定する。ここでは、ネットワーク分析部214は、例えば上述した加工済みデータがプルーニング済みの深層ニューラルネットワークに入力された場合、プルーニング済みの深層ニューラルネットワークの加工済みデータについて判定した検出結果(加工済みデータにおけるオブジェクトのカテゴリー及び位置等)を、正しい検出結果を示すグラウンドトゥルースに比較することでプルーニング済みの深層ニューラルネットワークの検出精度を判定してもよい。
【0065】
次に、ステップS710では、ネットワーク分析部214は、ステップS702で判定したプルーニング前の深層ニューラルネットワークの検出精度と、ステップS708で判定したプルーニング済みの深層ニューラルネットワークの検出精度との差分を、検出精度の劣化率d_iとして計算する。例えば、ここでは、ステップS702で判定したプルーニング前の深層ニューラルネットワークの検出精度から、ステップS708で判定したプルーニング済みの深層ニューラルネットワークの検出精度を引いた値を検出精度の劣化率d_iとしてもよい。
【0066】
次に、ステップS712では、ネットワーク分析部214は、ステップS704で設定された初期プルーニング率Pと、ステップS710で判定した検出精度の劣化率d_iとに基づいて、i番目の演算層の最終プルーニング率Piを計算する。
より具体的には、i番目の演算層の最終プルーニング率Piは、以下の数式1で求められる。
【数1】
【0067】
次に、ステップS714では、ネットワーク分析部214は、対象の演算層iの値が、深層ニューラルネットワークの演算層の総数N以下か否かを判定する。対象の演算層iの値が、深層ニューラルネットワークの演算層の総数N以下でない場合(つまり、iの値がN以上の場合)、本処理はステップS716へ進み、終了する。対象の演算層iの値が、深層ニューラルネットワークの演算層の総数N以下の場合、iの値が1で加算され、本処理はステップS706へ戻る。
【0068】
以上説明した処理420Aでは、深層ニューラルネットワークの検出精度の劣化率に基づいてプルーニング率を計算することができる。このように、プルーニングされても深層ニューラルネットワークの検出精度が大きく下がらない重みフィルタをプルーニングし、プルーニングされると深層ニューラルネットワークの検出精度が大きく下がる重みフィルタを残すようなプルーニング率を判定することができる。このように判定したプルーニング率によれば、検出精度を維持しつつ、ニューラルネットワークを軽量化させることができる。
【0069】
図8は、本開示の実施形態に係る演算層間感度分析420を主成分分析(Principal Component Analysis、PCA)に基づいて行う場合の処理420Bの流れの一例を示す図である。
図8に示す処理420Bは、上述した演算層間感度分析420の具体例の1つであり、ネットワーク分析部(例えば
図2に示すネットワーク分析部214)によって実施される処理である。
【0070】
まず、ステップS802では、ネットワーク分析部214は、深層ニューラルネットワークのi番目の演算層(なお、初回ではiは0である)に対して主成分分析を実行する。ここでの主成分分析とは、相関のある多数の変数から相関のない少数で全体のばらつきを最もよく表す主成分と呼ばれる変数を合成する多変量解析の一手法である。この主成分分析によれば、深層ニューラルネットワークのi番目の演算層において、深層ニューラルネットワークによる検出処理の結果に対して影響度が高い演算層の重みフィルタが特定される。ネットワーク分析部214は、深層ニューラルネットワークによる検出処理の結果に対して影響度が高いと主成分分析によって特定された重みフィルタの数を、i番目の演算層において保存するフィルタの数Pと判定する。
なお、ここで行われる主成分分析の手法は特に限定されず、深層ニューラルネットワークのi番目の演算層において、深層ニューラルネットワークによる検出処理の結果に対して影響度が高い重みフィルタを特定できれば任意の既存の手段であってもよい。
【0071】
次に、ステップS804では、ネットワーク分析部214は、ステップS802で判定された重みフィルタの数Pと、i番目の演算層における重みフィルタの数Mとに基づいて、i番目の演算層の最終プルーニング率Piを計算する。
より具体的には、i番目の演算層の最終プルーニング率Piは、以下の数式2で求められる。
【数2】
【0072】
次に、ステップS806では、ネットワーク分析部214は、対象の演算層iの値が、深層ニューラルネットワークの演算層の総数N以下か否かを判定する。対象の演算層iの値が、深層ニューラルネットワークの演算層の総数N以下でない場合(つまり、iの値がN以上の場合)、本処理はステップS808へ進み、終了する。対象の演算層iの値が、深層ニューラルネットワークの演算層の総数N以下の場合、iの値が1で加算され、本処理はステップS802へ戻る。
【0073】
以上説明した処理420Bでは、主成分分析に基づいて深層ニューラルネットワークのプルーニング率を計算することができる。このように、深層ニューラルネットワークによる検出処理の結果に対して影響度が高い重みフィルタを保存し、これ以外の重みフィルタをプルーニングすることで、検出精度を維持しつつ、ニューラルネットワークを軽量化させることができる。
【0074】
次に、
図9を参照して、本開示の実施形態に係るプルーニング処理を、判定したプルーニング率と、重みフィルタの重要度ランキングとに基づいて行う場合の処理の流れについて説明する。
【0075】
図9は、本開示の実施形態に係るプルーニング処理を、判定したプルーニング率と、重みフィルタの重要度ランキングとに基づいて行う場合の処理900の一例を示す図である。
【0076】
まず、ステップS902では、データ加工部は、入力データを加工することで得られた加工済みデータを深層ニューラルネットワークに入力する。上述したように、ここでの入力データは、深層ニューラルネットワークの検出精度を検証するために用いられる画像データである。
なお、加工済みデータを生成するための加工処理の詳細については
図14を参照して説明するため、ここではその説明を省略する。
【0077】
次に、ステップS904では、ネットワーク分析部は、深層ニューラルネットワークにおける各演算層毎に、当該演算層のプルーニング率を判定する。ここで、演算層のプルーニング率を判定するための処理は、例えば
図7を参照して説明した処理420A、又は
図8を参照して説明した処理420Bのいずれかであってもよく、ここではその説明を省略する。
【0078】
次に、ステップS906では、ネットワーク分析部は、各演算層毎に、重みフィルタの重要度ランキングを生成する。ここで、重みフィルタの重要度ランキングを生成するための処理は、例えば
図5を参照して説明した処理410A、又は
図6を参照して説明した処理410Bのいずれかであってもよく、ここではその説明を省略する。
【0079】
次に、ステップS908では、ネットワークプルーニング部は、ステップS904で判定した各演算層のプルーニング率と、ステップS906で生成した各演算層の重みフィルタ重要度ランキングに基づいて深層ニューラルネットワークに対するプルーニング処理を行う。一例として、ネットワークプルーニング部は、ステップS904で判定した各演算層のプルーニング率を達成するまで、各演算層の重みフィルタの中から、重要度ランキングが低い重みフィルタ(例えば、所定の重要度基準を満たさない重みフィルタ)を削除してもよい。
【0080】
以上説明した処理900によれば、各演算層毎の、深層ニューラルネットワークによる検出処理の結果に対する影響度に基づいてプルーニング率と、各演算層内の重みフィルタの重要度ランキングとに基づいてプルーニング処理を行うことで、検出精度を維持しつつ、ニューラルネットワークを軽量化させることができる。
【0081】
次に、
図10を参照して、本開示の実施形態に係るプルーニング処理を、演算層内感度分析と、特徴マップのクラスタリングとに基づいて行う場合の処理について説明する。
【0082】
図10は、本開示の実施形態に係るプルーニング処理を、演算層内感度分析と、特徴マップのクラスタリングとに基づいて行う場合の処理1000の一例を示す図である。
【0083】
まず、ステップS1002では、データ加工部は、入力データを加工することで得られた加工済みデータを深層ニューラルネットワークに入力する。上述したように、ここでの入力データは、深層ニューラルネットワークの検出精度を検証するために用いられる画像データである。
なお、加工済みデータを生成するための加工処理の詳細については
図14を参照して説明する。
【0084】
次に、ステップS1004では、ネットワーク分析部は、深層ニューラルネットワークに対して、演算層内感度分析を行うことで、各演算層内の重みフィルタ重要度ランキングを生成する。ここでの演算層内は、上述した演算層内感度分析410に実質的に対応し、例えば
図5を参照して説明した処理410Aや
図6を参照して説明した処理410Bであってもよい。
【0085】
次に、ステップS1006では、ネットワーク分析部は、深層ニューラルネットワークの各演算層に含まれる重みフィルタによって生成される特徴マップに対するクラスタリング手法を行い、生成した特徴マップのクラスタに基づいて重みフィルタの冗長性を判定する。
なお、特徴マップのクラスタリングの詳細については後述するため、ここではその説明を省略する。
【0086】
次に、ステップS1008では、ネットワークプルーニング部は、ステップS1004で判定した重みフィルタ重要度ランキングと、ステップS1006で判定した重みフィルタの冗長性とに基づいて深層ニューラルネットワークに対するプルーニング処理を行う。一例として、ネットワークプルーニング部は、所定の重要度基準を満たさない重みフィルタ(例えば、低位50%の重みフィルタ)の中で、冗長性が所定の冗長性基準を満たす重みフィルタ(例えば、80%以上の)を削除してもよい。
【0087】
以上説明した処理1000によれば、重要度が低くて、且つ冗長性が高い重みフィルタをプルーニングの対象として削除することで、検出精度を維持しつつ、ニューラルネットワークを軽量化させることができる。
【0088】
次に、
図11及び
図12を参照して、本開示の実施形態に係る特徴マップのクラスタリング処理について説明する。
【0089】
図11は、本開示の実施形態に係る特徴マップのクラスタをK平均法によって生成する場合の処理1006Aの一例を示す図である。
図11に示す1006Aは、
図10に示すステップS1006で特徴マップのクラスタリングを行う処理の具体例の1つであり、ネットワーク分析部(例えば
図2に示すネットワーク分析部214)によって実施される処理である。
【0090】
まず、ステップS1102では、ネットワーク分析部214は、各演算層において、それぞれの重みフィルタに特徴マップを生成させる。これらの特徴マップは、対象の画像(つまり、加工済みデータ)のどこに特定の特徴が存在するかという反応の強度を示すデータ構造であり、画像におけるオブジェクトを検出するためのオブジェクト検出処理に用いられる。
【0091】
次に、ステップS1104では、ネットワーク分析部214は、特徴マップをいくつのクラスタ(つまり、グループ)に分類するかを指定するクラスタ数Kを設定する。このクラスタ数Kは、例えばプルーニング管理装置の管理者によって選択されてもよく、深層ニューラルネットワークの構造、入力データ等に応じて自動的にネットワーク分析部によって設定されてもよい。
【0092】
次に、ステップS1106では、ネットワーク分析部214は、いわゆるK平均法を用いて、ステップS1102で各演算層に含まれるそれぞれの重みフィルタによって生成された特徴マップをステップS1104で設定されたクラスタ数K個のクラスタに分類した後、それぞれのクラスタ同士の共通特性を判定する。ここでの共通特性とは、クラスタ同士の類似度を示す値である。ここでのクラスタ同士の共通特性を判定する手段は特に限定されず、既存の類似度アルゴリズム(similarity algorithm)を用いてもよい。
【0093】
ここで判定したクラスタ同士の共通特性に基づいて、他の重みフィルタと冗長性が高い重みフィルタを特定することができる。他の重みフィルタと冗長性が高い重みフィルタは、当該他の重みフィルタと実質的に同様の情報を含む特徴マップを生成するため、削除されても深層ニューラルネットワークの検出精度が大きく下がらない。従って、本開示の実施形態に係るプルーニング処理において、冗長性が高い重みフィルタ(例えば、所定の冗長性基準を満たす重みフィルタ)をプルーニングすることにより、検出精度を維持しつつ、ニューラルネットワークを軽量化させることができる。
【0094】
図12は、本開示の実施形態に係る特徴マップのクラスタをハッシュアルゴリズムによって生成する場合の処理1006Bの一例を示す図である。
図11に示す1006Bは、
図10に示すステップS1006で特徴マップのクラスタリングを行う処理の具体例の1つであり、ネットワーク分析部(例えば
図2に示すネットワーク分析部214)によって実施される処理である。
【0095】
まず、ステップS1202では、ネットワーク分析部214は、各演算層において、それぞれの重みフィルタに特徴マップを生成させる。これらの特徴マップは、対象の画像(つまり、加工済みデータ)のどこに特定の特徴が存在するかという反応の強度を示すデータ構造であり、画像におけるオブジェクトを検出するためのオブジェクト検出処理に用いられる。
【0096】
次に、ステップS1204では、ネットワーク分析部214は、ハッシュアルゴリズムを用いて、各演算層に含まれるそれぞれの重みフィルタによって生成された特徴マップを所定の数のクラスタに分類した後、それぞれのクラスタ同士の共通特性を判定する。ここでのハッシュアルゴリズムは特に限定されず、hash-based co-clusteringなど、任意のアルゴリズムであってもよい。
【0097】
上述したように、ここで判定したクラスタ同士の共通特性に基づいて、他の重みフィルタと冗長性が高い重みフィルタを特定することができ、本開示の実施形態に係るプルーニング処理において、冗長性が高い重みフィルタ(例えば、所定の冗長性基準を満たす重みフィルタ)をプルーニングすることにより、検出精度を維持しつつ、ニューラルネットワークを軽量化させることができる。
【0098】
次に、
図13及び
図14を参照して、本開示の実施形態に係るデータ加工部によるデータ加工処理について説明する
【0099】
図13は、本開示の実施形態に係る入力データを加工し、加工済みデータを生成するための論理構成の一例を示す図である。
図13に示すように、まず、入力データ205は、プルーニング管理装置210におけるデータ加工部212に入力される。上述したように、データ加工部212は、入力データ205を深層ニューラルネットワークに入力する加工済みデータ1310に変換するための機能部である。また、入力データ205は、深層ニューラルネットワーク220の検出精度を検証するために用いられる画像データである。
データ加工部212は、入力データ205を入力した後、本開示の実施形態に係るデータ加工処理を行うことで、入力データ205を加工済みデータ1310に変換する。
なお、データ加工部212によるデータ加工処理の詳細については
図14を参照して説明する。
【0100】
図14は、本開示の実施形態に係る入力データを加工し、加工済みデータを生成するためのデータ加工処理1400の一例を示す図である。上述したように、本開示では、深層ニューラルネットワークにおけるどの重みフィルタがどのようなオブジェクトの検出に貢献しているかとの対応関係を明確にするためには、入力データを、対象のオブジェクトが強調されるように加工した加工済みデータに変換する。以下、この処理の流れについて説明する。
【0101】
まず、ステップS1402では、データ加工部は、入力データにおけるオブジェクトの中から、検出対象のオブジェクトを設定する。ここでは、データ加工部は、例えばユーザからの入力に基づいて対象のオブジェクトを設定してもよい。
【0102】
次に、ステップS1404では、データ加工部は、入力データを加工することで、対象のオブジェクトのみが残存し、対象のオブジェクト以外の領域が除去された加工済みデータを生成する。例えば、データ加工部は、対象のオブジェクトに対応する画素を特定した後、対象のオブジェクトに対応する画素を残し、対象のオブジェクトに対応しない画素の色を黒としてもよい。
【0103】
次に、ステップS1406では、データ加工部は、ステップS1404で生成した加工済みデータを深層ニューラルネットワークに入力する。
【0104】
以上説明したデータ加工処理1400によれば、深層ニューラルネットワークのおけるどの重みフィルタがどのようなオブジェクトの検出に貢献しているかとの対応関係がより明確となるため、上述した感度分析により、各演算層の影響度や、演算層における重みフィルタの重要度を判定することができる。
【0105】
以上、本発明の実施の形態について説明したが、本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【0106】
200 プルーニング管理システム
205 入力データ
210 プルーニング管理装置
212 データ加工部
214 ネットワーク分析部
216 ネットワークプルーニング部
220 深層ニューラルネットワーク
222 入力層
224 中間層
226 出力層