참고
GAN 이란?
머신러닝
GAN의 확률분포
GAN이란?
머신러닝은 대표적으로 다음과 같이 나눌 수 있다.
Supervised Learning(지도학습)은 정답이 주어진 상태에서 학습하는 알고리즘으로 이 학습을 통해 해결할 수 있는 문제, 이 학습의 목적은 분류(Classification)과 회귀(Regression)이다.
Unsupervised Learning(비지도학습)은 정답이 주어지지 않은 상태에서 학습하는 알고리즘으로 이 학습을 통해 해결할 수 있는 문제, 연구하고 있는 문제는 군집화(Clustering)이다.
Supervised Learning(지도학습)은 정답이 주어진 상태에서 학습하는 알고리즘으로 이 학습을 통해 해결할 수 있는 문제, 이 학습의 목적은 분류(Classification)과 회귀(Regression)이다.
Unsupervised Learning(비지도학습)은 정답이 주어지지 않은 상태에서 학습하는 알고리즘으로 이 학습을 통해 해결할 수 있는 문제, 연구하고 있는 문제는 군집화(Clustering)이다.
GAN의 확률분포
GAN은 비지도학습(Unsupervised Learning)의 대표적인 선두주자이다. GAN은 확률분포를 추정하여 데이터를 분류하는 군집화(Clustering)과 차이를 가진다.
GAN을 이해하기 위해서는 확률분포의 개념과 GAN에서 확률분포가 가지는 의미가 무엇인지 확실히 알아야 한다.
확률분포(Probability distribution)는 확률 변수가 특정한 값을 가질 확률을 나타내는 함수를 의미한다. 예를 들어 두 개의 주사위를 던졌을 때, 나오는 눈의 합이 x가 될 확률을 정의하는 것이 확률 분포이다(2가 될 확률 2%, 3이 될 확률 4%).
일정 데이터의 확률변수를 알게 되면 그 데이터의 예측 기댓값, 데이터의 분산을 즉각 알아낼 수 있어서 데이터의 통계적 특성을 바로 분석할 수 있으며, 주어진 확률분포를 따르도록 데이터를 임의 생성하면 그 데이터는 확률분포를 구할 때 사용한 원 데이터와 유사한 값을 가지게 된다.
확률분포의 특징이 GAN에 영향을 미치는 이유는 GAN에서 다루고자 하는 모든 데이터는 확률분포를 가지고 있는 랜덤변수이기 때문이다. 가령 2차 방정식에서 미지수 x를 변수라 하고, 이를 대입해서 방정식을 풀면 미지수 x는 특정한 수가 된다. 이 때 미지수 x를 랜덤변수라 하는데(대입해서 풀었을 때, 랜덤하게 특정한 수가 돼서), 이 x는 측정할 때마다 다른 값이 나온다. 하지만, 특정한 확률분포를 따르는 숫자를 생성하므로 확률변수의 특징을 지니게 된다.
미지수 x의 예측 기댓값, 분산을 즉각 알아낼 수 있어서 데이터의 통계적 특성을 바로 분석할 수 있고, x의 확률분포를 따라 데이터를 생성하면 x와 유사한 값을 가진다는 것이다. 즉, x의 확률분포를 알면 x와 같은 확률분포를 공유하는 데이터를 무수히 많이 만들 수 있고
즉, GAN과 같은 비지도학습 알고리즘으로 데이터의 확률분포를 모델링 할 수 있게 되면, 원래 데이터와 확률분포를 정확히 공유하는 무수히 많은 새로운 데이터를 새로 생성할 수 있게 된다.
GAN을 이해하기 위해서는 확률분포의 개념과 GAN에서 확률분포가 가지는 의미가 무엇인지 확실히 알아야 한다.
확률분포(Probability distribution)는 확률 변수가 특정한 값을 가질 확률을 나타내는 함수를 의미한다. 예를 들어 두 개의 주사위를 던졌을 때, 나오는 눈의 합이 x가 될 확률을 정의하는 것이 확률 분포이다(2가 될 확률 2%, 3이 될 확률 4%).
일정 데이터의 확률변수를 알게 되면 그 데이터의 예측 기댓값, 데이터의 분산을 즉각 알아낼 수 있어서 데이터의 통계적 특성을 바로 분석할 수 있으며, 주어진 확률분포를 따르도록 데이터를 임의 생성하면 그 데이터는 확률분포를 구할 때 사용한 원 데이터와 유사한 값을 가지게 된다.
확률분포의 특징이 GAN에 영향을 미치는 이유는 GAN에서 다루고자 하는 모든 데이터는 확률분포를 가지고 있는 랜덤변수이기 때문이다. 가령 2차 방정식에서 미지수 x를 변수라 하고, 이를 대입해서 방정식을 풀면 미지수 x는 특정한 수가 된다. 이 때 미지수 x를 랜덤변수라 하는데(대입해서 풀었을 때, 랜덤하게 특정한 수가 돼서), 이 x는 측정할 때마다 다른 값이 나온다. 하지만, 특정한 확률분포를 따르는 숫자를 생성하므로 확률변수의 특징을 지니게 된다.
미지수 x의 예측 기댓값, 분산을 즉각 알아낼 수 있어서 데이터의 통계적 특성을 바로 분석할 수 있고, x의 확률분포를 따라 데이터를 생성하면 x와 유사한 값을 가진다는 것이다. 즉, x의 확률분포를 알면 x와 같은 확률분포를 공유하는 데이터를 무수히 많이 만들 수 있고
즉, GAN과 같은 비지도학습 알고리즘으로 데이터의 확률분포를 모델링 할 수 있게 되면, 원래 데이터와 확률분포를 정확히 공유하는 무수히 많은 새로운 데이터를 새로 생성할 수 있게 된다.
GAN이란?
GAN은 2014년 Ian Goodfellow가 발표한 회귀생성 모델로 분류를 담당하는 판별자 D 모델과 회귀생성을 담당하는 생성자 G 모델로 구성되어 있다.
Generative Adversarial Networks 라는 이름에서 알 수 있듯이, 생성자 G와 판별자 D는 서로를 적대적으로 경쟁하여 성능을 향상시키는 모델이다. 논문 "Generative Adversarial Networks(2014)"에서 이 개념을 비유적으로 잘 설명하고 있다. 위조지폐를 만들어내는 사기꾼과 위조지폐의 사실 여부를 판별하는 형사에 대한 비유가 매우 적절하다.
사기꾼(Generator, G)는 경찰(Discriminator, D)를 열심히 속이려고 하고, 경찰은 가짜 돈과 진짜 돈을 분류하기 위해 노력한다. 이런 경쟁이 지속적으로 학습되면 결과적으로 가짜 돈은 진짜 돈과 구별할 수 없을 정도가 되어 진짜와 거의 차이가 없는 가짜 돈을 만들어낼 수 있다.
위의 (a)~(d) 그래프에서 데이터의 확률분포가 학습이 진행됨에 따라 GAN이 만들어내는 확률분포와 거의 동일해지는 것을 볼 수 있다. 이렇게 되면 판별자(D)는 더 이상 분류를 해도 의미가 없는 0.5라는 확률 값을 뱉어내게 된다.
Generative Adversarial Networks 라는 이름에서 알 수 있듯이, 생성자 G와 판별자 D는 서로를 적대적으로 경쟁하여 성능을 향상시키는 모델이다. 논문 "Generative Adversarial Networks(2014)"에서 이 개념을 비유적으로 잘 설명하고 있다. 위조지폐를 만들어내는 사기꾼과 위조지폐의 사실 여부를 판별하는 형사에 대한 비유가 매우 적절하다.
사기꾼(Generator, G)는 경찰(Discriminator, D)를 열심히 속이려고 하고, 경찰은 가짜 돈과 진짜 돈을 분류하기 위해 노력한다. 이런 경쟁이 지속적으로 학습되면 결과적으로 가짜 돈은 진짜 돈과 구별할 수 없을 정도가 되어 진짜와 거의 차이가 없는 가짜 돈을 만들어낼 수 있다.
위의 (a)~(d) 그래프에서 데이터의 확률분포가 학습이 진행됨에 따라 GAN이 만들어내는 확률분포와 거의 동일해지는 것을 볼 수 있다. 이렇게 되면 판별자(D)는 더 이상 분류를 해도 의미가 없는 0.5라는 확률 값을 뱉어내게 된다.
GAN의 작동
"What I cannot create, I do not understand" - Richard Feynman
GAN의 구조와 작동
GAN은 크게 Generator(생성자)와 Discriminator(판별자)로 구분할 수 있다.
생성자(Generator)는 "진짜같은 가짜를 만드는 것"이 목적이며, 생성 모델을 만들어 가짜 데이터를 생성한다.
판별자(Discriminator)는 "진짜와 가짜를 판별하는 것"이 목적이며, 주어진 데이터를 진짜인지 가짜인지 판별한다. 판별자가 데이터를 판별하기 위해서는 분류 모델이 학습되어 있어야 한다.
판별자의 분류 모델 학습은 크게 두 가지 단계로 이루어져 있다. 첫 번째는 진짜 데이터를 입력하여 해당 데이터를 '진짜'로 분류하도록 학습하는 과정이고, 두 번째는 첫 번째와 반대로 생성 모델에서 생성한 가짜 데이터를 입력해서 해당 데이터를 '가짜'로 분류하도록 학습하는 과정이다. 이 과정을 통해 분류 모델은 진짜 데이터를 '진짜'로 가짜 데이터를 '가짜'로 분류할 수 있게 된다.
분류 모델을 학습시킨 다음에는 학습된 분류 모델을 속이는 방향으로 생성 모델을 학습시킨다. 생성 모델에서 만들어낸 가짜 데이터를 분류 모델에 입력하고, 가짜 데이터를 진짜 데이터와 유사한 데이터로 만들어 내도록 생성 모델을 학습시킨다.
이와 같은 학습과정을 반복하면 분류 모델과 생성 모델이 서로를 적대적인 경쟁자로 인식하여 모두 발전하게 된다. 결과적으로, 생성 모델은 진짜 데이터와 완벽히 유사한 가짜 데이터를 만들 수 있게 되고 이에 따라 분류 모델은 분류에 성공할 확률을 높이려 하면서 서로가 서로를 경쟁적으로 발전시키는 구조를 이루고 있다.
생성자(Generator)는 "진짜같은 가짜를 만드는 것"이 목적이며, 생성 모델을 만들어 가짜 데이터를 생성한다.
판별자(Discriminator)는 "진짜와 가짜를 판별하는 것"이 목적이며, 주어진 데이터를 진짜인지 가짜인지 판별한다. 판별자가 데이터를 판별하기 위해서는 분류 모델이 학습되어 있어야 한다.
판별자의 분류 모델 학습은 크게 두 가지 단계로 이루어져 있다. 첫 번째는 진짜 데이터를 입력하여 해당 데이터를 '진짜'로 분류하도록 학습하는 과정이고, 두 번째는 첫 번째와 반대로 생성 모델에서 생성한 가짜 데이터를 입력해서 해당 데이터를 '가짜'로 분류하도록 학습하는 과정이다. 이 과정을 통해 분류 모델은 진짜 데이터를 '진짜'로 가짜 데이터를 '가짜'로 분류할 수 있게 된다.
분류 모델을 학습시킨 다음에는 학습된 분류 모델을 속이는 방향으로 생성 모델을 학습시킨다. 생성 모델에서 만들어낸 가짜 데이터를 분류 모델에 입력하고, 가짜 데이터를 진짜 데이터와 유사한 데이터로 만들어 내도록 생성 모델을 학습시킨다.
이와 같은 학습과정을 반복하면 분류 모델과 생성 모델이 서로를 적대적인 경쟁자로 인식하여 모두 발전하게 된다. 결과적으로, 생성 모델은 진짜 데이터와 완벽히 유사한 가짜 데이터를 만들 수 있게 되고 이에 따라 분류 모델은 분류에 성공할 확률을 높이려 하면서 서로가 서로를 경쟁적으로 발전시키는 구조를 이루고 있다.
GAN 학습 수식
GAN의 한계
- 기존 GAN만으로는 훈련 성능이 그다지 뛰어나지 못함
→ G와 D 사이의 실력차가 발생하면 훈련이 한쪽으로 치우쳐서 성능의 제약이 생김(DCGAN) - 사용된 생성자의 결과물 형태가 어떤 연유와 과정을 통해 나왔는지 알 수 없음
- 새롭게 만들어진 data가 얼마나 정확한지 객관적으로 판단하기 어려움
댓글 없음:
댓글 쓰기