Generative Adversarial Network (적대적 심층 신경망)
Generative : "그럴듯한 가짜"를 만드는 생성 모델
Adversarial : 두 개의 모델을 적대적으로 경쟁시키며 발전함을 의미
Network : 인공신경망(Artificial Neural Network)으로 만들어짐
딥러닝 모델 중 이미지 생성에 많이 쓰이는 모델.
실제로는 존재하지 않지만 있을 법한 데이터를 만들어 내는 모델을 의미.
(ref : https://github.com/ndb796/Deep-Learning-Paper-Review-and-Practice/blob/master/lecture_notes/GAN.pdf)
생성 모델은 실존하지 않지만 있을 법한 데이터(이미지, 문장, 오디오, ...등) 을 생성할 수 있는 모델
분류모델과 생성모델
분류모델 (Discrimenative)
: 특정한 dicision boundary를 학습하는 형태생성모델 (Generative)
: 각 Class에 대해 적절한 분포를 학습하는 형태여러 변수에 대해 joint 된 확률 분포의 형태로 통계적인 모델로 표현할 수 있음
새로운 데이터 인스턴스를 만들 수 있는 아키텍처
생성 모델의 목표
: 이미지 데이터의 분포를 근사하는 모델 G를 만드는 것
(ref : https://dreamgonfly.github.io/blog/gan-explained/)
이 GAN 모델을 위조지폐범과 판별자에 빗대어 많이 설명을 한다.
위조 지폐범은 판별자를 속이기 위해 위조지폐 제조 기술을 발전시키고,
판별자는 이 범인을 잡기 위해 판별 기술을 발전시킨다.
상호 협력이 아니고 서로 적대적(Adversarial)으로 노력하다보면 결과적으로 같이 발전한다.
결과적으로는 모순, 1/2 상태로 도달하게 된다고 한다.
GAN 은 생성자(generator)와 판별자(discriminator) 두 개의 네트워크를 활용한 생성 모델임.
Pdata
)에서 한 개의 데이터(x
)를 sampling 한 뒤,Pz(z)
) 한 뒤 생성자(G)에 넣어 가짜 이미지를 만들고,
- 판별자(D)는 원본 데이터에 대해서는 1을 출력할 수 있도록 학습을 하고(왼쪽 식), 가짜 이미지에 대해서는 0을 출력할 수 있도록(오른쪽 식) 함
- 생성자(G)는 왼쪽 식은 원본 데이터가 없어 상수로 취급되고, 오른 쪽 식을 minimize 하기 때문에 자신이 만든 가짜 instance를 진짜(1)로 출력할 수 있도록 학습을 진행
https://dreamgonfly.github.io/blog/gan-explained/
https://ysbsb.github.io/gan/2020/06/17/GAN-newbie-guide.html
https://www.youtube.com/watch?v=AVvlDmhHgC4
https://www.youtube.com/watch?v=N9ewzLUZhL8
Generative Adversarial Nets 논문 : https://proceedings.neurips.cc/paper/2014/file/5ca3e9b122f61f8f06494c97b1afccf3-Paper.pdf