(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-29
(45)【発行日】2024-09-06
(54)【発明の名称】ニューラルネットワークの最適化方法及びコンピュータシステム、並びにコンピュータ可読記憶媒体
(51)【国際特許分類】
G06N 3/082 20230101AFI20240830BHJP
G06N 3/0495 20230101ALI20240830BHJP
【FI】
G06N3/082
G06N3/0495
【外国語出願】
(21)【出願番号】P 2022139608
(22)【出願日】2022-09-02
【審査請求日】2022-09-02
(32)【優先日】2022-04-27
(33)【優先権主張国・地域又は機関】TW
(73)【特許権者】
【識別番号】504429600
【氏名又は名称】緯創資通股▲ふん▼有限公司
【氏名又は名称原語表記】WISTRON CORPORATION
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100226263
【氏名又は名称】中田 未来生
(72)【発明者】
【氏名】郭 峻因
(72)【発明者】
【氏名】張 恩誌
【審査官】大倉 崚吾
(56)【参考文献】
【文献】特表2021-526253(JP,A)
【文献】米国特許出願公開第2021/0264278(US,A1)
【文献】米国特許出願公開第2021/0287092(US,A1)
【文献】中国特許出願公開第114282666(CN,A)
【文献】中国特許出願公開第113947203(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークの最適化方法であって、該方法は、
前記ニューラルネットワークの少なくとも2つのバッチ正規化層の複数のスケーリング係数を収束し、前記複数のスケーリング係数のそれぞれは、前記バッチ正規化層の1つにおける対応するチャネルが冗長チャネルであるか否かを決定するために使用されるステップと、
前記複数のスケーリング係数を収束することに応じて、2つの異なるプルーニングアルゴリズムを使用して、前記ニューラルネットワークを順次プルーニングするステップと、
前記ニューラルネットワークをプルーニングする前記プルーニングアルゴリズムの各々に応じて、プルーニング済みニューラルネットワークを再学習させるステップと、
を備え
、
前記2つのプルーニングアルゴリズムのうちの1つは、チャネルプルーニングアルゴリズムであり、前記2つの異なるプルーニングアルゴリズムを使用して前記ニューラルネットワークを順次プルーニングすることは、
グローバルスケーリング係数閾値を、各前記バッチ正規化層のスパース比に対応するローカルスパースに変換し、前記少なくとも2つのバッチ正規化層に使用されるローカルスパースは異なることと、
対応するバッチ正規化層のローカルスパースよりも小さいスケーリング係数を有する冗長チャネルをプルーニングすることと、
を含む、
ニューラルネットワークの最適化方法。
【請求項2】
請求項1に記載のニューラルネットワークの最適化方法であって、
前記2つのプルーニングアルゴリズムの他の1つは、重みプルーニングアルゴリズムであり、かつ前記2つの異なるプルーニングアルゴリズムを使用して前記ニューラルネットワークを順次プルーニングするステップは、
前記チャネルプルーニングアルゴリズムを使用して前記ニューラルネットワークをプルーニングすることに応じて、前記重みプルーニングアルゴリズムを使用して前記ニューラルネットワークをプルーニングするステップ、
を備える、ニューラルネットワークの最適化方法。
【請求項3】
請求項1に記載のニューラルネットワークの最適化方法であって、
前記プルーニング済みニューラルネットワークの精度損失と前記品質閾値とを比較するステップと、
前記品質閾値との比較結果に従って、前記2つのプルーニングアルゴリズムのうち少なくとも1つの前記プルーニング比を変更するステップと、
を更に備える、ニューラルネットワークの最適化方法。
【請求項4】
ニューラルネットワークのためのコンピュータシステムであって、該コンピュータシステムは、
コードを格納するように構成されたメモリと、
前記メモリに結合され、かつ前記コードを
前記ニューラルネットワークの少なくとも2つのバッチ正規化層の複数のスケーリング係数を収束し、前記複数のスケーリング係数のそれぞれは、前記バッチ正規化層の1つにおける対応するチャネルが冗長チャネルであるか否かを決定するために使用され、
前記複数のスケーリング係数を収束することに応じて、2つの異なるプルーニングアルゴリズムを使用して、ニューラルネットワークを順次プルーニングし、かつ
前記ニューラルネットワークをプルーニングする前記プルーニングアルゴリズムの各々に応じて、プルーニング済みニューラルネットワークを再学習させる、
ためにロード及び実行するように構成されたプロセッサと、
を備え
、
前記2つのプルーニングアルゴリズムのうちの1つは、チャネルプルーニングアルゴリズムであり、前記プロセッサは、更に、
グローバルスケーリング係数閾値を、各前記バッチ正規化層のスパース比に対応するローカルスパースに変換し、前記少なくとも2つのバッチ正規化層に使用されるローカルスパースは異なり、
対応するバッチ正規化層のローカルスパースよりも小さいスケーリング係数を有する冗長チャネルをプルーニングするように構成されている、コンピュータシステム
【請求項5】
コードを格納するための非一過性コンピュータ可読記憶媒体であって、前記コードは、
プロセッサによってロードされて、請求項1に記載のニューラルネットワークの最適化方法を実行することを特徴とする、非一過性コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ニューラルネットワーク技術に関し、より詳細には、ニューラルネットワークのための最適化方法及びコンピュータシステム、並びにコンピュータ可読記憶媒体に関する。
【背景技術】
【0002】
近年の人工知能(AI)技術の急速な発展に伴い、ニューラルネットワークモデルのパラメータ量及び計算量は急激に増加している。これに伴い、ニューラルネットワークモデルの圧縮技術も進化している。注目すべきは、モデルを圧縮するための重要な技術である「プルーニング(枝刈り)」である。しかしながら、既存のプルーニング法は、すべて単一型のプルーニングである。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本開示の実施形態は、モデルの簡略化を達成するためのハイブリッドプルーニングソリューションを提供するニューラルネットワークの最適化方法及びコンピュータシステム、並びにコンピュータ可読記憶媒体を提供する。
【課題を解決するための手段】
【0004】
本開示の一実施形態によるニューラルネットワークの最適化方法は、以下を含む(ただし、これらに限定されない)。前記ニューラルネットワークを、2つの異なるプルーニングアルゴリズムを使用して、順次プルーニングする。プルーニング済みニューラルネットワークは、前記ニューラルネットワークをプルーニングする前記プルーニングアルゴリズムの各々に応じて再学習する。
【0005】
本開示の一実施形態によるニューラルネットワークのためのコンピュータシステムは、メモリとプロセッサと、を含む(ただし、これらに限定されない)。前記メモリは、コードを格納するように構成される。前記プロセッサは、前記メモリに結合される。前記プロセッサは、2つの異なるプルーニングアルゴリズムを使用して前記ニューラルネットワークを順次プルーニングし、かつ前記ニューラルネットワークをプルーニングする前記プルーニングアルゴリズムの各々に応じてプルーニング済みニューラルネットワークを再学習するために前記コードをロード及び実行するように構成されている。
【0006】
本開示の実施形態による非一過性コンピュータ可読記憶媒体は、コードを格納するように構成される。プロセッサは、前記コードをロードして、上述したニューラルネットワークの最適化方法を実行する。
【発明の効果】
【0007】
以上に基づいて、本開示の実施形態によるニューラルネットワークの最適化方法及びコンピュータシステム、並びにコンピュータ可読記憶媒体は、様々なプルーニングアルゴリズムを使用し、低い計算コストで深層学習ニューラルネットワークを実現する。
【0008】
本開示の上記及び他の特徴並びに利点を理解しやすくするために、以下、添付の図面を参照して例示的な実施形態を詳細に説明する。
【図面の簡単な説明】
【0009】
添付の図面は、本開示の更なる理解を提供するために含まれ、かつ本明細書に組み込まれ、本明細書の一部を構成するものである。図面は、本開示の例示的な実施形態を図示し、説明と一緒に、本開示の原理を説明するのに役立つ。
【0010】
【
図1】本開示の一実施形態によるコンピュータシステムの構成要素のブロック図である。
【
図2】本開示の実施形態によるニューラルネットワークの最適化方法のフローチャートである。
【
図3】本開示の実施形態による幾何学的中央値を介したチャネルプルーニング(CPGM)のフローチャートである。
【
図4】本開示の実施形態によるスリミング法のフローチャートである。
【
図5】本開示の実施形態によるスリミング法とThiNet法の組合せのフローチャートである。
【
図6】本開示の実施形態によるCPGM法とThiNet法の組合せのフローチャートである。
【
図7】本開示の実施形態による構造化トリミング及び非構造化トリミングの概略図である。
【
図8】本開示の実施形態によるユーザーインターフェースの概略図である。
【発明を実施するための形態】
【0011】
図1は、本開示の実施形態によるコンピュータシステム100のコンポーネントのブロック図である。
図1を参照すると、コンピュータシステム100は、メモリ110と、プロセッサ130と、を含む(ただし、これに限定されない)。コンピュータシステム100は、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、タブレットコンピュータ、サーバ、医療又は製品検査機器、若しくは他のコンピューティングデバイスであってよい。
【0012】
メモリ110は、固定又は取り外し可能なランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、従来のハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)などのような、任意のタイプのものであってよい。一実施形態では、メモリ110は、コード、ソフトウェアモジュール、構成、データ、又はファイル(例えば、トレーニングサンプル、モデルパラメータ、プルーニングセット、又は冗長チャネル)を格納するように構成される。
【0013】
プロセッサ130は、メモリ110に結合される。プロセッサ130は、中央演算処理装置(CPU)、グラフィック処理装置(GPU)、プログラマブル汎用又は特殊用途マイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラマブルコントローラ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、ニューラルネットワーク加速器、他の同様のコンポーネント、若しくは前述のコンポーネントの組合せであってよい。一実施形態では、プロセッサ130は、コンピュータシステム100の動作の全て又は一部を実行し、かつメモリ110に格納された各コード、ソフトウェアモジュール、ファイル、及びデータをロード並びに実行するように構成される。
【0014】
いくつかの実施形態では、コンピュータシステム100は、インプットデバイス150を更に含む。インプットデバイス150は、タッチパネル、マウス、キーボード、トラックボール、スイッチ、又はキーであってよい。一実施形態では、インプットデバイス150は、スワイプ、タッチ、プレス、又はクリック操作などのようなユーザ操作を受け取るように構成される。
【0015】
いくつかの実施形態では、コンピュータシステム100は、ディスプレイ170を更に含む。ディスプレイ170は、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、量子ドットディスプレイ、又は他の種類のディスプレイであってよい。一実施形態では、ディスプレイ170は、画像を表示するように構成されている。画像のコンテンツは、ユーザーインターフェースであってもよい。
【0016】
以下、本開示の実施形態で説明する方法について、コンピュータシステム100内のデバイス、構成要素、及びモジュールを参照して説明する。なお、本方法の各処理は、状況に従って調整することができ、ここでの記載に限定されるものではない。
【0017】
図2は、本開示の一実施形態によるニューラルネットワークの最適化方法のフローチャートである。
図2を参照すると、プロセッサ130は、2つの異なるプルーニングアルゴリズムを使用して、ニューラルネットワークを順次プルーニングする(ステップS210)。具体的には、ニューラルネットワークは、ディープラーニングアルゴリズムで学習する。深層学習アルゴリズムは、例えば、YOLO(You only look once)、AlexNet、ResNet、Region Based Convolutional Neural Networks(R-CNN)、又はFast R-CNN(Fast CNN)である。ニューラルネットワークは、画像分類、オブジェクト検出、又は他の推論に使用されてもよく、かつ本開示の実施形態は、ニューラルネットワークの使用を制限することを意図していないことに留意されたい。学習済みニューラルネットワークは、予め設定された精度基準を満たしてもよい。
【0018】
注目すべきは、学習済みニューラルネットワークは、各層に対応するパラメータ(例えば、重み、チャネル数、バイアス、又は活性化関数)を有することである。パラメータが多すぎると、演算効率に影響を与えることが考えられる。ニューラルネットワークの圧縮技術の一つとして、プルーニングがある。プルーニングは、ニューラルネットワークから影響を及ぼさない又は影響を及ぼす可能性が低い要素(例えば、チャネル、フィルタ/カーネル、特徴マップ、層、ニューロン、又は他のパラメータ)を減算するために使用する。
【0019】
関連技術とは異なり、本開示の実施形態は、ハイブリッドプルーニングソリューションを提供する。二つ以上のプルーニングアルゴリズムは、チャネル、重み、フィルタ、活性化、勾配、及び隠れ層プルーニング、又はプルーニング探索アルゴリズムであってよく、単一のプルーニングソリューションと比較して、最も高い圧縮率及び最も低い精度損失を達成することができる。
【0020】
一実施形態では、本開示の実施形態で使用する複数のプルーニングアルゴリズムのうちの1つは、チャネルプルーニング(又はフィルタプルーニングと呼ばれる)アルゴリズムである。チャネルプルーニングアルゴリズムは、例えば、ThiNet、ネットワークスリミング、幾何学的中央値を介したフィルタプルーニング(FPGM)、又は幾何学的中央値を介したチャネルプルーニング(CPGM)である。
【0021】
例えば、ThiNet法は、次の層の統計に従って現在の層をプルーニングし、そして現在の層の出力に対する影響が少ない又は最小であるフィルタをプルーニングすることを期待する。それ故に、プルーニング済みチャネルは、平均二乗誤差を誤差閾値より小さくする。次に、チャネルは層ごとにプルーニングされる。最後に、各層の全てのチャネルに近似する残りのチャネルが導出される。
【0022】
例えば、
図3は、本開示の一実施形態によるCPGM法のフローチャートである。
図3を参照すると、CPGM法は、FPGM法によって提案されたフィルタの重みに基づくユークリッド距離及び冗長フィルタの重みの検索を指す。最初に、プロセッサ130は、ノルム比及び距離比を設定してもよい。ノルム比は、配置されるフィルタの重みの大きさに従って設定される比率である。すなわち、ノルム比は、全ての重みにおいて保存される大きさの比率である。例えば、ノルム比は、フィルタの重みの90%である。距離比は、ユークリッド距離に基づくフィルタの重みの中央値に近く、かつ除去されるチャネルインデックスの割合である。すなわち、距離比は、2つのフィルタ/チャネルの類似度(距離は、類似度に関係する)によって表される比率である。プロセッサ130は、設定されたノルム比及び距離比に基づいて重みを並べ替えてもよい(ステップS310)。例えば、学習済みニューラルネットワークのフィルタの重みは降順に並べられ、かつ上位90%の重みがノルム比に基づいて抽出される。プロセッサ130は、フィルタのユークリッド距離を決定してもよく(ステップS320)、例えば、多次元空間における任意のテンソルと全てのフィルタの間の距離を決定してもよい。次に、プロセッサ130は、類似のフィルタを決定し、かつ対応するチャネルインデックスを格納してもよい(ステップS330)。例えば、各層におけるユークリッド距離の和が最小となる点を幾何学的中心地点として定義する。多次元空間において、フィルタが属する層の幾何学的中央点に近い場合(つまり、近いほど類似度が高く、かつ遠いほど類似度が低い)、そのフィルタはデータ冗長としてみなし、かつ置換してもよい。例えば、このフィルタ/チャネルは冗長フィルタ/チャネルであり、かつプルーニングを行ってもよい。インデックスは、フィルタ/チャネルを表す番号である。プロセッサ130は、1つ以上のフィルタ/チャネルのインデックスをプルーニングセットに割り当ててもよい。すなわち、このセットは、プルーニングする冗長フィルタ/チャネルを含む。
【0023】
例えば、
図4は、本開示の実施形態によるスリミング方法のフローチャートである。
図4を参照すると、プロセッサ130は、各バッチ正規化層(例えば、図中の第1層から第N層まで、Nは正の整数)におけるチャネルのスケーリング係数を並べ替えてもよい。スケーリング係数は、順伝播中に、対応するチャネルの出力値に乗算されることになる。ニューラルネットワークの学習中、スケーリング係数は他の重みとともに学習され、かつ制約条件(例えば、L1ノルムのスパース性のペナルティ)に従う。注目すべきは、学習後、スケーリング係数が小さい場合、対応するチャネルは冗長チャネルとしてみなされる可能性があり(プルーニングセットに分類される可能性がある)、かつスケーリング係数が大きい場合、対応するチャネルは無効になる/停止される/冗長チャネルとしてみなされない可能性があることである。図に示すように、グローバルバッチ正規化閾値BNTは、0.15であると仮定される。このように、第1層の0.001、0.035、0.1、0.0134、及び0.122のスケーリング係数を有するチャネルは冗長チャネル401であり、第2層の列記したスケーリング係数を有するチャネルは全て冗長チャネル401である。バッチ正規化閾値BNTよりも大きいスケーリング係数を有するチャネルは、非冗長チャネル402である。次に、プロセッサ130は、冗長チャネル401をプルーニングし、かつ非冗長チャネル402を保持してもよい。
【0024】
例えば、ThiNet法と貪欲法の両方に基づいて、プロセッサ130は、検証データセットをチャネルごとに供給し、かつL2ノルム関数を使用して、プルーニングされたチャネルとプルーニングされていないチャネルの出力特徴マップの間の差を比較及び取得してもよい。差分が差分閾値より小さい場合、プルーニング済みチャネルは冗長チャネルとしてみなし、かつ差分が差分閾値より小さくない場合、プルーニング済みチャネルは非冗長チャネルとしてみなしてもよい。従来のThiNetとの違いは、本実施形態では、ThiNetに送るスパース比はローカルスパースであり、かつ各層に使用されるローカルスパース比は異なっていてもよいことである。
【0025】
一実施形態では、チャネルプルーニングアルゴリズムは、第1チャネルプルーニングアルゴリズムと、第2チャネルプルーニングアルゴリズムと、を含む。プロセッサ130は、第1のチャネルプルーニングアルゴリズムに従って、第1のプルーニングセットを取得してもよい。第1のプルーニングセットは、第1のチャネルプルーニングアルゴリズムによって選択されたプルーニングする1つ以上の(冗長)チャネルを含む。さらに、プロセッサ130は、第2のチャネルプルーニングアルゴリズムに従って、第2のプルーニングセットを取得してもよい。第2のプルーニングセットは、第2のチャネルプルーニングアルゴリズムによって選択されたプルーニングする1つ以上の(冗長)チャネルを含む。すなわち、プロセッサ130は、異なるチャネルプルーニングアルゴリズムを使用して、対応するプルーニングセットを取得する。次に、プロセッサ130は、第1のプルーニングセット及び第2のプルーニングセットに従ってプルーニングする1つ以上の冗長チャネルを判定してよい。例えば、プロセッサ130は、これらのプルーニングセットのチャネルの交差点、和集合、任意の、又は一定の数を取得し、それによって、ハイブリッドチャネルプルーニングソリューションを提供してもよい。
【0026】
例えば、
図5は、本開示の一実施形態によるスリミング法とThiNet法の組合せのフローチャートである。
図5を参照すると、学習済みニューラルネットワークに対して、プロセッサ130は、スリミング法を使用して、各層のスケーリング係数閾値(例えば、前述のバッチ正規化閾値)を決定し(ステップS510)、かつグローバルスケーリング係数閾値を各層のスパース比に対応するローカルスパースに変換しても良い。プロセッサ130は、各層のローカルスパースに従って、各層の第1プルーニングセットを決定してもよい(ステップS520)。次に、プロセッサ130は、ローカルスパースに従って、ThiNet法を使用してプルーニングするフィルタを選択(すなわち、第2のプルーニングセットを決定)してもよい(ステップS530)。プロセッサ130は、スリミング法及びThiNet法のプルーニングセットの交点によってプルーニングする冗長チャネルを判定し(ステップS540)、それに応じて冗長チャネルをプルーニングしてもよい(ステップS550)。
【0027】
図6は、本開示の実施形態によるCPGM法とThiNet法の組合せのフローチャートである。
図6を参照すると、学習済みニューラルネットワークについて、プロセッサ130は、設定されたノルム比及び距離比に従ってCPGM法を使用して第1のプルーニングセットを決定し(ステップS610)、かつ設定された距離比に従ってThiNet法を使用して第2のプルーニングセットを決定してもよい(ステップS620)。注目すべきは、ThiNet法は、出力特徴マップのチャネル効果を見つけることに重点を置いていることである。CPGM法は、フィルタの重みをプルーニングするだけでなく、冗長なチャネルの重みと以前の重みとの間の差分の取得も行う。次に、プロセッサ130は、ThiNet法及びCPGM法のプルーニングセットの交点に従ってプルーニングする冗長チャネルを決定し(ステップS630)、それに応じて冗長チャネルをプルーニングしてもよい(ステップS640)。
【0028】
他の実施形態では、他のチャネルプルーニングアルゴリズム又はより多くのチャネルプルーニングアルゴリズムも組み合わせてよいことに留意されたい。
【0029】
一実施形態では、本開示の実施形態で使用するプルーニングアルゴリズムの別のものは、重みプルーニング(又はエレメントワイズプルーニングと呼ばれる)アルゴリズムである。重みプルーニングアルゴリズムは、例えば、宝くじ仮説である。
【0030】
宝くじ仮説を例にとって説明すると、プロセッサ130は、ニューラルネットワークをランダムに初期化する。ニューラルネットワークは、複数のサブネットワークを含む。プロセッサ130は、ニューラルネットワークを反復的に学習させ、かつより当選しやすいサブネットワークを発見し得る。処理の間、プロセッサ130は、既知のプルーニング戦略を設定するためのマスクを確立してもよい。この戦略は、どのサブネットワークがニューラルネットワークに影響を与えるか、すなわち、勝つことができるサブネットワークに関連する。その後、プロセッサ130は、マスクに従って、重要な影響力を有さない(勝てない)サブネットワークをプルーニングしてもよい。重みを例とすると、プロセッサ130は、重みをソートし、かつ最小の重みの特定の比率又は数をプルーニングしてもよい。
【0031】
一実施形態では、チャネルプルーニングアルゴリズムを使用してニューラルネットワークをプルーニングすることに応じて、その後、プロセッサ130は、重みプルーニングアルゴリズムを使用してニューラルネットワークをプルーニングしてもよい。チャネルプルーニングアルゴリズムは構造化プルーニングに属し、重みプルーニングアルゴリズムは非構造化プルーニングに属する。非構造化プルーニングは不規則なプルーニングをするため、精度を確保することが難しい場合がある。構造化プルーニングを最初に行うことで、重みが安定した値に復元され、かつ全体の構造を確保することができる。それ故に、その後に続く非構造化プルーニングは、より精度の高いネットワークに微調整することができる。
【0032】
例えば、
図7は、本開示の一実施形態による構造化プルーニング及び非構造化プルーニングの概略図である。
図7を参照すると、プロセッサ130は、構造化プルーニング戦略を使用して、プルーニング済みニューラルネットワークを取得するように、学習済みニューラルネットワークをプルーニングしてもよい。次に、プロセッサ130は、最終的なプルーニング済みニューラルネットワークを取得するように、非構造化プルーニング戦略を使用してプルーニング済みニューラルネットワークをプルーニングしてもよい。構造化プルーニング戦略は、プルーニングされていないチャネル703を保持し、かつ冗長チャネル702を削除する。非構造化プルーニングストラテジーは、冗長な重み701を削除する。
【0033】
他の実施形態では、他の非構造化プルーニング方法(例えば、勾配又は活性化)も使用することができ、又は非構造化プルーニングは構造化プルーニングの前に行うこともできる。
【0034】
一実施形態では、プロセッサ130は、プルーニングの前に、ニューラルネットワークの1つ以上のバッチ正規化層のスケーリング係数を収束させてもよい。例えば、プロセッサ130は、学習済みニューラルネットワークに対してスパースティ学習を行わせてもよい。L1のペナルティは、ニューラルネットワークの学習に使用する損失関数に追加される。バッチ正規化は、平均が0で、かつ標準偏差が1の正規分布が形成されるまで、個々のミニバッチを正規化することである。層間のスケーリング係数の全体の相関が収束し、例えば、スリミング法がより適したチャネルを(例えば、高い精度及び/又は少ない量で)見出すことを助けることができる。
【0035】
いくつかの実施形態では、学習済みニューラルネットワークのスケーリング係数がプリセット値に近づいた場合、プロセッサ130は、スケーリング係数を収束させるためのスパース学習又は他のスキームを省略してもよい。
【0036】
図2を参照すると、各プルーニングアルゴリズムがニューラルネットワークをプルーニングすることに応じて、プロセッサ130は、プルーニング済みニューラルネットワークを再学習させる(ステップS220)。具体的には、各プルーニング後、プロセッサ130は、プルーニング済みニューラルネットワークを再学習させてもよい。ニューラルネットワーク(モデル)が収束すると、プロセッサ130は、別のプルーニングアルゴリズムを使用して、プルーニング済みニューラルネットワークをプルーニングしてもよい。例えば、チャネルプルーニングの後にニューラルネットワークを再学習させ、そしてニューラルネットワークが収束すると、その後、重みプルーニングが行われる。重みプルーニングの間、学習が一定の反復回数に達すると、プロセッサ130は、重みを昇順にソートし、そしてその後、プルーニング比に従ってソート中の最小の重みを削除してもよい。最後に、プロセッサ130は、残りの重みを元の事前学習済みモデルのパラメータに戻して初期化し、そしてその後、プルーニング済みニューラルネットワークを再学習して、最終的な軽量モデルを生成してもよい。
【0037】
すなわち、チャネルがプルーニングされた場合、保存されたチャネルが初期化され、そしてその後、これらの保存されたチャネルのパラメータを学習する。重みがプルーニングされた場合、保存された重みが初期化され、そしてその後、これらの保存された重みのパラメータを学習する。活性化プルーニング、隠れ層プルーニング、又は他のプルーニングの再学習は、適宜行われてもよく、そしてこのように、ここでは繰り返されない。
【0038】
前述の説明では、2つのプルーニングアルゴリズムの組み合わせを例として取り上げたが、他の実施形態では、より多くのプルーニングアルゴリズムを組み合わせてもよいことに注意されたい。
【0039】
一実施形態では、プロセッサ130は、インプットデバイス150を介して入力操作を受け取ってもよい。入力操作は、プルーニング比を設定するために使用され、かつ2つ以上のプルーニングアルゴリズムのうちの少なくとも1つが、プルーニング比に従ってプルーニングを行うために選択される。すなわち、プルーニング比は、各層又は各フィルタの全要素に対するプルーニングする要素(例えば、チャネル、重み、又は活性度)の割合である。例えば、キーボードは、50%のプルーニング比についての入力操作を受け取る。チャネルプルーニングについては、プロセッサ130は、1つの層又は複数の層のチャネルの50%を冗長チャネルとして選択する。重みプルーニングについては、プロセッサ130は、最小の重みの50%を削除してもよい。
【0040】
一実施形態では、プロセッサ130は、プルーニング済みニューラルネットワークの精度損失を判定するために、既知の推論結果の検証サンプルを使用してもよい。例えば、100個の検証サンプルのうち10個が推論で間違っている場合、精度損失は10%である。プロセッサ130は、精度損失とプルーニング済みニューラルネットワークの品質閾値とを比較してもよい。品質閾値は、許容される精度損失である。例えば、品質閾値は、15%、20%、又は25%である。プロセッサ130は、精度損失と品質閾値との比較結果に応じて、プルーニングアルゴリズムのうち少なくとも1つのプルーニング比を変更してもよい。すなわち、品質閾値は、プルーニング比を変更するかを評価するために使用する。例えば、精度損失が品質閾値よりも低い場合、プロセッサ130は、プルーニング比を増やしてもよい。精度損失が品質閾値よりも高い場合、プロセッサ130は、プルーニング比を減らしてもよい。一実施形態では、プロセッサ130は、最も大きなプルーニング比を有し、かつその精度損失が品質閾値よりも低いプルーニング済ニューラルネットワークを最終軽量モデルとして扱ってもよい。
【0041】
一実施形態では、インプットデバイス150を介して受け取った入力操作を使用して品質閾値を設定し、かつ2つ以上のプルーニングアルゴリズムのうち少なくとも1つを選択して品質閾値に従ってプルーニングしてもよい。例えば、マウスは、15%の品質閾値に関する入力操作を受け取る。
【0042】
一実施形態では、プロセッサ130は、ディスプレイ170を介してユーザーインターフェースを提供(表示)してもよい。例えば、
図8は、本開示の一実施形態によるユーザーインターフェースの概略図である。
図8を参照すると、ユーザーインターフェースは、モデル設定801と、プルーニング比設定802と、品質閾値設定803と、を含む。モデル設定801は、ニューラルネットワークの種類、例えば、第3世代(V3)YOLO又はSingle Shot MultiBox Detector(SSD)視覚幾何学グループ(VGG)16を選択するために使用する。プルーニング比設定802は、プルーニング比、例えば、10%~90%を選択するために使用する。品質閾値設定803は、品質閾値(すなわち、許容誤差率)、例えば、0%~20%を設定するために使用する。
【0043】
本開示の一実施形態は、コードを格納するための非一過性コンピュータ可読記憶媒体(例えば、ハードディスク、光ディスク、フラッシュメモリ、ソリッドステートドライブ(SSD)等)を更に提供する。コンピュータシステム100のプロセッサ130又は他のプロセッサは、コードをロードし、かつ本開示の実施形態による1つ以上の最適化方法に対応する処理を実行することができる。これらの処理は、上記で説明されたので、ここでは繰り返さない。
【0044】
要約すると、本開示の実施形態によるニューラルネットワークの最適化方法及びコンピュータシステム、並びにコンピュータ可読記憶媒体では、ハイブリッドプルーニングを使用することにより、ニューラルネットワークの全体の計算量が減少する。例えば、チャネルプルーニングアルゴリズムとウェイトプルーニングアルゴリズムを組み合わせて、チャネル数及びウェイト数を削減することができる。本開示の実施形態によれば、プルーニング比と精度の観点からプルーニング戦略を評価するので、高いプルーニング比と高い精度という要件を満たすことができる。さらに、本開示の実施形態では、ユーザーインターフェースを提供するので、操作者が操作を容易に理解し、かつ慣れることができる。
【0045】
本開示は、上記の例示的な実施形態を参照して説明してきたが、これらは、本開示を限定することを意図するものではない。当業者であれば、本開示の精神及び範囲から逸脱することなく、変更及び修正を行うことができる。それ故に、本開示の保護範囲は、以下の特許請求の範囲によって定義される。
【産業上の利用可能性】
【0046】
本発明に係るニューラルネットワークの最適化方法及びコンピュータシステム、並びにコンピュータ可読記憶媒体記憶媒体は、電子機器及びその制御方法に適用され得る。
【符号の説明】
【0047】
100 コンピュータシステム
110 メモリ
130 プロセッサ
150 インプットデバイス
170 ディスプレイ
S210~S220、S310~S330、S510~S550、S610~S640 ステップ
401 冗長チャネル
402 非冗長チャネル
BNT バッチ正規化閾値
701 冗長な重み
702 冗長チャネル
703 プルーニングされていないチャネル
801 モデル設定
802 プルーニング比設定
803 品質閾値設定