A Simple Framework for Contrastive Learning of Visual Representations


はじめに

ラベルの付いていないデータを最大限に利用して、アノテーションされたデータが少なくても、有用な特徴ベクトルを得られる自己教師あり学習の研究が盛んになっています。

本論文ではSimCLRという対照学習のフレームワークを提案しています。この手法は、他の自己教師あり学習の手法を上回っていて、転移学習を用いることで、教師あり学習と同等の精度を出しました。

目次

  1. 自己教師あり学習とは?
    1. データの水増し
    2. 特徴ベクトルを得る
  2. 対照学習のフレームワーク
    1. 損失関数
    2. ミニバッチ
  3. 性能評価
    1. 線形分類器
    2. 転移学習
  4. 最後に
  5. 参考文献

1. 自己教師あり学習とは?

自己教師あり学習は教師なし学習の一つで、ラベルなしのデータセットから有効な特徴ベクトルを得る学習です。つまり、

  • 入力:ラベルなしのデータセット
  • 出力:各データの特徴ベクトル

となる関数を手に入れることをゴールとしています。

自己教師あり学習のステップとして、

  • ラベルなしのデータセットから教師データを作り出す
  • 各データの特徴ベクトルを得る

の二つがあります。

1.1. データの水増し

データの水増し(Data Argumentation)で教師データを作ります。

一番左上の画像Aがデータセットに含まれているとき、サイズや向き、色を変化させたり、ノイズをのせることで異なる画像A1‘,A2‘を2枚作ります。

画像Aから作られた画像A’はラベルA、画像Bから同様に作成した画像B’にはラベルB、…… と続けていくと、ラベルのある教師データになります。

1.2. 特徴ベクトルを得る

画像を特徴ベクトルに変換していきます。

データの水増しをした画像をすべて特徴ベクトルに変換します。

ここで得られる特徴ベクトルは、次のような特徴を持ってほしいというのが、基本的なコンセプトです。

  • 同じ画像から生成された特徴ベクトル → 同じ特徴ベクトル
  • 異なる画像から生成された特徴ベクトル → 全く違う特徴ベクトル

元の画像が同じ特徴ベクトルのペアをポジティブペア、元のの画像が異なる特徴ベクトルのペアをネガティブペアと呼びます。

上の二つの特徴ベクトルになるように損失関数を定め、画像から特徴ベクトルに変換する関数を学習させていきます。

2. 対照学習のフレームワーク

画像$x$から二つの特徴ベクトル$z_{i}$,$z_{j}$が得られる様子を表しているのが下の図です。

$\tau$ は、データの水増しの手法の集合を表しています。つまり、異なる手法で変化を加えられた2枚の画像が得られ、それぞれ$\tilde{x_{i}}$と$\tilde{x_{j}}$になります。

$f$と$g$の関数を用いて、特徴ベクトル$z_{i}$,$z_{j}$が得られます。同じ関数$f$と$g$で画像は変換されます。

$f$はResNet50で、画像をのベクトルに変換する関数です。画像は、行列で表されます。つまり、行×列の二次元の情報です。それを一次元にするのが、$f$になります。

そして、$g$はベクトルからより有用なベクトルに変換するための関数であり、二層のニューラルネットで実装されています。

2.1 損失関数

二つの特徴ベクトルが得られると、その類似度を測っていきます。同じような特徴ベクトルというのは、類似度の高い特徴ベクトルであるということです。

この論文では、類似度をコサイン類似度を少し変形したもので測っています。

コサイン類似度は次の式で示されます。

\text{sim}(u,v) = \frac{u^{T} v}{\|u\| \|v\|}\tag{1}

コサイン類似度に蒸留などに用いられる$\ \tau\ $を加えて、

l_{(i,j)} = -\text{log} \frac{\text{exp}(\text{sim}(z_{i},z_{j})\ / \ \tau)}
{\sum_{k=1}^{2N}1_{[k\neq i]}\ \text{exp}(\text{sim}(z_{i},z_{k})\ / \ \tau)}\tag{2}
L = \frac{1}{2N}\sum_{k=1}^{2N}\ (\ l_{\ (2k-1,2k)} + l_{\ (2k,2k-1)})\tag{3}

で表します。

2.1.1 損失関数の意味

この式の意味について考えていきます。学習のフローは次のように表せます。

損失関数の意味としては、$l_{(i,j)}$の$(i,j)$には、同じ画像のペアしか入らないことが、このフローからわかります。

なので、式(2)のlog内の分母は同じ画像のペアの類似度を表し、分子はすべての画像のペアの類似度の総和を表しています。分母は$i$とのすべての画像のペアの類似度の総和を表していますが、一つの画像を残して全てネガティブペアです。

よって、分子は大きくなるように、分母は大きくなるようにしたいと考えます。このように考えると、式(2)の意味がわかると思います。

$l_{(2k-1,2k)}$と$l_{(2k,2k-1)}$を計算しているのは、式(2)内の分母が$i$とのすべての画像のペアの類似度の総和を表していることからわかります。

つまり、$2kー1$とのすべての画像のペアの類似度の総和と$2k$とのすべての画像のペアの類似度の総和の両方が損失関数としては含まれてほしいからです。

2.2.2 損失関数の候補

損失関数は、さまざまな手法が提案されていて、実験による検討がなされています。

表記は異なりますが、NT-Xentが今回の提案されている損失関数になります。さまざまな損失関数が考えられるなかで、今回のNT-Xentにしたのは実験結果によるもので、実験結果の中で一番良いものを採用したとなっています。

2.2 ミニバッチ

アルゴリズムのフローからもわかるようにデータセットに含まれる全ての画像のペアについては、今回考えていません。計算量の問題から、ミニバッチと呼ばれるまとまりの中でのアルゴリズムを考えています。

異なる画像から得られた画像から得られる特徴ベクトルはもともと類似度が低いことが多いです。なので、異なる画像から得られた特徴ベクトルであるが高い類似度を示すものがミニバッチ内に含まれるように、ミニバッチはなるべく大きくします。

上の図は、ミニバッチのサイズによる性能評価であり、4096程度まで大きくしたミニバッチが良い結果を示しています。

3. 性能評価

自己教師学習の性能評価は、それ自体を評価をすることは難しいです。よい特徴ベクトルであるかの指標はたくさん考えられます。

この論文では、二つの指標で主に有用な特徴ベクトルであるかを評価しています。

  • 線形分類機の精度
  • 半教師学習の精度
  • 転移学習の精度

今回は、線形分類機と転移学習について述べていきます。

3.1. 線形分類器

線形分類器で高精度な予測をするには、有用な特徴量を抽出していないとできないという前提から、このように評価されています。

この結果として、

が得られています。他の自己教師あり学習を上回っていることがわかります。

3.2. 転移学習

転移学習は、予めImageNetなどデータセットを用いた学習済のモデルを、今回得られた特徴ベクトルを入力として再学習させます。

転移学習のイメージとしては、あらかじめ計算資源をたくさん使って、画像識別のためのモデルを学習させておきます。それを、自己教師学習の結果得られた特徴ベクトル用にカスタマイズするという感じです。こうすることで、巨大な研究機関でしか学習させられないようなモデルを簡単に使用用途に合わせてカスタマイズできます。

この結果として、

が得られています。教師あり学習と同等程度の精度が出ていることがわかります。

4. 最後に

論文を読んだので、論文をなるべく噛み砕いて説明してみました。誤った認識もあると思うので、ご指摘があれば、コメントしていただけると幸いです。

5. 参考文献