네이버 부스트캠프 AI Tech 3기의 4주 차가 지나가고 지금은 5주 차로 접어드는 시기이다.

 

4주 차 내용에서 어려웠던 CNN 기술들, Transformer, Auto Encoder (VAE, AAE 등), Generative Models (GAN 등)을 논문을 통해서 공부해보고자 생각했고, 처음 선택하게 된 논문은 Ian Goodfellow의 Generative Adversarial Nets 즉, GAN의 관한 논문이다.

 

 

왜 이 논문을 선택했냐고 묻는다면 크게 세 가지 이유를 말할 수 있는데,

 

1. 내가 희망하는 분야인 medical 분야 중 신약 분야에서 Graph Neural Networks (GNN)과 더불어 GAN이 많이 사용되고 있기 때문

 

2. 수업에서의 난이도가 개인적으로 많이 어렵게 느껴졌고, 첫 번째 이유인 내가 희망하는 분야에서 많이 사용되는 모델인데 어렵다고 나중에 공부하자는 마인드는 모순되었기 때문

 

3. 현재까지 resnet이 많이 사용된 것처럼 GAN이 현재뿐만 아니라 미래에도 많이 사용되거나 GAN을 바탕으로 모델들이 발전할 것 같기 때문이다.

 

 

1. Abstract

 

바로 논문의 Abstract로 넘어가 보자.

 

Abstract를 읽어보면 목적과 개념에 대해서 상단에 언급이 되어있고, GAN의 특징이 하단에 적혀있다.

 

특히, Abstract에서 D와 G가 많이 보이는데 이는 GAN의 핵심이 되는 개념 중 하나인 Generative model (Generator)와 Discriminative model (Discriminator)이다.

 

이 개념은 조금 이따가 보기로 하고 Abstract에 적혀있는 내용 중 또 다른 핵심 개념들인 adversarial process, minimax, Markov chains 등을 먼저 알아보고 넘어가 보려고 한다. (지나가면서 unrolled approximate inference networks도 잠깐 언급하겠다.)

 

 

먼저, minimax에 대해서 알아보자.

 

사실 minimax는 구글에 검색해서 wiki를 보면 바로 이해가 되는 개념이긴 하다.

 

wiki에 따르면, 최악의 경우에서 발생 가능한 손실을 최소화한다는 규칙이라고 적혀있는데, 예시를 통해서 보면 조금 더 이해하기 쉬울 것 같다.

 

예를 들어, 도박을 하면 보통 1위에게 모든 돈을 몰아준다.

 

이때, 게임에서 패배하더라도 최악으로 패배할 때의 손실을 최소화하겠다는 알고리즘이다.

 

쉽게 말해서 시험을 엄청 망치면 부모님한테 역대급으로 혼날 것이고, 혼나더라도 많이보다는 적게 혼나기 위해 우리가 변명하는 것을 생각하면 될 것 같다. (물론, 실제로는 그러면 더 혼난다 ㅋㅋㅋ)

 

 

다음으로는 Markov chain을 알아보겠다.

 

Markov chain을 보기 전에 Markov process를 이해해야 한다.

 

Markov process는 GAN에서만 필요한 개념이 아니라 Auto-regressive Model를 다룰 때에도 필요한 개념으로 알고 있는데, 잘 알아두어야 할 것 같다.

 

Markov process의 개념은 어떠한 미래 상태가 있고, 그 미래 상태의 확률 분포가 현재 상태에 의해서만 결정된다는 뜻이다.

 

즉, 과거의 결과를 미래의 상태를 계산할 때 반영하지 않겠다는 뜻으로 볼 수 있겠다.

 

이때, Markov chain은 Markov process에서 이산 시간일 경우만 고려한 것이다.

 

참고로 이산 시간에서 "이산"이 뜻하는 것은 키나 몸무게와 같이 연속적인 값이 아닌 주사위 눈금 같은 비연속적이나 숫자로 표시되는 값을 말한다. (1, 2, 3, 4, 5, 6도 연속이지 않냐라고 생각할 수 있지만, 1과 2 사이에는 무수한 숫자가 존재하므로 이산으로 보자는 것이다.)

 

Markov process에 관한 예시를 하나 들어보겠다.

 

 

이번 달에 민초파인 사람이 다음 달에도 민초파일 확률을 90% (0.9), 다음 달에는 반민초파가 될 확률을 10% (0.1)라 하자.

 

또한, 이번 달에 반민초파인 사람이 다음 달에도 민초파일 확률을 60% (0.6), 다음 달에도 반민초파일 확률을 40% (0.4)라고 하자.

 

초기에 민초파인 인원은 10만 명이고, 반민초파인 인원은 100만 명으로 정했다.

 

 

위에서의 확률을 그대로 행렬로 변환하는데, 이 행렬을 상태 변이 확률 행렬이라고 한다.

 

자, 그러면 Markov chain에 따라서 다음 달에 민초파인 사람과 반민초파인 사람의 인원수를 구해보자.

 

