(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-22
(45)【発行日】2024-01-30
(54)【発明の名称】サブ-カーネルサーチングモジュールを利用してオン-デバイスニューラルネットワークモデルを最適化する方法及び装置
(51)【国際特許分類】
G06N 3/096 20230101AFI20240123BHJP
G06N 3/0985 20230101ALI20240123BHJP
G06N 3/0464 20230101ALI20240123BHJP
【FI】
G06N3/096
G06N3/0985
G06N3/0464
(21)【出願番号】P 2022548235
(86)(22)【出願日】2021-01-21
(86)【国際出願番号】 KR2021000858
(87)【国際公開番号】W WO2021230463
(87)【国際公開日】2021-11-18
【審査請求日】2022-08-08
(32)【優先日】2020-05-13
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-12-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】517038176
【氏名又は名称】株式会社ストラドビジョン
【氏名又は名称原語表記】STRADVISION,INC.
【住所又は居所原語表記】Suite 304-308,5th Venture-dong,394,Jigok-ro,Nam-gu,Pohang-si,Gyeongsangbuk-do 37668 Republic of Korea
(74)【代理人】
【識別番号】100121728
【氏名又は名称】井関 勝守
(74)【代理人】
【識別番号】100165803
【氏名又は名称】金子 修平
(74)【代理人】
【識別番号】100170900
【氏名又は名称】大西 渉
(72)【発明者】
【氏名】權成顔
(72)【発明者】
【氏名】金鎔重
(72)【発明者】
【氏名】康鳳男
(72)【発明者】
【氏名】諸泓模
【審査官】多賀 実
(56)【参考文献】
【文献】特表2020-508521(JP,A)
【文献】特開2020-042796(JP,A)
【文献】米国特許出願公開第2020/0082247(US,A1)
【文献】特開2019-215861(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06T 7/00
G06V 10/70-10/86
(57)【特許請求の範囲】
【請求項1】
サブ-カーネルサーチングモジュール(Sub-Kernel Searching Module、SSM)を利用してオン-デバイスニューラルネットワークモデル(on-device neural network model)を最適化する方法において、
(a)ニューラルネットワークモデルが搭載されたエッジデバイスが許容する最大のコンピューティングパワーを利用して目的とするタスク(task)を遂行することができる最大キャパシティ(capacity)を持つビッグニューラルネットワークモデル(Big Neural Network Model、B-NN Model)を、入力された入力データに対する第1インファレンス結果(first inference result)を生成するように学習させた状態で、学習データが獲得されると、学習装置が前記学習データをサブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i)前記学習データに対応する演算量(computational load)、パラメーター(parameters)、レイテンシ(latency)、正確度(accuracy)、及びフロップス(flops)に適用された少なくとも一つの制約(constraint)を確認し、(ii)前記学習データに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含む状態ベクトル(state vector)を生成し、(iii)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応するスーパーカーネル(super kernel)のサブセット(subset)で、前記スーパーカーネルより小さいかまたは同じカーネルの大きさと、少ないかまたは同じチャンネルの数からなり、前記制約で前記状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなる特定のサブ-カーネルのアーキテクチャー情報(architecture information)を生成させるプロセスを遂行す
る段階と、
(b)前記学習装置が、(i)前記特定のサブ-カーネルの前記アーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記特定のサブ-カーネルの前記アーキテクチャー情報を持つ特定のスモールニューラルネットワークモデル(Small Neural Network Model、S-NN Model)を生成し、(ii)前記特定のスモールニューラルネットワークモデルによって前記学習データに対する第2インファレンス結果(second inference result)を生成させるプロセスを遂行す
る段階と、
(c)前記学習装置が、前記第1インファレンス結果と前記第2インファレンス結果とを参照して一つ以上の第1ロスを生成し、前記第1ロスを利用して前記サブ-カーネルサーチングモジュールを学習させるプロセスを遂行す
る段階と、
を含む方法。
【請求項2】
前記(a)の段階において、
前記学習装置は、前記サブ-カーネルサーチングモジュールによって、(i)シーンオーバービューイングモジュール(Scene Overviewing Module、SSM)を通じて前記学習データに対応するシーンフィーチャー(scene features)を生成させ、前記シーンフィーチャーに対応する前記状態ベクトルを生成させ、(ii)サブ-カーネルネットワーク生成器(Sub-kernel Network Generator、SNG)を通じて前記制約で前記状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる前記最小限のカーネルの大きさと前記最小限のチャンネルの数とからなる前記特定のサブ-カーネルの前記アーキテクチャー情報を生成させるプロセスを遂行す
ることを特徴とする請求項1に記載の方法。
【請求項3】
前記学習装置は、(i)与えられた前記制約で前記第1ロスを通じたバックプロパゲーション(back-propagation)を通じて前記第1ロスを最小化するように前記シーンオーバービューイングモジュールと前記サブ-カーネルネットワーク生成器とを学習させ、(ii)前記状態ベクトルと、これに対応する原本正解(ground truth)とを参照して一つ以上の第2ロスを生成し、前記第2ロスを最小化するように前記シーンオーバービューイングモジュールをさらに学習させるプロセスを遂行す
ることを特徴とする請求項2に記載の方法。
【請求項4】
前記シーンオーバービューイングモジュールは、コンボリューショナルニューラルネットワーク(Convolutional Neural Network、CNN)で構成され、前記サブ-カーネルネットワーク生成器はリカレントニューラルネットワーク(Recurrent Neural Network、RNN)で構成され、
前記学習装置は前記シーンオーバービューイングモジュールと前記サブ-カーネルネットワーク生成器とをそれぞれ学習させたり同時に学習させるプロセスを遂行す
ることを特徴とする請求項2に記載の方法。
【請求項5】
前記学習装置は、前記シーンオーバービューイングモジュールの前記コンボリューショナルニューラルネットワークを通じて前記学習データに対して少なくとも一つのコンボリューション(convolution)演算、少なくとも一つのプーリング(pooling)演算、及び少なくとも一つのFC(全結合:Fully-Connected)演算を適用して前記学習データに対応する前記シーンフィーチャーを生成させるプロセスを遂行す
ることを特徴とする請求項4に記載の方法。
【請求項6】
前記(b)の段階において、
前記学習装置は、前記特定のサブ-カーネルの前記アーキテクチャー情報によって前記ビッグニューラルネットワークモデルの前記スーパーカーネルのカーネルの高さ、カーネルの幅、及びチャンネルの数の中の少なくとも一つを調整して前記ビッグニューラルネットワークモデルを最適化することにより、前記特定のサブ-カーネルの前記アーキテクチャー情報を持つ前記特定のスモールニューラルネットワークモデルを生成するプロセスを遂行す
ることを特徴とする請求項1に記載の方法。
【請求項7】
前記学習装置は、前記第1インファレンス結果と前記第2インファレンス結果とを参照し、前記第1インファレンス結果と前記第2インファレンス結果との差が既設定された基準値を超える場合、前記学習データと前記特定のスモールニューラルネットワークモデルの前記アーキテクチャー情報とをサーバーに伝送し、前記サーバーによって前記学習データを前記特定のスモールニューラルネットワークモデルでのハードサンプル(hard sample)としてタグ付け(tag)し、学習データベースに追加させるプロセスを遂行す
る請求項1に記載の方法。
【請求項8】
サブ-カーネルサーチングモジュール(Sub-Kernel Searching Module、SSM)を利用してオン-デバイスニューラルネットワークモデル(on-device neural network model)を最適化する方法において、
(a)学習装置によって、(i)ニューラルネットワークモデルが搭載されたエッジデバイスが許容する最大のコンピューティングパワーを利用して目的とするタスク(task)を遂行することができる最大キャパシティ(capacity)を持つビッグニューラルネットワークモデル(Big Neural Network Model、B-NN Model)を、入力された入力データに対する第1インファレンス結果(first inference result)を生成するように学習させた状態で、学習データが獲得されると、前記学習データをサブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i-1)前記学習データに対応する演算量(computational load)、パラメーター(parameters)、レイテンシ(latency)、正確度(accuracy)、及びフロップス(flops)の中の少なくとも一つに適用された学習用制約(constraint)を確認し、(i-2)前記学習データに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含む学習用状態ベクトル(state vector)を生成し、(i-3)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応するスーパーカーネル(super kernel)のサブセット(subset)で、前記スーパーカーネルより小さいか同じカーネルの大きさと、少ないか同じチャンネルの数とからなり、前記学習用制約で前記学習用状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなる学習用特定のサブ-カーネルの学習用アーキテクチャー情報(architecture information)を生成させるプロセス、(ii)(ii-1)前記学習用特定のサブ-カーネルの前記学習用アーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記学習用特定のサブ-カーネルの前記学習用アーキテクチャー情報を持つ学習用特定のスモールニューラルネットワークモデル(Small Neural Network Model、S-NN Model)を生成し、(ii-2)前記学習用特定のスモールニューラルネットワークモデルによって前記学習データに対する第2インファレンス結果(second inference result)を生成させるプロセス、及び(iii)前記第1インファレンス結果と前記第2インファレンス結果とを参照して一つ以上の第1ロスを生成し、前記第1ロスを利用して前記サブ-カーネルサーチングモジュールを学習させるプロセスが遂行された状態で、最適化装置がテストデータを獲得すれば前記テストデータを前記サブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i)前記テストデータに対応する演算量、パラメーター、レイテンシ、正確度、及びフロップスの中の少なくとも一つに適用されたテスト用の制約(constraint)を確認し、(ii)前記テストデータに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含むテスト用の状態ベクトルを生成し、(iii)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応する前記スーパーカーネルのサブセットで、前記スーパーカーネルより小さいか同じカーネルの大きさと少ないか同じチャンネルの数とからなり、前記テスト用の制約で前記テスト用の状態ベクトルを持つ前記テストデータに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなるテスト用の特定のサブ-カーネルのテスト用のアーキテクチャー情報を生成させるプロセスを遂行す
る段階と、
(b)前記最適化装置が、(i)前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を持つテスト用の特定のスモールニューラルネットワークモデルを生成し、(ii)前記テスト用の特定のスモールニューラルネットワークモデルによって前記テストデータに対する第3インファレンス結果(third inference result)を生成させるプロセスを遂行す
る段階と、
を含む方法。
【請求項9】
前記(a)の段階において、
前記最適化装置は、前記サブ-カーネルサーチングモジュールによって、(i)シーンオーバービューイングモジュール(Scene Overviewing Module、SSM)を通じて前記テストデータに対応するテスト用のシーンフィーチャー(scene features)を生成させ、前記テスト用のシーンフィーチャーに対応する前記テスト用の状態ベクトルを生成させ、(ii)サブ-カーネルネットワーク生成器(Sub-kernel Network Generator、SNG)を通じて前記テスト用の制約で前記テスト用の状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなる前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を生成させるプロセスを遂行す
ることを特徴とする請求項8に記載の方法。
【請求項10】
前記シーンオーバービューイングモジュールはコンボリューショナルニューラルネットワーク(Convolutional Neural Network、CNN)で構成され、前記サブ-カーネルネットワーク生成器はリカレントニューラルネットワーク(Recurrent Neural Network、RNN)で構成されていることを特徴とする請求項9に記載の方法。
【請求項11】
前記最適化装置は、前記シーンオーバービューイングモジュールの前記コンボリューショ
ナルニューラルネットワークを通じて前記テストデータに対して少なくとも一つのコンボリューション(convolution)演算、少なくとも一つのプーリング(pooling)演算、及び少なくとも一つのFC(Fully-Connected)演算を適用して前記テストデータに対応する前記テスト用のシーンフィーチャーを生成させるプロセスを遂行す
ることを特徴とする請求項10に記載の方法。
【請求項12】
前記(b)の段階において、
前記最適化装置は、前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報によって前記ビッグニューラルネットワークモデルの前記スーパーカーネルのカーネルの高さ、カーネルの幅、及びチャンネルの数の中の少なくとも一つを調整して前記ビッグニューラルネットワークモデルを最適化することにより、前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を持つ前記テスト用の特定のスモールニューラルネットワークモデルを生成するプロセスを遂行す
ることを特徴とする請求項8に記載の方法。
【請求項13】
サブ-カーネルサーチングモジュール(Sub-Kernel Searching Module、SSM)を利用してオン-デバイスニューラルネットワークモデル(on-device neural network model)を最適化する学習装置であって、
インストラクションを格納する少なくとも一つのメモリと、
前記インストラクションを実行するために構成された少なくとも一つのプロセッサと、を含み、
前記プロセッサが、(I)ニューラルネットワークモデルが搭載されたエッジデバイスが許容する最大のコンピューティングパワーを利用して目的とするタスク(task)を遂行することができる最大キャパシティ(capacity)を持つビッグニューラルネットワークモデル(Big Neural Network Model、B-NN Model)を、入力された入力データに対する第1インファレンス結果(first inference result)を生成するように学習させた状態で、学習データが獲得されると、前記学習データをサブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i)前記学習データに対応する演算量(computational load)、パラメーター(parameters)、レイテンシ(latency)、正確度(accuracy)、及びフロップス(flops)に適用された少なくとも一つの制約(constraint)を確認し、(ii)前記学習データに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含む状態ベクトル(state vector)を生成し、(iii)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応するスーパーカーネル(super kernel)のサブセット(subset)で、前記スーパーカーネルより小さいか同じカーネルの大きさと、少ないか同じチャンネルの数とからなり、前記制約で前記状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなる特定のサブ-カーネルのアーキテクチャー情報(architecture information)を生成させるプロセスを遂行す
るステップと、(II)(i)前記特定のサブ-カーネルの前記アーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記特定のサブ-カーネルの前記アーキテクチャー情報を持つ特定のスモールニューラルネットワークモデル(Small Neural Network Model、S-NN Model)を生成し、(ii)前記特定のスモールニューラルネットワークモデルによって前記学習データに対する第2インファレンス結果(second inference result)を生成させるプロセスを遂行す
るステップと、(III)前記第1インファレンス結果と前記第2インファレンス結果とを参照して一つ以上の第1ロスを生成し、前記第1ロスを利用して前記サブ-カーネルサーチングモジュールを学習させるプロセスを遂行す
るステップと、を含む学習装置。
【請求項14】
前記(I)のステップにおいて、
前記プロセッサは、前記サブ-カーネルサーチングモジュールによって、(i)シーンオーバービューイングモジュール(Scene Overviewing Module、SSM)を通じて前記学習データに対応するシーンフィーチャー(scene features)を生成させ、前記シーンフィーチャーに対応する前記状態ベクトルを生成させ、(ii)サブ-カーネルネットワーク生成器(Sub-kernel Network Generator、SNG)を通じて前記制約で前記状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる前記最小限のカーネルの大きさと前記最小限のチャンネルの数とからなる前記特定のサブ-カーネルの前記アーキテクチャー情報を生成させるプロセスを遂行す
ることを特徴とする請求項13に記載の学習装置。
【請求項15】
前記プロセッサは、(i)与えられた前記制約で前記第1ロスを通じたバックプロパゲーション(back-propagation)を通じて前記第1ロスを最小化するように前記シーンオーバービューイングモジュールと前記サブ-カーネルネットワーク生成器とを学習させ、(ii)前記状態ベクトルと、これに対応する原本正解(ground truth)を参照して一つ以上の第2ロスを生成し、前記第2ロスを最小化するように前記シーンオーバービューイングモジュールをさらに学習させるプロセスを遂行す
ることを特徴とする請求項14に記載の学習装置。
【請求項16】
前記シーンオーバービューイングモジュールはコンボリューショナルニューラルネットワーク(Convolutional Neural Network、CNN)で構成され、前記サブ-カーネルネットワーク生成器はリカレントニューラルネットワーク(Recurrent Neural Network、RNN)で構成され、
前記プロセッサは前記シーンオーバービューイングモジュールと前記サブ-カーネルネットワーク生成器とをそれぞれ学習させたり同時に学習させるプロセスを遂行す
ることを特徴とする請求項14に記載の学習装置。
【請求項17】
前記プロセッサは前記シーンオーバービューイングモジュールの前記コンボリューショナルニューラルネットワークを通じて前記学習データに対して少なくとも一つのコンボリューション(convolution)演算、少なくとも一つのプーリング(pooling)演算、及び少なくとも一つのFC(全結合:Fully-Connected)演算を適用して前記学習データに対応する前記シーンフィーチャーを生成させるプロセスを遂行す
ることを特徴とする請求項16に記載の学習装置。
【請求項18】
前記(II)のステップにおいて、
前記プロセッサは、前記特定のサブ-カーネルの前記アーキテクチャー情報によって前記ビッグニューラルネットワークモデルの前記スーパーカーネルのカーネルの高さ、カーネルの幅、及びチャンネルの数の中の少なくとも一つを調整して前記ビッグニューラルネットワークモデルを最適化することにより、前記特定のサブ-カーネルの前記アーキテクチャー情報を持つ前記特定のスモールニューラルネットワークモデルを生成するプロセスを遂行す
ることを特徴とする請求項13に記載の学習装置。
【請求項19】
前記プロセッサは、前記第1インファレンス結果と前記第2インファレンス結果とを参照し、前記第1インファレンス結果と前記第2インファレンス結果との差が既設定された基準値を超える場合、前記学習データと前記特定のスモールニューラルネットワークモデルの前記アーキテクチャー情報とをサーバーに伝送し、前記サーバーによって前記学習データを前記特定のスモールニューラルネットワークモデルでのハードサンプル(hard sample)としてタグ付け(tag)し、学習データベースに追加させるプロセスを遂行す
る請求項13に記載の学習装置。
【請求項20】
サブ-カーネルサーチングモジュール(Sub-Kernel Searching Module、SSM)を利用してオン-デバイスニューラルネットワークモデル(on-device neural network model)を最適化する最適化装置であって、
インストラクションを格納する少なくとも一つのメモリと、
前記インストラクションを実行するために構成された少なくとも一つのプロセッサと、を含み、
(I)学習装置によって、(i)ニューラルネットワークモデルが搭載されたエッジデバイスが許容する最大のコンピューティングパワーを利用して目的とするタスク(task)を遂行することができる最大キャパシティ(capacity)を持つビッグニューラルネットワークモデル(Big Neural Network Model、B-NN Model)を、入力された入力データに対する第1インファレンス結果(first inference result)を生成するように学習させた状態で、学習データが獲得されると、前記学習データをサブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i-1)前記学習データに対応する演算量(computational load)、パラメーター(parameters)、レイテンシ(latency)、正確度(accuracy)、及びフロップス(flops)の中の少なくとも一つに適用された学習用制約(constraint)を確認し、(i-2)前記学習データに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含む学習用状態ベクトル(state vector)を生成し、(i-3)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応するスーパーカーネル(super kernel)のサブセット(subset)で、前記スーパーカーネルより小さいか同じカーネルの大きさと、少ないか同じチャンネルの数とからなり、前記学習用制約で前記学習用状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなる学習用特定のサブ-カーネルの学習用アーキテクチャー情報(architecture information)を生成させるプロセス、(ii)(ii-1)前記学習用特定のサブ-カーネルの前記学習用アーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記学習用特定のサブ-カーネルの前記学習用アーキテクチャー情報を持つ学習用特定のスモールニューラルネットワークモデル(Small Neural Network Model、S-NN Model)を生成し、(ii-2)前記学習用特定のスモールニューラルネットワークモデルによって前記学習データに対する第2インファレンス結果(second inference result)を生成させるプロセス、及び(iii)前記第1インファレンス結果と前記第2インファレンス結果とを参照して一つ以上の第1ロスを生成し、前記第1ロスを利用して前記サブ-カーネルサーチングモジュールを学習させるプロセスが遂行された状態で、前記プロセッサがテストデータを獲得すれば前記テストデータを前記サブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i)前記テストデータに対応する演算量、パラメーター、レイテンシ、正確度、及びフロップスの中の少なくとも一つに適用されたテスト用の制約(constraint)を確認し、(ii)前記テストデータに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含むテスト用の状態ベクトルを生成し、(iii)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応する前記スーパーカーネルのサブセットで、前記スーパーカーネルより小さいか同じカーネルの大きさと、少ないか同じチャンネルの数とからなり、前記テスト用の制約で前記テスト用の状態ベクトルを持つ前記テストデータに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなるテスト用の特定のサブ-カーネルのテスト用のアーキテクチャー情報を生成させるプロセスを遂行す
るステップと、(II)前記プロセッサが(i)前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を持つテスト用の特定のスモールニューラルネットワークモデルを生成し、(ii)前記テスト用の特定のスモールニューラルネットワークモデルによって前記テストデータに対する第3インファレンス結果(third inference result)を生成させるプロセスを遂行す
るステップと、を遂行する最適化装置。
【請求項21】
前記(I)のステップにおいて、
前記プロセッサは、前記サブ-カーネルサーチングモジュールによって、(i)シーンオーバービューイングモジュール(Scene Overviewing Module、SSM)を通じて前記テストデータに対応するテスト用のシーンフィーチャー(scene features)を生成させ、前記テスト用のシーンフィーチャーに対応する前記テスト用の状態ベクトルを生成させ、(ii)サブ-カーネルネットワーク生成器(Sub-kernel Network Generator、SNG)を通じて前記テスト用の制約で前記テスト用の状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと、最小限のチャンネルの数とからなる前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を生成させるプロセスを遂行す
ることを特徴とする請求項20に記載の最適化装置。
【請求項22】
前記シーンオーバービューイングモジュールはコンボリューショナルニューラルネットワーク(Convolutional Neural Network、CNN)で構成され、前記サブ-カーネルネットワーク生成器はリカレントニューラルネットワーク(Recurrent Neural Network、RNN)で構成されていることを特徴とする請求項21に記載の最適化装置。
【請求項23】
前記プロセッサは、前記シーンオーバービューイングモジュールの前記コンボリューショ
ナルニューラルネットワークを通じて前記テストデータに対して少なくとも一つのコンボリューション(convolution)演算、少なくとも一つのプーリング(pooling)演算、及び少なくとも一つのFC(全結合:Fully-Connected)演算を適用して前記テストデータに対応する前記テスト用のシーンフィーチャーを生成させるプロセスを遂行す
ることを特徴とする請求項22に記載の最適化装置。
【請求項24】
前記(II)のステップにおいて、
前記プロセッサは、前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報によって前記ビッグニューラルネットワークモデルの前記スーパーカーネルのカーネルの高さ、カーネルの幅、及びチャンネルの数の中の少なくとも一つを調整して前記ビッグニューラルネットワークモデルを最適化することにより、前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を持つ前記テスト用の特定のスモールニューラルネットワークモデルを生成するプロセスを遂行す
ることを特徴とする請求項20に記載の最適化装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、2020年5月13日付にて出願された米国特許出願第63/024,025号と2020年12月28日付にて出願された米国特許出願第17/135,301号に対する優先権を主張し、これは本願に参照として組み込まれる。
【0002】
本発明は、オン-デバイスニューラルネットワークモデル(on-device neural network model)を最適化する方法及び装置に係り、より詳細には、オン-デバイスニューラルネットワークモデルを最適化するために利用されるサブ-カーネルサーチングモジュール(Sub-Kernel Searching Module、SSM)を学習させ、サブ-カーネルサーチングモジュールを利用してオン-デバイスニューラルネットワークモデルを最適化する方法及びこれを利用した学習装置と最適化装置に関する。
【背景技術】
【0003】
イメージクラシフィケーション(Image classification)が使用されるデバイスは、入力されたイメージの明るさ、振動、ノイズなどの様々な要因によって入力されたイメージの中で少なくとも一部を識別するのに困難を経験することがある。
【0004】
したがって、ディープラーニング(deep learning)を適用して多様なイメージに対する持続的な学習を通じてイメージクラシフィケーションの正確度を向上させることができる。
【0005】
しかし、イメージクラシフィケーションの正確度を向上させるためには、持続的なニューラルネットワークモデル(neural network model)の最適化(optimization)が必要であり、これによってニューラルネットワークモデルを効率的にアップデートするための多様な技術が開発されている。
【0006】
このため、従来は人が直接ディープラーニングネットワークモデルを設計したが、最近はAIニューラルネットワークがデバイスに適用されたニューラルネットワークモデルを直接設計するニューラルアーキテクチャサーチ(Neural Architecture Search、NAS)のような方法が開発されている。
【0007】
一例として、
図1を参照すれば、従来のNASはリカレントニューラルネットワーク(Recurrent Neural Network、RNN)を利用してデバイスに適用されたり適用されるニューラルネットワークモデルのアーキテクチャー情報を入れたコンフィギュレーションストリング(configuration string)を生成することでチャイルドニューラルネットワークモデル(child neural network model)を設計する。以後、チャイルドニューラルネットワークモデルの性能について検証セット(validation set)を利用して測定し、結果から得た正確度(accuracy)Rを強化学習(reinforcement learning)のリウォード(reward)で使用し、チャイルドニューラルネットワークモデルのパラメーター(parameter)をアップデートする。それ以外にも、最適のネットワーク性能を達成するために、勾配降下最適化(gradient descent optimization)、進化サーチ(evolutionary search)などの技法が適用されている。
【0008】
また、
図2を参照すれば、他の従来のニューラルネットワーク最適化技術としてオンライン学習(online learning)のような方法がある。このようなオンライン学習では、既存のニューラルネットワークモデルに対してオンラインでインファレンス(推論:inference)を進めた後、その結果に応じて既存のニューラルネットワークモデルをアップデートするか、再学習させる過程を利用している。
【0009】
このように、ニューラルネットワークを利用したニューラルネットワークモデルアーキテクチャーの最適化は、自律走行自動車、無人飛行機、ロボットなどのディープラーニング技術が必要な走行装置に搭載されたエッジデバイス(edge device)に有用であるが、エッジデバイスに特定機能を遂行するニューラルネットワークモデルを搭載して利用する従来の方法には次のような問題点が存在する。
【0010】
まず、エッジデバイスに搭載されたニューラルネットワークモデルは許容された演算量とパラメーターの数が相対的に少ないため、モデルキャパシティ(model capacity)に制限を持つようになる。
【0011】
また、イメージを検出して認識するために必要なモデルキャパシティはイメージの難易度によって異なるが、エッジデバイスに搭載される従来のニューラルネットワークモデルは全てのイメージに対して同じ演算量とパラメーターを適用するので、イメージの難易度によって検出及び認識能力の偏差が大きくなる限界がある。
【0012】
これに加え、エッジデバイスに搭載されたニューラルネットワークモデルは、人が介入せずにハードサンプル(hard sample)を見つけることが難しいため、ハードサンプルに対する学習を行ってニューラルネットワークモデルの性能を改善するためには多くの人力と費用が要されるという問題点が存在する。
【0013】
したがって、前記問題点を解決するための改善方案が要求されているのが実情である。
【発明の概要】
【発明が解決しようとする課題】
【0014】
本発明は、上述した問題点を全て解決することをその目的とする。
【0015】
また、本発明はエッジデバイス(edge device)に搭載されたニューラルネットワークモデル(neural network model)に対する最適化を外部サーバーの助けを得ずに遂行することをまた他の目的とする。
【0016】
また、本発明はエッジデバイスの演算能力及び周辺環境によってニューラルネットワークモデルのサブ-アーキテクチャー(sub-architecture)を生成することでエッジデバイスに搭載されたニューラルネットワークモデルを最適化することをまた他の目的とする。
【0017】
また、本発明は入力されたデータの難易度によって最適化された演算量(computational load)を適用することにより、インファレンス(inference)の際に読み取るウエイト(weights)の大きさと演算回数(mac/flops)とを減少させることを目的とする。
【0018】
また、本発明は各サブ-アーキテクチャーの各演算量によるハードサンプルを持続的に収集することでニューラルネットワークモデルの各サブ-アーキテクチャーの性能を向上させることをまた他の目的とする。
【課題を解決するための手段】
【0019】
本発明の一実施例によると、サブ-カーネルサーチングモジュール(Sub-Kernel Searching Module、SSM)を利用してオン-デバイスニューラルネットワークモデル(on-device neural network model)を最適化する方法において、(a)ニューラルネットワークモデルが搭載されたエッジデバイスが許容する最大のコンピューティングパワーを利用して目的とするタスク(task)を遂行することができる最大キャパシティ(capacity)を持つビッグニューラルネットワークモデル(Big Neural Network Model、B-NN Model)を、入力された入力データに対する第1インファレンス結果(first inference result)を生成するように学習させた状態で、学習データが獲得されると、学習装置が前記学習データをサブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i)前記学習データに対応する演算量(computational load)、パラメーター(parameters)、レイテンシ(latency)、正確度(accuracy)、及びフロップス(flops)に適用された少なくとも一つの制約(constraint)を確認し、(ii)前記学習データに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含む状態ベクトル(state vector)を生成し、(iii)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応するスーパーカーネル(super kernel)のサブセット(subset)で、前記スーパーカーネルより小さいかまたは同じカーネルの大きさと、少ないかまたは同じチャンネルの数からなり、前記制約で前記状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなる特定のサブ-カーネルのアーキテクチャー情報(architecture information)を生成させるプロセスを遂行するか、または遂行するように支援する段階と、(b)前記学習装置が、(i)前記特定のサブ-カーネルの前記アーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記特定のサブ-カーネルの前記アーキテクチャー情報を持つ特定のスモールニューラルネットワークモデル(Small Neural Network Model、S-NN Model)を生成し、(ii)前記特定のスモールニューラルネットワークモデルによって前記学習データに対する第2インファレンス結果(second inference result)を生成させるプロセスを遂行するか、または遂行するように支援する段階と、(c)前記学習装置が、前記第1インファレンス結果と前記第2インファレンス結果とを参照して一つ以上の第1ロスを生成し、前記第1ロスを利用して前記サブ-カーネルサーチングモジュールを学習させるプロセスを遂行するか、または遂行するように支援する段階と、を含む方法が提供される。
【0020】
前記(a)の段階において、前記学習装置は、前記サブ-カーネルサーチングモジュールによって、(i)シーンオーバービューイングモジュール(Scene Overviewing Module、SSM)を通じて前記学習データに対応するシーンフィーチャー(scene features)を生成させ、前記シーンフィーチャーに対応する前記状態ベクトルを生成させ、(ii)サブ-カーネルネットワーク生成器(Sub-kernel Network Generator、SNG)を通じて前記制約で前記状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる前記最小限のカーネルの大きさと前記最小限のチャンネルの数とからなる前記特定のサブ-カーネルの前記アーキテクチャー情報を生成させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0021】
前記学習装置は、(i)与えられた前記制約で前記第1ロスを通じたバックプロパゲーション(back-propagation)を通じて前記第1ロスを最小化するように前記シーンオーバービューイングモジュールと前記サブ-カーネルネットワーク生成器とを学習させ、(ii)前記状態ベクトルと、これに対応する原本正解(ground truth)とを参照して一つ以上の第2ロスを生成し、前記第2ロスを最小化するように前記シーンオーバービューイングモジュールをさらに学習させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0022】
前記シーンオーバービューイングモジュールは、コンボリューショナルニューラルネットワーク(Convolutional Neural Network、CNN)で構成され、前記サブ-カーネルネットワーク生成器はリカレントニューラルネットワーク(Recurrent Neural Network、RNN)で構成され、前記学習装置は前記シーンオーバービューイングモジュールと前記サブ-カーネルネットワーク生成器とをそれぞれ学習させたり同時に学習させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0023】
前記学習装置は、前記シーンオーバービューイングモジュールの前記コンボリューショナルニューラルネットワークを通じて前記学習データに対して少なくとも一つのコンボリューション(convolution)演算、少なくとも一つのプーリング(pooling)演算、及び少なくとも一つのFC(全結合:Fully-Connected)演算を適用して前記学習データに対応する前記シーンフィーチャーを生成させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0024】
前記(b)の段階において、前記学習装置は、前記特定のサブ-カーネルの前記アーキテクチャー情報によって前記ビッグニューラルネットワークモデルの前記スーパーカーネルのカーネルの高さ、カーネルの幅、及びチャンネルの数の中の少なくとも一つを調整して前記ビッグニューラルネットワークモデルを最適化することにより、前記特定のサブ-カーネルの前記アーキテクチャー情報を持つ前記特定のスモールニューラルネットワークモデルを生成するプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0025】
前記学習装置は、前記第1インファレンス結果と前記第2インファレンス結果とを参照し、前記第1インファレンス結果と前記第2インファレンス結果との差が既設定された基準値を超える場合、前記学習データと前記特定のスモールニューラルネットワークモデルの前記アーキテクチャー情報とをサーバーに伝送し、前記サーバーによって前記学習データを前記特定のスモールニューラルネットワークモデルでのハードサンプル(hard sample)としてタグ付け(tag)し、学習データベースに追加させるプロセスを遂行するか、または遂行するように支援する。
【0026】
また、本発明の他の実施例によると、サブ-カーネルサーチングモジュール(Sub-Kernel Searching Module、SSM)を利用してオン-デバイスニューラルネットワークモデル(on-device neural network model)を最適化する方法において、(a)学習装置によって、(i)ニューラルネットワークモデルが搭載されたエッジデバイスが許容する最大のコンピューティングパワーを利用して目的とするタスク(task)を遂行することができる最大キャパシティ(capacity)を持つビッグニューラルネットワークモデル(Big Neural Network Model、B-NN Model)を、入力された入力データに対する第1インファレンス結果(first inference result)を生成するように学習させた状態で、学習データが獲得されると、前記学習データをサブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i-1)前記学習データに対応する演算量(computational load)、パラメーター(parameters)、レイテンシ(latency)、正確度(accuracy)、及びフロップス(flops)の中の少なくとも一つに適用された学習用制約(constraint)を確認し、(i-2)前記学習データに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含む学習用状態ベクトル(state vector)を生成し、(i-3)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応するスーパーカーネル(super kernel)のサブセット(subset)で、前記スーパーカーネルより小さいか同じカーネルの大きさと、少ないか同じチャンネルの数とからなり、前記学習用制約で前記学習用状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなる学習用特定のサブ-カーネルの学習用アーキテクチャー情報(architecture information)を生成させるプロセス、(ii)(ii-1)前記学習用特定のサブ-カーネルの前記学習用アーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記学習用特定のサブ-カーネルの前記学習用アーキテクチャー情報を持つ学習用特定のスモールニューラルネットワークモデル(Small Neural Network Model、S-NN Model)を生成し、(ii-2)前記学習用特定のスモールニューラルネットワークモデルによって前記学習データに対する第2インファレンス結果(second inference result)を生成させるプロセス、及び(iii)前記第1インファレンス結果と前記第2インファレンス結果とを参照して一つ以上の第1ロスを生成し、前記第1ロスを利用して前記サブ-カーネルサーチングモジュールを学習させるプロセスが遂行された状態で、最適化装置がテストデータを獲得すれば前記テストデータを前記サブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i)前記テストデータに対応する演算量、パラメーター、レイテンシ、正確度、及びフロップスの中の少なくとも一つに適用されたテスト用の制約(constraint)を確認し、(ii)前記テストデータに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含むテスト用の状態ベクトルを生成し、(iii)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応する前記スーパーカーネルのサブセットで、前記スーパーカーネルより小さいか同じカーネルの大きさと少ないか同じチャンネルの数とからなり、前記テスト用の制約で前記テスト用の状態ベクトルを持つ前記テストデータに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなるテスト用の特定のサブ-カーネルのテスト用のアーキテクチャー情報を生成させるプロセスを遂行するか、または遂行するように支援する段階と、(b)前記最適化装置が、(i)前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を持つテスト用の特定のスモールニューラルネットワークモデルを生成し、(ii)前記テスト用の特定のスモールニューラルネットワークモデルによって前記テストデータに対する第3インファレンス結果(third inference result)を生成させるプロセスを遂行するか、または遂行するように支援する段階と、を含む方法が提供される。
【0027】
前記(a)の段階において、前記最適化装置は、前記サブ-カーネルサーチングモジュールによって、(i)シーンオーバービューイングモジュール(Scene Overviewing Module、SSM)を通じて前記テストデータに対応するテスト用のシーンフィーチャー(scene features)を生成させ、前記テスト用のシーンフィーチャーに対応する前記テスト用の状態ベクトルを生成させ、(ii)サブ-カーネルネットワーク生成器(Sub-kernel Network Generator、SNG)を通じて前記テスト用の制約で前記テスト用の状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなる前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を生成させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0028】
前記シーンオーバービューイングモジュールはコンボリューショナルニューラルネットワーク(Convolutional Neural Network、CNN)で構成され、前記サブ-カーネルネットワーク生成器はリカレントニューラルネットワーク(Recurrent Neural Network、RNN)で構成されていることを特徴とする。
【0029】
前記最適化装置は、前記シーンオーバービューイングモジュールの前記コンボリューションニューラルネットワークを通じて前記テストデータに対して少なくとも一つのコンボリューション(convolution)演算、少なくとも一つのプーリング(pooling)演算、及び少なくとも一つのFC(Fully-Connected)演算を適用して前記テストデータに対応する前記テスト用のシーンフィーチャーを生成させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0030】
前記(b)の段階において、前記最適化装置は、前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報によって前記ビッグニューラルネットワークモデルの前記スーパーカーネルのカーネルの高さ、カーネルの幅、及びチャンネルの数の中の少なくとも一つを調整して前記ビッグニューラルネットワークモデルを最適化することにより、前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を持つ前記テスト用の特定のスモールニューラルネットワークモデルを生成するプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0031】
また、本発明の他の実施例によると、サブ-カーネルサーチングモジュール(Sub-Kernel Searching Module、SSM)を利用してオン-デバイスニューラルネットワークモデル(on-device neural network model)を最適化する学習装置であって、インストラクションを格納する少なくとも一つのメモリと、前記インストラクションを実行するために構成された少なくとも一つのプロセッサと、を含み、前記プロセッサが、(I)ニューラルネットワークモデルが搭載されたエッジデバイスが許容する最大のコンピューティングパワーを利用して目的とするタスク(task)を遂行することができる最大キャパシティ(capacity)を持つビッグニューラルネットワークモデル(Big Neural Network Model、B-NN Model)を、入力された入力データに対する第1インファレンス結果(first inference result)を生成するように学習させた状態で、学習データが獲得されると、前記学習データをサブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i)前記学習データに対応する演算量(computational load)、パラメーター(parameters)、レイテンシ(latency)、正確度(accuracy)、及びフロップス(flops)に適用された少なくとも一つの制約(constraint)を確認し、(ii)前記学習データに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含む状態ベクトル(state vector)を生成し、(iii)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応するスーパーカーネル(super kernel)のサブセット(subset)で、前記スーパーカーネルより小さいか同じカーネルの大きさと、少ないか同じチャンネルの数とからなり、前記制約で前記状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなる特定のサブ-カーネルのアーキテクチャー情報(architecture information)を生成させるプロセスを遂行するか、または遂行するように支援するステップと、(II)(i)前記特定のサブ-カーネルの前記アーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記特定のサブ-カーネルの前記アーキテクチャー情報を持つ特定のスモールニューラルネットワークモデル(Small Neural Network Model、S-NN Model)を生成し、(ii)前記特定のスモールニューラルネットワークモデルによって前記学習データに対する第2インファレンス結果(second inference result)を生成させるプロセスを遂行するか、または遂行するように支援するステップと、(III)前記第1インファレンス結果と前記第2インファレンス結果とを参照して一つ以上の第1ロスを生成し、前記第1ロスを利用して前記サブ-カーネルサーチングモジュールを学習させるプロセスを遂行するか、または遂行するように支援するステップと、を含む学習装置が提供される。
【0032】
前記(I)のステップにおいて、前記プロセッサは、前記サブ-カーネルサーチングモジュールによって、(i)シーンオーバービューイングモジュール(Scene Overviewing Module、SSM)を通じて前記学習データに対応するシーンフィーチャー(scene features)を生成させ、前記シーンフィーチャーに対応する前記状態ベクトルを生成させ、(ii)サブ-カーネルネットワーク生成器(Sub-kernel Network Generator、SNG)を通じて前記制約で前記状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる前記最小限のカーネルの大きさと前記最小限のチャンネルの数とからなる前記特定のサブ-カーネルの前記アーキテクチャー情報を生成させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0033】
前記プロセッサは、(i)与えられた前記制約で前記第1ロスを通じたバックプロパゲーション(back-propagation)を通じて前記第1ロスを最小化するように前記シーンオーバービューイングモジュールと前記サブ-カーネルネットワーク生成器とを学習させ、(ii)前記状態ベクトルと、これに対応する原本正解(ground truth)を参照して一つ以上の第2ロスを生成し、前記第2ロスを最小化するように前記シーンオーバービューイングモジュールをさらに学習させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0034】
前記シーンオーバービューイングモジュールはコンボリューショナルニューラルネットワーク(Convolutional Neural Network、CNN)で構成され、前記サブ-カーネルネットワーク生成器はリカレントニューラルネットワーク(Recurrent Neural Network、RNN)で構成され、前記プロセッサは前記シーンオーバービューイングモジュールと前記サブ-カーネルネットワーク生成器とをそれぞれ学習させたり同時に学習させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0035】
前記プロセッサは前記シーンオーバービューイングモジュールの前記コンボリューショナルニューラルネットワークを通じて前記学習データに対して少なくとも一つのコンボリューション(convolution)演算、少なくとも一つのプーリング(pooling)演算、及び少なくとも一つのFC(全結合:Fully-Connected)演算を適用して前記学習データに対応する前記シーンフィーチャーを生成させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0036】
前記(II)のステップにおいて、前記プロセッサは、前記特定のサブ-カーネルの前記アーキテクチャー情報によって前記ビッグニューラルネットワークモデルの前記スーパーカーネルのカーネルの高さ、カーネルの幅、及びチャンネルの数の中の少なくとも一つを調整して前記ビッグニューラルネットワークモデルを最適化することにより、前記特定のサブ-カーネルの前記アーキテクチャー情報を持つ前記特定のスモールニューラルネットワークモデルを生成するプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0037】
前記プロセッサは、前記第1インファレンス結果と前記第2インファレンス結果とを参照し、前記第1インファレンス結果と前記第2インファレンス結果との差が既設定された基準値を超える場合、前記学習データと前記特定のスモールニューラルネットワークモデルの前記アーキテクチャー情報とをサーバーに伝送し、前記サーバーによって前記学習データを前記特定のスモールニューラルネットワークモデルでのハードサンプル(hard sample)としてタグ付け(tag)し、学習データベースに追加させるプロセスを遂行するか、または遂行するように支援する。
【0038】
また、本発明の他の実施例によると、サブ-カーネルサーチングモジュール(Sub-Kernel Searching Module、SSM)を利用してオン-デバイスニューラルネットワークモデル(on-device neural network model)を最適化する最適化装置であって、インストラクションを格納する少なくとも一つのメモリと、前記インストラクションを実行するために構成された少なくとも一つのプロセッサと、を含み、(I)学習装置によって、(i)ニューラルネットワークモデルが搭載されたエッジデバイスが許容する最大のコンピューティングパワーを利用して目的とするタスク(task)を遂行することができる最大キャパシティ(capacity)を持つビッグニューラルネットワークモデル(Big Neural Network Model、B-NN Model)を、入力された入力データに対する第1インファレンス結果(first inference result)を生成するように学習させた状態で、学習データが獲得されると、前記学習データをサブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i-1)前記学習データに対応する演算量(computational load)、パラメーター(parameters)、レイテンシ(latency)、正確度(accuracy)、及びフロップス(flops)の中の少なくとも一つに適用された学習用制約(constraint)を確認し、(i-2)前記学習データに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含む学習用状態ベクトル(state vector)を生成し、(i-3)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応するスーパーカーネル(super kernel)のサブセット(subset)で、前記スーパーカーネルより小さいか同じカーネルの大きさと、少ないか同じチャンネルの数とからなり、前記学習用制約で前記学習用状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなる学習用特定のサブ-カーネルの学習用アーキテクチャー情報(architecture information)を生成させるプロセス、(ii)(ii-1)前記学習用特定のサブ-カーネルの前記学習用アーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記学習用特定のサブ-カーネルの前記学習用アーキテクチャー情報を持つ学習用特定のスモールニューラルネットワークモデル(Small Neural Network Model、S-NN Model)を生成し、(ii-2)前記学習用特定のスモールニューラルネットワークモデルによって前記学習データに対する第2インファレンス結果(second inference result)を生成させるプロセス、及び(iii)前記第1インファレンス結果と前記第2インファレンス結果とを参照して一つ以上の第1ロスを生成し、前記第1ロスを利用して前記サブ-カーネルサーチングモジュールを学習させるプロセスが遂行された状態で、前記プロセッサがテストデータを獲得すれば前記テストデータを前記サブ-カーネルサーチングモジュールに入力し、前記サブ-カーネルサーチングモジュールによって、(i)前記テストデータに対応する演算量、パラメーター、レイテンシ、正確度、及びフロップスの中の少なくとも一つに適用されたテスト用の制約(constraint)を確認し、(ii)前記テストデータに対応する複雑度、鮮明度の中の少なくとも一つに対する情報を含むテスト用の状態ベクトルを生成し、(iii)前記ビッグニューラルネットワークモデルの前記最大キャパシティに対応する前記スーパーカーネルのサブセットで、前記スーパーカーネルより小さいか同じカーネルの大きさと、少ないか同じチャンネルの数とからなり、前記テスト用の制約で前記テスト用の状態ベクトルを持つ前記テストデータに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなるテスト用の特定のサブ-カーネルのテスト用のアーキテクチャー情報を生成させるプロセスを遂行するか、または遂行するように支援するステップと、(II)前記プロセッサが(i)前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を参照して前記ビッグニューラルネットワークモデルを最適化し、前記ビッグニューラルネットワークモデルから前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を持つテスト用の特定のスモールニューラルネットワークモデルを生成し、(ii)前記テスト用の特定のスモールニューラルネットワークモデルによって前記テストデータに対する第3インファレンス結果(third inference result)を生成させるプロセスを遂行するか、または遂行するように支援するステップと、を遂行する最適化装置が提供される。
【0039】
前記(I)のステップにおいて、前記プロセッサは、前記サブ-カーネルサーチングモジュールによって、(i)シーンオーバービューイングモジュール(Scene Overviewing Module、SSM)を通じて前記テストデータに対応するテスト用のシーンフィーチャー(scene features)を生成させ、前記テスト用のシーンフィーチャーに対応する前記テスト用の状態ベクトルを生成させ、(ii)サブ-カーネルネットワーク生成器(Sub-kernel Network Generator、SNG)を通じて前記テスト用の制約で前記テスト用の状態ベクトルを持つ前記学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと、最小限のチャンネルの数とからなる前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を生成させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0040】
前記シーンオーバービューイングモジュールはコンボリューショナルニューラルネットワーク(Convolutional Neural Network、CNN)で構成され、前記サブ-カーネルネットワーク生成器はリカレントニューラルネットワーク(Recurrent Neural Network、RNN)で構成されていることを特徴とする。
【0041】
前記プロセッサは、前記シーンオーバービューイングモジュールの前記コンボリューションニューラルネットワークを通じて前記テストデータに対して少なくとも一つのコンボリューション(convolution)演算、少なくとも一つのプーリング(pooling)演算、及び少なくとも一つのFC(全結合:Fully-Connected)演算を適用して前記テストデータに対応する前記テスト用のシーンフィーチャーを生成させるプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0042】
前記(II)のステップにおいて、前記プロセッサは、前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報によって前記ビッグニューラルネットワークモデルの前記スーパーカーネルのカーネルの高さ、カーネルの幅、及びチャンネルの数の中の少なくとも一つを調整して前記ビッグニューラルネットワークモデルを最適化することにより、前記テスト用の特定のサブ-カーネルの前記テスト用のアーキテクチャー情報を持つ前記テスト用の特定のスモールニューラルネットワークモデルを生成するプロセスを遂行するか、または遂行するように支援することを特徴とする。
【0043】
この他にも、本発明の方法を行うためのコンピュータプログラムを記録するためのコンピュータ読み取り可能な記録媒体がさらに提供される。
【発明の効果】
【0044】
本発明は、エッジデバイス(edge device)に搭載されたニューラルネットワークモデル(neural network model)に対する最適化を外部サーバーの助けを得ずに遂行する効果がある。
【0045】
また、本発明はエッジデバイスの演算能力及び周辺環境によってニューラルネットワークモデルのサブ-アーキテクチャー(sub-architecture)を生成することでエッジデバイスに搭載されたニューラルネットワークモデルを最適化する効果がある。
【0046】
また、本発明は入力されたデータの難易度によって最適化された演算量(computational load)を適用することでインファレンス(inference)の際に読み取るウエイト(weights)の大きさと演算回数(mac/flops)を減少させる効果がある。
【0047】
また、本発明は各サブ-アーキテクチャーの各演算量によるハードサンプルを持続的に収集することでニューラルネットワークモデルの各サブ-アーキテクチャーの性能を向上させる効果がある。
【図面の簡単な説明】
【0048】
本発明の実施例の説明に利用されるために添付された以下の図面は、本発明の実施例のうち単に一部であるに過ぎず、本発明の属する技術分野において通常の知識を有する者(以下「通常の技術者」)にとっては、発明的作業が行われずにこれらの図面に基づいて他の各図面が得られる。
【
図1】
図1は、従来のニューラルネットワーク(neural network)を最適化(optimization)するためのシステムを簡略に示したものである。
【
図2】
図2は、従来のニューラルネットワーク(neural network)を最適化(optimization)するためのシステムを簡略に示したものである。
【
図3】
図3は、本発明の一実施例によってサブ-カーネルサーチングモジュール(Sub-Kernel Searching Module、SSM)を利用してオン-デバイスニューラルネットワークモデル(on-device neural network model)を最適化する方法において、サブ-カーネルサーチングモジュールを学習させる学習装置を簡略に示したものである。
【
図4】
図4は、本発明の一実施例によってサブ-カーネルサーチングモジュールを利用してオン-デバイスニューラルネットワークモデルを最適化する方法において、サブ-カーネルサーチングモジュールを学習させる過程を簡略に示したものである。
【
図5】
図5は、本発明の一実施例によってサブ-カーネルサーチングモジュールに含まれたシーンオーバービューイングモジュール(Scence Overviewing Module、SOM)の構造を簡略に示したものである。
【
図6】
図6は、本発明の一実施例によってスーパーカーネル(super kernel)とサブ-カーネル(sub-kernel)の概念を利用してビッグニューラルネットワークモデル(Big Neural Network Model、B-NN Model)とスモールニューラルネットワークモデル(Small Neural Network Model、S-NN Model)とを生成して学習させる方法を簡略に示したものである。
【
図7】
図7は、本発明の一実施例によってサブ-カーネルサーチングモジュールを利用してオン-デバイスニューラルネットワークモデルを最適化する最適化装置を簡略に示したものである。
【
図8】
図8は、本発明の一実施例によって入力と出力の例示を通じてサブ-カーネルサーチングモジュールを利用してオン-デバイスニューラルネットワークモデルを最適化する方法を簡略に示したものである。
【発明を実施するための形態】
【0049】
後述する本発明に関する詳細な説明は、本発明の各目的、各技術的解法、及び各長所を明らかにするために本発明が実施され得る特定の実施例を例示として示す添付図面を参照する。これらの実施例は、当業者が本発明を実施することができるように十分詳細に説明される。さらに、本発明は、本明細書に示された実施例のすべての可能な組み合わせを網羅する。本発明の多様な実施例は互いに異なるが、相互に排他的である必要はないことが理解されるべきである。例えば、ここに記載されている特定の形状、構造及び特性は、一実施例に関連して本発明の精神及び範囲を逸脱せず、かつ他の実施例で具現され得る。また、それぞれの開示された実施例内の個別の構成要素の位置又は配置は、本発明の精神及び範囲を逸脱せず、かつ変更され得ることが理解されるべきである。したがって、後述の詳細な説明は、限定的な意味として受け取られるべきものではなく、本発明の範囲は適切に説明されるのであれば、その請求項が主張することと均等な全ての範囲とともに添付された請求項によってのみ限定される。図面において類似の参照符号は、様々な態様にわたって同一であるか、又は類似の機能を指す。
【0050】
本発明で言及している各種イメージは、舗装または非舗装道路関連のイメージを含むことができ、この場合、道路環境で登場し得る物体(例えば、自動車、人、動物、植物、物、建物、飛行機やドローンのような飛行体、その他の障害物)を想定し得るが、必ずしもこれに限定されるものではなく、本発明で言及している各種イメージは、道路と関係のないイメージ(例えば、非舗装道路、路地、空き地、海、湖、川、山、森、砂漠、空、室内と関連したイメージ)でもあり得、この場合、非舗装道路、路地、空き地、海、湖、川、山、森、砂漠、空、室内環境で登場し得る物体(例えば、自動車、人、動物、植物、物、建物、飛行機やドローンのような飛行体、その他の障害物)を想定し得るが、必ずしもこれに限定されるものではない。ここに提供された本開示の題目及び発明の概要は単に便宜のためのものであり、実施例の範囲または意味を制限しない。
【0051】
参照として、本明細書は全般にわたって学習過程と係わる用語には「学習用」または「学習」を追加し、テスト過程と係わる用語には「テスト用の」または「テスト」を追加して可能な混沌を避けようとした。
【0052】
また、本発明の詳細な説明及び各請求項にわたって、「含む」という単語及びそれらの変形は、他の技術的各特徴若しくは各付加物、構成要素又は段階を除外することを意図したものではない。通常の技術者にとって本発明の他の各目的、長所及び各特性が、一部は本明細書から、また一部は本発明の実施から明らかになるであろう。以下の例示及び図面は実例として提供され、本発明を限定することを意図したものではない。
【0053】
ここに提供された本開示の題目及び発明の概要は単に便宜のためのものであり、実施例の範囲または意味を制限しない。
【0054】
以下、本発明の属する技術分野において通常の知識を有する者が本発明を容易に実施し得るようにするために、本発明の好ましい実施例について、添付された図面を参照して詳細に説明することにする。
【0055】
まず、
図3は、本発明の一実施例によってサブ-カーネルサーチングモジュール(Sub-Kernel Searching Module、SSM)を利用してオン-デバイスニューラルネットワークモデル(On-Device neural network model)を最適化する方法において、サブ-カーネルサーチングモジュールを学習させる学習装置を簡略に示したものである。
【0056】
図3を参照すれば、学習装置1000はオン-デバイスニューラルネットワークモデルを最適化するために利用されるサブ-カーネルサーチングモジュールを学習させるインストラクションを格納するメモリ1001とメモリ1001に格納されたインストラクションに対応してサブ-カーネルサーチングモジュールを学習させるための動作を遂行するプロセッサ1002を含むことができる。
【0057】
具体的に、学習装置1000は、コンピューティング装置(例えば、コンピュータプロセッサ、メモリ、ストレージ、入力装置及び出力装置、その他既存コンピューティング装置の構成要素を含むことができる装置;ルーター、スイッチなどのような電子通信装置;ネットワーク付きストレージ(NAS)及びストレージ領域ネットワーク(SAN)のような電子情報ストレージシステム)とコンピュータソフトウェア(すなわち、コンピューティング装置によって特定方式で機能させるインストラクション)との組み合わせを利用して所望のシステム性能を達成するものであってもよい。
【0058】
また、コンピューティング装置のプロセッサは、MPU(Micro Processing Unit)またはCPU(Central Processing Unit)、キャッシュメモリ(Cache Memory)、データバス(Data Bus)などのハードウェア構成を含むことができる。また、コンピューティング装置は、オペレーティングシステム、特定目的を遂行するアプリケーションのソフトウェア構成をさらに含むこともできる。
【0059】
しかし、コンピューティング装置が本発明を実施するためのミディアム、プロセッサ及びメモリが統合された形態の統合プロセッサを含む場合を排除するものではない。
【0060】
このように構成された学習装置1000を利用して、サブ-カーネルサーチングモジュール100を学習させる過程を
図4ないし
図6を参照して説明すれば次のとおりである。
【0061】
先ず、
図4を参照すれば、学習装置1000は、ニューラルネットワークモデルが搭載されたエッジデバイス(edge device)が許容する最大のコンピューティングパワーを利用して目的とするタスク(task)を遂行することができる最大キャパシティ(capacity)を持つビッグニューラルネットワークモデル(Big Neural Network Model、B-NN Model、200)を入力データに対する第1インファレンス結果(first inference result)を生成するように学習させた状態で、学習データが獲得されると、学習データをサブ-カーネルサーチングモジュール100に入力し、サブ-カーネルサーチングモジュールによって、(i)学習データに対応する制約(constraint)を確認し、(ii)学習データに対応する状態ベクトル(state vector)を生成し、(iii)与えられた制約で状態ベクトルを持つ学習データに対して前記目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネル数とからなる特定のサブ-カーネルのアーキテクチャー情報(architecture information)を生成させるプロセスを遂行するか、または遂行するように支援することができる。
【0062】
ここで、制約は少なくとも演算量(computational load)、パラメーター(parameters)、レイテンシ(latency)、正確度(accuracy)、及びフロップス(flops)の中の一つに適用された制約を含み、学習データが入力される時のエッジデバイスのデバイス状態及び周辺環境によって制約は変更されることがある。また、制約は各エッジデバイスによって既設定されたり追加に入力されて変更されることがある。また、ここで目的とするタスクとは、データ分析、分類、データに含まれた情報検出などの目的を遂行することができ、目的によって利用されるデータの種類もテキスト、イメージ、テキストが含まれたイメージなどに変わることがあるが、本発明がこれに限定されるものではない。
【0063】
なお、状態ベクトルは少なくとも学習データの複雑度、鮮明度の中の一つに対する情報を含む1次元ベクトル(1-dimensional vector)であり、これによって、状態ベクトルは学習データの難易度(difficulty level)を判断する基準になることができる。次いで、特定のサブ-カーネルはビッグニューラルネットワークモデルの最大キャパシティに対応するスーパーカーネル(super kernel)のサブセット(subset)であって、スーパーカーネルより小さいか同じカーネルの大きさと、少ないか同じチャンネルの数とからなっている。
【0064】
一方、サブ-カーネルサーチングモジュール100はシーンオーバービューイングモジュール(Scene Overviewing Module、SSM、110)とサブ-カーネルネットワーク生成器(Sub-kernel Network Generator、SNG、120)とで構成することができる。
【0065】
具体的に、学習装置1000は、サブ-カーネルサーチングモジュール100によって、(i)シーンオーバービューイングモジュール110を通じて学習データに対応するシーンフィーチャー(scene features)を生成させ、シーンフィーチャーに対応する状態ベクトルを生成させ、(ii)サブ-カーネルネットワーク生成器120を通じて前記制約で前記状態ベクトルを持つ学習データに対して目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネル数とからなる特定のサブ-カーネルのアーキテクチャー情報を生成させるプロセスを遂行するか、または遂行するように支援することができる。
【0066】
ここで、与えられた制約によって演算量、パラメーター、レイテンシ、正確度、及びフロップスなどは互いに相互関連して影響を与えることができる。その例として、要求される正確度が高くなれば、それによって要求される最小パラメーターの数が増加することがある一方、フロップスが減少するか、レイテンシが増加するなどの演算量減少が発生すると、許容されるパラメーターの数が減少することがある。したがって、特定のサブ-カーネルのアーキテクチャー情報は与えられた制約で与えられた状態ベクトルを持つ学習データに対して目的とするタスクを遂行することができる最小限のキャパシティに対応する最小限のカーネルの大きさと最小限のチャンネル数に対する情報とを含むことができる。
【0067】
この時、シーンオーバービューイングモジュール110はデバイスの全体性能に大きい影響を及ぼさない小さいコンボリューショナルニューラルネットワーク(Convolutional Neural Network、CNN)で構成することができ、サブ-カーネルネットワーク生成器120は全体性能に大きい影響を及ぼさない小さいリカレントニューラルネットワーク(Recurrent Neural Network、RNN)で構成することができる。
【0068】
図5を参照すれば、シーンオーバービューイングモジュール110は、一例として、コンボリューショナルレイヤー(convolutional layer)、プーリングレイヤー(pooling layer)及びFCレイヤー(全結合層:Fully-Connected layer)で構成されることができる。シーンオーバービューイングモジュール110に学習データが入力されると、交互に配置されている多数のコンボリューショナルレイヤーとプーリングレイヤーを経て生成されたフィーチャーマップ(feature map)がFCレイヤーに入力されてアウトプットプリディックション(output predictions)を生成することができる。この時、アウトプットプリディックションは、1次元ベクトルの形態である状態ベクトル、すなわち、シーンオーバービューイングモジュール(SOM、110)の出力物であるか、または一連の過程を経て状態ベクトルに転換することができる。
【0069】
また、サブ-カーネルネットワーク生成器120が出力する特定のサブ-カーネルのアーキテクチャー情報のデータタイプ(data type)はディクショナリー(dictionary)やストリング(string)であってもよく、一例として、{{conv1:{k=3、c=26}}、{conv2:{k=7、c=35}}、・・・、{ssd_layer:{k=1、c=121}}}のような形態でアーキテクチャー情報を出力することができる。すなわち、サブ-カーネルネットワーク生成器120は与えられた制約で生成されたシーンフィーチャーの情報を反映する状態ベクトルに対応するサブ-カーネル(sub-kernel)のアーキテクチャーのパラメーターに対する情報を生成することができる。
【0070】
次に、また
図4を参照すれば、学習装置1000は(i)特定のサブ-カーネルのアーキテクチャー情報を参照してビッグニューラルネットワークモデル200を最適化し、ビッグニューラルネットワークモデル200から特定のサブ-カーネルのアーキテクチャー情報を持つ特定のスモールニューラルネットワークモデル(Small Neural Network Model、S-NN Model、300)を生成し、(ii)特定のスモールニューラルネットワークモデル300によって学習データに対する第2インファレンス結果(second inference result)を生成させるプロセスを遂行するか、または遂行するように支援することができる。
【0071】
ここで、学習装置1000は特定のサブ-カーネルのアーキテクチャー情報によってビッグニューラルネットワークモデル200のスーパーカーネルのカーネルの高さ、カーネルの幅及びチャンネルの数の中の少なくとも一つを調整してビッグニューラルネットワークモデル200を最適化することで、特定のサブ-カーネルのアーキテクチャー情報を持つ特定のスモールニューラルネットワークモデル300を生成するプロセスを遂行するか、または遂行するように支援することができる。すなわち、本発明はビッグニューラルネットワークモデル200のスーパーカーネルのカーネルの高さ、カーネルの幅及びチャンネルの数の中の少なくとも一つを調整することでスーパーカーネルのカーネルの大きさとチャンネルの数の中の少なくとも一つを調整してビッグニューラルネットワークモデル200のスーパーカーネルの大きさまたはボリュームに変化を与えることができる。
【0072】
具体的に、
図6は、本発明の一実施例によってスーパーカーネル(super kernel)とサブ-カーネル(sub-kernel)の概念を利用してビッグニューラルネットワークモデル(B-NN Model、200)とスモールニューラルネットワークモデル(S-NN Model、300)とを生成して学習させる方法を簡略に示したものである。ここで、ビッグニューラルネットワークモデル(B-NN Model、200)は、ニューラルネットワークモデル(neural network model)を適用しようとするエッジデバイス(edge device)、一例として、自律走行自動車、自律走行飛行体、ロボットなどのコンピューティングパワーが処理することのできる最大のキャパシティ、すなわち、最大の演算量(computational load)及び最大のパラメーター(parameters)を持つニューラルネットワークモデルであって、人によって設計することができる。
【0073】
ここで、ビッグニューラルネットワークモデルのスーパーカーネルは、最大限のカーネルの高さ、最大限のカーネルの幅及び最大限のチャンネルの数、すなわち、(max_kernel_w*max_kernel_h*max_ch)からなるニューラルネットワークモデルでのカーネルを意味する。言い換えれば、スーパーカーネルは、例えば、X-Y平面上の2次元カーネルと、X-Y平面に垂直のZ軸に沿って配列された1次元チャンネルで構成された3次元構造を示すことができる。したがって、以下のスーパーカーネルは説明の便宜上、簡略に最大カーネルの大きさと最大チャンネルの数を持つものとして描写される場合がある。
【0074】
そして、ビッグニューラルネットワークモデル(B-NN Model、200)とスモールニューラルネットワークモデル(S-NN Model、300)とを生成して学習させる方法としては、従来のワン-ショットニューラルアーキテクチャーサーチ(one-shot neural architecture search)などの方法が利用されることができる。
【0075】
ここで、ビッグニューラルネットワークモデル200のスーパーカーネルを学習させる時、スーパーカーネルのサブセット(subset)に属する一部のパラメーター(parameter)をステップ(step)ごとに学習させる方法でスーパーカーネルのカーネルの大きさとチャンネルの数とを調節しながら学習させると、ニューラルネットワークモデルのインファレンス(inference)の時のカーネルの大きさとチャンネルの大きさとを少しだけ変更しても性能が急に下落する問題を防いで、減った演算量とパラメーターの数に比例するように性能を調節することができる。
【0076】
図6を参照してビッグニューラルネットワークモデル(B-NN Model、200)を学習させる一例を挙げると、スーパーカーネルのカーネルの大きさ及びチャンネルの数に対応するカーネルの大きさ(7*7)、チャンネルの数である128個からなる第1コンボリューショナルレイヤー(first convolutional layer)、すなわち、CONV1に対して第1ステップではスーパーカーネルの真ん中の3*3*64カーネルの模様(kernel shape)を、そして第2ステップでは5*5*64カーネルの模様をインファレンス(inference)の時に使用して学習させる方法でスーパーカーネルのサブセット(subset)に属する一部のパラメーターをステップごとに学習させることができる。
【0077】
一方、スーパーカーネルのカーネルの大きさとチャンネルの数とを調節しながらニューラルネットワークモデルを学習させる具体的な方法については、次の論文、Dimitrios Stamoulis著「Single-Path NAS:Designing Hardware-Efficient ConvNets in less than 4 Hours」(2019)、Jiahui Yu著「Universally Slimmable Networks and Improved Training Techniques(2019)などを参照することができる。一例として、インファレンス及び学習時に利用されるカーネルの外の領域を一時的にゼロアウト(zero-out)させると、使われるカーネルの大きさによって性能を維持することができる。また、バッチ統計(Batch statistics)を学習以後に多量のデータで再度求めると、チャンネル変更による急激な性能低下を防ぐことができる。
【0078】
したがって、本発明はスーパーカーネルを持つビッグニューラルネットワークモデル(B-NN Model、200)を生成して学習させ、以後ビッグニューラルネットワークモデル(B-NN Model、200)の最適化を通じたスモールニューラルネットワークモデル(S-NN Model、300)の生成を可能とする。この時、スモールニューラルネットワークモデル(S-NN Model、300)は、演算量、パラメーター、レイテンシ、正確度、フロップスなどの制約下で与えられた特定難易度の学習データに対して目的とするタスクを遂行するための最小限のカーネルの大きさと最小限のチャンネルの数とからなるニューラルネットワークモデルである。
【0079】
次に、再び
図4を参照すれば、学習装置1000は第1インファレンス結果と第2インファレンス結果とを参照して一つ以上の第1ロスを生成し、第1ロスを利用して与えられた制約で第1ロスを通じたバックプロパゲーション(back-propagation)を通じて第1ロスを最小化するようにシーンオーバービューイングモジュール110とサブ-カーネルネットワーク生成器120とを学習させるプロセスを遂行するか、または遂行するように支援することができる。
【0080】
さらに、学習装置1000は状態ベクトルとこれに対応する原本正解(ground truth)とを参照して一つ以上の第2ロスを生成し、第2ロスを最小化するようにシーンオーバービューイングモジュール110をさらに学習させるプロセスを遂行するか、または遂行するように支援することができる。これによって、シーンオーバービューイングモジュール110について、サブ-カーネルネットワーク生成器120にシーン(scene)に対する正しい情報を提供する方向に最適化することができる。この時、状態ベクトルに対応する原本正解は人や高度に学習されたニューラルネットワークによって生成されて学習が行われることがあるが、これとは違って、Generative Adversarial Network(GAN)を利用した非指導学習(unsupervised learning)などの方法で行われることもあり、本発明はこれに限定されない。
【0081】
ここで、上記のように、サブ-カーネルサーチングモジュール100を構成するシーンオーバービューイングモジュール(SOM、110)とサブ-カーネルネットワーク生成器120とはそれぞれコンボリューショナルニューラルネットワーク(Convolutional Neural Network、CNN)とリカレントニューラルネットワーク(Recurrent Neural Network、RNN)とで構成することができる。したがって、シーンオーバービューイングモジュール110とサブ-カーネルネットワーク生成器120とは、それぞれ学習させることもでき、統合された学習方法で一緒に学習させることもできる。統合された学習方法としては、シーン理解(scene understanding)方法を応用したCNN+RNNコンバインドトレーニング(combined training)としてOriol Vinyals等「Show and Tell:A Neural Image Caption Generator」(2015)のような方法を参照することができる。
【0082】
そして、学習装置1000によるシーンオーバービューイングモジュール110の学習において、学習装置1000はビッグニューラルネットワークモデル(B-NN model、200)と学習用スモールニューラルネットワークモデル(S-NN Model、300)との間の第1ロスを利用したバックプロパゲーションを通じてシーンオーバービューイングモジュール110によって演算量、パラメーター、レイテンシ、正確度、フロップスなどの中の少なくとも一つに対して与えられた制約下で第1ロスを最小化し、シーンオーバービューイングモジュール110がサブ-カーネルネットワーク生成器120に正確な情報を提供する方向に学習を行うことができる。この時、入力された学習データに対して第1ロスが既設定された臨界値より大きければ該学習データに対するビッグニューラルネットワークモデル(B-NN Model、200)のキャパシティは十分であるが、スモールニューラルネットワークモデル(S-NN Model、300)のキャパシティは十分ではないという情報を内包することができる。
【0083】
一例として、シーンオーバービューイングモジュール(SOM、110)から出力される状態ベクトルは、シーンフィーチャーに対応するシーン情報(scene information)を反映することができる。ここで、シーン情報は学習データの前景と背景の複雑度、データがどれほど明らかかなどの情報を反映してもよいが、本発明はこれに限定されない。学習データが複雑であったり明らかではないほどハードサンプル(hard sample)であり、この場合、より多くの演算量とパラメーターの数とを要求する方向にシーンオーバービューイングモジュール110の学習を行わせることができる。また、シーンオーバービューイングモジュール110の性能は、ニューラルネットワークモデルが搭載されたエッジデバイスの性能やオリジナルネットワークの大きさ、目標とする性能(例:speed、accuracy)によって調節することができる。
【0084】
また、学習装置1000によるサブ-カーネルネットワーク生成器120の学習において、学習装置1000は第1ロスを利用したバックプロパゲーションを通じてサブ-カーネルネットワーク生成器120によって演算量、パラメーター、レイテンシ、正確度、フロップスなどの中の少なくとも一つに対し、与えられた制約下で第1ロスを最小化する方向に学習を行うことができる。この時、サブ-カーネルネットワーク生成器120の学習は、制約の微分可能性(differentiability)によって強化学習(reinforcement learning)を利用した最適化や勾配降下最適化(gradient descent optimization)などの方法を選択することができる。
【0085】
一方、学習装置1000が上記のようにサブ-カーネルサーチングモジュール100を学習させる時、入力された学習データに対して第1ロスが既設定された臨界値より大きい場合、すなわち、第1インファレンス結果と第2インファレンス結果との差が既設定された基準値を超える場合、該当学習データはビッグニューラルネットワークモデル(B-NN Model、200)ではハードサンプルではないが、スモールニューラルネットワークモデル(S-NN Model、300)ではハードサンプルでありえることを意味する。したがって、このような場合は学習装置1000が該学習データとサブ-カーネルサーチングモジュールを通じて生成された学習用スモールニューラルネットワークモデル(S-NN Model、300)アーキテクチャーの情報とをサーバーに伝送し、サーバーによって該学習データを該学習用スモールニューラルネットワークモデル(S-NN Model、300)でのハードサンプルであるとタグ付け(tag)し、学習データベースに追加させるプロセスを遂行するか、または遂行するように支援することができる。ここで、既設定された臨界値や既設定された基準値は同じでも異なってもよい。
【0086】
しかし、これとは違って、別途コンピューティング装置を使用したモデルの大きさによるハードサンプルサーチ(hard sample search)が必要となる時、サブ-カーネルサーチングモジュール100をハードサンプルサーチャー(hard sample searcher)として機能させることができる。具体的に、第1ロスが既設定された臨界値より大きい場合、ビッグニューラルネットワークモデル(B-NN Model、200)の演算量で解くことができる問題がスモールニューラルネットワークモデル(S-NN Model、300)の演算量で解きにくいことを暗示するので、第1ロスが既設定された臨界値より大きい場合、学習データとサブ-カーネルサーチングモジュール100を通じて生成された当該特定のスモールニューラルネットワークモデル(S-NN Model、300)のアーキテクチャーの情報とをサーバーに伝送し、該学習データは特定構造、特定演算量、特定パラメーターの数などを持つ当該特定のスモールニューラルネットワークモデル(S-NN Model、300)へのハードサンプルであるということをタグ付けして学習データベースに追加することができる。したがって、学習データベースに格納されたハードサンプルは、以後、似ている演算量とパラメーターの数とを持つ特定のスモールニューラルネットワークモデル(S-NN Model、300)の学習に利用することができる。ここで、本発明の特定のスモールニューラルネットワークモデル(S-NN Model、300)はスモールニューラルネットワークモデル(S-NN Model、300)として使用可能な全ての任意の構造を称することができるので、特定のスモールニューラルネットワークモデル(S-NN Model、300)と称されるスモールニューラルネットワークモデル(S-NN Model、300)は相異なることがある。
【0087】
一方、上記のようにサブ-カーネルサーチングモジュール100を学習させた状態で、最適化装置が学習したサブ-カーネルサーチングモジュール100を利用してオン-デバイスニューラルネットワークモデルを最適化する方法を
図7と
図8を利用して説明すれば次のとおりである。
【0088】
まず、
図7は、本発明の一実施例によってサブ-カーネルサーチングモジュール100を使用してオン-デバイスニューラルネットワークモデルを最適化する最適化装置2000を簡略に示したものである。
【0089】
図7を参照すれば、最適化装置2000はサブ-カーネルサーチングモジュール100を利用してオン-デバイスニューラルネットワークモデルであるビッグニューラルネットワークモデル(B-NN Model、200)を最適化するためのインストラクションを格納するメモリ2001とメモリ2001に格納されたインストラクションに対応してサブ-カーネルサーチングモジュール100とを利用してビッグニューラルネットワークモデル(B-NN Model、200)を最適化するための動作を行うプロセッサ2002を含むことができる。ここで、テスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300)を生成してテストするための基準値となるビッグニューラルネットワークモデル(B-NN Model、200)は
図7及び
図8に記載していない。しかし、前記でサブ-カーネルサーチングモジュール100を学習させる過程で提供されたビッグニューラルネットワークモデル(B-NN Model、200)に対する説明は、
図7及び
図8でも相変らず適用することができる。
【0090】
具体的に、最適化装置2000は、典型的にコンピューティング装置(例えば、コンピュータプロセッサ、メモリ、ストレージ、入力装置及び出力装置、その他既存コンピューティング装置の構成要素を含むことができる装置;ルーター、スイッチなどのような電子通信装置;ネットワーク付きストレージ(NAS)及びストレージ領域ネットワーク(SAN)のような電子情報ストレージシステム)とコンピュータソフトウェア(すなわち、コンピューティング装置によって特定方式で機能させるインストラクション)の組み合わせを利用して所望のシステム性能を達成するものであってもよい。
【0091】
また、コンピューティング装置のプロセッサは、MPU(Micro Processing Unit)またはCPU(Central Processing Unit)、キャッシュメモリ(Cache Memory)、データバス(Data Bus)などのハードウェア構成を含むことができる。また、コンピューティング装置は、オペレーティングシステム、特定目的を遂行するアプリケーションのソフトウェア構成をさらに含むこともできる。
【0092】
しかし、コンピューティング装置が本発明を実施するためのミディアム、プロセッサ及びメモリが統合された形態の統合プロセッサを含む場合を排除するものではない。
【0093】
一方、最適化装置2000はそれぞれのエッジデバイスに入力されるデータによってエッジデバイスそれぞれに対応するサブ-カーネルサーチングモジュール100を利用してビッグニューラルネットワークモデル(B-NN Model、200)を最適化できるようにするためのもので、ニューラルネットワークモデルを適用するエッジデバイスに搭載することができる。
【0094】
このように構成された最適化装置2000を利用して本発明の一実施例によるサブ-カーネルサーチングモジュール100を利用してニューラルネットワークモデルを最適化するための方法を説明すれば次のとおりである。以下の説明では、
図4ないし
図6を参照した説明から容易に理解可能な部分に対しては詳細な説明を省略する。
【0095】
先ず、最適化装置2000はテストデータを獲得すれば、テストデータをサブ-カーネルサーチングモジュール100に入力し、サブ-カーネルサーチングモジュール100によって、(i)テストデータに対応するテスト用の制約(ここで、テスト用の制約は少なくとも演算量(computational load)、パラメーター(parameters)、レイテンシ(latency)、正確度(accuracy)、及びフロップス(flops)の中の一つに適用された制約を含む)を確認し、(ii)テストデータに対応するテスト用の状態ベクトル(テスト用の状態ベクトルは少なくともテストデータの複雑度、鮮明度の中の一つに対する情報を含む)を生成させ、(iii)与えられたテスト用の制約で前記テスト用の状態ベクトルを持つテストデータに対して目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数とからなるテスト用の特定のサブ-カーネル(特定テスト用のサブ-カーネルはビッグニューラルネットワークモデルの最大キャパシティに対応するテスト用のスーパーカーネルのサブセットであり、テスト用のスーパーカーネルより小さいか同じカーネルの大きさと、少ないか同じチャンネルの数とからなっている)のテスト用のアーキテクチャー情報を生成させるプロセスを遂行するか、または遂行するように支援することができる。
【0096】
次に、最適化装置2000は(i)テスト用の特定のサブ-カーネルのテスト用のアーキテクチャー情報を参照してビッグニューラルネットワークモデル200を最適化し、ビッグニューラルネットワークモデル200からテスト用の特定のサブ-カーネルのテスト用のアーキテクチャー情報を持つテスト用の特定のスモールニューラルネットワークモデル300を生成し、(ii)テスト用の特定のスモールニューラルネットワークモデル300によってテストデータに対する第3インファレンス結果(third inference result)を生成させるプロセスを遂行するか、または遂行するように支援することができる。ここで、サブ-カーネルサーチングモジュール100を学習させる過程で獲得した学習用の特定のサブ-カーネルに対する学習用アーキテクチャー情報とサブ-カーネルサーチングモジュール100をテストする過程で獲得したテスト用の特定のサブ-カーネルに対するテスト用アーキテクチャー情報とは、学習データとテストデータとの難易度の差によって互いに同一でないこともある。結果的に、エッジデバイスの固定されたキャパシティによってビッグニューラルネットワークモデル200のキャパシティはサブ-カーネルサーチングモジュール100の学習及びテスト過程で変わらないこともある一方、学習用スモールニューラルネットワークモデル300とテスト用のスモールニューラルネットワークモデル300とは互いに異なることがある。
【0097】
ここで、最適化装置2000はサブ-カーネルサーチングモジュール100によって、(i)シーンオーバービューイングモジュール(Scene Overviewing Module、SSM、110)を通じてテストデータに対応するテスト用のシーンフィーチャーを生成させ、テスト用のシーンフィーチャーに対応するテスト用の状態ベクトルを生成させ、(ii)サブ-カーネルネットワーク生成器120を通じて与えられたテスト制約でテスト用の状態ベクトルを持つテストデータに対して目的とするタスクを遂行することができる最小限のカーネルの大きさと最小限のチャンネルの数からなるテスト用の特定のサブ-カーネルのテスト用アーキテクチャー情報を生成させるプロセスを遂行するか、または遂行するように支援することができる。
【0098】
次いで、最適化装置2000はテスト用の特定のサブ-カーネルのテスト用アーキテクチャー情報によってビッグニューラルネットワークモデルのテスト用のスーパーカーネルのカーネルの高さ、カーネルの幅、及びチャンネルの数の中の少なくとも一つを調整してビッグニューラルネットワークモデルを最適化することでテスト用の特定のサブ-カーネルのテスト用アーキテクチャー情報を持つテスト用の特定のスモールニューラルネットワークモデル300を生成させるプロセスを遂行するか、または遂行するように支援することができる。
【0099】
具体的に、
図8は本発明の一実施例によって入力と出力の例示を通じてサブ-カーネルサーチングモジュール100を利用してオン-デバイスニューラルネットワークモデルを最適化する方法を簡略に示している。
【0100】
図8を参照すれば、最適化装置2000は与えられたテスト用の特定のサブ-カーネルのテスト用のアーキテクチャー情報を参照してビッグニューラルネットワークモデル(B-NN Model、200)を最適化することでテスト用の特定のサブ-カーネルのテスト用のアーキテクチャー情報を持つテスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_1、300_2)を生成し、生成されたテスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_1、300_2)によってテストデータに対する第3インファレンス(third inference)を遂行させることができる。
【0101】
この時、テスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_1、300_2)はビッグニューラルネットワークモデル(B-NN Model、200)のサブセットであるため、テスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_1、300_2)の性能はいつもビッグニューラルネットワークモデル(B-NN Model、200)の性能より小さいか同一である。また、テストデータの難易度が増加するほどテスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_1、300_2)のテスト用の特定のサブ-カーネル(sub-kernel)に対して要求される演算量が大きくなることがある。
【0102】
一例として、テストデータがイージーサンプル(easy sample)の場合は、ビッグニューラルネットワークモデル(B-NN Model、200)を最適化してウエイトの大きさが小さくて演算回数が少ないテスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_1)を生成させることで、ビッグニューラルネットワークモデル(B-NN model、200)に比べて少ない演算量、一例として、ビッグニューラルネットワークモデル(B-NN Model、200)に対して12%の演算量でテストデータに対する第3インファレンスを遂行することができる。一方、テストデータがハードサンプル(hard sample)の場合は、ビッグニューラルネットワークモデル(B-NN Model、200)を最適化してテスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_1)に比べてウエイトの大きさが大きくて演算回数が多いが、ビッグニューラルネットワークモデル(B-NN model、200)に比べてウエイトの大きさが小さくて演算回数が少ないテスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_2)を生成することでテスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_1)に比べて演算量が多いが、ビッグニューラルネットワークモデル(B-NN Model、200)に比べると少ない演算量、一例として、ビッグニューラルネットワークモデル(B-NN Model)に対して88%の演算量でテストデータに対する第3インファレンスを遂行することができる。
【0103】
すなわち、本発明によってビッグニューラルネットワークモデル(B-NN Model)を最適化したテスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_1、300_2)は、サンプルの難易度によって最適化された演算量を持つようになり、サーバーなどの助けがなくてもエッジデバイス上でニューラルネットワークモデルの最適化を遂行することができる。
【0104】
また、最適化装置2000はテスト用の特定のスモールニューラルネットワークモデル(S-NN model、300_1、300_2)によってテストデータをインファレンス(推論)した第3インファレンス結果と、ビッグニューラルネットワークモデル(B-NN Model、200)によってテストデータをインファレンスした第4インファレンス結果(fourth inference result)とを参照して第3インファレンス結果と第4インファレンス結果との差が既設定された基準値を超える場合、テストデータとテスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_1、300_2)のアーキテクチャー情報とをサーバーに伝送し、サーバーによってテストデータをテスト用の特定のスモールニューラルネットワークモデル(S-NN Model、300_1、300_2)でのハードサンプルとしてタグ付けして学習データベースに追加させることができる。
【0105】
この時、サブ-カーネルサーチングモジュール100の学習はエッジデバイスに持続的に入力されるデータを通じてエッジデバイス上で持続的に行われることができるし、エッジデバイス上でサブ-カーネルサーチングモジュール100の学習が一定以上行われると、スモールニューラルネットワークモデル(S-NN Model、300)を通じてテスト及びインファレンスを遂行することができる。サブ-カーネルサーチングモジュール100のオーバーヘッド(overhead)によってフレームごとにサブ-カーネルサーチングモジュール100を実行して出力された新しいスモールニューラルネットワークモデル(S-NN Model、300)のアーキテクチャー情報を使うか、または一定フレームごとにサブ-カーネルサーチングモジュール100を実行して当該区間で最終的に出力されたアーキテクチャー情報を使うかを選択することができる。
【0106】
以上、説明された本発明による実施例は、多様なコンピュータ構成要素を通じて遂行できるプログラム命令語の形態で具現され、コンピュータ読み取り可能な記録媒体に記録することができる。前記コンピュータ読み取り可能な記録媒体は、プログラム命令語、データファイル、データ構造などを単独でまたは組み合わせて含むことができる。前記コンピュータ読み取り可能な記録媒体に記録されるプログラム命令語は、本発明のために特別に設計されて構成されたものであるか、またはコンピュータソフトウェア分野の当業者に公知にされて使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例には、ハードディスク、フレキシブルディスク及び磁気テープのような磁気媒体、CD-ROM、DVDのような光記録媒体、フロプティカルディスク(floptical disk)のような磁気-光媒体(magneto-optical media)、及びROM、RAM、フラッシュメモリなどのようなプログラム命令語を格納して遂行するように特別に構成されたハードウェア装置が含まれる。プログラム命令語の例には、コンパイラによって作られるもののような機械語コードのみならず、インタープリターなどを使用してコンピュータによって実行されることができる高級言語コードも含まれる。前記ハードウェア装置は、本発明による処理を行うために一つ以上のソフトウェアモジュールとして作動するように構成されることができるし、その逆も同様である。
【0107】
以上、本発明が具体的な構成要素などのような特定事項と、限定された実施例及び図面によって説明されたが、これは本発明のより全般的な理解を助けるために提供されたものに過ぎず、本発明が前記実施例に限定されるものではなく、本発明が属する技術分野における通常の知識を有する者であれば、このような記載から多様な修正及び変形を図ることができる。
【0108】
したがって、本発明の思想は前記説明された実施例に限って決められてはならず、後述する特許請求の範囲だけでなく、本特許請求の範囲と均等または等価的に変形された全てのものは本発明の思想の範疇に属するものとする。