自己教師あり学習モデル DINO

302 Views

December 26, 24

スライド概要

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

2024年度後期輪読会 #11 2024/12/26 DINO 京都大学 理学部 数理科学専攻 B3 宮本 真弥 0

2.

アジェンダ ◼ DINOの概要 ◼ 自己教師あり表現学習 ◼ 自己蒸留 ◼ DINOのアーキテクチャ ◼ 実験結果 1

3.

アジェンダ ◼ DINOの概要 ◼ 自己教師あり表現学習 ◼ 自己蒸留 ◼ DINOのアーキテクチャ ◼ 実験結果 2

4.

DINOの概要 自己教師あり表現学習による画像分類 ・自己蒸留を用いて教師モデルと生徒モデルを学習 ・学習後k-meansなどで分類するだけで教師あり学習モデルに匹敵する精度 を達成 画像引用:https://oumpy.github.io/blog/2021/05/dino.html 3

5.

アジェンダ ◼ DINOの概要 ◼ 自己教師あり表現学習 ◼ 自己蒸留 ◼ DINOのアーキテクチャ ◼ 実験結果 4

6.

自己教師あり表現学習 ラベルを用いることなく自ら教師を作成し、有用な表現を獲得する学習方法 例:SimCLR(対照学習) クリッピングや色ゆがみによってデータを拡張し、同じ画像から生成された画像は近く、 異なる画像から生成された画像からは遠い表現が生成されるように学習する。 𝑥 ⊤𝑦 𝑠𝑖𝑚 𝑥, 𝑦 = 𝑥 ∙ 𝑦 𝑠𝑖𝑚 𝑧𝑖 , 𝑧𝑗 exp 𝜏 𝑙 𝑖, 𝑗 = − log 𝑠𝑖𝑚 𝑧𝑖 , 𝑧𝑘 σ2𝑁 𝟏 exp 𝑘=1 𝒌≠𝒊 𝜏 𝑁 1 𝑳= ෍ 𝑙 2𝑘 − 1,2𝑘 + 𝑙 2𝑘 + 1,2𝑘 2𝑁 𝑘=1 画像引用:https://amitness.com/posts/simclr 5

7.

自己教師あり表現学習 BYOL:非対称な二つのニューラルネットを使って表現生成 ・𝜃は重み, 𝜉は𝜃の移動平均で更新される重み 𝜉 ← 𝜏𝜉 + (1 − 𝜏)𝜃 ・𝑓𝜃 , 𝑓𝜉 はResNet, 𝑔𝜃 , 𝑔𝜉 , 𝑞𝜃 は3層のMLP, onlineモデルがtargetモデルの出力を予測 ・損失関数は平均二乗誤差 ・𝜃は誤差逆伝播で更新するが、𝜉は誤差逆伝播で更新しない。例えば移動平均ではな く誤差逆伝播でのみ更新すると表現学習がうまくいかないことが知られている。 画像引用:https://arxiv.org/pdf/2006.07733 6

8.

アジェンダ ◼ DINOの概要 ◼ 自己教師あり表現学習 ◼ 自己蒸留 ◼ DINOのアーキテクチャ ◼ 実験結果 7

9.

自己蒸留 蒸留とは訓練済みのモデルの出力に近い出力を出すように小さいモデルを訓練すること ・教師モデルと出力分布を近づけるようにモデルの出力間で損失関数をさだめる ・普通の正解ラベルとの間にも損失関数を定める ※ほかにもさまざまな方法がある 効果 ・一定の精度を保ちつつサイズ の小さいモデルをつくれる ・強い正則化効果がある。つま り過学習しにくい ・膨大なデータであってもしっ かり学習可能 画像引用:https://codecrafthouse.jp/p/2018/01/knowledge-distillation/ 8

10.

自己蒸留 自己蒸留は同じモデル内で教師モデルと生徒モデルを作る ・提案論文ではResNetの浅い層を生徒モデル、深い層を教師モデルとして教師モ デルの出力を生徒モデルに学習させ、最終的に浅い層のみを残して推論する。 画像引用:https://arxiv.org/pdf/1905.08094 9

11.

アジェンダ ◼ DINOの概要 ◼ 自己教師あり表現学習 ◼ 自己蒸留 ◼ DINOのアーキテクチャ ◼ 実験結果 10

12.

DINOのアーキテクチャ ・画像をAugmentationして入力 ・生徒モデルと教師モデルは同じモデル を用いる(ViT,ResNetなど) ・教師モデルの出力に近づけるように生 徒モデルを学習(蒸留) ・損失関数はクロスエントロピー関数 ・生徒モデルの重み𝜃𝑠 は誤差逆伝播で更 新し、教師モデルは生徒モデルの重み𝜃𝑡 は生徒モデルの重み𝜃𝑠 との指数移動平均 で更新(自己蒸留) ・sharpning,centeringによりモデル崩 壊を防ぐ 画像引用:https://arxiv.org/pdf/2104.14294 11

