GAN (Generative Adversarial Network)
< 참고자료 >
https://www.samsungsds.com/kr/insights/generative-adversarial-network-ai-2.html
https://www.youtube.com/watch?v=AVvlDmhHgC4&t=1486s
GAN은 실제와 비슷한 가짜 데이터를 생성하여 서로 다른 2개의 모델을적대적으로 학습시키는 방식으로 두 네트워크 간의 경쟁을 통해 성능을 향상시키는 비지도 학습 방법이다.
GAN에 대해 이해하기 위한 대표적인 예시로는 위조 지폐범과 경찰의 예시가 있다. 위조 지폐범과 경찰을 각각의 모델이라고 인식하고, 위조 지폐범은 최대한 진짜와 비슷한 지폐를 만들려 노력하고, 경찰은 최대한 진짜와 가짜를 구분할 수 있도록 노력한다. 이 과정은 위조지폐가 진짜 지폐와 구분이 잘 되지 않을 때까지, 즉 진짜와 가짜를 구분할 확률이 0.5와 최대한 가까울 때까지 반복된다. 위 예시에서 위조 지폐범은 생성 모델, 경찰은 분류 모델로 볼 수 있으며 서로 적대적인 학습을 통해 성능을 올리려는 것이다.
적대적 학습 과정은 분류 모델을 먼저 학습시킨 후 생성 모델을 학습시키는 순서를 따르며, 분류 모델을 학습 시킬 때에는 우선 진짜 데이터를 가지고 해당 모델이 데이터를 진짜로 분류하도록 학습시키는 과정을 거친 후 생성 모델에서 생성한 가짜 데이터를 가지고 가짜로 분류하도록 학습하는 과정을 거친다. 다음 생성 모델을 학습시킬 때에는 학습된 분류 모델을 속이기 위하여 생성 모델에서 생성한 가짜 데이터를 분류 모델에 입력하여 가짜 데이터를 진짜 데이터로 분류할 만큼 진짜와 유사한 데이터를 만들 수 있도록 생성 모델을 학습시킨다. 결과적으로 GAN은 생성 모델은 분류에 성공할 확률을 낮추려하고, 분류 모델은 분류에 성공할 확률을 높이려 하며 서로 경쟁적으로 발전하는 구조를 이룬다.
- 생성 모델(Generator) G
- 분류 모델(Discriminator) D
- 생성 모델이 만들어낸 가짜 Data = G(z)
- 진짜 Data = x
- G는 V(D,G)가 최소가 되도록, D는 V(D,G)가 최대가 되도록 만든다.
1. 분류 모델(D)이 진짜 데이터를 진짜 데이터로 분류하도록 학습
- D(x)가 1이 되도록 학습, D(x)는 0 ~ 1사이의 값이기 때문에 log1 = 0의 값으로 만들려한다. ( 출력될 수 있는 값들 중 가장 큰 값 )
2. 분류 모델(D)이 생성 모델에서 생성된 가짜 데이터를 가짜 데이터로 분류하도록 학습
- D(G(z))가 0이 되도록 학습
* 0과 1로의 분류에는 sigmoid 함수를 이용
3. 생성 모델(G)이 생성한 가짜 데이터를 진짜 데이터로 분류하도록 학습
- D(G(z))가 1이 되도록 학습, G는 앞의 수식은 상관하지 않고 뒤의 수식에서 D(G(z))를 1로 만들어 log0 (-inf) 값을 만들려 한다.
https://m.blog.naver.com/euleekwon/221558014002
### 실습 코드 ###
### 평가 지표 ###
생성 모델을 평가하는 방법에는 질적 평가 방법과 양적 평가 방법이 존재한다.
https://nippleshot.github.io/2020/12/25/GANMetric.html
'딥러닝(Deep Learning) > D&A Conference Session' 카테고리의 다른 글
[D&A Conference Session] GPT 이해하기 (0) | 2022.08.08 |
---|---|
[D&A Conference Session] StyleGAN 이해하기 (0) | 2022.07.15 |
댓글