본문 바로가기

Data Science/ML & DL

GAN 개념 | 진짜와 구별이 안되는 Generator 모델

1) GAN - 이미지 생성모델 개념

: GAN 모델은 Generator와 Discriminator를 경쟁적으로 학습시킴 (두 모델 다 성능 향상)
 -> 진짜와 구별이 안되는 Generator 모델 만듦

 

2) DCGan 실습

원래 GAN은 fullyconnected layer를 이용해 이미지생성 -> 이미지에는 convolution layer를 사용하는 것이 더 좋음 : DCGan


GAN( Generative Adversarial Network 생성적 적대 신경망 )

 

 
  • 실제 사진과 동일한 수준의 이미지 생성
  • Image to Image(Style Transfer) :다른 도메인의 이미지로 변환
  • 추천 ITEM 생성 : 패션 카테고리의 추천시스템 - 의상을 분석해 주어진 스타일에 어울리는 새로운 아이템 생성
  • 데이터셋 증강 : 의료 연구 - 데이터셋 증가
 

 

모델 개념 이해하기

- GAN : 이미지 생성모델  -  입력 데이터와 데이터 분포가 비슷하게 생성하는 것

실제 이미지의 분포와 모델 생성이미지의 분포

 

Generative (생성적)

: 가짜모델을 생성

32 X 32 X 3 크기의 사진 이용 -  총 변수가 3072개로 그 조합에 따라 다양한 형태
ex. 얼굴이미지를 생성 - 사람 얼굴처럼 보이는 픽셀값들의 조합의 분포를 찾아냄
 
 

 

Adversairal (적대적)

:  두개의 모델을 적대적으로 경쟁-> 두 모델 성능 향상
=> GAN 모델은 Generator와 Discriminator를 경쟁적으로 학습시킴 (두 모델 다 발전)
-> 진짜와 구별이 안되는 Generator 모델 만듦

예) 위조지폐범/ 판별 경찰간의 관계
    - 위조 지폐범 위조 기술을 발전시키고 / 경찰은 위조지폐를 찾기위해 위폐를 식별하는 기술을 발전 -> 서로 발전
 
 

 

생성자와 판별자 입출력 상호작용
 
Generator (생성자) - 가짜 이미지를 생성하는 모델

목표: 훈련 플과 구별이 불가능한 가짜 샘플만들기.
 
입력: 랜덤한 숫자로 구성된 벡터(잡음). Latent Vector 
출력: 가짜 샘플



 
Discriminator (판별자) 가짜 이미지를 판별하는 모델

목표: 생성자가 만든 가짜 샘플과 훈련 데이터셋의 진짜 샘플을 구별하기.
 
입력
1. 훈련데이터셋에 있는 진짜 샘플.
2. Generator가 생성한 가짜 샘플.
출력: 입력 샘플이 진짜일 예측 확률.
 
 
 
 

Train (훈련과정) 이해하기

 

Train을 통해  좋은 성능을 내는 Generator 모델을 학습시킴

 
Discriminator 훈련
    - 진짜 샘플과 Generator가 생성한 가짜 샘플을 잘 분류하도록 학습
    - 일반 classification 문제와 동일
 
Generator 훈련
    - Generator와 Discriminator로 구성된 GAN 모델을 학습시킨다.
    -  Discriminator는 Forzen시키고  Generator의 파라미터들만 업데이트 되도록 한다.
    1. 가짜 샘플 생성
    2. 가짜 샘플의 label을 진짜로 Discriminator가 판별하게 함
        - Discriminator Fake 이미지를 진짜로 판별하면 성공 ->  loss 작아짐
        - Discriminator가 Fake 이미지를 가짜로 판별하면 실패 -> loss 커짐
    3. Loss에 대한 파라미터의 gradient를 계산하여 Generator의 파라미터들을 업데이트
 
Discriminator 훈련 -Generator 훈련 반복
 
 
 
판별자를 학습을 시켜놓고 생성자를 학습시키면 모두 가짜라고함. 
그러면 조금씩 학습을 같이 성능을 올려나가야함