생성적 적대 신경망(GANs)

GAN(Generative Adversarial Network)은 심층 신경망 아키텍처로 이루어진 신경망 종류 중 하나입니다. 비지도 방식 러닝(Unsupervised Learning)을 사용합니다.
GAN이란?
- GAN은 Generator라는 생성자 신경망과 Discriminator라는 구분자 신경망이 서로 경쟁을 하며 학습하는 신경망을 의미합니다.
- 두 신경망이 서로 의존하며 생성과 판별을 반복하면서 학습을 진행합니다.
- 'Generative Adversarial Network'의 약자로서, 아래와 같은 의미를 가집니다.
- Generation: 데이터 생성을 하는 모델이라는 것을 알 수 있습니다. 기존 데이터를 바탕으로 유사한 가짜를 만드는 것이 GAN의 목적 중 하나입니다.
- Adversarial: 적대적으로 경쟁을 하며 학습을 진행한다는 의미입니다. 적절한 예로, 위조지폐범(Generator)과 경찰(Discriminator)를 예로 들 수 있습니다. 경찰이 위조지폐를 판단하고, 위조지폐범은 경찰을 속이기 위해 점차 진짜 같은 위조지폐를 만들어내는 것에 비유할 수 있습니다.
- Network: 위의 두가지를 달성하기 위해서 인공신경망을 사용하여 만들어낸 네트워크라는 의미입니다. 위의 적대적 학습을 신경망에 접목하여 최적의 가중치를 찾아냅니다.
- 사용 예제는 아래와 같습니다.
- 이미지 생성, 합성, 얼굴 노화, 이미지 변환, 비디오 합성, 고해상도 이미지 생성, 보정등에서 사용가능 합니다.
- Generator와 Discriminator는 ANN, CNN, RNN, LSTM과 같은 모든 신경망을 사용하여 만들 수 있습니다. 각 신경망의 끝부분이 분류기로 되어있으면 됩니다.

Generator Network
- 한글로는 생성기 신경망이라고도 하는 이 신경망은, 기존 데이터를 따라서 그럴듯한 가짜 데이터를 만들어서 구분자(Discriminator)를 속이는 것이 목적입니다.
- 기존 데이터를 사용하여 신규 데이터를 생성합니다.
- 기본적으로 잠재 공간(Latent Space)이라는 랜덤 숫자 벡터를 사용하여 데이터를 생성하는 신경망입니다.
Discriminator Network
- 판별기 신경망은 진짜 데이터와 Generator Network가 생성한 데이터를 비교하여 진짜를 찾고자하는 신경망입니다.
- 새로 들어오는 데이터를 기존의 범주별로 구분하려고 합니다. 따라서, 다중 클래스 분류(Multi-Class Classification) 또는 이진 분류(Binary Classification)를 모두 수행가능합니다.
Adversarial Training
- 적대적 학습은 두 신경망이 서로 대항을 하며 경쟁을 하는 학습법입니다.
- 적대적 학습은 순서는 아래와 같습니다.
- 랜덤값으로 이루어진 잠재 공간에서 Generator가 새로운 데이터를 만듭니다.
- Discriminator는 새로운 데이터가 진짜인지를 판별합니다.
- 여러차례 반복하면서, Generator는 진짜 같은 데이터를 만들기위해 노력합니다.
- Discriminator 또한, 가짜를 가려내기 위해 기준을 조정하여 Generator에게 속지 않기 위해 노력합니다.
- 성공적인 변경 사항을 피드백하여 서로 발전을 유도합니다. (훈련과정)
- 결국, 데이터를 구별하지 못할 정도로 새로운 데이터를 생성해냅니다. (내시 균형 상태, Nash Equilibrium)