GAN에 대한 정리 (1)에서는 개념과 원리 위주로 설명할 예정이다.
아직 학부생인 만큼 완전하지 못해 수정 할 부분이 있다면 댓글 바랍니다.
[GAN이란?]
Generative Adversial Network의 준말로 한국어로 하면 생성적 적대 신경망이다.
GAN은 Generator와 Discriminator가 서로 경쟁하며 이미지를 생성해내는 모델이다.
(앞으로 generator는 G로, discrimnator는 D로 표현하겠다)
GAN에 대해 설명할 때 가장 많이 나오는 예시가 위조지폐범과 경찰이다
간단히 보자면
G: 위조지폐범, D: 경찰
G가 위조지폐를 만들고 D가 그것을 찾아내는데, 이 과정에서 G는 점점 더 그럴싸한 위조지폐를 만들게 된다.
G의 목표는 D가 가짜라고(위조지폐라고) 판별 할 수 없는 위조지폐를 만들어내는 것이 목표이다.
즉, D가 판별할 수 없는 가짜 이미지를 만들어 내는 것이 G의 목표이다
[GAN의 loss fun]
GAN의 원리는 GAN의 손실함수에서도 볼 수 있다.
x: 진짜 이미지
z: 노이즈
G(z): 생성자가 노이즈 벡터를 이용해 이미지를 생성했을때의 loss값
D(x): D는 진짜 이미지면 1에 가까운 값을, 가짜 이미지면 0에 가까운 값을 출력한다.
GAN의 원리를 한 단어로 표현하자면 'minmax게임' 이다.
loss fun의 값을 G는 낮추고자 하고 D는 높이고자 하기 때문이다
D가 뛰어나다면 1-D(G(Z))의 값은 1에 가까운 값을 출력 + D(x)는 1에 가까운 값 -> 값이 커져야 D가 뛰어남을 증명
G가 뛰어나다면 1-D(G(Z))의 값은 0에 가까운 값을 출력 + D(x)는 1에 가까운 값 -> 값이 작아져야 G가 D를 잘 속이고 있음이 증명
GAN의 구조와 학습 방향
GAN의 학습은 original image의 특징 벡터의 확률밀도함수와 G가 만들어내는 이미지의 특징 벡터의 확률밀도함수의 차이가 줄어드는 방향으로 진행된다. (확률밀도함수간의 거리를 측정하는 방법을 달리하여 WGAN이 탄생하기도 하였다.)
다음은 GAN의 구조이다. 생성자는 랜덤한 잡음 z로부터 이미지를 만들어 내고, 이 이미지는 실제 이미지와 함께 판별자에게 input되어 진짜 이미지인지 가짜 이미지인지 판별된다. 이 과정에서 발생한 D의 분류오차를 D는 최소화 하는 방향으로 G는 최대화 하는 방향으로 학습이 진행된다.
이때 G가 학습할땐 D를, D를 학습할땐 G를 동결시킨다. 이 이유는 서로 정 반대의 목표를 가졌기 때문에 동시에 훈련이 진행된다면 학습이 제대로 진행되지 않기 때문이다. (G를 학습해야 하는데, 그 결과 피드백이 D에도 적용이 되면 안 되기 때문)
'GAN' 카테고리의 다른 글
SQ-AGGAN (0) | 2022.12.21 |
---|---|
GAN 코드 분석 (0) | 2022.11.16 |
GAN의 발전-DCGAN, CGAN (1) (0) | 2022.11.09 |
GAN에 대한 정리 (2) (0) | 2022.11.09 |