GAN의 문제점 (Mode Collapse)

이미지
Ian Goodfellow가 2014년 내놓은 GAN(Generative Adversarial Nets)은 획기적인 아이디어로써 이미지 생성분야에서 강세를 보이고 있습니다. 하지만 이러한 GAN도 한계점이 있는데 그 한계점들 중 Mode collapse에 대해 알아보도록 하겠습니다. Mode Collapse란? Mode collapse는 generator가 서로 다른 data가 모인 input $z$ (학습 data set)를 같은 output (generator 함수)으로 mapping하고자 할때 발생합니다. 그 중에서 partial mode collapse라는것이 흔하게 발생한다고 합니다. 이는 generator가 동일한 색깔이나 텍스쳐를 가지고 여러 이미지를 만들려고 할때 발생합니다. 예를들어, 하나의 generator로 같은 강아지를 서로 다른 시각에서 바라본 여러 이미지를 만든다고 할때 발생합니다. 그렇다면 mode collapse는 어떻게 나타날까요? 출처 : 참고문헌 [3] 위 그림은 Unrolled GAN paper에서 발췌한 그림입니다. 위쪽에 있는것이 Model collapse 현상을 개선한 unrolled GAN이고, 아래쪽이 우리가 일반적으로 알고있는 GAN입니다. 그림에 대해 간략하게 설명해 드리자면, 우리는 오른쪽 Target과 같은 분포의 generator를 만들고 학습하고 싶습니다. 왼쪽에 있는 그림들은 5000번마다 generator가 만드는 분포를 그린것입니다. 일반 GAN을 살펴보면 일정한 곳으로 converge하지 않고 여러 지점으로 옮겨 다닌다는 것을 알 수 있습니다. 이것을 대표적으로 알 수 있는 예시로 Unrolled GAN paper에서는 MNIST 문제를 들었습니다. 출처 : 참고문헌 [3] MNIST는 0~9까지 손글씨로 적은 숫자들을 모은 데이터 셋입니다. 바로 이전의 그림처럼 여러 데이터 셋으로 분리가 되는 경우입니다. 이전의 그림과 동일하게 위에는 Unrolled GAN이고,아래는 va

회귀-분산 분해 (The Bias-Variance Decomposition)

