• GAN이란?
  • GAN의 학습방법

포스팅 목적: 의학도나 방사선사들의 훈련에는 많은 영상이 필요하나, 구조적 법적 문제로 대량의 영상을 공유하기가 쉽지 않습니다. 데이터의 양이 적어 해결되지 않는 문제들을 개선하고자 공부하였고 이 내용을 포스팅합니다. 

 

reference: 

논문: Towards generative adversarial networks as a new paradigm for radiology education

참고 영상: 

tv.naver.com/v/1947034

 

1시간만에 GAN(Generative Adversarial Network) 완전 정복하기

NAVER Engineering | 발표자: 최윤제(고려대 석사과정) 발표일: 2017.5. Generative Adversarial Network(GAN)은 2014년 Ian Goodfellow에 의해 처음으로 제안되었으며, 적대적 학습을 통해 실제 데이터의 분포를 추정하

tv.naver.com

1. GAN이란?

 

GAN(Generative Adversarial Network)로 적대적 생성 모델이라고 합니다. 

 

하나씩 뜯어서 보자면, 생성모델이라는 관점에서 

머신러닝에서 만들어내는 예측 결과나, continuous variable의 interval prediction값이 아닌(가장 높은 확률 혹은 likelihood를 찾아내는 행위), 데이터의 형태를 만들어내는 모델입니다. 

데이터의 형태는 분포 혹은 분산을 의미하고 데이터의 형태를 만들어 낸다는 것은 '실제적인 형태'를 갖춘 데이터를 만든다는 뜻입니다.  

 

Ian Goodfellow 의 논문에 수록된 그림. 

 

위 그림에서 보듯이, 기존에 분포를 학습해서 데이터의 형태를 찾아나가고 이를 만들어 내는 것입니다. 

 

또한, 적대적 생성의 의미 측면에서는,

GAN의 핵심 아이디어로, 각각의 역할을 가진 두개의 모델로 진짜같은 가짜를 생성해주는 능력을 키워주는 것을 의미합니다. 

예를 들어, 위조범이 가짜 지폐를 만들어내고, 경찰은 가짜지폐를 찾아내는 역할을 합니다. 더욱 더 서로가 위조지폐를 정교하게 만들고, 만들어진 위조지폐를 정확히 찾아내는 것으로 서로 적대적으로 능력을 키워주고 있습니다. 

이런 아이디어에서부터 '적대적'이라는 용어가 붙게 되었습니다. 

 

GAN 모델을 가장 쉽게 설명할 수 있는 그림. [출처 :  https://files.slack.com/files-pri/T25783BPY-F9SHTP6F9/picture2.png?pub_secret=6821873e68]

 

2. GAN의 학습방법

 

Discriminator는 CNN판별기처럼 네트워크 구성할 수 있습니다. Disciminator로 진짜 이미지는 1, 그렇지 않은 것은 0으로 학습을 시키고, z라는 랜덤백터를 넣어 Genarative학습을 시킨 이미지가 이미 학습된 D에 들어갔을때, 오로지 진짜 이미지로 판별할 수 있도록, G를 학습시키는 것입니다. 

 

G는 random한 noise를 생성해내는 vector z를 noise input으로 받고 D가 판별해내는 real image를 output으로 하는 neural network unit을 생성합니다. 

GAN의 코어 모델은 D와 G두개이고, mnist이미지를 real image로 D한테 '진짜'임을학습시키고, 

vector z와 G에 의해 생성된 Fake Image가 가짜라고 학습을 시켜 총 두번의 학습을 거칩니다. 

이때, 따로 학습되는 것이 아니라 1번의 과정에서 real image와 fake image를 D의 x input으로 합쳐서 학습합니다. 

 

3. GAN을 이용해 영상 이미지를 만들고 AUC를 비교해보자. 

 

Real image만 사용했을때, AUC가 0.99정도 나왔고, 그 외에 GAN으로 만들어진 sample들로 학습했을때와, real과 gan을 적절히 섞어서 학습했을때 높은 AUC를 끌어낼 수 있었습니다. 

 

 

reference논문을 요약하자면, 

'데이터분석 > 딥러닝' 카테고리의 다른 글

CNN으로 개와 고양이 분류하기  (1) 2020.02.25
MNIST를 이용해 간단한 CNN만들기  (2) 2020.02.12
배치학습 vs 온라인학습  (0) 2020.02.12

+ Recent posts