2. ⾃⼰教師あり学習(self-supervised learning)とは
n ⾃⼰教師あり学習とは教師あり学習のアプローチをつかった教師なし学習
n 教師なし学習と⾃⼰教師あり学習の違い
n 教師なし学習:
n 重要な性質を残しつつデータを圧縮する
n 例: クラスタリング,次元削減など
n ⾃⼰教師あり学習:
n データ⾃体から教師ラベルを作り出し,(下流タスクが解けるような)良い表現を学習する
n 例: denoising AE, impaintingなど
n ⾃⼰教師あり学習には⼤まかに3つのカテゴリがある
n 再構成系
n 補助タスク系
n contrastive learning系
n 最近流⾏りなのでこれを中⼼に(代表的な?)論⽂をいくつか紹介する
※⾃分の解釈や誤りを含むかもしれません
3. ⾃⼰教師あり学習には⼤まかに3つのカテゴリがある
n 再構成系
n Extracting and Composing Robust Features with Denoising Autoencoders (ICML 2008)
n Context Encoders: Feature Learning by Inpainting (CVPR 2016)
n Split-Brain Autoencoders: Unsupervised Learning by Cross-Channel Prediction (CVPR 2017)
n 補助タスク系
n Unsupervised Visual Representation Learning by Context Prediction (ICCV 2015)
n Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles (ECCV 2016)
n Unsupervised Representation Learning by Predicting Image Rotations (ICLR 2018)
n contrastive learning系
n Distributed Representations of Words and Phrases and their Compositionality (NIPS 2013)
n Representation Learning with Contrastive Predictive Coding (arxiv 2018)
n Data-Efficient Image Recognition with Contrastive Predictive Coding (ICLR2020 rejected)
n Momentum Contrast for Unsupervised Visual Representation Learning (CVPR 2020)
n A Simple Framework for Contrastive Learning of Visual Representations (arxiv 2020/02)
n Improved Baselines with Momentum Contrastive Learning (arxiv 2020/03)
n Prototypical Contrastive Learning of Unsupervised Representations (arxiv 2020/05)
4. 再構成系
n Extracting and Composing Robust Features with Denoising Autoencoders (ICML 2008)
n 元画像にノイズを加えてそれを復元するように学習することで良い表現を得る⼿法
n Context Encoders: Feature Learning by Inpainting (CVPR 2016)
n impainting タスクを解くことで良い表現を得る⼿法
n 得られた表現はAEによる表現よりも分類や物体検出タスクなどに有効であることを⽰した
n Split-Brain Autoencoders: Unsupervised Learning by Cross-Channel Prediction (CVPR 2017)
n 2つのdisjointな部分NNを使い,データを分割して予測タスクを解くことで表現を学習する
n 例えば半分のNNはRGBからdepthを推定し,もう半分はdepthからRGBを推定する
5. 補助タスク系
n Unsupervised Visual Representation Learning by Context Prediction (ICCV 2015)
n パッチの位置を予測する補助タスクを解くことで表現を得る
n ちなみにパッチは少し間をあける(境界線で予測されるのを防ぐ)
6. 補助タスク系
n Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles (ECCV 2016)
n ジグゾーパズルを解くことで表現を学習する
n 9!通りの分類は多すぎるので,サンプリングして約100クラス分類をとく
7. 補助タスク系
n Unsupervised Representation Learning by Predicting Image Rotations (ICLR 2018)
n 画像が何度回転したかを当てることで表現を学習する
n ⾓度の種類は0, 90, 180, 270の四種類で⼗分で,多すぎても少なすぎても良い表現が得られない
9. Noise Contrastive Estimation (NCE) とは︖
n Notes on Noise Contrastive Estimation and Negative Sampling (arxiv) を参考に解説する
n ある⽂脈cが与えられたとき,単語wである確率のモデルを考える
n 経験分布!𝑝(𝑤|𝑐)を考えて,クロスエントロピー誤差の観点からこれを上記のモデルに近づけ
ることを考える
n Vが⾮常に⼤きくなる場合,単純なクロスエントロピーで学習すると計算時間が膨⼤になる
n Vは例えばボキャブラリー数
n これを解決する⽅法がNCE
10. Noise Contrastive Estimation (NCE) とは︖
n NCEのアイデア: ある⽂脈cが与えられたとき,本物のサンプルwであるかそうでないかの⼆値
分類として考え,モデルのパラメタを推定する
n ここでノイズ分布(本物のサンプルではない分布)として𝑞 𝑤 を考えるが,これは通常⼀様分布とする
n 本物のサンプルであればD = 1,ノイズ分布からのサンプルであれば D = 0とする
n ノイズ分布からのサンプル数はkとすると,次の同時分布が考えられる
n 条件付き確率の定義から,次式
ちなみにdは誤植で
Dだと思われる
11. Noise Contrastive Estimation (NCE) とは︖
n 実際に求めたいのはモデル分布𝑝!なので,
経験分布を𝑝!(𝑤|𝑐)に置き換える
n そのまま置き換えるだけだと, 𝑍!(𝑐)が残る
n NCEでは𝑍!(𝑐)を定数として1にしてしまう(!?)
n そうすると,右の式は次の式になる
n 最終的に上の⼆値分類を解くために
対数尤度最⼤化を考えると,⽬的関数は下式
12. Noise Contrastive Estimation (NCE) とは︖
n 期待値をMC近似すると実際によく使われる式になる
n negative samplingの関係性
n ノイズ分布𝑞 𝑤 =
"
#
とすると下式になる
n 上記⽬的関数はword2vecにおける⽬的関数の式に⼀致していることをみていく
13. Distributed Representations of Words and Phrases and their Compositionality (NIPS 2013)
n word2vecの論⽂
n Skip-gramモデルを利⽤するとき,⽬的関数は下式
n 周りの単語を予測できるような表現を得たいという考えに基づく
n 条件付き確率は次のようにモデル化する
n しかし,⽬的関数の勾配を計算するとき,Wが⼤きすぎて計算量が膨⼤になってしまう
n Wはボキャブラリー数(10$
~)
n vは埋め込みベクトルで学習したい表現
Skip-gram
14. Distributed Representations of Words and Phrases and their Compositionality (NIPS 2013)
n そこで,対照推定(negative sampling)を⾏う
n negative sample数kは5~20くらいで良いらしい
n → 計算量がめちゃくちゃ減る
n positive(関連する単語)かnegative(それ以外)の⼆値分類をするというイメージ
n 先程導いた式 (下)において,𝑢! 𝑤, 𝑐 = exp(𝑣%
&
'
𝑣%(
)であることを考えると確かに⽬的関数と⼀致する
関係ない単語をk個
サンプリング
関連する単語
である確率
関連しない単語
である確率
⽬的関数 =
15. Representation Learning with Contrastive Predictive Coding (arxiv 2018)
n ⾳声や画像にも対照推定を⽤いた論⽂
n この辺から対照推定が流⾏りだした
n word2vecでは,周りの単語を予測できるような表現を学習していた
n CPCは⾳声データの場合,⽂脈cの情報からkステップ先を予測できるような表現を学習する
⾳声データ
word2vecでいう
埋め込みベクトル
⾃⼰回帰モデル(GRU)
を使って得たcontext情報
16. Representation Learning with Contrastive Predictive Coding (arxiv 2018)
n 画像データの場合,contextの情報からk個先のエンコードされたパッチを予測できるような
表現を学習する
画像のpatchをresnetなどで
エンコードする
⾃⼰回帰モデルであるpixelCNNを使い,
エンコードされたパッチの⽂脈cを得る
得られた⽂脈から数段下の
エンコードされたパッチを予測する
17. Representation Learning with Contrastive Predictive Coding (arxiv 2018)
n 次の𝑓を定義すると,⽬的関数は𝐿"のようになる
n この⽬的関数はpositive sample (PS)の確率の対数尤度になっている
n NCEに基づいたロスで,InfoNCEと呼ぶ
n NCEと⽐較するとnegative sample (NS)の確率の対数尤度項があるはずだがない...
n 理由は⽂脈cとPSと相互情報量を⼤きくしたいという⽬的から⽣まれたから
n ⽬的関数は相互情報量の下限となっている
n N-1はNSの数なので,NSが多いほどタイトなバウンドになることがわかる
n つまりNSは多ければ多いほどよい
18. Representation Learning with Contrastive Predictive Coding (arxiv 2018)
n ⾳声データ分類に関しては教師あり学習
と同等の精度がでている︕
n CPCで得られた特徴量の上に線形層を加
えて学習したときの結果
n どのステップ先を予測するか,なにをNS
にするのかが重要
19. Representation Learning with Contrastive Predictive Coding (arxiv 2018)
n 画像データ分類も補助タスク系の⼿法と⽐べて精度めっちゃ上がっている
n データはImageNet
n CPCで得られた特徴量の上に線形層を加えて学習したときの結果
20. Data-Efficient Image Recognition with Contrastive Predictive Coding (arxiv 2020)
n CPCに様々な⼯夫をして精度をめちゃくちゃ上げたversion2の論⽂
n 下図はどのように特徴を使って実験をしたのかがわかりやすくまとまっている
21. Data-Efficient Image Recognition with Contrastive Predictive Coding (arxiv 2020)
n CPCv1 → CPCv2の軌跡
n BU: bottom up spatial predictions
n HF: randomly flipping patches horizontally
n LN: layer normalization
n RC: random color-dropping
n TL: tuned prediction lengths
n HP: horizontal spatial predictions
n patchをエンコードするモデルは
ResNet-92からResNet-161に
22. Data-Efficient Image Recognition with Contrastive Predictive Coding (arxiv 2020)
n ImageNetにおいて特徴量に線形層を加えて学習したときの結果
AMDIMには負けてるっぽいが...?(AMDIMはDeep InfoMaxの拡張論⽂)
23. Data-Efficient Image Recognition with Contrastive Predictive Coding (arxiv 2020)
n 普通の教師あり学習はラベルが少ないと⼤きく精度を落とす
n CPCを使った学習の場合はラベルデータが1%でも精度が⾼い
24. A Simple Framework for Contrastive Learning of Visual Representations (arxiv 2020/02)
n CPCではpatchレベルで対照推定を⾏っていた
n ここからはインスタンスレベルで対照推定を⾏う論⽂の紹介
n オーグメンテーションした画像(PS)は近づけて,他の画像(NS)は離すように学習する
これまでは予測できる表現は良い表現であるという話だった
ここからは分類できると良い表現が⼿に⼊るという補助タスク系に近い話な気がする
25. A Simple Framework for Contrastive Learning of Visual Representations (arxiv 2020/02)
n 訓練時はzを使って対照推定し,推論時はzとgを捨ててしまってhを下流タスクに利⽤する
オーグメント
Resnetなどの
エンコーダ
下流タスクで
利⽤する表現
対照推定で
利⽤する特徴
⼆層のMLP
26. A Simple Framework for Contrastive Learning of Visual Representations (arxiv 2020/02)
n t-SNEによるhとzの可視化
n zよりもhのほうがもつれが少ない表現が獲得されている
27. A Simple Framework for Contrastive Learning of Visual Representations (arxiv 2020/02)
n オーグメンテーションは⼤事(特にcropとcolor distort)
28. A Simple Framework for Contrastive Learning of Visual Representations (arxiv 2020/02)
n ロスはword2vecで使われていたNT-Logistic (NCE) よりもCPCで使われているNT-Xent
(InfoNCE) のほうが良い
n Margin Tripletは距離学習のためによく使われるロス
n NTはNormalized Temperature-scaledの意味
n 温度調整,L2正規化はかなり重要
29. A Simple Framework for Contrastive Learning of Visual Representations (arxiv 2020/02)
n negative sample数は多いほどよいのでバッチサイズの⼤きさは重要になる
n 結果からみるに2000~4000くらいあるとよい(メモリ... 😥)
30. A Simple Framework for Contrastive Learning of Visual Representations (arxiv 2020/02)
n アルゴリズムは簡単なので実装⾃体は楽そう
ここは少しわかりにくいが
⼊⼒とPSに対称性があるので
ひっくり返しているだけ
31. A Simple Framework for Contrastive Learning of Visual Representations (arxiv 2020/02)
n ついにパラメタを増やせば
教師ありに並ぶ
n ※ 他の⼿法と同様に得られた
表現の上に線形層をのせて教
師あり学習はしている
32. A Simple Framework for Contrastive Learning of Visual Representations (arxiv 2020/02)
n 教師ありもパラメタ増やせば精度
があがる
n ただし教師なし(SimCLR)のほうが
より精度があがる
33. Momentum Contrast for Unsupervised Visual Representation Learning (CVPR 2020)
n SimCLRと学習⽅法はほぼ同じだが,queryに対して
普通にencoderを⽤いる⼀⽅でkeyに対しては
momentum encoderを⽤いる
n encoderのパラメータをモメンタムを使って更新する
n query: ⼊⼒
n key: ⼊⼒と⽐較する対象
n positive sampleもしくはnegative sample
n ⽬的関数はCPCと同じでinfoNCE
n ただしqとkはL2正規化されている
n τは温度パラメタ(τ = 0.07)
34. Momentum Contrast for Unsupervised Visual Representation Learning (CVPR 2020)
n negative sample数(key数)を⼤きくするとバッチサイズが⼤きくなりメモリ効率が悪くなる
n 例えば(a)のように,同じエンコーダを使うと⼤量のkeyから伝播される勾配計算が⼤変
n かといって(b)のように予めkeyを作っておくと,古いkeyを使うことになってしまう
n (c)のようにモメンタムによるエンコーダの更新を⾏うことで,勾配計算することなく新しいkeyの
エンコードが可能になり,key数をめちゃくちゃ増やせる
35. Momentum Contrast for Unsupervised Visual Representation Learning (CVPR 2020)
n pytorch likeなわかりやすいアルゴリズム
で⾮常に簡単に実装できそう
keyは同じデータからオーグメンテーション
により⽣成しているため,positive sample
queueに過去のkey(negative sample)が
K (4000~) 個⼊っている
keyを通すencoderは更新を⾏わない
今回のkeyは新しくqueueに加えられる
(他のデータにとってはNSになるため)
36. Momentum Contrast for Unsupervised Visual Representation Learning (CVPR 2020)
n key数(K)がめちゃくちゃ増やせるので精度がバク上がりする
n end-to-endはKが⼤きくなるとメモリ的に厳しいので途中で打ち切っている
37. Momentum Contrast for Unsupervised Visual Representation Learning (CVPR 2020)
n 実はSimCLRの前の論⽂なのでそれよりは精度が低い
n 最近MoCo version2がでた
38. Improved Baselines with Momentum Contrastive Learning (arxiv 2020/03)
n MoCo version2: 条件をそろえたらSimCLRに勝つと主張した論⽂
MoCo v1との違い
SimCLRとの⽐較
39. Prototypical Contrastive Learning of Unsupervised Representations (arxiv 2020/05)
n これまでのinstance-wise contrastive learningはクラスが同じでも別のサンプルであれば
negative sampleとして遠ざけるように埋め込む問題がある
n Prototypical contrastive learningはクラスが同じであればpositive sampleとして近づけるよう
に埋め込むようにする
n Prototypeは潜在変数上でk-meansを利⽤して教師なしで学習する
41. Prototypical Contrastive Learning of Unsupervised Representations (arxiv 2020/05)
n E-step: パラメータθを固定したときに下限を最⼤化するのは,Qが事後分布のとき
n M-step: Qを固定したとき,定数項 を無視すると,次の式を
最⼤化するθを求める
実際にはk-meansを⾏うので
クラスターに属していたら1を返し
属していなければ0を返す
42. Prototypical Contrastive Learning of Unsupervised Representations (arxiv 2020/05)
n 同時分布はクラスタの確率を事前分布とおくと次式
n cが与えられたときの分布は等⽅なガウシアンを仮定する
n ここで である
n vとcにL2正規化を⾏うと, となり,これまでの式から下式が導かれる
クラス版のInfoNCEみたいな式がでてきた!
43. Prototypical Contrastive Learning of Unsupervised Representations (arxiv 2020/05)
n 最終的にはInfoNCEのロスも追加して下の式がProtoNCEのロス関数になる
n ちなみにφは次のように計算する
n Zは同じクラスターに属するvの数
45. Prototypical Contrastive Learning of Unsupervised Representations (arxiv 2020/05)
n 階層的な意味構造も捉えている
n 粗いクラスターからは⾺の画像がサンプルされ,細かいクラスターからは⼈+⾺の画像がサンプル
される