# 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/
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 를 역추적하고, 어떤 영역이 가짜지폐 (이상치) 인지 파악하면 됨.
'Study > Deep learning' 카테고리의 다른 글
[Deep Learning] [Pytorch] Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! 에러 (0) | 2022.03.06 |
---|---|
[Deep Learning] Few shot Learning, Meta learning 개념 총정리 (1) | 2022.02.08 |
[Deep Learning] RNN, LSTM, GRU 차이점 (순환 신경망 모델들) (0) | 2022.01.28 |
[Deep Learning] 음성 인식 모델의 발전 과정 (0) | 2020.11.01 |
[Deep Learning] CNN의 stride, channel, feature map (0) | 2020.10.15 |
댓글