Open shimopino opened 4 years ago
以下はKornia
で定義されているSimCLRでのデータ増強
from kornia import augmentations as augs
from kornia import filters, color
class RandomApply(nn.Module):
def __init__(self, fn, p):
super().__init__()
self.fn = fn
self.p = p
def forward(self, x):
if random.random() > self.p:
return x
return self.fn(x)
DEFAULT_AUG = nn.Sequential(
RandomApply(augs.ColorJitter(0.8, 0.8, 0.8, 0.2), p=0.8),
augs.RandomGrayscale(p=0.2),
augs.RandomHorizontalFlip(),
RandomApply(filters.GaussianBlur2d((3, 3), (1.5, 1.5)), p=0.1),
augs.RandomResizedCrop((image_size, image_size)),
color.Normalize(mean=torch.tensor([0.485, 0.456, 0.406]),
std=torch.tensor([0.229, 0.224, 0.225]))
)
PILに対するデータ増強はResize
とCenterCrop
とToTensor
のみ
論文へのリンク
[arXiv:2006.07733] Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning
著者・所属機関
Jean-Bastien Grill, Florian Strub, Florent Altché, Corentin Tallec, Pierre H. Richemond, Elena Buchatskaya, Carl Doersch, Bernardo Avila Pires, Zhaohan Daniel Guo, Mohammad Gheshlaghi Azar, Bilal Piot, Koray Kavukcuoglu, Rémi Munos, Michal Valko
投稿日時(YYYY-MM-DD)
2020-06-13
1. どんなもの?
データの特徴表現を学習する、同じ構造を有するTarget NetworkとOnline Networkを用意し、TargetのパラメータをOnlineのパラメータの指数移動平均で更新することで、自己教師あり学習において負例を使用することなくSOTAの精度を達成した。
2. 先行研究と比べてどこがすごいの?
表現学習でSOTAを達成しているContrastive Learningによる手法は、同じ画像に対してデータ増強を行い、特徴空間上で同一の画像の距離を近づけ、異なる画像同士の距離は離れるように学習を行っていくものである。
この手法では、Negative Pairを抽出するための大きいバッチサイズ取り扱い方やマイニングの戦略が重要となり、また選択したデータ増強自体も性能に影響を与えてしまう。
本研究ではNegative Pairを使用することなく他のConstrastive Learningの手法を上回るBootstrap Your Own Latent (BYOL) を提案した。
3. 技術や手法の"キモ"はどこにある?
表現学習の1つに、ある画像に変換をかけた画像の特徴量が、同じ画像に異なる変換をかけた画像を識別できるような特徴量を獲得することを目的とするものがある。
しかしこの学習をそのまま実行してしまうと、異なる視点の画像に対して同一の特徴量を獲得してしまう可能性があり、そういった特徴は非常に不安定なものになってしまう。
この課題を解決する1つの手法がContrastive Learningであり、Positive PairだけでなくNegative Pairも使用することでより頑強な特徴を獲得することを目的としている。
3.1 BYOL
BYOLでも目的は下流タスクに応用できる表現yを獲得することである。全体は以下のように2つのネットワークから構成されており、それぞれ特徴抽出モジュール・特徴空間への投影モジュール・予測を行うモジュールで構成される。
このうちTarget NetworkはOnline Networkのパラメータの指数移動平均を使用して更新を行っていく。
あとは同一の画像に対して異なるデータ増強を施した画像ペアを使用して、それぞれ対象の特徴空間に画像を投影していく。それ後でTargetで計算された特徴表現を、Online側が自身の特徴表現をもとに予測を行い、互いのL2損失を計算することで学習を行っていく。
全体のアルゴリズムは以下になる。
3.2 実装
Linear(2048, 4096)
→ReLU
→Linear(4096, 256)
4. どうやって有効だと検証した?
自己教師あり学習を行った後で、得られた特徴表現を線型結合層に入力して識別を行うタスクをImageNetで実施した。BYOLは従来のモデルよりも高い精度を達成しており、教師あり学習モデルにも匹敵する精度を達成している。
次にImageNetの一部のデータのみを使用して、半教師あり学習を行った場合の精度を比較した。どの状況であっても本手法が既存手法を大きく上回る精度を達成できていることがわかる。
転移学習を行うことで、ImageNetで得られた特徴表現を他のデータセットにも適用した場合の精度を比較した。ほとんどのデータセットで既存手法を上回る精度を達成できていることがわかる。
分類タスク以外にも、物体検知やセグメンテーション、深度推定のタスクにも転移学習を行い精度を評価した。どのタスクに関しても既存手法を上回る精度を達成している。
バッチサイズやデータ増強手法に対する頑強性も検証している。本手法では従来のContrastive Learningと異なりNegative Pairを使用しないため、より少ないバッチサイズで高い精度を達成できると考えられる。
実際にSimCLRと比較するとバッチサイズの変化に対して頑強であり、またデータ増強手法に対してもSimCLRほどは精度が悪化していないことがわかる。
5. 議論はあるか?