大規模なニューラル ネットワークには多数のレイヤーとノードがあるため、特にオンライン学習や増分学習などのリアルタイム アプリケーションでは、それらに必要なメモリと計算量を削減する方法を考慮することが非常に重要です。さらに、最近のスマート ウェアラブル デバイスの普及により、研究者はリソース (メモリ、CPU、エネルギー消費、帯域幅など) が限られたポータブル デバイスにディープラーニング アプリケーションを展開する機会も得られています。効率的なディープラーニング手法は、分散システム、組み込みデバイス、人工知能向け FPGA などに大きな影響を与える可能性があります。典型的な例としてはResNet-50[5]が挙げられます。これは50個の畳み込み層を持ち、95MB以上のストレージを必要とし、各画像を計算するために浮動小数点乗算時間を必要とします。いくつかの冗長な重みを削減すると、パラメータを約 75% 節約し、計算時間を 50% 節約できます。数メガバイトのリソースしかない携帯電話や FPGA などのデバイスの場合、これらの方法を使用してモデルを圧縮することが重要です。 この目標を達成するには、機械学習、最適化、コンピューター アーキテクチャ、データ圧縮、インデックス作成、ハードウェア設計など、複数の分野を組み合わせてソリューションを見つける必要があります。本稿では、ディープラーニングコミュニティで大きな注目を集め、近年大きな進歩を遂げているディープニューラルネットワークの圧縮と高速化に関する研究をレビューします。 これらの手法は、パラメータの削減と共有、低ランク因数分解、畳み込みフィルタの転送/圧縮、知識の蒸留の 4 つのカテゴリに分類されます。パラメータの削減と共有に基づく方法は、モデルパラメータの冗長部分の探索に重点を置き、冗長で重要でないパラメータを削除しようとします。低ランク因数分解ベースの方法では、行列/テンソル分解を使用して、深層 CNN で最も重要なパラメータを推定します。転送/コンパクト畳み込みフィルタ方式に基づいて、特別な構造を持つ畳み込みフィルタが設計され、ストレージと計算の複雑さが軽減されます。知識蒸留は蒸留モデルを学習します。つまり、よりコンパクトなニューラル ネットワークをトレーニングして、大規模なネットワークの出力結果を再現します。 表 1 では、これら 4 つの方法を簡単にまとめています。通常、パラメータのプルーニングと共有、低ランク分解、知識蒸留の手法は、完全接続層と畳み込み層を通じて DNN で使用でき、競争力のあるパフォーマンスを実現できます。さらに、転送/圧縮フィルターを使用する方法は、完全畳み込みニューラル ネットワークにのみ適用できます。低ランク分解および転送/圧縮フィルター方式はエンドツーエンドのプロセスを提供し、CPU/GPU 環境で直接実装することが容易です。パラメータのプルーニングと共有では、ベクトル量子化、バイナリエンコード、係数制約などのさまざまなアプローチを使用してこれらのタスクを実行しますが、最終目標を達成するには通常、複数の処理ステップが必要です。 表 1. さまざまなモデル圧縮方法。 トレーニング プロトコルに関しては、パラメータのプルーニング/共有と低ランク分解に基づくモデルを、事前トレーニング済みモデルから抽出することも、最初からトレーニングすることもでき、柔軟かつ効率的です。ただし、転送/圧縮フィルターと知識蒸留モデルは、最初からのトレーニングのみをサポートします。これらの方法は独立して設計されており、互いに補完し合います。たとえば、転送レイヤーとパラメータのプルーニング/共有を一緒に使用したり、モデルの量子化/バイナリ化を低ランク分解と一緒に使用して、さらなる高速化を実現したりできます。論文の著者らは、それぞれの方法の特徴、利点、欠点を含めて詳細に紹介しています。 パラメータの削減と共有 冗長性(情報冗長性またはパラメータ空間冗長性)を削減する方法に応じて、これらの手法はさらに、モデルの量子化と二値化、パラメータ共有、構造マトリックスの 3 つのカテゴリに分類できます。 A. 量子化と二値化 ネットワーク量子化は、各重みを表すために必要なビット数を減らすことで、元のネットワークを圧縮します。 Gongら[6]とWuら[7]はパラメータ値にK平均法スカラー量子化を使用した。 Vanhouckeら[8]は、8ビットパラメータ量子化により、精度の低下を最小限に抑えながら大幅な高速化を実現できることを示しました。 [9]の研究では、確率的丸めに基づくCNNトレーニングで16ビット固定小数点表現を使用し、分類精度をほとんど損なうことなくメモリ使用量と浮動小数点演算を大幅に削減しました。 [10]は、まず重要でない接続を削除し、疎に接続されたネットワークを再トレーニングする方法を提案した。次に、重み共有を使用して接続の重みを量子化し、量子化された重みとコードブックにハフマン符号化を使用して、圧縮率をさらに削減します。図 1 に示すように、この方法では、まず通常のネットワーク トレーニングを通じて接続を学習し、次に重みの小さい接続を削除し、最後にネットワークを再トレーニングして残りのスパース接続の最終的な重みを学習します。 欠点: GoogleNet などの大規模な CNN ネットワークを扱う場合、このようなバイナリ ネットワークの精度は大幅に低下します。もう 1 つの欠点は、既存の 2 値化方法が単純な行列近似に基づいており、2 値化による精度の低下への影響が無視されていることです。 図1. [10]で提案された3段階の圧縮方法:剪定、量子化、ハフマン符号化。プルーニングにより、エンコードする必要がある重みの数が削減され、量子化とハフマン符号化により、各重みのエンコードに使用されるビット数が削減されます。スパース表現のメタデータには圧縮率が含まれます。圧縮機構により精度が損なわれることはありません。 B. 剪定と共有 ネットワークの複雑さを軽減し、過剰適合の問題に対処するために、ネットワークの剪定と共有が使用されてきました。初期に適用された剪定方法の 1 つは、Biased Weight Decay と呼ばれ、Optimal Brain Damage 法と Optimal Brain Surgeon 法によって、損失関数のヘッセ行列に基づいて接続の数が減少します。この研究によると、この剪定方法は、重要度に基づく剪定方法 (weightedDecay 法など) よりも正確です。 欠点: 剪定と共有の方法には潜在的な問題がいくつかあります。まず、L1 または L2 正則化を使用する場合、プルーニング法では収束するためにより多くの反復が必要になります。さらに、すべてのプルーニング法ではレイヤーの感度を手動で設定する必要があり、これはハイパーパラメータの微調整を意味し、一部のアプリケーションでは面倒で面倒な場合があります。 C. 構造化マトリックスの設計 mxn 行列を記述するのに m×n より少ないパラメータを必要とする場合、その行列は構造化行列です。通常、このような構造はメモリ消費を削減するだけでなく、高速な行列ベクトル乗算と勾配計算を通じて推論とトレーニングを大幅に高速化します。 低ランク分解とスパース性 典型的な CNN 畳み込みカーネルは 4D テンソルです。これらのテンソルには多くの冗長性がある可能性があることに注意してください。テンソル分解に基づくアイデアは、冗長性を削減するための非常に有望な方法である可能性があります。全結合層は 2D 行列とみなすこともでき、低ランク分解も可能です。 すべての近似はレイヤーごとに行われます。レイヤーが低ランク フィルターによって近似された後、レイヤーのパラメーターは固定され、前のレイヤーは再構成エラー基準を使用して微調整されます。これは、図 2 に示すように、2D 畳み込み層を圧縮するための典型的な低ランク方式です。 図 2. CNN モデル圧縮の低ランク近似。左: オリジナルの畳み込み層。右: ランク K を使用した低ランク制約付きの畳み込み層。 表 2. ILSVRC-2012 データセットにおける低ランクモデルとそのベースラインモデルのパフォーマンス比較。 デメリット: 低ランク方式はモデルの圧縮と高速化に適しており、このアプローチはドロップアウト、正規化ユニット、マックスアウトなどのディープラーニングの最近の進歩を補完します。ただし、低ランク法の実装は、計算コストの高い分解操作を伴うため、簡単ではありません。もう 1 つの問題は、現在の方法では、低ランク近似をレイヤーごとに実行し、異なるレイヤーには異なる情報があるため、非常に重要なグローバル パラメーターの圧縮を実行できないことです。最後に、分解が収束するには、多数の再トレーニングが必要になります。 畳み込みフィルタのシフト/圧縮 CNNモデルを圧縮するために転移畳み込み層を使用する方法は、同変群理論を導入した[42]の研究に触発されたものである。 xを入力、Φ(·)をネットワークまたはレイヤー、T(·)を変換行列とします。そして、同変概念は次のように定義できます。 つまり、入力 x は変換行列 T (·) を使用して変換され、ネットワークまたはレイヤー Φ(·) に渡されます。結果は、最初に x をネットワークにマッピングし、次にマッピングを変換した後の表現結果と一致します。 理論によれば、ネットワークモデル全体を圧縮するために、レイヤーまたはフィルターΦ(·)に変換行列を適用するのが合理的です。 表 3. CIFAR-10 および CIFAR-100 データセットにおける転送畳み込みフィルタに基づくさまざまな手法のパフォーマンス比較。 欠点: 畳み込みフィルタに転送情報を適用する方法では、いくつかの問題を解決する必要があります。まず、これらの方法のパフォーマンスは、ワイド/フラット アーキテクチャ (VGGNet など) に匹敵しますが、ナロー/特殊なアーキテクチャ (GoogleNet、Residual Net など) には匹敵しません。第二に、転送仮定はアルゴリズムを導くには強すぎる場合があり、一部のデータセットでは結果が不安定になります。 知識の洗練 私たちの知る限りでは、Caruanaら[49]が知識移転(KT)を利用してモデルを圧縮することを初めて提案した。彼らは、強力な分類器によって注釈が付けられた疑似データを統合することで圧縮モデルをトレーニングし、元の大規模ネットワークの出力を再現しました。しかし、彼らの仕事は浅いネットワークに限られています。このアイデアは最近[50]の知識蒸留(KD)に拡張され、深くて広いネットワークを、より複雑なモデルの機能を模倣した浅いモデルに圧縮できるようになりました。 KDの基本的な考え方は、ソフトマックスを通じて教師の出力のカテゴリ分布を学習することで、大規模な教師モデルの知識をより小さなモデルに洗練させることです。 [51]の研究では、KD圧縮フレームワークが導入されました。これは、教師の出力を弱めることによって生徒にペナルティを課す生徒教師パラダイムに従うことで、深層ネットワークのトレーニング量を削減します。このフレームワークは、深層ネットワーク (教師) の集合を、同じ深さの生徒ネットワークに圧縮します。これを達成するために、生徒は教師の出力、つまり実際のクラスラベルを予測するように訓練されます。 KD 法はシンプルであるにもかかわらず、さまざまな画像分類タスクで有望な結果を示しています。 デメリット: KD ベースの方法では、より深いモデルをより浅くすることができ、計算コストを大幅に削減できます。しかし、KD 法は Softmax 損失関数を使用した分類タスクにしか使用できないなど、いくつかの欠点もあり、これが適用の妨げとなっています。もう 1 つの欠点は、モデルの仮定が厳しすぎる場合があり、そのパフォーマンスが他の方法ほど良くない場合があることです。 表 4. モデル圧縮 さまざまな代表的な研究で使用されるベースライン モデル。 議論と課題 ディープモデルの圧縮および加速技術はまだ初期段階にあり、次のような課題が残っています。
|
<<: テクノロジー大手はAI人材の獲得に競い合い、新卒でも巨額の給与を得られる
最近、米国ノースウェスタン大学のエンジニアたちが、小さくてかわいいカニの形をした、史上最小の遠隔操作...
市場の一流専門家によると、AI は病院の運営、新薬の発見、超音波検査を改善する可能性を秘めています。...
概要: 顔認識を実現するための 1 行のコード、1. まず、システムに認識させたいすべての人の写真が...
[[280714]]人工知能は世界に大きな影響を与えます。 2025年までに、AIソフトウェアの総...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
昨晩、娘がぼんやりしてリビングルームに立っていたので、私は彼女に尋ねました。「何をしているの?」彼女...
[[361168]] IDCは2019年9月の時点で、2023年までに人工知能技術への支出が3倍以上...
これはパス ベクトル ルーティング プロトコルであり、インターネット上のどこかにあるデータにアクセス...
先週、ディープラーニングの分散操作モードに関する情報を検索していたところ、偶然 PaddlePadd...
人工知能が人々の日常生活においてますます重要になるにつれ、行動マーケティングも成長しています。人々は...
OpenAI の最初のシーズンは本当に終わりました。 ChatGPTがちょうど1周年を迎えようとして...
自動化システムでは、ディープラーニングとコンピュータービジョンが広く普及し、あらゆる場所で利用されて...