-
Deep Mind のたくさん
-
BYOL は普通 Bring your own licenseだが、ここではBootstrap your own latent の略
-
self-supervised。2つのネットワークを使う。onlineとtarget.
-
通常の対比学習はpositive pairとnegative pairを使うが、これはpositive pairしかつかわないと。なんでそんなことが可能なんだ。
-
とにかく性能がいいと主張。supervisedに匹敵する性能が出ている用に見える。
-
Deep RL のtarget networkにヒントを得ている?
-
targetネットワークのパラメータξはonlineネットワークのパラメータθのexponential moving averageである。これは近接点に大きな重みを置くmoving averageの一手法。重みのアップデート式はMocoと全く同じだな。
-
一つの絵に2通りのaugmentを施して上と下に食わせて、それぞれパスを通す。上のonlineパスで、下のz'を予想する。
-
Loss は下の式。上のバーはL2正規化を示す。イコールの上に⊿が乗ったのは、定義を表す。
-
上下のネットワークに入れる画像を入れ替えて2組作ってそれを最小化する。
-
最適化するのは上のパスのθだけ。ξはθを使って更新する。
motivation
3の頭に書かれている。
-
self-supervisedは、あるview から別のviewを予測する場合が多い
-
representation のレイヤでこれをやると、representationがcollaptする。つまり、常に予測可能な同じ物が出てくるようになる。
-
contrastive method はnegative sampleを入れることでこれを回避する。prediction 問題をdiscrimination 問題に置き換えている。
-
しかし、タスクが十分難しくなるには、大量のnegative sampleを使って十分近いものを探してこなければならない。
-
collapse を防ぐための簡単な方法としてランダムに初期化したネットワークで予測ターゲットを作るという方法がある。こうすると、collapseは防げるがあまり良い性能にはならない。
-
とはいえ実はそこそこ性能がでる。これにヒントを得てBYOLを考えた。
-
ターゲットネットワークは、固定ではなく非常にゆっくりと変化する。
感想
-
多分実装はなんとなく理解できたと思うのだけどなんでこれでうまくいくのかわからない。。online はtarget を予測して、targetは徐々にonlineによっていくということなのだろうけお、なんで、それでよいrepresentationがでてくる保証がある??うーん。
-
と思っていたら、こんな記事が。実はバッチノーマライゼーションが対比学習と同じような効果を導入していたのではないか、ということらしい。確かにバッチノーマライゼーションで同じバッチ内のデータの情報がリークするのか。
https://untitled-ai.github.io/understanding-self-supervised-contrastive-learning.html