과거가 어쨌든 간에 현재의 상태 변이 확률 행렬만 계산에 반영되므로 이를 초기 값에 곱해주면 민초파와 반민초파의 인원이 각각 69만 명, 41만 명으로 계산될 것이다.

 

 

그러면 2개월 후의 인원도 마찬가지로 구해보자.

 

현재의 민초파와 반민초파의 인원은 각각 69만 명, 41만 명이고 어떠한 과거의 요소가 개입이 되지 않으므로 똑같이 행렬 곱 계산을 해주면 된다.

 

자세한 계산은 위의 PPT 이미지를 참고하면 될 것 같다.

 

 

이를 조금 더 발전시켜보면 Markov chain의 상태 변이 확률 행렬과 초기값이 주어졌을 때, n만큼 지난 후의 값은 행렬곱을 n번 반복한 것과 동일하다고 볼 수 있는 것이다.

 

Markov chain은 Auto Encoder 외에도 다수의 내용에서도 등장하는 개념이니 조금 깊게 다루어 보았다.

 

 

여기서 unrolled approximate inference nets에 대해서 잠깐만 짚고 넘어가겠다.

 

Abstract에 보면 unrolled approximate inference가 나오는데 이 개념(approximate inference)은 논문에서 계속 Markov Chain과 함께 과거 Generative model과 GAN을 비교하는 동안 등장한다.

 

approximate inference는 앞서 언급했다시피 Auto-regressive model에서 나오는 개념으로 (이는 VAE와 AAE에서 필요한 개념의 일부입니다.) 당시에는 Bayesian network와 같은 구조를 활용한 model을 활용했는데 이를 말하는 것으로 보고 있다.

 

따라서, unrolled approximate inference nets에 너무 집중하지 말고 GAN이 이와 달리 여러 step 없이 end to end로 학습과 inference 된다는 것을 강조하는 데에 사용된다고만 알고 있으면 될 것 같다. (사실 동일한 이유로 Markov chain도 깊게 다룰 이유가 없었지만, 개인적으로 Markov chain은 사용 범위가 넓다고 생각하여 자세하게 다뤘다.)

 

 

끝으로 이 논문의 핵심인 adversarial process와 generative model G, discriminative model D에 대해서 알아보는데, 이를 Introduction과 연계하여 알아보겠다.

 

먼저, adversarial을 영어 그대로 하면 "적대적인, 대립하는"으로 라이벌을 이용한 공부와 유사하다고 볼 수 있다.

 

Generative Adversarial Networks에서 사용되는 적대적 존재들은 조금 특별하게도 Introduction의 중반부에 자세한 예시와 함께 나와있다.

 

 

2. Introduction

해당 이미지 출처 : https://sites.google.com/site/aidysft/generativeadversialnetwork

Introduction에 따르면, generative model에서 대립하는 존재는 discriminative model과 generative model이라고 적혀있는데 이 예시는 GAN을 검색해본 사람이라면 누구나 들어본 경찰과 위조지폐범 이야기이다.

 

일단은 discriminative model의 학습이 data 분포에서 온 것인지 아니면 모델(즉, generative model)에서 온 것인지를 결정함으로써 학습한다고 되어 있다.

 

이 다음에 generative model을 감지되지 않게끔 가짜 지폐를 생산 및 사용하고자 시도하는 위조범과 동일하게 생각할 수 있다고 비유를 주고, discriminative model을 가짜 지폐를 찾고자 하는 경찰로 비유하고 있다.

 

즉, Generative model (Generator)은 가짜 data를 생성하는 생성 모델, Discriminative model (Discriminator)은 가짜와 진짜를 구별하는 분류 모델이라고 생각하면 된다.

 

Generative model과 Discriminative model이 등장하게 된 배경은 Introduction의 초반부에 적혀있다.

 

조금 논문을 해석하는 방향으로 보면서 설명하겠다.

 

Deep Learning의 기본적인 목표는 AI가 학습한 data의 종류 외에도 들어오는 data를 확률 분포로 나타낼 수 있는 계층적으로 깊은 형태의 모델을 발견하는 것이라고 한다.

 

