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)