13.

DINOのアーキテクチャ Cropや解像度変更によりglobal画像2枚、local画像を複数枚作って入力 ・Global画像は解像度224×224、サイズが元画像の50%以上のもので、生徒モデ ルと教師モデルに1枚ずつ入力 ・local画像は解像度96×96、サイズが元画像の50%未満のもので、生徒モデルに のみ入力される。 𝑔 𝑔 𝑔 𝑔 𝑥1 , 𝑥2 をglobal画像、𝑥𝑖𝑙 をlocal画像、𝑉 = 𝑥1 , 𝑥2 , 𝑥𝑖𝑙 𝑖=1,2,3… とすると モデルの最適化問題は min 𝜃𝑠 ෍ 𝐻 𝑃𝑡 𝑥 , 𝑃𝑠 𝑥 ′ ෍ 𝑔 𝑔 𝑥∈{𝑥1 ,𝑥2 } 𝑥 ′ ∈𝑉 𝑥 ′ ≠𝑥 𝑃𝑠 , 𝑃𝑡 : 生徒モデルと教師モデルの出力, 𝐻 𝑃𝑡 , 𝑃𝑠 = −𝑃𝑡 log 𝑃𝑠 12

14.

DINOのアーキテクチャ 生徒モデルの重みは誤差逆伝播、教師モデルの重みは指数移動平均(EMA)で更新 𝜃𝑡 ← 𝜆𝜃𝑡 + 1 − 𝜆 𝜃𝑠 𝜆は0.996~1の間でコサインスケジュールにより訓練中に変化させる 指数移動平均により更新するのは学習を安定させるため。DINOはBYOLからイン スピレーションをうけているからそのまま採用している。 ※𝜆がそんなに大きいなら意味ないんじゃって思ったかもしれません。実際に指数 移動平均をせず、完全に教師モデルの重みを固定するモデルの研究があります。 実際に精度がいいのでコアな部分なのは勾配停止であると考えられます。 詳細は以下 https://openaccess.thecvf.com/content/CVPR2021/papers/Chen_Exploring _Simple_Siamese_Representation_Learning_CVPR_2021_paper.pdf https://openaccess.thecvf.com/content/CVPR2021/papers/Chen_Exploring_Simple_Siamese_Representation_Learning_CVPR_2021_paper.pdf https://openaccess.thecvf.com/content/CVPR2021/papers/Chen_Exploring_Simple_Siamese_Representation_Learning_CVPR_2021_paper.pdf 13

15.

DINOのアーキテクチャ Sharpneing,Centeringによりモデル崩壊を防ぐ Sharpening・・・出力の一様分布化を避けるために softmax関数を改良 𝑔𝜃 𝑥 𝑖 exp 𝜏 (𝑖) 𝑃 𝑥 = 𝑔𝜃 𝑥 𝑘 𝐾 σ𝑘=1 exp 𝜏 ここで𝜏は1より小さい値 Centering・・・教師モデルの出力にバイアスcを加 えることで出力の分布を平均に近づける操作。出力 が1つだけ高い値をとり続けることを防ぐため。𝑐は ゼロベクトルで初期化され、𝑔𝜃𝑡 の出力の指数移動平 均で更新される。 𝐵 1 𝑐 ← 𝑚𝑐 + (1 − 𝑚) ෍ 𝑔𝜃𝑡 (𝑥𝑖 ) 𝐵 ↑効果のイメージ図 𝑖=1 画像引用:https://oumpy.github.io/blog/2021/05/dino.html 14

16.

アジェンダ ◼ DINOの概要 ◼ 自己教師あり表現学習 ◼ 自己蒸留 ◼ DINOのアーキテクチャ ◼ 実験結果 15

17.

実験結果 従来の自己教師あり表現学習モデルと比べると精度が大きく向上(ImageNetのtop-1 accuracy) 画像引用:https://arxiv.org/pdf/2104.14294 16

18.

実験結果 従来の自己教師あり表現学習モデルと比べると精度が大きく向上 画像引用:https://arxiv.org/pdf/2104.14294 17

19.

実験結果 学習後の埋め込みがいい感じに種類ごとにクラスター化されている 画像引用:https://oumpy.github.io/blog/2021/05/dino.html 18

20.

実験結果 ViTのself-attention mapをみるとセグメンテーションのように注目できている 画像引用:https://arxiv.org/pdf/2104.14294 19

21.

実験結果 様々な要素の組み合わせを実験 画像引用:https://arxiv.org/pdf/2104.14294 20