상세 컨텐츠

본문 제목

GAN (1) - 생성적 적대 신경망 소개

IT/Deep Learning

by HarimKang 2020. 9. 25. 10:52

본문

Writer: Harim Kang

생성적 적대 신경망(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

  • 적대적 학습은 두 신경망이 서로 대항을 하며 경쟁을 하는 학습법입니다.
  • 적대적 학습은 순서는 아래와 같습니다.
    1. 랜덤값으로 이루어진 잠재 공간에서 Generator가 새로운 데이터를 만듭니다.
    2. Discriminator는 새로운 데이터가 진짜인지를 판별합니다.
    3. 여러차례 반복하면서, Generator는 진짜 같은 데이터를 만들기위해 노력합니다.
    4. Discriminator 또한, 가짜를 가려내기 위해 기준을 조정하여 Generator에게 속지 않기 위해 노력합니다.
    5. 성공적인 변경 사항을 피드백하여 서로 발전을 유도합니다. (훈련과정)
    6. 결국, 데이터를 구별하지 못할 정도로 새로운 데이터를 생성해냅니다. (내시 균형 상태, Nash Equilibrium)

목적함수 관련 개념 정리

쿨백-라이블러 발산(Kullback-Leibler Divergence, KLD)

  • KLD 유도과정 (직접 필기 정리)

  • 상대 엔트로피(Relative Entropy), 정보 획득량(information gain), 인포메이션 다이버전스(information divergence)라고도 합니다.

  • 두 확률분포의 차이를 계산하는 데에 사용되는 함수로서, 두 확률분포 간의 유사도를 알아낼 수 있습니다.

  • 하나의 확률 분포 p가 또 다른 확률 분포 q와 어떻게 다른 지를 측정하는 값입니다.

  • 두 확률변수에 대한 확률분포 P, Q가 있을 때, 연속확률변수의 경우 아래와 같은 방정식을 이용하여 구할 수 있습니다.

  • KLD는 비대칭적인 특성이 있습니다. p와 q를 서로 바꾸면 값이 달라진다는 의미입니다. 그러므로, 분포 사이의 거리를 측정하는 것으로 사용은 할 수 없습니다. 즉, 거리 함수가 아닙니다.

  • 또한, Non-negative 특성을 가지고 있습니다. 항상 0이상의 값을 가집니다.

옌센-섀넌 발산(Jensen-Shannon Divergence, JSD)

  • 정보 반경(Information Radius, IRaD), 평균에 대한 총 발산(Total Divergence to the average)라고도 부릅니다.
  • KLD를 각각 p와 q의 중간점에 대해 p, q의 KLD를 구한 평균을 의미합니다.

  • 두 확률 분포 간의 유사도를 측정하는 측정 기준입니다.
  • KLD를 바탕으로 하지만, JSD는 대칭적이고 유한 한 값을 가진다는 특성을 가지고 있어서, 두 확률 분포 사이의 거리를 측정하는데에 사용가능합니다.
  • JSD에 제곱근을 취하면 Jensen-Shannon Distance가 됩니다.

내시 균형(Nash Equilibrium)

  • 내시 균형은 게임 이론에서 등장한 단어로, 경쟁자 대응에 따라 최선을 선택을 하면 서로 전략을 바꿀 필요가 없는 균형상태를 의미합니다. 이 상태에서는 전략을 바꾸어도 더 이상 이익을 얻지 못합니다.

죄수의 딜레마

내시 균형과 관련된 유명한 사례입니다.

https://ko.wikipedia.org/wiki/죄수의_딜레마

목적 함수(Objective Functions)

  • 진짜 이미지와 비슷한 이미지를 생성하는 Generator를 만드는 GAN은 생성된 데이터와 진짜 데이터의 유사도를 높이는 것이 목적입니다.
  • 목적 함수는 유사도를 측정하는 함수입니다.
  • Generator와 Discriminator 두 신경망은 자체적인 목적 함수들이 있습니다. 훈련하는 동안에 자체 목적 함수들을 최소화시킵니다.
  • GAN은 훈련이 진행되는 동안에 목적 함수들을 학습합니다.
  • 모델이 잘 훈련되었는지를 측정하기 위한 다양한 알고리즘이 존재합니다.

모델 성능 측정

인셉션 점수(Inception Score, IS)

  • GAN 성능 측정에 가장 많이 사용되는 알고리즘입니다.
  • 사전 훈련 인셉션 V3 신경망(Pretrained Network)을 사용하여 모델을 사용하여 생성한 이미지와 실제 이미지의 특징을 추출합니다.
  • 인셉션 점수는 생성된 이미지의 품질과 다양성을 측정합니다. 즉, 높을 수록 모델의 품질이 좋다는 의미입니다.
  • 제안 논문: https://arxiv.org/pdf/1801.01973.pdf

프레셰 인셉션 거리(Frechlet Inception Distance, FID)

  • 기존의 IS는 높은 정확성을 보여주지만, 다양성이 부족한 것을 잡지 못하는 경우가 발생하는 문제점이 있었습니다. 이를 보완한 것이 FID입니다.
  • 인셉션 신경망을 사용하여 중간 계층에서 특징 지도를 추출합니다.
  • 특징 지도의 분포를 학습하는 다변량 가우스 분포

TO-DO:

실습 예제 추가

Reference

관련글 더보기