[論文学習] RepVGG: VGG スタイルの ConvNet を再び優れたものにする、およびネットワーク再パラメータ化の使用と効果の分析

  この記事では、ネットワーク再パラメータ化の分野における RepVGG と同じ著者のいくつかの記事を研究し、その主な原理を要約し、再パラメータ化手法の効果をテストし、その価値と重要性を分析しました。
  RepVGG は CVPR2021 に含まれている論文です。著者は清華大学の Ding Xiaohan 博士です。同じ著者がこの分野で他にもいくつかの論文を発表しています。

  ACNet:https://arxiv.org/abs/1908.03930
  RepVGG:https://arxiv.org/abs/2101.03697
  DiverseBranchBlock:https://arxiv.org/abs/2103.13425
  ResRep:https://arxiv.org/abs /2007.03260
  RepMLP:https://arxiv.org/abs/2105.01883

  著者はこれらの記事について、Zhihu コラムで詳しく説明しています: https://www.zhihu.com/column/c_168760745コードはすべてオープンソースです。こちら: https://github.com/DingXiaoH
  主に論文内の知識ポイントを自分の理解に基づいて整理し、実践することで、研究を深めています。

1. ネットワーク再パラメータ化の原理

  この一連の記事は、ネットワークの再パラメータ化の手法を中心に展開します。ネットワークの再パラメータ化は、モデル圧縮の分野における新しいテクノロジと考えることができます。その主なアイデアは、K x K 畳み込み層を、いくつかの特定のネットワーク層の並列または直列接続に変換することです。変換されたネットワークはより複雑になります。パラメータが増加します。したがって、変換されたネットワークはトレーニング フェーズでより良い結果を達成することが期待され、推論フェーズでは、大規模なネットワークのパラメーターを元の KxK 畳み込み層に同等に変換できるため、ネットワークはトレーニング フェーズとより良い学習の両方を実現します。推論段階では大規模ネットワークの能力と小規模ネットワークのより高い計算速度を実現します。
  DBB (DiverseBranchBlock) の記事で著者は、KxK 畳み込み層と等価に変換できる 6 種類の構造 (論文中の図 2 など) について言及しています. Transform VI は ACNet 論文の構造です. この 6 種類に加えて、 DBB の論文には記載されていない構造がありますが、それが RepVGG の構造であり、それを下の図 1 に示します。
ここに画像の説明を挿入
ここに画像の説明を挿入

図 1. KxK 畳み込みに等価的に再パラメータ化できるさまざまなモジュール

  上記の構造は次の点に要約できます。
(1) 「BN 吸収」操作: KxK 畳み込み層を BN 層と組み合わせることができ、BN のパラメータを畳み込みのパラメータに変換して、BN を除去できます。
(2) 畳み込みは、重ね合わせ特性 f(ax+by)=af(x)+bf(y) を満たす線形演算であるため、conv(W1 + W2) = conv(W1) + conv(W2) となります。 2 つの KxK 畳み込みの加算は、パラメータの追加後に KxK 畳み込みになります。
(3) 1x1 畳み込みは、中心点を除いて 0 である KxK 畳み込みとみなすことができます (ただし、K は奇数です); 1xK 畳み込みと Kx1 畳み込みは、両側が 0 である行または列とみなすことができます。畳み込み; 恒等変換はより特殊な 1x1 畳み込みであり、CxCxKxK パラメータの KxK 畳み込みとして理解できます: CxC 部分は単位行列で、KxK 部分の中心点は 1、残りは 0 。
(4) 1x1 畳み込みと KxK 畳み込みの連結は、パラメータを乗算することで KxK 畳み込みに変換できます (乗算にはいくつかの転置演算が必要です。式については原文を参照してください)。
(5) AVG 演算は、要素が 1/(K*K) である KxK 畳み込みと同等です。
(6) 重ね合わせ特性により、上記のさまざまな構造を無限に重ね合わせて組み合わせることができます。たとえば、次の図は論文で示されている DBB モジュールです。

ここに画像の説明を挿入

図 2. DBB モジュール

  RepMLP は著者の最新の論文であり、この論文では、KxK 畳み込みが一連のより複雑なネットワークと同等であるだけでなく、多層完全接続ネットワーク MLP も線​​形演算であり、畳み込みが同等である可能性があると指摘されています。 MLPへ。

