운동하는 공대생
GAN(Generative Adversarial Networks)(2/3) 본문
Structure of the GAN

위의 사진처럼 2가지의 주요 한 구성 요소로 이루어져 있다. 생성자, 판별자 두 가지 구조를 가지고 있으며 2가지의 네트워크를 활용하여 이미지를 생성하는 이론이다.
-Generator(생성자)
생성자는 노이즈 값을 받아서 새로운 인스턴스를 생성하는 역할을 한다.
-Discriminator(판별자)
판별자는 실제 이미지를 가지고 얼마나 생성자의 이미지와 일치하는지를 확률값으로 반환을 해준다.(Real:1 ~ Fake:0)
Formula of GAN

대략적인 식은 이렇게 표시가 된다. 이제 식 하나하나 어떤 의미를 가지고 있는지를 이야기를 해보겠다.

먼저 공식의 전체적인 의미를 가지고있는 부분이 이 부분이다. 천천히 해석을 해보자면 G(생성자)의 값은 최소가 돼야 하고 D(판별자)의 값을 최대로 되는 확률 분산을 구하는 식이 GAN이론의 공식이다. G가 최소가 된다 라는 말은 생성자가 생성하는 이미지의 분산 값 즉 원래 실제 이미지 데이터의 평균 분포에서 분산이 많이 차이가 나지 않게 해야 한다는 이야기이다.
그리고 D값이 최대가 되야 한다는 말은 이전에 설명을 했듯이 생성자는 1을 진짜로 0을 가짜로 생성자가 생성한 데이터를 실제 데이터와 비교를 하여 확률 값으로 나타낸다.
즉 이런 D값이 최대가 된다는 이야기는 실제 데이터와 유사하다는 이야기 이다. 그래서 G 생성자의 값을 최소로 D 판별자의 값은 최대로 되는 분산을 말하는 것이다.

이제 공식에서 왼쪽 부분 부터 해석을 해보자면 E는 값을 평균값을 이야기하고 x~p(x) 함수에서 Pdata가 의미하는 건 원본 데이터에서 한 개의 데이터를 꺼내고 그 값의 확률분포를 나타낸다.
logD(x)에서는 D의 값에 로그로 치환을 한다. 이런 전체적인 값의 평균을 이야기 하는것이다.
이것을 한 번에 정리를 하자면 원본 데이터에서 한 개의 데이터를 추출하고 그 데이터의 Discriminator의 값을 구하고 그 값을 평균을 이야기하는 것이다.
여기서 D(x)는 추출한 원본 데이터를 가지고 얼마나 진짜인지를 나타내는 확률 값을 반환하며 이는 식에서 진짜인지를 판별하는 기준이 됨으로 식에서는 상수의 역할을 한다.

이 부분에서는 확률변수 z 값이 무엇인가부터 이야기를 해보자면 z~Pz(z)는 노이즈의 화률분포이다. 랜덤 하게 한 개를 생성하여 변수로 사용하고 이제 이 값을 [] 안의 식을 적용시킨다.
이제 확률분포 z값에서 G(z) 함수를 적용시키면 생성자에서 노이즈를 가지고 새로운 인스턴스를 생성하여 분포 값을 반환하고 D() 함수로 이것이 진짜 데이터와 차이가 얼마나 나는지를 확률로 반환을 시킨다 이렇게 1에서 이 결괏값을 빼주면 실제 데이터와 얼마나 차이 나는지에 대한 평균값을 최종적으로 이 식에서 구해지게 된다.
이제 모든 공식을 해석을 했다면 처음 부분으로 돌아가 식이 의미하는 게 무엇인가 보면
G min=> 생성자에서 생성하는 데이터는 원래 데이터에서 생성하는 분포와의 차이를 최소로 하여 실제 데이터와 비슷하게 만들어 줘야 한다.
D max => 판별자는 0이 가짜 1을 진짜라고 판별을 함으로 값을 최대로 하여 진짜 값 1로 생성 데이터가 판별이 되도록 해야 한다.

이제 사진을 다시 보면 식이 조금 더 이해가 될 것이다.
여기서 GAN 방식을 사용하여 모델을 학습하면 이런 과정을 통해서 학습이 진행이 된다. 여기서 주의하게 볼 부분은 'Fine Tune Training' 부분이다. 생성 데이터가 실제 데이터와 얼마나 차이(Loss 값)가 나는지를 판별한 이후에 그 차이를 모델에 적용하는지를 표시를 해주었다.
먼저 Generator에서 Loss 값은 이 오차값을 빼준다. 이는 실제 데이터의 분포 값과의 차이를 빼줌으로써 실제 데이터의 분포에 근접하게 만들어주는 역할을 하여 식에서 말하는 생성자 함수의 값을 최소화하는 작업니다.
그리고 Discriminator 에는 Loss 값을 오차값을 더해준다. 이는 판별자가 판별을 하면 1을 진짜 0을 가짜로 판별을 하기 때문에 값을 더해줘서 식에서 말하는 D(x) 함수의 최댓값에 근접하게 만들어준다.
'Deep Learning' 카테고리의 다른 글
[Deep Learning] 다층 퍼셉트론 이론과 역전파 (0) | 2022.12.15 |
---|---|
Deep Learning(딥러닝) (0) | 2022.11.17 |
GAN(Generative Adversarial Networks)(3/3) (0) | 2022.10.21 |
GAN(Generative Adversarial Networks)(1/3) (0) | 2022.10.18 |
Softmax fuction (0) | 2022.10.06 |