機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

A Simple Framework for Contrastive Learning of Visual Representationsを読んだのでメモ

はじめに

A Simple Framework for Contrastive Learning of Visual Representationsを読んだのでメモ.

Method

手法としては近年の半教師あり学習のconsistency regularizationと似た発想. 従来のcontrastive lossではポジティブペアの片割れとしていわゆる’辞書’を利用していたが,提案するSimCLRではあるサンプルに対して異なるdata augmentationを加えた2つのサンプルをポジティブペアとして扱う.

N個のサンプルからなるミニバッチに対し,各サンプルに異なる2種類の確率的な変換t\sim\mathcal{T},t^\prime\sim\mathcal{T}を施し,ポジティブペアx_i,x_jを作る. 全部で2N個のサンプルを得たら,次のcontrastive lossを計算.

\displaystyle
l_{i,j}=-\log\frac{\exp(\mathrm{sim}(\mathbf{z}_i,\mathbf{z}_j)/\tau)}{\sum_{k=1}^{2N}\mathbb{1}_{[k\neq i]}\exp(\mathrm{sim}(\mathbf{z}_i,\mathbf{z}_k)/\tau)}

ただし,\mathbf{z}はモデルの出力,\tauは温度パラメータ,\mathrm{sim}(\cdot,\cdot)はコサイン類似度. この損失を双方向,すなわちl_{i,j}l_{j,i}を計算し,この二つの損失の和を最小化する様に学習する. 詳細はAlgorithm 1

学習の工夫

アルゴリズム自体は単純だが,学習のための様々な工夫がされている. 従来の研究からバッチサイズは大きい方が良いことが知られているため,ここでは256から8192までのバッチサイズを評価した. 一方で,バッチサイズ8192では16382ものネガティブサンプルができ,この様な巨大なバッチサイズでは学習が不安定になることも知られている. そこでSimCLRではバッチサイズに関わらず,large batch用の最適化手法であるLARS optimizerを使い,TPUで学習したとのこと.

また,分散学習をする際,BatchNormの統計量がデバイスごとに計算されてしまい情報が一部落ちる. ちょっとした工夫として,ポジティブペアは同じデバイス上で計算される様にし,移動平均・分散は各デバイスで計算された統計量をaggregateして(どの様なaggregateかは不明)計算する.

表現学習を行う際のいわゆるclassifier部分(global average pooling後の変換)は線形化非線形,もしくは何も使わないのが良いかについても調査した. 結果としてはnon-linearな変換はっきりと良かった.

Data Augmentation

従来,特にImageNetでは画像サイズがサンプルごとに異なるため,当たり前の様にcrop&resizeが行われてきた. ここではcrop&resizeの使用という固定観念が他のdata augmentation影響の調査を難しくしているとし,data augmentationの様々な組み合わせによる精度評価を行なった(Fig. 5). 結果としてはcropとcolor distortionの組み合わせが良かったとのこと. 仮説としてcrop単体では色ヒストグラムが似ていてネガポジの分類の問題としては簡単になりすぎてしまうためとしている. 特にcontrastive lossにおいてはcolor distortionが強力でAutoAugmentより良い(Tab. 1).

まとめ

data augmentationを使ってconsistencyを測るの強力すぎないか,といのと,contrastive loss関連の学習もそろそろ常人には手の出しにくい計算コストになってきたという印象. Table 7を見ると半教師あり学習の出る幕も無くなってきてしまったのか.