오늘 다루어볼 내용은 Bias-Variance Decomposition 입니다. 이를 다루어 보기에 앞서 Regression에서의 Loss function에 대해 알아보도록 하겠습니다. 1. Regression에서의 Loss Function Regression 문제는 input variable $\mathbf{x}$가 있을때 그에 대응되는 target variable $t$를 찾는 함수 $y(\mathbf{x})$를 찾는 문제입니다. 언제나 $t = y(\mathbf{x})$가 되는 $y$를 찾으면 좋겠지만, 일상생활에서의 문제에는 노이즈가 섞여져 있기도 하고, 여러 복잡한 이유로 인하여 완벽한 함수를 찾기는 어려운 문제입니다. 그렇지만 그에 대한 차이가 조금이라도 적게 만드는 것이 우리의 목표입니다. 그러기 위해 그 실제값과 우리가 구한 함수의 차이의 정도를 정의하는 Loss function $L(t,y(\mathbf{x}))$을 정의하게 됩니다. 일반적으로 regression 문제에서 사용되는 Loss function은 squared loss라 불리우는 다음과 같은 형태의 함수입니다.$$L(t,y(\mathbf{x})) = \{y(\mathbf{x}) - t\}^2$$ 전체 문제의 정의역에서의 평균을 내어보면 아래와 같은 함수의 형태일 것입니다. $$\mathbb{E}[L] = \iint \{y(\mathbf{x}) - t\}^2 p(\mathbf{x},t) d\mathbf{x} dt$$ 책에서는 2가지 방법으로 설명하고 있지만 여기서는 2번째 방법을 이용해서 설명하도록 하겠습니다. 우리는 regression 문제에서 최적의 해가 아래와 같은 형태임을 이미 압니다.$$y(\mathbf{x}) = \mathbb{E}_{t}[\mathbf{t}|\mathbf{x}] = \int t p(t|\mathbf{x})dt$$ 그러므로 squared loss는 아래와 같은 형태로 변형시킬 수 있습니다. $$\{y(\mathbf{x}) - t\}^2 = \{y

선형 회귀 모델(Linear Regression Model) -2

4. SGD(Stochastic/Sequential Gradient Descent) 머신러닝에 대해 공부하다보면 SGD라는 단어가 종종 나옵니다. SGD는 무엇의 약자인지 알아보면, Stochastic/Sequential Gradient Descent 확률적/순차적 경사 하강법으로써 임의로 샘플들을 선택하여 그것들의 gradient값을 구하고, error function이 최소화 되는 지점으로 내려가기에 SGD라는 이름이 붙었습니다. 우리가 regression model에서 구하고 싶은 $\mathbf{w}$에 대한 SGD는 아래와같이 재귀적으로 표현이 가능합니다. $$\mathbf{w}^{(n+1)} = \mathbf{w}^{(n)} - \alpha \nabla E_n $$ 여기서 $\mathbf{w}^{(n)}$은 n번째 업데이트한 $\mathbf{w}$을 의미하고, $\alpha$는 학습률, $E_n$은 우리가 선택한 오차 함수를 의미합니다. 학습률은 너무 크거나 작게 되면 오차가 최소가 되는 지점을 찾는데 어려움을 겪을 수 있으니 적당한 값을 잡는것이 중요합니다. 5. Regularized least squares 우리가 학습을 진행하다 보면 over-fitting 문제가 발생하게 됩니다. over-fitting 문제에 대해서 간단히 설명을 하면, 우리가 만든 모델이 일반화되지 못하고 학습된 데이터에만 적합하게 만들어진 문제를 의미합니다. 이를 막기 위해 error function에 아래와 같이 항을 추가하게 됩니다. $$ E_D (\mathbf{w}) + \lambda E_W (\mathbf{w})$$ Reference 1.  Pattern Recognition and Machine Learning , p143-144, Christopher bishop 2. Wikipedia  https://en.wikipedia.org/wiki/Stochastic_gradient_descent

선형 회귀 모델(Linear Regression Model) -1

이 글들은 PRML책을 읽고 정리한 내용들입니다. 1. Regression Model 이란...? Linear regression model 에 대해 다루어 보기에 앞서 regression model이란 무엇인지 알아보자. Regression model 이란 D차원 벡터 $x$들이 input으로 주어졌을때 그에 해당하는 target 변수 t의 값을 예측하는 것이다. t는 finite한 class로 정해지지는 않았다. 우리는 이 모델을 학습시킬때, N개의 input data {$x_n$}과 각각에 대응되는 target값 {$t_n$}이 training set으로 학습한다. 학습시킨 모델을 가지고 새로운 변수 $X$가 주어졌을때 새 변수 $X$의 target값 $t$를 예측을 하고자 한다. 대표적인 예시로 집값을 예측하는 모델을 들 수 있다. Input vector에는 집의 크기, 집의 위치, 지어진 년도 등 다양한 변수들이 들어갈 것이고, target값에는 집값이 나타날 것이다. 만약 우리가 모델을 잘 구성하였다면 집값을 잘 예측해냈다는 것이고, 학습된 데이터에 나온 집값 뿐만 아니라 새로운 데이터들에 대해서도 예측을 잘 해낼 것이다. 2. Linear regression model 이란? Linear regression model은 입력 변수들의 linear combination을 통해 나타내어 질 수 있는 모델이다. 가장 단순하게 생각하면 $$y(\mathbf{x},\mathbf{w}) =  \mathbf{w}^T \mathbf{x}$$ 여기서$\mathbf{x} = (1, x_1 , x_2 , \cdots x_D)^T , \mathbf{w} = (w_0, w_1 , w_2 , \cdots w_D)^T$이다. 위와 같은 단순한 모델로 나타낼 수 있다. 하지만 이러한 모델로써 표현될 수 있는 모델들은 한계가 있어보인다. 꼭 각각의 변수들에 대해서 정비례한 관계만 가지지는 않기 때문이다. 그래서 우리는 basis function를 도입하게