[CVPR2020読み会@オンライン(前編)]Momentum Contrast for Unsupervised Visual Representation Learning

A93b83622f2c6556b4a85db37b1c5489?s=47 pshiko
July 04, 2020

[CVPR2020読み会@オンライン(前編)]Momentum Contrast for Unsupervised Visual Representation Learning

第三回 全日本コンピュータビジョン勉強会
CVPR2020読み会@オンライン(前編)

Momentum Contrast for Unsupervised Visual Representation Learning

A93b83622f2c6556b4a85db37b1c5489?s=128

pshiko

July 04, 2020
Tweet

Transcript

  1. @p_shiko https://twitter.com/p_shiko Momentum Contrast for Unsupervised Visual Representation Learning (とCPCとSimCLR)

    第三回 全日本コンピュータビジョン勉強会 CVPR2020読み会@オンライン(前編)
  2. 紹介論文 Paper: https://arxiv.org/abs/1911.05722 Code:https://github.com/facebookresearch/moco Comparison with previous methods on object

    detection fine-tuned on PASCAL VOC Instance Discriminationする際のNegativeSampleの取得方法を効率化して精度あげたヨ!
  3. Self-Supervised Image Classificationの精度向上の変遷 https://paperswithcode.com/sota/self-supervised-image-classification-on Self-Supervised Image Classificationの精度向上のスピードが凄い MoCoはココ

  4. Self-supervisedの各手法 RotationやJigsawなどの識別系タスクは下火 http://hirokatsukataoka.net/temp/cvp aper.challenge/SSL_0929_final.pdf

  5. 今日話すところ

  6. 話したいこと 系列情報の相互情報最大化 ・CPC/CPC V2 Instance Discrimination × Contrastive Learning ・MoCo/MoCoV2

    ・SimCLR/SimCLRv2 https://arxiv.org/abs/1905.09272 https://arxiv.org/abs/1807.03748
  7. CPC/CPCv2のポジション CPC CPC v2 MoCo MoCo v2 SimCLR SimCLRv2

  8. CPC(1/6): CPCの基本的なアイディア Word2VecのContext Aggregationは averageとる以外の方法が効果的では? 入力と同じ次元の情報を推論するようなタスクは過度に 難しく表現の学習に役立っていないのでは? self-supervisedタスクとして入力情報の一部から入力情報の一部を予測するようなタスクはそれなりに 有効そうだゾ NLPの例:

    Word2Vec CVの例: ContextEncoder
  9. CPC(2/6): CPCの基本的なidea • コンテキストのAggregationにはRNN系のエンコーダー • タスクはコンテキストベクトルとそれに紐づく PositiveSampleの表現ベクトルとの相 互情報量最大化 (実際にはPositive SampleとNegative

    Sampleの分類問題を解く(NCE)で相互情報 量最大化となる 論文のAppendix: A参照 ) Context推論にはRNN系のエンコーダ 入力次元での比較ではなく、 潜在表現上での比較 入力が系列情報であれば使えるUniversalなself-supervised手法 コンテキスト コンテキスト
  10. CPC(3/6): CPCのImageへの適用 画像に対してもPixelCNNの構造を利用して系列予 測タスクに落とし込める CPC V2 論文ではその他 Audio, Natural Language,

    Reiforcement Learningへの適用も紹介
  11. CPC(4/6): CPC -> CPC v2 特に画像向けに最適化した CPCとして、 各種Updateを追加 • ModelCapacity

    ◦ ResNet-101->ResNet161 • Bottom-Up Spatial Prediction ◦ 上パッチで予測→上下パッチで予測 • LayerNomalization ◦ Batch Normalization->Layer Normalization • RandomColorDropping ◦ AugmentationとしてColorDropping追加 • Horizontal Spatial Prediction ◦ 上下パッチで予測→上下左右で予測 • Larger Patches ◦ パッチ数を64*64 -> 80*80 • Further Patch Based Augmentation ◦ パッチごとに強いAugmentation
  12. • 100%ラベルを利用した場合においてすら、 supervised(ResNet-200)よりも CPC v2の方が精度が高い • Transfer learningにおいてもSupervised(ImageNet Pretrained)よりも高い精度 CPC(5/6):

    CPCのResult Efficient Classification Transfer Learning (ImageNet->PascalVOC 2007) もはやSupervisedのPretrainedモデルを超える時代
  13. • CPCは系列情報から得たコンテキスト情報との相互情報最大化を行う • CPCのアーキテクチャは系列情報からunseenな情報を予測するタスクに落とし込 めるものであれば、ドメインに関わらず利用できるself-supervised手法 • CPCをimageに適用した場合, 従来の識別系のpretext-taskを超える精度を確認 • CPCv2は,

    transfer-learningにてsupervised pretrainedの精度を超えた CPC(6/6): CPCのまとめ
  14. 話したいこと 系列情報の相互情報最大化 ・CPC/CPC V2 Instance Discrimination × Contrastive Learning ・MoCo/MoCoV2

    ・SimCLR/SimCLRv2
  15. CPC CPC v2 MoCo MoCo v2 SimCLR SimCLRv2

  16. other image Instance Discrimination [1805.01978] Unsupervised Feature Learning via Non-Parametric

    Instance-level Discrimination クラス分類ではなく, 同じ画像かどうかを分類する学習 (Instance Discrimination)によって 識別に役立つ特徴量が学習できるという提案 MoCoが改良をしたのは ココ Positive: 入力と同じ画像をAugmentした画像 Negative: 入力と異なる画像を Augmentした画像 とした際の分類問題を解く (NCE) MoCoやSimCLRなどの手法でも利用されるベースの手法 Augmen tation Pos Neg Neg input CVPR2018 犬 犬 ゴ リ ラ
  17. MoCo(1/7): MoCoが解決したい課題 Instance Discriminationのタスクを Key-Queryのタスクであると解釈 Pos(同一画像をAugしたもの)と Neg(他画像)のembeddingが入ったDict Query画像のEmbedding Query Key

    大きな違いはKeyの更新タイミング end-to-end memory-bank Keyの更新 1バッチ毎 Nバッチ毎 QueryとKeyの Encoder 異なるEncoderが 使える 1種類の Encoder End-to-End方式  + 最新のEncoderでKeyを生成できる  ー 計算コストが高くKey数を大きくできない Memory bank方式  + 計算コストが低くKey数を大きくできない  ー 常に古いEncoderで生成されたKeyで学習 Keyの鮮度と確保可能なKey数のトレードオフを解決する必要がある
  18. • Key数を大きくするため、 queue形式を採用 ◦ 古いKeyを削除しながら, 大きなKey数を保てる • 学習の安定のために KeyのEncoderに Momentum

    Encoderを採用 Query Encoderとの自身の加重平均によりパラメータを 更新することで, 急激なパラメータ変化を抑えつつ学習を進 められる ◦ なぜmomentum encoder? ▪ KとQのencoderをそれぞれ学習するのは計算コストが高 い ▪ KとQのencoderを共通化すると, 毎更新毎にparameterが 大きく変化 →Keyのembeddingが安定しなく学習に悪影響を確認 MoCo(2/7): 提案手法 momentum encoderのパラメータ query encoderのパラメータ momentum encoderのパラメータ更新 mには0.999など非常に大きな値を利用
  19. MoCo(3/7): 提案手法 • 実装 ◦ EncoderにはResNet (GAPのあと), 入力は224×224pixel ◦ Augmentation

    ▪ resize, color-jittering, flip, grayscale conversion, ◦ Shuffling Batch Normlization ▪ 分散学習時にBNの統計量が各ノードごとに計算されるのを利用して, ノードに割り当てられるSubsetが QueryとKeyでかぶらないようにすることで統計量からのリークを防ぐ ◦ ImageNet-1M: 8GPUsで53時間 Instagram-1B: 64GPUsで6日 • データセット ◦ ImageNet-1M (IN-1M) ▪ 1.28million images, 1000classes (所謂ImageNet-1K) ◦ Instagram-1B (IG-1B) ▪ 1billion images ▪ Instagramからの抽出なので, ImageNet-1Mよりlong-tailed, unbalanced
  20. • Transfer Learning 別タスクのbackboneに使えるような良い特徴が得られるネットワークを学習できているかを確認 1. 各種手法でSelf-supervised Learning 2. 上記で学習したモデルを backboneとしてObject

    DetectionモデルやSegmentationモデルに組み込 みFineTuneを行い精度確認 (Transfer Learning時には, epoch数及びdown stream taskのhyper parameterは比較対象のsupervisedと 揃える) • Linear Classification 線形識別器のみで分類ができるような良い特徴が得られているかを確認 1. 各種手法でSelf-supervised Learningしパラメータを固定 2. 上記で学習したモデルから得られる featureを入力として学習する線形識別器でどれだけ分 類精度がでるかを評価 MoCo(4/7): 提案手法
  21. MoCo(5/7): 評価(LinearClassification) vs other contrastive learning method 各ContrastiveLearningの手法でpretrainingしたfeatureを, 線形識別機で分類した場合の精度比較 (ImageNet)

    Key のサイズ • Keyサイズ大→精度向上の傾向 • memory-bankはKeyサイズを大きくできている が精度が低い • end-to-endは精度高いがkeyサイズを大きくで きていない • MoCoは同じKeyサイズのend-to-endと同等性 能かつ、Keyサイズを大きくすることができる • 識別器の学習にはlearning rate 30程度が良 かった →supervisedでpretrainしたモデルと大分こと なるembeddingが得られていそう
  22. MoCo(6/7): 評価(LinearClassification) vs other self-supervised method 各種self-supervisedの手法でpretrainingしたfeatureを, 線形識別機で分類した場合の精度比較 (ImageNet) ネットワークアーキテクチャの違いはあれど提案手法はトップクラスの精度

  23. Transfer Learning (Imagenet -> PascalVOC Object Detection) • Imagenetを使ったPretrainedモデルで, supervisedの精度を超える

    • IG-1Bなどラベルなしの大規模データセットを使うことも精度向上に効果があることを確認
  24. None
  25. SimCLR (A Simple Framework for Contrastive Learning of Visual Representations)

    • MoCoの論文で言うところの , end-to-endでqueryとkeyの encoderが共通のパターン (MoCoでは否定されていたパターン ) • 大きな違いはencoderの後にMLPを挟む. ◦ MLPの後のrepresentationでcontrastive learning ◦ 実際にdown stream taskで利用するのはMLPの前 • その他有効なAugmentationの調査なども行っている (color jitterは特に有効) 学習にはここを使う 他のタスクで利用 するのはここ シンプルな変更により, MoCo, CPCv2などを超える!
  26. MoCov2 MoCo にSimCLRで効果が確認できた手法を追加 Momentum encoderの汎用的であり, SimCLRの手法を取り込むことでSimCLR超えが可能 NegSampleもbatchサイズ依存 Negはqueueから 来るので batch

    sizeに 非依存 SimCLRより小さい バッチサイズで 精度向上 もはやsupervised は色が薄くなってる
  27. SimCLRv2 (SOTA) https://github.com/google-research/simclr • 主な変更点 ◦ より深いモデルの利用 (ResNet-152 (3X)) ◦

    Projection HeaderのMLPを2から3 layerに変更 ◦ 利用するRepresentationをMLPの1 layer目の後に変更 ◦ Momentum Encoderを利用
  28. • データドメインに依存する識別系の手法 (Rotationとか)を超える • 各手法の共通点は相互情報量最大化を NCEで解いている • linear classificationではimagenetのsupervised pretrainedモデルを超える

    まとめ MoCo, SimCLRのv2はお互いの手法を取り入れ差分が少ない タスク メインの貢献 CPC 系列情報のコンテキストと先の入 力の相互情報最大化 汎用的な教師なし学習のスキームの提案 MoCo Instance Discrimination 効率的なNegativeSample手法の提案 SimCLR Instance Discrimination 効果的なアーキテクチャと Augmentationの組み 合わせの提案 実用的にも大規模ラベルなしデータで学習したモデルを利用するのがスタンダードになるかもしれない !!