본문 바로가기
딥러닝 with Python

[딥러닝 with Python] Self Supervised Learning(SSL) (4) : Invariance 활용

by CodeCrafter 2024. 11. 17.
반응형

 

이번에는 지난 시간에 이이서 SSL 간 Invariance를 활용하는 모델들에 대해서 알아보겠습니다.

 

오늘 알아볼 모델은 BYOL(Bootstrap Your Own Latent)와 DINO입니다.

 

1. BYOL(Bootstrap Your Own Latent)

- BYOL은 Online 네트워크와 Target 네트워크 구성되어 Contrastive Learning을 하는 방식입니다.

- 기존의 다른 Contrastive Learning과는 다르게 Negative sample이 필요하진 않습니다.

 

- 작동 방식은

 * 두 네트워크에 서로 다른 증강된 데이터를 입력하고

 * Online 네트워크의 출력과 Target 네트워크의 출력을 비교하면서 학습을 하며

 * 이때 Target 네트워크는 학습이 되지는 않고, 대신 온라인 네트워크가 학습한 가중치를 활용해 EMA(Exponential Moving Average)를 통해 업데이트 되는 방식입니다. (이를 통해 Target 네트워크의 가중치가 조금씩 업데이트 되면서 학습에 도움이 되는 것입니다. Target 네트워크가 학습되지 않게 하기 위해 sg(Stop Gradient)를 활용합니다.

 

2. DINO(Distillation whi No Labels)

- DINO는 SSL 방식을 활용할 때 Knowledge Distillation을 활용하는 방법입니다.

- 이 방법 역시 Positive samples만을 활용해서 SSL을 합니다.

 

- 구조는 위와 같으며 주요 구성요소로는

 * Knowledge Distillation (EMA 방식으로 weight가 업데이트 되는 티처 네트워크의 지식을 증류)

 * multi-crop : 다양한 Positive views를 만들기 위해 활용합니다.

 * centering and sharpening 활용

  a) centering : teacher network의 출력의 분포를 중앙 부근에 모이도록 하는 방법으로 네트워크가 일정한 출력을 제공하게 함으로써 학습이 안정되고 다양한 augmentation에서도 일관된 represnetation이 도출되도록 합니다.

 b) Sharpening : 네트워크의 출력을 더 명확하게 구분하기 위해 T(Temperature parameter)를 사용합니다. 

    T 값이 작을수록 더 출력간의 구분을 더 명확하게 해줍니다.

 

반응형

댓글