記事ディレクトリ
コード: https://github.com/google-research/simclr
出典: ICML 2020 | ヒントン氏 | Google
貢献する:
- さまざまなデータ拡張の組み合わせが重要であることを証明する
- 特徴表現とコントラスト損失の間に学習可能な非線形変換構造を導入し、大幅な改善を実現
- 大きなバッチサイズと大きなエポックのおかげで、比較学習は教師あり学習よりも優れた結果を達成できます。
効果:
- 自己教師あり対比学習を使用して ImageNet をトレーニングして特徴を抽出した後、線形分類器は 76.5% のトップ 1 Acc を取得するようにトレーニングされました。これは当時の SOTA より 7% 高く、教師ありベースライン ネットワークと同じ効果を達成しました。レスネット50
1. 背景
現在、ラベルなし視覚特徴抽出には大きく分けて生成的と識別的、つまり生成的と識別的の 2 つの異なるルートがあります。
- 生成手法は、入力空間と同じピクセルを生成する方法を学習することですが、ピクセルレベルの生成は計算集約的であり、強力な特徴表現の意味を持ちません。
- 判別法とは、2つの入力が同じデータからのものであるかどうかを目的関数を用いて判定する方法であり、通常、同じ入力に対して異なるサンプルを生成するにはプロキシタスクを使用する必要があるため、プロキシタスクをうまく使用しないと、モデルを制限する可能性があります。
判別式ベースの手法は SOTA (MOCO など) の効果を実現しているため、この記事の著者はその理由を探るためにいくつかの調査と実験を行い、次の結論を証明しました。
- プロキシ タスクでは、さまざまなデータ強化方法を組み合わせることでより優れた特徴表現を得ることができ、教師なし対比学習のデータ強化の効果は教師あり学習の効果よりも大きくなります。
- 著者は、モデルの効果を大幅に改善できる、特徴表現の対比損失計算間の学習可能な非線形変換器を導入します。
- 特徴の正規化は、対比クロスエントロピー学習方法の使用により役立ちます。
- 自己教師あり学習には、(教師あり学習と比較して)より大きなバッチサイズとより長いトレーニング時間が必要です。
著者は上記のいくつかの発見を正式に組み合わせて、単純なネットワーク フレームワーク SimCLR を構築しました。
2.方法
2.1 対照学習フレームワーク
SimCLR は、特徴空間内の同じサンプルの異なるビューの一貫性を最大化することによって学習されます。ネットワーク構造は図 2 に示されています。
-
まず、入力サンプル x が与えられると、作成者はデータ拡張を使用して、正のペアのペアである 2 つの画像を生成します。
この記事では、ランダムなトリミング→元のサイズに戻すサイズ変更→ランダムな色の歪み→ランダムなガウス ノイズという 3 つのデータ拡張を順番に使用します。それは、著者が実験を通じて、ランダムなトリミングと色の歪みを組み合わせることで最良の結果が得られることを発見したからです。
-
次に、ベース エンコーダf ( . ) f(.)を使用します。f ( . )データの特徴を抽出します。ここでのエンコーダーは ResNet です
-
次に、結果のフィーチャに対して投影ヘッドg ( . ) g(.)を使用します。g ( . )は、特徴を対照的な損失空間にマッピングします。ここで、g ( . ) g( .)g ( . )は 1 つの隠れ層を持つ MLP です。ここで、g ( . ) g( .)g ( . )は ReLU 活性化関数を使用しているため非線形です。
-
最後に、比較学習損失を使用して、最終的な特徴に対して比較予測タスクが実行されます。つまり、変換されたサンプルの束が与えられた場合、モデルは指定された xi x_i を渡すことができなければなりません。バツ私は対応する陽性サンプルxj x_jを特定しますバツj
比較学習では具体的にどのように学習しますか?
-
まず、バッチが N 個のサンプルを入力すると仮定すると、プロキシ タスクの後、2N 個の拡張サンプルを取得できます。
-
次に、f ( . ) f(.)を使用します。f ( . )およびg ( . ) g(.)g ( . )は、対応する特徴抽出を実行してzi z_iz私は和zj z_jzj
-
次に、サンプルzi z_iの対比学習損失を計算します。z私は、正のサンプルは 1 つだけですzj z_jzj、残りの 2(N-1) 個の拡張サンプルはすべて負のサンプルであるため、サンプル i に対応する損失関数は次のようになります。分母は i 自体を除外します。sim は点の乗算を意味し、τ \ tauτ は温度パラメータを表します
SimCLR の全体的なプロセス:
なぜここで 2k-1 回なのかというと、サンプルによって取得された 2 つの 8 月サンプルは現在のバッチ内のサンプルであるため、各サンプルは他のすべてのサンプルとの損失を計算し、i と j は 1 回計算され、j と i はまた、計算は 1 回であるため、各サンプルは損失を 2k-1 回計算します。次に、各サンプルが 2 回計算されるため、最後の L も 2 で除算されます。
2.2 トレーニングに使用されるバッチサイズ
対照学習は負のサンプルの数に大きく依存し、負のサンプルの数が多い場合にのみ、より多くの識別機能を学習できることがわかっています。
そこで、作成者は 256 から 8192 までのバッチ サイズを使用しました。バッチ サイズが 8192 の場合、各サンプルに対応する負のサンプルの数は 16382 (16382=2x(8192-1)) になります。
このように大きなバッチ サイズを使用し、線形学習率の変化と組み合わせて SGD/Momentum オプティマイザーを使用すると、不安定になるため、作成者は LARS オプティマイザーを使用しました。
グローバル BN: すべてのマシン上のデータが BN の平均と分散を一緒に計算します。
分散トレーニングでは、BN の平均と分散は、1 つのカード上のすべてのサンプルを計算することによって取得されます。対照学習では、同じマシン上で正のペアが得られるため、情報漏洩が発生します。すべての正のサンプルペアが対角線上にあることがモデルに漏洩されます。モデルは漏洩したローカル情報を使用することで、精度を向上させることができます。学習成果の向上。
この問題を回避するために、著者は 1 回の反復ですべてのマシンのすべてのデータを使用して平均と分散を計算します。これは MOCO でデータをシャッフルすることで解決されます。
2.3 データ拡張方法
図 4 は、さまざまなデータ強調方法を示しています。著者はまた、さまざまなデータ強調方法を組み合わせた結果、ランダムなトリミングと色の組み合わせが最良の結果を得ることができることを最終的に発見しました。
そして著者は、教師なし学習では強力な拡張がより重要であることを証明しました
2.4 モデルが大きいほど教師なし対比学習が容易になる
2.5 非線形マッピングヘッドはより良い結果をもたらすことができます
2.6 バッチサイズが大きく、トレーニング時間が長いほど、比較学習が促進されます。
2.7 評価方法
教師なしメソッドとビレッジメソッドの以前の多くの評価は ImageNet にあり、一部は cifar-10 にあります。
この記事では、著者は転移学習を使用して事前トレーニング モデルの効果を評価します。
著者が評価に使用した方法は線形プロトコルです (つまり、事前トレーニング バックボーンをフリーズし、最後に追加された分類ヘッドのみをトレーニングします)。
設定:
- ベースエンコーダ:R50
- プロジェクションヘッド (出力から 128-d フィーチャへのマッピング): 2 層 MLP
- 損失: NT-Xent、LARS を使用、学習率は 4.8、重み減衰は 10^-6
- バッチサイズ:4096
- エポック:100