또한, 이전까지 성능이 좋았던 Deep learning은 고차원으로 구성된 Discriminative model을 사용하고 있었고 piecewise linear를 사용하여 backpropagation과 dropout을 잘 되게 했었다. (piecewise linear는 https://dawoum.ddns.net/wiki/Piecewise_linear_function에 잘 설명되어 있다.)

 

하지만, 과거의 generative models를 "deep"하게 쌓을수록 복잡한 확률 계산을 근사하기 어려웠고 piecewise linear의 장점이 별로 영향을 끼치지 않았기에 성능이 나오지 않게되었고 이를 바탕으로 새로운 generative model을 고안했다고 적혀있다.

 

Introduction 마지막에는 "adversarial nets"에 대한 정의가 나오는데, 그대로 해석해보면 generative model이 multilyaer perceptron을 통해서 random noise를 전달하여 sample(즉, discriminator를 헷갈리게 하는 fake data)을 생성하며 discriminative model도 multilayer perceptron인 model이라고 되어 있다.

 

마지막이 GAN의 핵심이 되는 말인데, 과거에 Markov chain이나 다른 inference를 사용하여 복잡한 절차를 거친 모델들과 달리 GAN은 이런 복잡한 절차 필요 없고 generative model은 forward propagation으로 sample을 생성한다는 점, 그럼에도 불구하고 generative model과 discriminative model은 backpropagation과 dropout이 잘 되어 성능도 잘 나온다는 점을 강조하고 있다.

 

이 부분은 바로 이어서 나오는 Related Work의 초반부에서 과거의 모델들을 언급하며 설명이 더 자세하게 되어 있는데 이정도면 충분할 것 같다. (잠깐 언급하자면, 과거의 모델인 Boltzmann machines, deep Boltzmann machines의 특징과 단점에서부터 Deep belief networks(DBNs)로의 발전, noise-contrastive estimation(NCE)와의 비교 등이 적혀있으며 이 과정에서 discriminative model을 어떻게 사용했고, generative model을 어떻게 했는지 언급하고 있다. 이후 GSNs와 Markov Cahin에 관한 이야기, backpropagation에 대한 이야기까지 나와있다.)

 

 

3. Adversarial nets

여기서 잠깐 이런 의문이 들 수 있다.

 

"아니, GAN이 adversarial learning을 이용해서 학습하는 것도 알겠습니다. adversarial이 되는 주체들은 generative model과 discriminative model이라는 것도요. 그리고 generative model은 가짜 데이터를 discriminative model에게 주어서 헷갈리게 한다는 점도 알겠습니다. 그러면 앞에서 다룬 background 개념들은 어디에 쓰이고, 왜 이렇게 헷갈리게 하는 게 더 도움이 된다는 건가요?"

 

두 가지를 먼저 대답하겠다.

 

하나는 Markov Chain이 과거의 Model들에는 많이 쓰였으나 GAN에서는 쓰이지 않았다는 점을 강조하고자 언급한 점 (앞에서도 말했지만 이는 Deep learning을 공부하다보면 많이 나오는 개념이기에 알아두면 좋겠다는 생각에 길게 썼다.)

 

두 번째로는 minimax와의 관계이다.

 

위의 사진에는 이상한 수식이 적혀있는데, 하나하나 보겠다.

 

등호의 좌측에 적혀있는 minmax V(D, G)는 G는 V함수를 최소화하고, D는 V함수를 최대화하겠다는 의미이다.

 

여기서 $ D(x) $는 second multilayer perceptron (discriminative model)이 G가 만든 data인 $ p_g $인지, 아니면 real data에서 온 $ x $인지를 확률로 나타내는 함수이다.

 

여기서, discriminative model과 generative model이 adversarial이라는 관점을 적용시켜보면 D는 $D(x)$를 높여야하고 (= discriminative model이 generative model가 만든 가짜 data인지 아니면 진짜 data인지를 제대로 판별) G는 반대로 D(x)를 낮추어야 한다. (여기서 x는 real data에서 온 data라고 했을 때)

 

또한 G가 만든 데이터 z에 대해서 $ G(z) $가 $D(x)$의 input으로 올 때 (즉 수식으로는 $ D(G(z)) $) D는 이를 real data로 판별할 확률을 줄여야 하고, G는 높여야 한다.

 

수식에서의 통일성을 주고자 $ 1 - D(G(z)) $로 바꾸어서 (D의 output은 확률이므로) 보면 D는 $ D(x) $와 $ 1 - D(G(z)) $를 높여야 하며, G는 반대로 모두 낮춰야 한다.

 

이를 모두 합쳐서 수식으로 나타내면 바로 위의 자료에서 등호의 우측 수식이 되는 것이다.

(첨언하자면, 통계에서 확률에 log를 씌워 정규성을 높인다고 한다.. 또한 $ \mathbb{E}_{x\sim p_{data}} $는 data의 확률 분포를 따르는 $ x $의 기댓값으로 해석하면 된다. 우측에 동일하게 생긴 것도 마찬가지 -> $ z $의 의미를 생각해서!)

 

즉, 위의 의문에서 adversarial의 특징이 minimax와 맞았고 그로 인해 사용 되었다고 보면 될 것 같다.

 

이를 통해서 GAN의 필수 수식을 이해하였고 작동 원리까지 이해할 수 있었다.

 

이 아래부터는 G와 D를 어떻게 학습에 사용하였고 어떻게 성능을 내고자 했는지에 대한 내용이 적혀있다.

 

해당 부분부터는 수학 수식이 많이 나오기 때문에 주의하기 바란다.

(선형대수와 확률통계도 안 듣고 수업 듣는 나를 가장 잘 표현하는 이모티콘)

 

 

--- 이 이후는 다시 읽었을 때 계속해서 작성할 예정 ---

 

 

 

 

 

+ Recent posts