Mathilde Caron, Ishan Misra, Julien Mairal, Priya Goyal, Piotr Bojanowski, Armand Joulin
- https://arxiv.org/pdf/2006.09882.pdf
- facebook AI とInriaのチーム
概要
- SwAV という手法を提案 - 教師なし学習の一種
- Swapping Assignments between multiple Views of the same image の略
- pairwise の比較を用いないContrastive learning
- 同じ絵の異なるaugmentationがクラスタになるようにする
- 大規模データでもうまくうごく
- メモリバンクやモメンタムエンコーダを使わない
- 関係ないけどmulti-cropというaugmentation手法も提案、複数の解像度の画像を使う
手法
-
latent $z_t$ と $z_s$ から code $q_t$と$q_s$を作る。$q_t$と$q_s$ をクラスタのプロトタイプ{$c_1$ .. $c_k$}とマッチさせる。
-
ロスは下記。つまり、$z_t$から$q_s$を予測、$z_s$から$q_t$を予測する。
$L(z_t, z_s) = l(z_t, q_s)+l(z_s, q_t)$
ここで$l(z, q)$ は下のように定義される。
$p_t^{(k)}$ は個々のクラスタプロトタイプと$z$の内積のsoftmaxになっている。
コードのクラスタリング
zからqをつくるところで、クラスタプロトタイプにマッチさせるのだが、そのときに、偏りがないようにすべてのクラスタタイプにバッチ内のデータを均等に割り当てる。こうすることで、collaptがおきないようにしている。
所感
まったくよくわかっていないのだけど、方向性としてはBOYLとよく似ている。BYOLがモメンタムエンコーダを使うことで、Collaptを防ごうとしているのに対して、こちらはクラスタ割当に制約を与えることで回避している、ということなのだろうか。
構造は簡単だが、クラスタリングのところでかなり凝ったことをしているようだ。計算量が見当つかないが、GPUで高速に計算できる、と書いてあるので問題ないのか。