序文 AlexNet が ILSVRC 2012 ImageNet 画像分類コンテストで優勝して以来、畳み込みニューラル ネットワーク (CNN) の人気がコンピューター ビジョン分野全体を席巻しています。 CNN モデルは、従来の手作業による特徴と分類器をすぐに置き換え、エンドツーエンドの処理方法を提供するだけでなく、さまざまな画像競合タスクの精度を大幅に向上させ、さらには人間の目の精度 (LFW 顔認識タスク) を超えました。 CNN モデルがコンピューター ビジョン タスクの精度の限界に近づき続けるにつれて、その深さとサイズも指数関数的に増加します。 表1 いくつかの古典的なモデルのサイズ、計算の複雑さ、パラメータ数の比較 次に起こるのは非常に恥ずかしいシナリオです。このような巨大なモデルは限られたプラットフォームでしか使用できず、モバイル端末や組み込みチップにはまったく移植できません。インターネット経由で送信したい場合でも、帯域幅の使用量が多いため、多くのユーザーにとって気が遠くなることがあります。一方、大型モデルでは、デバイスの電力消費と動作速度にも大きな課題が生じます。したがって、このようなモデルが実用化されるまでには、まだ程遠いと言えます。 このような状況では、モデルの小型化と高速化が緊急に取り組むべき課題となります。実際、初期のころには、重みプルーニングや行列SVD分解など、一連のCNNモデル圧縮手法を提案した学者もいましたが、圧縮率と効率は満足できるレベルには程遠いものでした。 近年、モデル小型化のアルゴリズムは、圧縮の観点から、モデルの重み値の観点からの圧縮とネットワークアーキテクチャの観点からの圧縮の2つに大別できます。一方、計算速度の観点からは、サイズのみを圧縮する場合と、サイズを圧縮しながら速度を向上させる場合に分けられます。 本稿では主に、SqueezeNet[5]、Deep Compression[6]、XNorNet[7]、Distilling[8]、MobileNet[9]、ShuffleNet[10]などの代表的な論文や手法について論じているが、これらも上記の手法に従って大まかに分類することができる。 表2 従来の圧縮方法との比較 1. スクイーズネット 1.1 設計コンセプト SqueezeNet は、FN Iandola、S. Han らが 2016 年の論文「SqueezeNet: AlexNet レベルの精度、50 倍少ないパラメータ、< 0.5MB のモデル サイズ」で提案した小型ネットワーク モデル構造です。このネットワークは、精度を損なうことなく、元の AlexNet を元のサイズの約 510 倍 (< 0.5MB) に圧縮できます。 SqueezeNet の基本的な指針は、精度を確保しながら最小限のパラメータを使用することです。 これは、すべてのモデル圧縮方法の最優先目標でもあります。 この考えに基づいて、SqueezeNet は次の 3 つのネットワーク構造設計戦略を提案しました。 戦略 1. 3x3 畳み込みカーネルを 1x1 畳み込みカーネルに置き換えます。 この戦略は、1x1 畳み込みカーネルのパラメータが 3x3 畳み込みカーネルのパラメータの 1/9 であるため、理解しやすいです。この変更により、理論的にはモデル サイズを 9 分の 1 に圧縮できます。 戦略 2. 3x3 畳み込みカーネルへの入力チャネルの数を減らします。 3x3 畳み込みカーネルを持つ畳み込み層の場合、この層内のすべての畳み込みパラメータの数 (バイアスを除く) は次のようになります。 ここで、N は畳み込みカーネルの数、つまり出力チャネルの数であり、C は入力チャネルの数です。 したがって、ネットワークパラメータの削減を確実にするためには、3x3畳み込みカーネルの数を減らすだけでなく、3x3畳み込みカーネルに入力される入力チャネルの数、つまり式中のCの数を減らす必要があります。 戦略 3. ダウンサンプリングを可能な限りネットワークの後の層に配置します。 畳み込みニューラル ネットワークでは、各層によって出力される特徴マップがダウンサンプリングされるかどうかは、畳み込み層またはプーリング層のストライドによって決まります。重要な点は、解像度の高い特徴マップ(遅延ダウンサンプリング)を使用すると分類精度が向上することです。入力の解像度が高いほど、提供できる情報が増えるため、この点は直感的によく理解できます。 上記の 3 つの戦略のうち、最初の 2 つはパラメータの数を減らすように設計されており、最後の 1 つはネットワークの精度を最大化するように設計されています。 1.2 ネットワークアーキテクチャ 上記の 3 つの戦略に基づいて、著者は Inception に似たネットワーク ユニット構造「Fire Module」を提案しました。発射モジュールは、圧縮畳み込み層 (1x1 畳み込みカーネルのみを含む) と拡張畳み込み層 (1x1 および 3x3 畳み込みカーネルを含む) で構成されます。このうち、スクイーズ層はインセプションの考え方を取り入れ、1x1 畳み込みカーネルを使用して、拡張層の 3x3 畳み込みカーネルの入力チャネル数を削減します。図1に示すように。 図1 火災モジュール構造図 ここで、スクイーズ層の 1x1 畳み込みカーネルの数は s1x1 と定義されます。同様に、エクスパンド層の 1x1 畳み込みカーネルの数は e1x1、3x3 畳み込みカーネルの数は e3x3 です。 3x3 に入力される入力チャネルの数が確実に減るように、s1x1 < e1x1 + e3x3 とします。 SqueezeNet のネットワーク構造は、複数のファイア モジュールで構成されています。さらに、この記事ではアーキテクチャ設計の詳細もいくつか紹介されています。
1.3 実験結果 表3 ImageNetにおけるさまざまな圧縮方法の比較実験結果 上の表は、従来の圧縮方法と比較して、SqueezeNet が精度を確保しながら(またはわずかに向上しながら)最高の圧縮率を達成し、元の AlexNet を 240 MB から 4.8 MB に圧縮できることを示しています。Deep Compression と組み合わせると、0.47 MB に達し、低帯域幅ネットワークでのモバイル展開と伝送の要件を完全に満たします。 さらに、著者はResNetのアイデアも借用し、元のネットワーク構造を修正し、バイパスブランチを追加して、分類精度を約3%向上させました。 1.4 速度に関する考慮事項 この記事は主にモデルサイズの圧縮を目的としていますが、SqueezeNetがネットワーク構造で1x1と3x3の畳み込みカーネルを多用していることが速度向上に寄与していることは間違いありません。Caffeなどのディープラーニングフレームワークの場合、畳み込み層の順方向計算において、1x1畳み込みカーネルを使用すると追加のim2col演算を回避でき、gemmを直接使用して行列加速演算を行うことができるため、速度の最適化に一定の効果があります。しかし、この高速化の効果はまだ限られています。さらに、SqueezeNet は 9 つのファイア モジュールと 2 つの畳み込み層を使用しているため、従来の畳み込み演算を大量に必要とし、これもさらなる速度向上を妨げるボトルネックとなっています。 2. ディープコンプレッション Deep Compression は、ICLR 2016 での S.Han の論文「Deep Compression: Compressing Deep Neural Networks with Pruning, Traininged Quantization and Huffman Coding」から来ています。この論文は ICLR 2016 で最優秀論文賞を受賞し、また、CNN モデルの小型化と高速化の新たなブームを巻き起こし、過去 2 年間でこの分野で多数の優れた研究と論文が生まれるきっかけとなったという重要な節目でもあります。 2.1 アルゴリズムフロー これまでの「アーキテクチャ圧縮」SqueezeNet とは異なり、Deep Compression は「重量圧縮派」に属します。どちらの論文も S.Han 氏のチームによるもので、2 つの方法を組み合わせることで究極の圧縮効果が得られます。この実験結果は上記の表でも検証されています。 ディープ圧縮アルゴリズムは、図 2 に示すように 3 つのステップで構成されます。 図2 ディープコンプレッションパイプライン 1. 剪定 刈り込みの考え方は、実は初期の論文にも見られます。LeCun 氏らは、刈り込みを使用してネットワークを間引いて、過剰適合のリスクを減らし、ネットワークの一般化を改善しました。 図3は、MNISTでトレーニングされたLeNet conv1畳み込み層のパラメータ分布を示しています。ほとんどの重みが0付近に集中しており、ネットワークにほとんど貢献していないことがわかります。クリッピングでは、0付近の小さな重みが0に設定され、これらの重みがアクティブにならないようにすることで、残りのゼロ以外の重みのトレーニングに重点が置かれ、最終的にネットワークの精度が変わらないようにしながらサイズを圧縮するという目的を達成します。 実験により、モデルは剪定に対してより敏感であることが判明したため、剪定の際には層ごとに反復的に剪定することが推奨されます。また、各層の剪定比率を自動的に選択する方法は、さらに研究する価値のあるトピックです。 図3 LeNet conv1層の重み分布 2. 量子化 ここでの重みの量子化は重みクラスタリングに基づいており、連続的に分散された重みを離散化することで、保存する必要がある重みの数を削減します。
図4: 重み量子化の順方向および逆方向の計算プロセス 3. ハフマン符号化 ハフマン符号化では、可変長符号化を使用して平均コード長を短縮し、モデル サイズをさらに圧縮します。 2.2 モデルの保存 前述のプルーニングと量子化はどちらも、モデルのサイズを縮小するために、モデルのより緊密な圧縮を達成することを目的としています。
2.3 実験結果 表4 ディープコンプレッションを使用した後のさまざまなネットワークの圧縮率[6] SqueezeNet+Deep Compressionにより、元の240MのAlexNetを0.47Mに圧縮でき、約510倍の圧縮率を達成できます。 2.4 速度に関する考慮事項 Deep Compression の主な設計はネットワーク ストレージ サイズを圧縮することであることがわかりますが、順方向にストレージ モデルを読み込んで拡張すると、速度が大幅に向上することはありません。そこでSong H.らは圧縮モデル専用のFPGAベースのハードウェアフォワードアクセラレーションフレームワークEIE[12]を設計した。興味のある人は研究してみるとよいだろう。 3. XNorNet バイナリ ネットワークは、モデルの圧縮と加速の分野における永続的な研究テーマの 1 つです。元の 32 ビット浮動小数点重みを 1 ビットに圧縮し、パフォーマンスの低下を最大限に抑えることが研究の鍵となります。 この論文の主な貢献は次のとおりです。
3.1 バイオハザード つまり、最大の二値化フィルタテンソル B は元のパラメータの符号関数であり、最大のスケール係数は各フィルタ重みの絶対値の平均です。 トレーニング アルゴリズムを図 5 に示します。順方向計算と逆方向伝播では 2 値化された重みのみが使用され、パラメータを更新するときには元のパラメータが引き続き使用されることに注意してください。これは、2 値化されたパラメータを使用すると、勾配降下が非常に小さくなり、トレーニングが収束できなくなるためです。 3.2 XNORネット 畳み込み計算では、入力と重みの両方がバイナリ値に量子化されるため、従来の乗算計算は XOR 演算になり、非バイナリ データの計算はごく一部しか占めません。 XNOR-Net の典型的な畳み込みユニットを図 6 に示します。従来のユニットとは異なり、モジュールの順序が調整されています。 2 値化による精度の低下を抑えるため、まず入力データを BN 正規化します。BinActiv レイヤーを使用して入力を 2 値化し、続いて 2 値化畳み込み演算を行い、最後にプーリングを行います。 図5 BWNトレーニングプロセス 図6 従来の畳み込みユニットとXNOR-Net畳み込みユニットの比較 3.3 実験結果 表5 ImageNetにおけるバイナリネットワークとAlexNetの結果の比較 ALexNet と比較すると、BWN ネットワークは基本的に同じか、わずかに優れた精度を達成できます。XNOR-Net は入力もバイナリ化されるため、パフォーマンスがわずかに低下します。 蒸留 Distilling アルゴリズムは、Hinton らが論文「Distilling the Knowledge in a Neural Network」で提案したネットワーク転送に似た学習アルゴリズムです。 4.1 基本的な考え方 蒸留とは文字通り蒸留を意味します。基本的な考え方は、小規模ネットワークにパフォーマンスの良い大規模ネットワークを通じて学習させることで、小規模ネットワークが大規模ネットワークと同じパフォーマンスを発揮できるようにしますが、蒸留後の小規模ネットワークのパラメータスケールは元の大規模ネットワークよりもはるかに小さくなり、ネットワークを圧縮するという目的を達成します。 その中で、蒸留モデルを訓練する目的関数は2つの部分から構成される。 1) 煩雑なモデルのソフトマックス出力とのクロスエントロピーはソフトターゲットと呼ばれます。このうちソフトマックスの計算では、出力を制御するためにハイパーパラメータ温度Tが追加され、計算式は次のようになる。 温度 T が大きいほど、出力の分布は滑らかになり、確率 zi/T は小さくなり、エントロピーは大きくなります。ただし、T が大きすぎると、エントロピーの増加によって生じる不確実性が増し、判別不能性が増します。 損失がソフト ターゲットを使用して計算される理由については、分類問題ではグラウンド トゥルースは決定論的、つまりワンホット ベクトルであると著者は考えています。例えば、手書きの数字の分類では、数字3の場合、そのラベルが3である確率は1で、他の値の確率は0です。ソフトターゲットの場合、ラベルが3である確率を表すことができます。数字が5のように書かれている場合は、ラベルが5である確率も与えられ、それによって、次のようなより多くの情報を提供することができます。 2) グランドトゥルースとのクロスエントロピー (T=1) トレーニング損失は上記の 2 つの損失の加重合計であり、2 番目の損失は通常ははるかに小さくなります。 4.2 実験結果 著者は、次の表に示すように、音声認識に関する実験結果の比較を示しています。 表6 蒸留モデルと元のモデルの精度の比較 上記の表は、蒸留モデルの精度と単語誤り率がソフトターゲットの生成に使用された 10 個のモデルのパフォーマンスに匹敵し、小さなモデルが大きなモデルの認識能力をうまく学習したことを示しています。 4.3 速度に関する考慮事項 蒸留はもともとネットワーク高速化のために提案されたものではなく、最終的な計算効率は依然として蒸留モデルの計算規模に依存します。ただし、理論的には、蒸留後の小さなモデルの計算速度は元の大きなモデルと比較してある程度向上しますが、速度向上とパフォーマンス維持の割合のトレードオフは研究に値する方向です。 5. モバイルネット MobileNet は、モバイル展開向けに Google が提案した軽量ネットワーク アーキテクチャです。 MobileNet は、モバイル端末の限られたコンピューティング リソースと厳しい速度要件を考慮して、従来のネットワークで最初に使用されていたグループ コンセプトを導入しました。つまり、フィルターの畳み込み計算を特定のグループ内の入力のみに制限することで、畳み込み計算の量を大幅に削減し、モバイル端末での順方向計算の速度を向上させました。 5.1 畳み込み分解 MobileNet は因数分解畳み込みの考え方を借用し、通常の畳み込み演算を 2 つの部分に分割します。
各畳み込みカーネル フィルターは、次の図に示すように、特定の入力チャネルに対してのみ畳み込み演算を実行します。ここで、M は入力チャネルの数、DK は畳み込みカーネルのサイズです。 図7 深さ方向の畳み込み 深さ方向の畳み込みの計算複雑度は DKDKMDFDF です。ここで、DF は畳み込み層によって出力される特徴マップのサイズです。
深さ方向畳み込み層のマルチチャネル出力は、以下に示すように 1x1 畳み込みカーネルを使用して結合されます。ここで、N は出力チャネルの数です。 図8 ポイントごとの畳み込み ポイントワイズ畳み込みの計算量はMNDFDFである。 上記の2つのステップは、総称して深さ方向分離畳み込みと呼ばれる。 標準的な畳み込み演算の計算量はDKDKMNDFDFである。 したがって、標準的な畳み込みを 2 層の畳み込み演算に分解すると、計算効率の理論的な改善を次のように計算できます。 3x3 畳み込みカーネルの場合、深さ方向に分離可能な畳み込みにより、理論的には効率が約 8 ~ 9 倍向上します。 5.2 モデルアーキテクチャ 図9. 通常の畳み込みユニットとMobileNet畳み込みユニットの比較 MobileNet の畳み込みユニットは上図のとおりです。各畳み込み演算の後には BN 演算と ReLU 演算が続きます。 MobileNet では、3x3 畳み込みカーネルは深さ方向の畳み込みでのみ使用されるため、計算の 95% はポイント方向の畳み込みの 1x1 畳み込みに集中します。行列演算 GEMM を使用して畳み込みを実装する Caffe などのディープラーニング フレームワークの場合、1x1 畳み込みでは im2col 演算を必要としないため、行列演算アクセラレーション ライブラリを直接使用して高速計算を行うことができ、計算効率が向上します。 5.3 実験結果 表7 MobileNetとImageNetにおける主流の大規模モデルの精度比較 上記の表は、MobileNet が精度を一定に保ちながら計算操作の数とパラメータの量を効果的に削減し、モバイル端末でリアルタイムのフォワード コンピューティングを可能にすることを示しています。 6. シャッフルネット ShuffleNet は、モバイル フォワード展開のために今年 Face++ によって提案されたネットワーク アーキテクチャです。 ShuffleNet は MobileNet のグループ概念に基づいており、畳み込み演算を特定の入力チャネルに制限します。違いは、ShuffleNet が入力グループを分割して、各畳み込みカーネルの受容野を異なるグループの入力に分散できるようにすることで、モデルの学習能力が向上することです。 6.1 設計コンセプト 畳み込みにおけるグループ演算により畳み込み演算の回数を大幅に削減できることがわかっており、この変更により速度の向上とパフォーマンスの維持がもたらされ、これは MobileNet などの記事でも検証されています。しかし、グループ操作によってもたらされるもう 1 つの問題は、特定のフィルタが特定のチャネルの入力にのみ作用し、チャネル間の情報の流れを妨げることです。グループが増えるほど、エンコードできる情報は豊富になりますが、各グループの入力チャネルの数が減るため、単一の畳み込みフィルタの劣化を引き起こし、ネットワークの表現能力がある程度弱まる可能性があります。 6.2 ネットワークアーキテクチャ この作業では、ネットワーク アーキテクチャの設計に次の革新が加えられています。
ResNetのバイパスブランチのアイデアを参考にして、ShuffleNetでも同様のネットワークユニットが導入されました。違いは、stride=2 ユニットでは、add 演算の代わりに concat 演算が使用され、1x1stride=2 畳み込み演算の代わりに平均プーリングが使用されることです。これにより、計算量とパラメータの量が効果的に削減されます。ユニット構造を図10に示します。
MobileNetでも述べたように、1x1畳み込み演算が計算量の約95%を占めるため、著者も1x1畳み込みをグループ畳み込みに変更し、MobileNetに比べて計算量を大幅に削減しました。
ShuffleNet のシャッフル操作を図 11 に示します。 図10 ShuffleNetネットワークユニット 図11 異なるグループ間のシャッフル操作 6.3 実験結果 表8 ImageNetにおけるShuffleNetとMobileNetの精度比較 上記の表は、MobileNet と比較して、ShuffleNet の前方計算労力が効果的に削減されるだけでなく、分類エラー率も大幅に改善され、ネットワークの実現可能性を検証していることを示しています。 6.4 速度に関する考慮事項 著者らは、ARM プラットフォーム上でネットワーク効率を検証し、メモリ読み取りやスレッド スケジューリングなどの要素を考慮すると、理論上の 4 倍の速度向上が実際の展開では約 2.6 倍に相当することを発見しました。著者は、次の表に示すように、オリジナルの AlexNet との速度比較を示しています。 表9 ARMプラットフォーム上のShuffleNetとAlexNetの速度比較 結論 近年、学界で多くの CNN モデル アクセラレーションの研究が発表されているほか、業界の大手企業も、Google の Tensorflow、Facebook の caffe2、今年リリースされたばかりの Apple の CoreML など、独自のモバイル フォワード コンピューティング フレームワークを発表しています。ネットワーク アーキテクチャの継続的な反復と最適化、およびハードウェア コンピューティング アクセラレーション テクノロジーの継続的な開発により、モバイル端末へのディープラーニングの展開は将来的には問題にならないと考えています。 オリジナルリンク: https://cloud.tencent.com/community/article/678192 [この記事は51CTOコラムニスト「テンセントクラウドテクノロジーコミュニティ」によるオリジナル記事です。転載の許可を得るには51CTOを通じて原作者に連絡してください] この著者の他の記事を読むにはここをクリックしてください |
1 年前、私は数人の友人と機械学習 API を構築するためのオープンソース プラットフォームである ...
【51CTO.comオリジナル記事】 [[376669]]医療は人々の生活に関わる最も重要な問題の一...
統計モデルやその他のアルゴリズムに加えて、回帰は機械学習を正常に動作させるための重要な要素です。回帰...
人工知能は国際競争の新たな焦点となりつつあり、同時に人類社会に新たな発展の機会をもたらしています。機...
この記事の結論から始めましょう。AI と機械学習は、ビデオ信号を 24 時間 365 日リアルタイム...
最近、新しい「特許法」の全文が公布され、新たに改正された「著作権法」が公布されたことにより、国は知的...
「人間のニューラルネットワークはどのように機能するのか?」この質問は多くのデータ サイエンティスト...
大規模言語モデル (LLM) の世界では、複数ターンの会話を処理することは常に課題でした。 MITの...
顔認識の応用範囲は、アクセス制御やデバイスログインから空港や公共エリアの監視まで、非常に広範囲にわた...
電子商取引業界では、ユーザーに対する商品の推奨は常に非常にホットで重要なトピックです。比較的成熟した...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...