-
GAN - 01 (개념, 노이즈 벡터, 논문 초반)AI/논문 리뷰 2024. 4. 7. 20:38
1. 개념
GAN(Generative Adversarial Network, 생성적 적대 신경망)은 이름에서도 알 수 있듯이, 생성적 모델과 적대적 모델이 함께 경쟁하며 학습하는 기법입니다. GAN을 이해하기 쉽게 설명하기 위해, "위조화가와 경찰"의 비유를 사용할 수 있습니다.위조화가(Generator)
- 위조화가는 진짜와 똑같은 그림을 그리려고 노력합니다. 즉, GAN에서 생성자(Generator)는 진짜 데이터와 구분할 수 없는 가짜 데이터를 생성하려고 합니다.
- 처음에는 그림 실력이 부족해서 만든 작품이 진짜와 많이 다를 수 있지만, 시간이 지나면서 점점 진짜 같은 작품을 만들어냅니다.
경찰(Discriminator)
- 경찰은 위조된 그림과 진짜 그림을 구분하려고 합니다. GAN에서 감별자(Discriminator)는 입력받은 데이터가 진짜인지 가짜인지를 판별합니다.
- 처음에는 구분하는 능력이 완벽하지 않지만, 경찰도 점차 훈련을 통해 위조된 그림과 진짜 그림을 더 잘 구분하게 됩니다.
경쟁과 학습
- 위조화가(생성자)와 경찰(감별자)는 서로를 이기려고 경쟁합니다. 위조화가는 더 완벽한 그림을 만들어내려고 하고, 경찰은 그 그림이 위조된 것인지 아닌지 더 정확하게 판별하려고 합니다.
- 이 경쟁 과정에서 위조화가는 점점 더 진짜 같은 그림을 그리는 방법을 배우고, 경찰은 그림이 진짜인지 가짜인지를 더 정확하게 구분하는 방법을 배웁니다.
결국, GAN의 학습 목표는 생성자가 진짜 데이터와 구분할 수 없는 가짜 데이터를 만들어내는 것이며, 이 과정에서 감별자도 계속해서 업그레이드되어 가짜와 진짜를 더 잘 구분하게 됩니다. 이런 경쟁을 통해 두 모델 모두 점점 더 발전하게 되고, 최종적으로는 생성자가 만든 가짜 데이터가 진짜 데이터와 거의 구분이 안 될 정도로 발전할 수 있습니다.
2. Generator가 학습하는 과정
GAN에서 생성자(Generator)는 학습 데이터의 분포를 모방하여, 진짜와 구분하기 어려운 가짜 데이터를 만들어내는 것을 목표로 합니다.
- 입력 노이즈 변수 (prior \(p_z(z)\)) : 생성자가 새로운 데이터를 생성하기 위해 필요한 '원재료'로 생각할 수 있습니다. 이는 보통 무작위로 생성된 노이즈 데이터로, 생성자가 이 노이즈를 가지고 학습 데이터와 유사한 새로운 데이터를 만들어냅니다.
- \(G(z; \theta_g)\) : 여기서 \(G\)는 생성자를 의미하며, \(\theta_g\)는 생성자의 파라미터(가중치)입니다. \(z\)는 입력 노이즈, \(G(z; \theta_g)\)는 이 노이즈를 받아서 가짜 데이터를 생성하는 함수입니다. 이 함수는 여러 층(layer)을 가진 신경망(multilayer perceptron)으로 구성되어 있어서, 미분 가능합니다. 이는 학습 과정에서 생성자의 파라미터를 조절하여 가짜 데이터를 점점 더 진짜 데이터와 유사하게 만들 수 있음을 의미합니다.
간단히 요약하면, 생성자는 무작위 노이즈로부터 시작해서, 실제 데이터와 유사한 데이터를 만들어내기 위해 점차 학습하는 데, 이 과정에서 신경망의 구조와 파라미터가 중요한 역할을 합니다. 생성자가 잘 학습되면, 노이즈로부터 시작하여 실제 데이터와 구별하기 어려운 새로운 데이터를 만들어낼 수 있게 됩니다.
GAN에서 생성자를 학습시킬 때, 미분 가능성을 통해 우리가 생성자의 파라미터를 어떻게 목표를 정해서 조정할까? 레이블이 없다!GAN(Generative Adversarial Networks)에서 생성자(generator)를 학습시킬 때, 목표를 설정하고 파라미터를 조정하는 과정은 직관적이지 않을 수 있습니다. 왜냐하면, 전통적인 지도 학습(supervised learning)에서와 같이 명확한 "정답" 레이블이 존재하지 않기 때문입니다. 대신, 생성자의 학습 과정과 목표 설정은 감별자(discriminator)와의 상호 작용을 통해 이루어집니다.
목표 설정
GAN의 학습 목표는 생성자가 실제 데이터와 구분할 수 없는 가짜 데이터를 생성하는 능력을 개발하는 것입니다. 생성자의 목표는 감별자를 "속이는" 것이며, 이를 통해 감별자가 가짜 데이터와 진짜 데이터를 구분하는 데 50%의 확률만을 가지게 만드는 것입니다. 즉, 감별자가 무작위로 추측하는 수준으로 만드는 것이 최종 목표입니다.
파라미터 조정 방법
생성자의 파라미터를 조정하는 과정은, 감별자로부터의 피드백에 기반합니다. 생성된 데이터에 대해 감별자가 진짜라고 판단할 확률을 생성자는 최대화하려고 합니다. 이를 위해, 생성자는 자신의 출력이 감별자에 의해 진짜로 분류될 가능성에 대한 정보를 이용하여 파라미터를 업데이트합니다.
미분 가능성의 역할
미분 가능성이 중요한 이유는, 이를 통해 생성자가 어떻게 파라미터를 조정해야 할지에 대한 구체적인 지침을 얻을 수 있기 때문입니다. 감별자로부터의 그래디언트(기울기) 정보는 생성자가 자신의 파라미터를 어떻게 조정해야 감별자를 더 잘 속일 수 있는지를 알려줍니다. 이 과정에서 사용되는 기술은 역전파(backpropagation)와 경사 하강법(gradient descent)입니다.
- 역전파: 감별자로부터 생성자로 그래디언트(오류의 기울기)를 전달하는 과정입니다. 이 정보는 생성자가 생성한 데이터가 감별자에 의해 얼마나 잘 구분되는지를 나타냅니다.
- 경사 하강법: 생성자의 파라미터를 그래디언트의 반대 방향으로 조금씩 조정하여, 감별자를 속이는 능력을 점차 개선해 나가는 최적화 방법입니다.
정리하면, GAN에서 생성자의 학습은 감별자와의 적대적인 상호 작용을 통해 이루어집니다. "정답"이 명확히 존재하지 않기 때문에, 학습 과정은 감별자를 속이려는 시도와 그에 대한 감별자의 반응 사이의 동적인 균형을 찾는 것입니다. 미분 가능성은 이 과정에서 생성자가 어떤 방향으로 어떻게 파라미터를 조정해야 할지에 대한 구체적인 가이드를 제공합니다.
3. 노이즈 벡터
초기 재료 역할을 하는 랜덤 노이즈를 의미합니다. 생성적 적대 신경망(GAN)에서, 이 노이즈 벡터는 생성자(generator)가 시작점으로 사용하여 가짜 데이터(예: 이미지)를 생성하는 데 필요한 무작위성을 제공합니다.
노이즈 벡터의 역할
- 다양성 제공: 노이즈 벡터는 생성자가 다양한 출력을 만들어낼 수 있도록 합니다. 각각의 노이즈 벡터는 생성자에 의해 고유한 가짜 데이터로 변환됩니다. 즉, 서로 다른 노이즈 벡터를 입력으로 사용하면, 생성자는 각기 다른 가짜 이미지를 생성할 수 있습니다.
- 학습 과정의 시작점: 노이즈 벡터는 생성자가 가짜 데이터를 생성하기 위한 초기 "시드(seed)" 역할을 합니다. 이러한 무작위성은 생성자가 데이터를 생성할 때 매번 다른 점에서 시작하게 해주어, 다양한 데이터를 탐색하고 학습하는 데 도움이 됩니다.
노이즈 벡터의 특징
- 일반적으로, 이 노이즈 벡터는 고정된 차원의 랜덤 벡터로, 각 요소는 주로 균등 분포(uniform distribution)나 정규 분포(normal distribution)에서 무작위로 선택됩니다.
- 노이즈 벡터의 차원과 분포는 GAN 모델의 설계에 따라 달라질 수 있으며, 이는 생성될 데이터의 다양성과 품질에 중요한 영향을 미칩니다.
4. 논문 설명
이 수식은 GAN(생성적 적대 신경망)에서 사용되는 핵심적인 게임 이론적 구조를 설명하고 있습니다. 이 구조는 두 플레이어, 생성자(Generator, G)와 감별자(Discriminator, D) 사이의 경쟁을 수학적으로 나타냅니다. 쉽게 설명드리면 다음과 같습니다:
감별자(D)의 목표
- 감별자 \( D \)는 입력받은 데이터가 진짜 데이터인지 가짜 데이터인지를 구별하는 역할을 합니다.
- 첫 번째 항 \( \mathbb{E}_{x\sim p_{\text{data}}(x)}[\log D(x)] \)은 감별자가 실제 데이터 \( x \)를 진짜라고 판단할 확률을 최대화하려는 것을 나타냅니다. 간단히 말해, 실제 데이터를 실제로 인식하도록 학습하는 것입니다.
- 두 번째 항 \( \mathbb{E}_{z\sim p_z(z)}[\log(1 - D(G(z)))] \)은 감별자가 생성자가 만든 가짜 데이터 \( G(z) \)를 가짜라고 판단할 확률을 최대화하려는 것을 나타냅니다. 즉, 가짜를 가짜로 잘 구별하도록 학습하는 것입니다.
생성자(G)의 목표
- 생성자 \( G \)는 감별자 \( D \)를 속여서 자신이 만든 가짜 데이터를 진짜로 인식하게 만드는 것을 목표로 합니다.
- 이를 위해 생성자는 \( \log(1 - D(G(z))) \)를 최소화하려고 합니다. 이것은 감별자가 가짜 데이터를 진짜로 판단할 확률 \( D(G(z)) \)를 최대화하려는 것과 같습니다. 다시 말해, 가짜 데이터를 가능한 한 진짜처럼 보이게 만들어 감별자가 구별하기 어렵게 합니다.
Min Max 게임
- 이 전체 과정은 '최소화-최대화 게임(min max game)'이라고 불립니다. 생성자는 자신의 손실을 최소화하려고 하고(가짜를 진짜처럼 만들기), 감별자는 자신의 손실을 최대화하려고 합니다(진짜와 가짜를 정확하게 구별하기).
- 게임의 결과는 균형점에 도달할 때까지 계속됩니다. 이 균형점에서 감별자는 더 이상 진짜와 가짜를 구별할 수 없게 되며, 생성자는 매우 정교한 가짜 데이터를 만들어내게 됩니다.
요약하자면, 이 게임은 감별자가 진짜와 가짜를 구별하도록 훈련시키는 한편, 생성자는 실제 데이터와 구별하기 힘든 가짜 데이터를 생성하도록 훈련시키는 과정입니다. 이 경쟁을 통해 생성자는 점점 더 진짜 같은 데이터를 만들어낼 수 있게 되고, 감별자는 더 정교한 판별 능력을 개발하게 됩니다.이 그림은 GAN(생성적 적대 신경망) 학습 과정의 여러 단계를 나타내고 있습니다. 각각의 부분은 GAN이 어떻게 생성자(Generator)와 감별자(Discriminator)를 동시에 훈련시키는지를 시각적으로 보여줍니다. 여기서 \( p_x \)는 실제 데이터 분포를, \( p_g \)는 생성자가 만들어내는 데이터 분포를 나타내며, 파란색 선은 감별자의 판별 경계를 나타냅니다. 각 그림을 단계별로 살펴보면 다음과 같습니다:
(a) 초기 단계
- 초록색 선인 \( p_g \)는 생성자가 만들어내는 가짜 데이터의 분포입니다. 처음에는 실제 데이터 분포(검은색 선)와는 상당히 다릅니다.
- 파란색 선은 감별자의 판별 경계를 나타내며, 이 단계에서는 감별자가 가짜 데이터와 실제 데이터를 구분하는 데 있어 명확한 경계를 가지고 있지 않습니다.
- 감별자는 가짜와 진짜를 구별하려 시도하지만 완벽하지 않기 때문에, 일부 영역에서 실수를 하고 있습니다.
(b) 감별자 훈련 후
- 이 단계에서는 감별자가 더 많이 훈련되어, 가짜와 실제 데이터를 잘 구분하고 있습니다. 감별자의 판별 경계가 최적화되어, 실제 데이터는 진짜로, 가짜 데이터는 가짜로 잘 구별하고 있습니다.
(c) 생성자 업데이트 후
- 생성자는 감별자의 판별 경계를 기반으로 업데이트되어, 더 실제 데이터와 비슷한 가짜 데이터를 생성하게 됩니다.
- 결과적으로 \( p_g \)가 \( p_x \)에 더 가까워집니다. 즉, 생성자가 만드는 가짜 데이터 분포가 실제 데이터 분포와 유사해집니다.
(d) 수렴 단계
- 여러 번의 반복 학습을 통해, 생성자와 감별자가 충분한 능력(capacity)을 가질 경우, \( p_g \)는 \( p_x \)와 동일해질 수 있습니다. 이는 생성된 가짜 데이터가 실제 데이터와 구별할 수 없을 만큼 유사하다는 것을 의미합니다.
- 감별자는 더 이상 가짜와 진짜를 구별할 수 없게 되어, 모든 데이터에 대해 무작위로 진짜라고 판별할 가능성이 50%가 되며, 이는 감별자가 더이상의 학습으로 성능을 개선할 여지가 없음을 나타냅니다.
이 과정을 통틀어 보면, GAN은 두 네트워크가 서로를 향상시키는 방향으로 지속적으로 학습하며, 결국에는 생성자가 실제와 구별할 수 없는 정도의 높은 품질의 가짜 데이터를 생성할 수 있게 됩니다. 이것은 일종의 경쟁적 학습 과정으로, 두 모델 모두가 서로의 성능을 끌어올리는 결과를 낳습니다.'AI > 논문 리뷰' 카테고리의 다른 글