본문 바로가기
딥러닝(Deep Learning)/D&A Conference Session

[D&A Conference Session] GAN 이해하기

by rahites 2022. 7. 3.

GAN (Generative Adversarial Network)

 

< 참고자료 >

https://www.samsungsds.com/kr/insights/generative-adversarial-network-ai-2.html

 

[외부기고] [새로운 인공지능 기술 GAN] ② GAN의 개념과 이해

비지도학습 GAN(Generative Adversarial Networks)의 개념에 대해 쉽게 설명한 글입니다. 새로운 인공지능(AI) 기술 GAN에 대한 궁금증을 해결해 보세요.

www.samsungsds.com

https://www.youtube.com/watch?v=AVvlDmhHgC4&t=1486s 

참고 : 동빈나 유튜브

GAN은 실제와 비슷한 가짜 데이터를 생성하여 서로 다른 2개의 모델을적대적으로 학습시키는 방식으로 두 네트워크 간의 경쟁을 통해 성능을 향상시키는 비지도 학습 방법이다.

 

GAN에 대해 이해하기 위한 대표적인 예시로는 위조 지폐범과 경찰의 예시가 있다. 위조 지폐범과 경찰을 각각의 모델이라고 인식하고, 위조 지폐범은 최대한 진짜와 비슷한 지폐를 만들려 노력하고, 경찰은 최대한 진짜와 가짜를 구분할 수 있도록 노력한다. 이 과정은 위조지폐가 진짜 지폐와 구분이 잘 되지 않을 때까지, 즉 진짜와 가짜를 구분할 확률이 0.5와 최대한 가까울 때까지 반복된다. 위 예시에서 위조 지폐범은 생성 모델, 경찰은 분류 모델로 볼 수 있으며 서로 적대적인 학습을 통해 성능을 올리려는 것이다.

 

적대적 학습 과정은 분류 모델을 먼저 학습시킨 후 생성 모델을 학습시키는 순서를 따르며, 분류 모델을 학습 시킬 때에는 우선 진짜 데이터를 가지고 해당 모델이 데이터를 진짜로 분류하도록 학습시키는 과정을 거친 후 생성 모델에서 생성한 가짜 데이터를 가지고 가짜로 분류하도록 학습하는 과정을 거친다. 다음 생성 모델을 학습시킬 때에는 학습된 분류 모델을 속이기 위하여 생성 모델에서 생성한 가짜 데이터를 분류 모델에 입력하여 가짜 데이터를 진짜 데이터로 분류할 만큼 진짜와 유사한 데이터를 만들 수 있도록 생성 모델을 학습시킨다. 결과적으로 GAN은 생성 모델은 분류에 성공할 확률을 낮추려하고, 분류 모델은 분류에 성공할 확률을 높이려 하며 서로 경쟁적으로 발전하는 구조를 이룬다. 

 

Objective Function ( Loss Function )

- 생성 모델(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

 

[GAN] 이제 제발 이해하자 GAN - 1장 (수식)

지난번에 이어서 이제 수식을 제대로 뜯어보자. 일단 왼쪽에 min 과 max 가 왜 나왔을까.. 왼쪽에서 G는 ...

blog.naver.com

 

### 실습 코드 ###

https://github.com/ndb796/Deep-Learning-Paper-Review-and-Practice/blob/master/code_practices/Batch_Normalization_Evaluation_(with_Residual_Connection).ipynb 

 

GitHub - ndb796/Deep-Learning-Paper-Review-and-Practice: 꼼꼼한 딥러닝 논문 리뷰와 코드 실습

꼼꼼한 딥러닝 논문 리뷰와 코드 실습. Contribute to ndb796/Deep-Learning-Paper-Review-and-Practice development by creating an account on GitHub.

github.com

 

### 평가 지표 ###

생성 모델을 평가하는 방법에는 질적 평가 방법과 양적 평가 방법이 존재한다. 

 

https://velog.io/@viriditass/GAN%EC%9D%80-%EC%95%8C%EA%B2%A0%EB%8A%94%EB%8D%B0-%EA%B7%B8%EB%9E%98%EC%84%9C-%EC%96%B4%EB%96%A4-GAN%EC%9D%B4-%EB%8D%94-%EC%A2%8B%EC%9D%80%EA%B1%B4%EB%8D%B0-How-to-evaluate-GAN

 

GAN은 알겠는데, 그래서 어떤 GAN이 더 좋은건데? Evaluating Generative Adversarial Networks

👨‍🎓❓GAN의 성능은 도대체 어떻게 평가⚖해야 할까? Generative Adversarial Networks, 줄여서 GAN은 2014년도에 Ian J. Goodfellow의 논문을 거쳐 오늘날까지 여러 논문들이 나오면서 큰 발전을 이루고 있다

velog.io

https://nippleshot.github.io/2020/12/25/GANMetric.html

 

GAN의 평가지표 - J 『NOTE』

GAN을 통해 생성된 Image들의 여러 문제점들 (a) Overfitting 현상 (b) 상속 부족 현상 (c) Mode Collapse 현상 Generator가 다양한 이미지를 만들어내지 못하고 비슷한 이미지만 계속해서 생성하는 경우 원인 :

nippleshot.github.io

 

댓글