아카이브

[GAN] 적대적 생성 신경망(GAN) 본문

CS/ML

[GAN] 적대적 생성 신경망(GAN)

Rayi 2023. 2. 17. 14:00

 적대적 생성 신경망(Genrative Adversarial Neural network, GAN) 혹은 적대적 생성 모델은 신경망의 응용 기술 중 하나로, 주로 주어진 상황에 맞는 위조 데이터를 만들어내는 데 사용됩니다. 예를 들어 GAN은 가짜 인물사진이나 문장을 만들어낼 수 있습니다.

  GAN은 2014년 신경정보시스템처리학회에(NIPS)에서  Ian Goodfellow에 의해 처음으로 제시되었고, 이후로 여러 변형과 응용을 거치며 널리 쓰이게 되었습니다.

 

1. 개요

 GAN은 크게 Generator(생성자)Discriminator(판별자) 두 개의 모델로 이루어져 있으며, 이들이 서로 적대적으로 경쟁하면서 각자의 성능을 향상시키게 됩니다.

 - Generator : 위조값을 생성합니다. Discriminator가 이 위조값을 진짜라고 판별하게 해야 합니다.

 - Discrminator : 입력값이 위조값인지 실제값인지 판별합니다. Generator가 생성한 위조값을 올바르게 판별해야 합니다.

 

The generative model can be thought of as analogous to a team of counterfeiters, trying to produce fake currency and use it without detection, while the discriminative model is analogous to the police, trying to detect the counterfeit currency. Competition in this game drives both teams to improve their methods until the counterfeits are indistiguishable from the genuine articles. [1]

 

 Ian Goodfellow는 그의 논문에서 이를 위조지폐범과 경찰로 비유했습니다. 위조지폐범(Generator)이 위조지폐를 생산하고, 경찰(Discriminator)이 그것이 진짜인지 가짜인지 구별해야 합니다. 이 과정에서 위조지폐범은 실제 지폐과 더 유사한 지폐를 만들게 되고, 경찰은 이에 따라 더 정밀한 판별법을 사용함에 따라 위조지폐는 실제지폐와 유사해진다는 것입니다. 

 

2. 구조

 Adversarial Network는 두 모델 모두 multilayer perceptron일 때 가장 간단하게 적용할 수 있습니다.

 

 Generator는 임의로 생성되는 값인 noise vector(z)를 입력값으로 받습니다. 이를 기반으로 데이터가 생성되기 때문에 다른 noise vector값을 입력받으면 생성되는 이미지도 달라집니다. 출력값은 위조 데이터(G(z))입니다.

 

 Discriminator위조 데이터(G(z))와 실제 데이터(x) 두 가지를 모두 입력값으로 받습니다. 실제 데이터는 참으로, 위조 데이터는 거짓으로 구별해야 해서 두 가지 정보가 모두 필요하기 때문입니다. 출력값은 0에서 1사이의 scalar값으로, 0일 때는 거짓, 1일 때는 참을 의미합니다.

 

3. 최적화

 Ian Goodfellow의 논문에서는 loss function으로 위 수식을 제시합니다.

(x~p(x)는 실제값의 분포를, z~p(z)는 noise vector의 분포를 나타냅니다)

GAN은 여기서 V(D, G)의 값을 최소로 만드는 G 최고로 만드는 D의 적절한 모델을 학습해야 합니다.

 

 V(D, G)가 최소가 되려면 D(x)의 값이 낮으며 D(G(z))의 값이 높아야 하고, 이는 Generator가 생성한 값이 Discriminator에서 1에 가까운 값으로 판별되었다는 뜻입니다. 따라서 Generator의 학습이 잘 되었다고 볼 수 있습니다.

 

 V(D, G)가 최대가 되려면 D(x)의 값이 높으며 D(G(z))의 값이 낮아야 하고, 이는 Generator가 생성한 값이 Discriminator에서 0에 가까운 값으로 판별되었다는 뜻입니다. 따라서 Discriminator의 학습이 잘 되었다고 볼 수 있습니다.

 

단, 실제 학습과정에서는 D와 G를 동시에 학습시키지 않고, 어느 하나를 고정한 후 나머지 하나를 따로 갱신합니다.

 

References

[1] Ian J. Goodfellow, Jean Pouget-Abadie∗ , Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair , Aaron Courville, Yoshua Bengio (2014). "Generative Adversarial Nets"

728x90

'CS > ML' 카테고리의 다른 글

[GAN] Style 적대적 생성 신경망 (StyleGAN)  (0) 2023.04.28
[GAN] 조건적 적대 생성 신경망 (CGAN)  (0) 2023.02.17
Comments