機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

Bootstrap Your Own Latent A New Approach to Self-Supervised Learningを読んだのでメモ

はじめに

Bootstrap Your Own Latent A New Approach to Self-Supervised Learningを読んだのでメモ. とにかくcontrastive learningのnegativeとの比較というものをなくしたいという思い. ただcontrastive learningにおいてnegative examplesとの比較をなくすと全てを同じ表現にする自明な解に落ちるので新たな手法,Bootstrap Your Own Latent(BYOL)を提案.

BYOL

BYOLでは二つのモデルを用意する.一つはonline networkでこれが真に学習したいモデル. もう一つはtarget networkで,online networkの教師信号を作り出すモデル. Target networkはonline networkと同一の構造でパラメータがonline networkの指数移動平均で定義される. すなわち,online networkのパラメータを\theta,target networkのパラメータを\xiとすると,学習のステップごとにtarget networkのパラメータは次のように更新される.

\displaystyle
\xi\leftarrow \tau\xi+(1-\tau)\theta

ただし\tauは減衰係数.

それぞれのモデルは入力から特徴ベクトルを得るf_\theta,f_\xiと表現を適当な空間へ写像するg_\theta,g_\xiと,写像されたベクトルから予測を行うq_\theta,\mathrm{sg}から成る. 入力データxが与えられた時,画像のaugmentation t\sim\mathcal{T},t'\sim\mathcal{T}'をそれぞれ二種類ランダムに選び新たな画像v=t(x),v'=t'(x)を作る. それぞれをonline networkでy=f_\theta(v),z_\theta=g_\theta(y),target networkでy'=f_\xi(v'),z_\xi'=g_\xi(y')のように写像する. 得られた表現をonline networkは\bar{q}_\theta(z_\theta)=q_\theta(z_\theta)/\|q_\theta(z_\theta)\|_2,target networkは\bar{z}_\xi'=z_\xi'/\|z_\xi'\|_2とそれぞれ変換し,次の二乗誤差を最小化するようにonline modelを学習する.

\displaystyle
\mathcal{L}_\theta^{\text{BYOL}}=\|\bar{q_\theta}(z_\theta)-\bar{z}_\xi'\|_2^2=2-2\cdot\frac{\langle q_\theta(z_\theta),z'_\xi\rangle}{\|q_\theta(z_\theta)\|_2\cdot\|z_\xi'\|_2}

上記の例ではvをonline networkにv'をtarget networkに入力する形だったが,これらを入れ替え,vをtarget networkにv'をonline networkに入力して計算した二乗誤差を\tilde{\mathcal{L}}_\theta^\text{BYOL}と定義し,最終的な目的関数を\mathcal{L}_\theta^\text{BYOL}+\tilde{\mathcal{L}}_\theta^\text{BYOL}として,これを\thetaについて最小化する.

学習終了後はf_\thetaのみを保持し,任意のタスクへ利用する.

Image augmentation

BYOLで利用する画像拡張\mathcal{T},\mathcal{T}'はSimCLRと同じ候補を利用. 具体的には画像をランダムに切り抜き(224,224)にリサイズし,画像反転と,brightness, contrast, saturation, hue adjustments, optional grayscale conversionなどの色変換を行い,最後にGaussian blursolarizationをする.

Architecture

f_\thetaはResNet50の出力層手前の平均プーリング層までをベースとして,パラメータを2x~4xまで増やしたResNet101, 152, 200それぞれ実験. gはSimCLRと同様にMLPで構成され,隠れ層が4096次元で出力層が256次元.q_\thetag_\thetaと同様の構造とのこと.

Optimization

ここも他手法と同じくLARS optimizer+cosine learning rate scheduleを利用し,1000epoch学習. 学習率は0.2\times\text{BatchSize}/256で定義し,重み減衰を係数1.5\cdot10^{-6}で使用. target networkの減衰係数は\tau_\text{base}=0.996とし,\tau=1-(1-\tau_\text{base})\cdot(\cos(\pi k/K)+1)/2でスケジューリング.ただし,kは学習の繰り返し回数で,Kは最大繰り返し回数.

まとめ

教師あり学習で使われるmean teacherという感じ. SimCLRの時も少し思ったが,半教師あり学習と教師なし表現学習は手法的にはどんどん似通ってくるのかなと.