2. ネットワーク再パラメータ化の目的と意義

  この方法に基づいて, これは主に KxK 畳み込みに役立ちます. もちろん、VGG の純粋な 3x3 畳み込みに最も効果的です. 著者はまた、記事 RepVGG で VGG に対するこの技術の大きな効果を実証しました. Ping の現在の SOTA モデルは次のとおりです本当に目を引く。ただし、純粋な VGG もビデオメモリを大量に消費するため、エンドサイドデバイスへの展開には適しておらず、モデル圧縮の本来の意味が失われているため、RepVGG の実用的な意義は薄いと考えています。さらに、ネットワーク再パラメータ化手法を使用してネットワーク モデルを圧縮することはできず、一部の特定のネットワーク構造を KxK 畳み込みに圧縮することしかできませんが、これは一般的な手法ではありません。
  ただし、KxK 畳み込みは、さまざまな主流のニューラル ネットワークで非常に一般的です。これらの KxK 畳み込み層が複雑でトレーニングされ、推論のために再パラメータ化および展開されれば、推論の速度に影響を与えることなくモデルの効果を向上させることが期待されます。便利なポイント。

3. 私のテスト

  この方法をより深く理解し、その効果をテストするために実験を行うことになりますが、客観的にテストするために、著者がテストしたCIFAR10やImagenet、VGG、ResNetなどは使用しません。ランダムにタスクを選択することにし、無線通信 AI のコンテストを終えたところです。このタスクの現在の主流の手法は、さまざまな畳み込み層を含む CRNet ですが、これを同等のマルチブランチ モジュールに置き換えて、学習中に効果が効果的に向上するかどうかを観察します。CRNet の構造は下図のとおりで、無線信号をユーザー側で圧縮・符号化し、基地局に送信した後に復号化することで、より高い復元率を追求するネットワークです。 、元の論文https://arxiv.org/abs /1910.14322を参照してください。学習済みネットワークの再パラメータ化から推論のための KxK 畳み込み層までのプロセスは厳密に数学的に導出されているため心配する必要はなく、問題はありません。多部門構造へのトレーニングプロセスが本当に効果的であるかどうかを重視しています。
ここに画像の説明を挿入

図 3. CRNet

  このネットワーク構造には、3x3 畳み込み、5x5 畳み込み、1x9、9x1、1x5、5x1 畳み込みなどが含まれています。トレーニングのために、これらの畳み込み層を DBB またはその他の同等の構造に置き換えることを試みることができます。その後、推論ステージを再構成します。パラメータを元の CRNet ネットワークに追加します。

表 1. CRNet のいくつかの層を分岐構造を持つパラメータ等価ネットワークに変換した後のトレーニング
ネットワーク構造 パラメータ量 フロップス トレーニング時間/ep 効果(回復率) ep10 ep100
CRネット 926k 711M 234秒 0.8043 0.8152
KxK -> DBB、Kx1 -> Kx1+ 1x1 2273k 1744M 590年代 0.8007 -
KxK -> DBB 2157k 1656M 480年代 0.8037 0.8173
Kx1 -> Kx1+ 1x1 926k 711M 234秒 0.7996 -

注: 競合の影響により、ここで使用する CRNet は元の論文の中間層チャネル数よりも多く、128 に達します。
  表から、等価置換後、より多くの分岐とより大きなネットワークをトレーニングすることが必ずしも良いわけではないことがわかります。この例では、Kx1 畳み込みと 1xK 畳み込みの両方を 1x1 畳み込みに接続するのは有害です。トレーニング効果は減少します。場合によっては、KxK を DBB に置き換えるなど、より大きな等価ネットワークが実際に役立ちますが、100 エポック後、その効果は元の CRNet と比較して 0.002 わずかに改善されますが、トレーニング速度は以前の 2 倍遅くなります。
  私の分析によると、CRNet ネットワーク自体がマルチブランチ構造を採用しており、KxK 畳み込みはあまり使用されていないため、この方法はあまり効果がありません。畳み込みネットワークの場合、その効果はより明らかになる可能性があります。

4. まとめ

  再パラメータ化では、KxK 畳み込み層を、パラメーターを線形に組み合わせることができるいくつかの並列分岐構造で置き換える賢い方法を使用します。これにより、トレーニング速度をある程度犠牲にしてトレーニング精度を向上させることができ、推論中にパラメーターを元の KxK 畳み込み層にマッピングし直すことができます。これにより、推論の速度を変えずに精度を向上させることができます。このアプローチは特定の構造にのみ有用であり、任意のネットワークをより小さなネットワークに再パラメータ化することはできません。この方法は、分岐構造が少なく、KxK 畳み込みが多いネットワーク、およびより規則的なネットワークに対して、より良いトレーニング効果をもたらします。より高い推論速度が必要な場合に適しており、ハードウェアが推論中に KxK 畳み込み演算をサポートしている場合に適しています。制約が多いため、この方法の実用性はまだそれほど高くないと個人的には考えていますが、この方法は非常に有益です。これは、大規模なネットワークのパラメータを小さなネットワークにマッピングして、ネットワークの推論パフォーマンスを維持できることを示しています。小さなネットワーク定数。

おすすめ

転載: blog.csdn.net/Brikie/article/details/120086924