본문 바로가기
Study/Deep learning

[Deep Learning] GAN - Generative Adversarial Network (201029)

by 후이 (hui) 2020. 10. 30.
728x90
반응형

 

 

# Gan 의 개념 

 

위조 지폐 만드는 도둑놈 , 경찰의 비유를 많이 하는데, 

여기서 위조지폐 만드는 놈은 Generator 

경찰은 Descriminator 

 

Generator의 목적은 Descriminator가 구분 못하도록 실제 이미지와 유사한 이미지를 만드는 거고 

Descriminator의 목적은 실제 이미지와 가짜 이미지를 구분해 내는 것 

이 학습 알고리즘의 목표는 Discriminator 가 진짜 가짜를 아예 구분짓지 못하도록 만드는 후륭한 Generator만들기 !

 

 

 

Generator 는 latent space 를 기반으로 Fake image 를 만들어냄, 

Discriminator 는 0~1사이의 값으로 Fake 여부 판별 

가령 1번 Fake image를 진짜 0.2, 가짜 0.8 확률로 판단했다면 해당 값이 다시 Generator반영됨 

Generator는 이 진짜의 확률을 높이기 위해 다시 Latent space 조정하여서 2번 Fake image 만듬 

2번 Fake image 진짜 0.3, 가짜 0.7 

 

==> 이렇게 연쇄적인 과정을 거치며 Generator, Discriminator의 성능을 동시에 향상시킴 

최종적으로 Generator, discriminator 의 데이터를 구분짓지 못하고 

둘다 0.5 의 확률로 반환하는 것이 학습의 최종 목표

 

minmax problem : minimize generator error / maximize discriminator probability 

 

결국 모델은 총 2개 

Discriminator : 실제 이미지 1을 반환하고, 랜덤 값 섞은 데이터는 0을 반환하게 함

Generator : 랜덤 값 섞은 데이터가 1로 예측 되도록 조정

               ** 근데 이때당시에는 Discriminator 학습 안되고 Generator 값만 학습됨 

 

근데 이렇게 위조 지폐 잘만드는 애를 만들었다가 어디다가 쓸꺼임? 용도가 뭐임? 

핵심은 G 뒤에 있는 latent space 다. 

## GAN 의 응용버전 모델들 (FYI)

 

1) DCGAN - 오래되었지만 꾸준히 쓰이는 모델 

Discriminator 는 CNN, Generator 는 DNN

latent vector 로 산술적인 연산도 가능함

   예를 들어 안경낀남자 (z벡터) - 남자 (z벡터) + 여자 (z벡터) = 안경낀 여자 (z벡터)

     

Q.  GAN 의 활용 

참고 링크 

ratsgo.github.io/generative%20model/2018/01/30/genmodels/

 

generative model 응용 사례 · ratsgo's blog

이번 글에서는 Generative model, 특히 Generative Adversarial Network(GAN)의 다양한 응용 연구들에 대해 살펴보도록 하겠습니다. 이 글은 전인수 서울대 박사과정이 2017년 12월에 진행한 패스트캠퍼스 강의와

ratsgo.github.io

1) SR (super resolution) 해상도 높이기 - EnhanceNet

Generator 인풋으로 들어가는게 여기서는 가짜 지폐가 아니라, 저해상도의 이미지 

Discriminator 인풋으로 들어가는건 고해상도 이미지 

핵심은 Generation이 Discriminator를 속이고 고해상도 이미지를 생성하도록 하는 것. 

 

 

여기서 Ihr 이 정답 (고해상도 이미지) 

ILR 이 Generator에 입력되는 가짜 (저해상도 이미지)

ILR 인풋, Ihr 아웃풋으로 놓고 하습을 시켜 --> MSE 는 Iest

 

 

2) Data augmentation  - SimGAN 

여기서 Refinder 가 Generator 역할을 하게됨. 

Refinder는 인공 데이터를 받아서, 실제 데이터로 변환하는 역할을 함 

이때 R 이 그저 D 를 속이는데에만 집중을 하면 안된다,

우리의 목적은 D를 속이는 걸 떠나서 인공 데이터가 실제 데이터와 유사한 아웃풋으로 나오게끔 하는게 목적이니까  

        (경찰을 뒷돈줘서 속이는게 목표가 아니라, 아주아주 진짜같은 가짜 위조지폐를 만드는게 목표니까 ! )

 

따라서, R의 loss function 에 정규화 항을 추가하는 것임, 

인공데이터와 실제 데이터의 오차가 줄어들고 그 간극도 너무 크지 않게 됨. 

 

 

3) Domain adversarial (image)

Pix2Pix - image to image translation GAN (이미지 간의 도메인 변환) 

 

CycleGAN  - pix2pix 의 문제점은 학습 데이터의 input- output

   즉 가짜 위조지폐 예시와 진짜 위조지폐 예시가 Pair 로 필요햇음

   이 문제를 해결하기 위해 그냥 상이한 도메인 데이터 만으로 학습이 가능하게끔 함  

   두개의 생성자 G, F  두개의 판별자 Dx, Dy 

 

 

4) Anomarly detection with GAN

 

다시 복습해보면, Gan 의 목표는 D가 진짜 가짜를 구분짓지 못하도록, 후륭한 G 위조지폐범을 만드는거다.

학습이 잘된 Gan 알고리즘에서 D 는 멍청이 처럼 진짜 가짜를 구분짓지못한다.

그렇다면 우리는 진짜 가짜를 구분짓는 특징? 을 어디서 찾을 수 있을까 

바로 latent space 다 (진짜 가짜를 구분짓는 노하우를 보유하고 있게됨) 

 

따라서 Gan 을 이상탐지에 활용하고자 한다면  latent space 를 역추적하고, 어떤 영역이 가짜지폐 (이상치) 인지 파악하면 됨. 

leedakyeong.tistory.com/entry/%EB%85%BC%EB%AC%B8ANOMALY-DETECTION-WITH-GENERATIVE-ADVERSARIAL-NETWORKSADGAN

 

[논문] ADGAN 리뷰 : ANOMALY DETECTION WITH GENERATIVE ADVERSARIAL NETWORKS

ANOMALY DETECTION WITH GENERATIVE ADVERSARIAL NETWORK(ADGAN) ICLR 2018 논문 링크 : https://openreview.net/forum?id=S1EfylZ0Z Abstract low-dimensional problems에서는 좋은 anomaly detection 방법들이..

leedakyeong.tistory.com

 

 

 

728x90
반응형

댓글