아롱이 탐험대

Self-Supervised GANs via Auxiliary Rotation Loss 분석 본문

study/paper reviews

Self-Supervised GANs via Auxiliary Rotation Loss 분석

ys_cs17 2021. 7. 22. 14:39
반응형

OVERVIEW

오늘 알아볼 논문 SSGAN (Self-Supervised GANs via Auxiliary Rotation Loss) 은 2018년 11월 구글 브레인에서 나온 논문이고, self-supervised learning에서 GAN을 접목시킨 논문 중 시작점을 알린 논문이다.

 

SELF-SUPERVISION

self-supervision는 비 지도 학습 방법 중 하나로 기본적으로 이미지의 라벨링 없이 진행한다. 이미지 라벨링은 인력 소비가 매우 큰 작업으로 시간뿐 만 아니라 비용도 매우 크게 든다. (현재 그린 뉴딜 뭐시기 하면서 데이터 일자리 창출이 라벨링 하는 것이다.)

또한 self-supervision는 다양한 딥러닝 분야 중 컴퓨터 비전 분야에서 만 사용하고, self-supervision 분야 중 유명한 방법인 AUTO-ENCODER 분야를 간략히 설명하면 자기 자신 (이미지)을 label로 삼고, mean, square error 등을 기준으로 학습을 진행한다. 이 학습을 계속 반복하다 보면 latent space가 유의미한 데이터로 구성이 된다.

더 다양한 self-supervision 방법을 알고 싶으면 이전 게시글 https://ys-cs17.tistory.com/41를 참고하길 바란다.

 

해당 그림처럼 왼쪽과 같이 random crop을 진행하고, cropped 부분을 모델이 알아맞히거나, grey scale의 이미지를 rgb scale로 예측하는 것들이 self-supervision의 방법들이고, self-supervision의 목표는 본인이 가진 데이터를 활용해 좋은 representation을 추출하는 것이다.

self-supervision이 대두되고 있는 이유는 우선 image-net과 같은 새로운 데이터들을 생성하는 것은 앞서 말한 바와 같이 cost가 매우 크다. 그리고 만약 방대한 데이터들이 있다고 해도, 이 데이터들을 모두 유용하기 쓰기에는 큰 어려움들이 있다.

 

다시 요약하자면 self-supervision은 unsupervision의 한 분야로써 데이터 자체에서 정보를 얻는 학습 방법이다.

 

이 논문의 저자들은 기존 GAN이 unstable하다고 한다.

왼쪽이 기존 GAN, 오른쪽이 self-supervision을 적용한 interataion에 대한 classifiacier acc 그래프이다.

mnist data를 예시로 설명하겠다. 만약 0~9까지 총 10개의 라벨이 존재한다. classification을 10개의 라벨이 아닌 2개의 label이라고 정의했을 때 0: 0, 1~9: 1 이런 식으로 binary classification 진행한다. 그 후 1: 0, (0, 2~9): 1,... 이런 식으로 각 라벨을 바꾸어가며 binary classifiaction을 진행하였을 때의 결과이다.

오른쪽 그래프의 초록색 점선을 기준으로 봤을 때 양쪽 다 대칭적인 모습을 볼 수 있다. 이는 학습을 계속 진행할 때의 domain이 바뀌게 되어도 과거에 대한 학습 정보를 잃어버린다고 생각하면 된다. (계속 학습을 진행해도 결과는 변화하지 않음 -> 과거 학습한 걸 잊어버림)

하지만 self-supervision 학습의 결과를 보았을 때는 그래프가 점점 증가하고 있는 모습을 볼 수 있다.

 

SSGAN

SSGAN의 모델은 생각보다 간략하다. 우선 Generator는 fake image를 생성한다. 그 후 real image와 fake image는 각각 정해진 각도로 rotation을 진행한다. 그리고 나서 총 2개의 Discriminator를 만나게 되는데, 위에 해당하는 D는 단순히 해당 이미지가 real인지 fake인지 알아맞추고, 아래 D는 이미지가 얼마나 rotation 되었는지 알아맞춘다.

이 두 개의 D는 weight를 공유하는 데, 사실상 같다고 생각하면 된다.

G와 D에 해당하는 loss는 기존 GAN loss와 비슷하고, 여기에 cross entropy만 추가했다고 생각하면 된다.

 

EXPERIMENT

우선 기본적으로 backbone network는 Spectral Normalization for Generative Adversarial Networks를 사용하였다고 한다.

alpha와 beta는 각 0.2, 1로 설정하였다고 한다. 여기서 alpha는 fake image에 대한 rotation을 예측하고, beta는 real image에 대한 rotation을 예측하는 하이퍼 파라미터이다.

우선은 각 데이터에 대한 결과이다. FID를 보면 SS-GAN이 최고 성능은 아니지만 어느 정도 학습을 잘하고 있는 모습을 볼 수 있다. FID가 대략적으로 가장 좋은 method는 Cond-GAN인데 이는 labeling 되어 있는 데이터로 학습을 한 결과이기 때문에 결과가 좋은 것이다. labeling이 되어있지 않은 데이터를 가지고 학습을 진행한 SS-GAN의 FID를 보면 꽤나 잘 만든 network라는 생각을 할 수 있다.

각 하이퍼 파라미터들을 변화시켜 얻은 결과이다. Uncond-GAN의 경우 self-supervised learning을 진행할 때 값이 엄청 튀는 모습을 볼 수 있지만, 이에 반해 SS-GAN은 비교적 안정적인 결과가 나오는 모습을 볼 수 있다.

각 데이터 분류에 따른 iteration 당 FID의 모습이다. SS-GAN의 안정적인 학습 모습을 볼 수 있다.

마지막으로는 SS-GAN의 generator가 image net으로 학습을 진행하고 생성한 이미지들의 모습이다. 비교적 자연스럽고 잘 만든 것 같다

반응형
Comments