-
220517-GAN교육/서울 ICT AI서비스 기획과정 2022. 6. 21. 11:01728x90
1. Generative Model
모델로부터 생성한 데이터가 실제 데이터와 비슷해지도록 학습해서 모델의 성능을 개선
실제 데이터의 분포와 생성한 데이터의 분포가 비슷해지도록 모델을 학습
비지도 학습이 데이터의 숨은 구조를 파악하는 학습이라면 GAN은 데이터의 분포를 추정하는 비지도 학습
데이터를 학습하여 데이터 분포 Pmodel(x)를 추정하고 추정된 분포 Pmodel(x)에 따라 샘플을 생성하는 모델
Manifold Hypothesis
다양체(Manifold)가설이라는 가정이 필요함
기계 학습에서 '다양체'의 정의
- 다양체는 높은 차원의 공간에 정의되어 있으나, 그보다 낮은 차원으로도 잘 근사할 수 있는 연결된 점들의 집합
- 고차원의 데이터들은 고차원의 공간에 고르게 퍼져있는 것이 아니라 그보다 저차원인 다양체에 밀집된 걸로 가정
위의 그림처럼 왼쪽에서 데이터들은 3차원 공간에 있지만 오른쪽처럼 풀어진 2차원 평면에 놓여있는 것으로 볼 수도 있음즉 3차우너 분포에서 뽑은 데이터가 3차원 공간 전체에 퍼져있는 것이 아니라 실제로는 2차원 다양체에만 밀집
학습하기 어려운 고차원의 데이터들도 그보다 저차원의 다양체에 밀집되어 있으므로, 생성 모델이 저차원 다양체의 분포를 학습하면 고차원의 데이터 분포도 학습할 수 있다는 근거
최대가능도(Maximum Likelihood)
위에서 학습 근거를 알았으니 학습 방법에 대해 알아보자
최대가능도는 전통적으로 자주 쓰이는 파라미터 추정 방법
임의의 데이터가 주어졌을 때 해당 데이터가 추출될 확률이 가장 높은 확률분포의 파라미터를 찾는 것
데이터와 파라미터가 주어졌을 때 가능도함수를 최대화하는 파라미터를 찾는 것을 말함
처리 불가능한(Intractable) 추론
문제는 베이지안 방법론이 많이 쓰이는 심층 신경망에서 최대 가능도 학습을 하는 경우, 단일 은닉층 내부 혹은 층 사이의 상호작용 때문에 사후 분포를 계산하기가 거의 불가능
이 경우, 근사 분포를 계산하는 간접적 방식을 쓰는데 그 방법 중 하나가 '변분 추론(Variational Inference)'
Auto-Encoder
입력과 비슷한 출력을 내도록 신경망을 훈련시켜, 은닉층에 입력데이터를 압축시켜 특징을 추출하는 기법
학습이 잘 되면 encoder를 통해서 특징을 압축하고 decoder를 사용해서 다시 입력과 유사한 출력을 내는 생성 모델
Variational AutoEncoder
Auto-Encoder는 결정 방식의 신경망 구조이지만 Variational Auto Encoder(VAE)는 확률 분포에 따른 샘플링
VAE의 encoder는 평균 벡터와 표준 편차 벡터 등을 학습하고 분포 함수를 통해 이 값들로부터 잠재 벡터 z를 샘플링
VAE의 decoder는 AutoEncoder의 경우와 유사하게 z를 x로 복원하는 역할 수행
VAE를 최적화할때 모든 z에 대해 고려하기 어려우므로 앞서 설명한 변분 추론 활용
Variational Auto Encoder와 Manifold
학습된 VAE에서 2-d인 z값을 변화함으로써 생성되는 데이터 다양체를 확인해보면 2차원인 z값의 축을 따라 학습된 특징들이 변화하는 것을 확인할 수 있음
z의 차원축에 따라 서로 다른 변화하는 요소가 인코딩됨
VAE->GAN
고차원 이미지를 사용하고 변분 추론 방식의 접근을 하는 것이 아니라, 저차원의 임의의 Random Noise를 원하는 이미지로 변형할 수 있게 Decoder를 잘 학습시킬 수 있다면 또 다른 생성 모델을 만들 수 있을 것
->적대적인 생성망, Generative Adversary Network
Implicit Density
GAN은 VAE와 달리 직접 가능도함수를 정의 혹은 근사하지 않고 신경망 두 개를 서로 적대적으로 학습하는 과정에서 학습 데이터의 분포와 모델 출력의 분포를 일치시킴
분포를 구하는 것보다 결과에 초점을 맞추기 때문에 굳이 분포함수를 구하지 않고 신경망 두개를 사용하는 간접적인(implicit) 방식 택함
2. GAN Overview
Neural Network를 이용한 생성 모델의 하나
더보기예시
‘ 지폐위조범(Generator)은 경찰을 최대한 열심히 속이려고 하고 다 른 한편에서는 경찰(Discriminator)이 위조된 지폐를 진짜와 감별하 려고 (Classify)노력한다. 이런 경쟁 속에서 두 그룹 모두 속이고 구별 하는 서로의 능력이 발전하게 되고, 결과적으로는 진짜 지폐와 위조 지폐를 구별할 수 없을 정도(구별할 확률 𝑃𝑑 = 0.5)에 이른다.’
이미지 등의 샘플을 만들어내는 네트워크(Generator)와 만들어진 샘플을 감별하는 네트워크(Discriminator)가 있어서 대립(Adversarial)하면서 서로의 성능을 점차 개선할 수 있는 구조로 만들어짐
GAN의 구조
1. 첫번째 신경망 Generator
Generator는 Rancom Noise를 입력받고 가짜 데이터를 출력
Discriminator를 속일 수 있을 정도의 가짜를 만들어내는 것이 목표
Generator는 Discriminator를 속일 수 있을정도로 Random Noise를 학습데이터와 유사한 패턴으로 변환하는 함수 학습
2. 두번째 신경망 Discriminator
Discriminator는 실제 학습 데이터와 Generator를 거쳐 만들어진 가짜 데이터를 입력받고, 입력된 데이터가 학습 데이터에 포함된 진짜 데이터일 확률을 출력
판별의 성공확률을 최대한 높이는 것이 목적이기 때문에 정분류율을 높여야하고 오분류율을 줄이는 방향으로 학습
3. 데이터의 확률 분포
Dataset을 구성하는 데이터들은 일반적으로 어떤 분포를 따름
만약 G가 해당 데이터의 확률 분포를 알아내서 정확히 모사할 수 있다면 G가 생성한 샘플은 실제 데이터와 구별할 수 없을 것
4. GAN의 학습방향 종합
Generative 모델 G는 입력된 Random Noise를 우리가 갖고 있는 데이터 x의 확률분포로 변환하는 함수 학습
discriminator 모델 D는 현재 자기가 보고 있는 샘플이 training data에서 온 진짜 data인지 혹은 G로부터 만들어진 것인지구별하여 각각의 경우에 대한 확률을 계산하고 진위 여부를 판별
5. Cost Function
하나의 cost function만 관리하면 되는 기존의 neural net들과는 다르게 Generator와 Discriminator 두개의 function을 관리
즉 2단계로 학습이 진행
6. 적대적 학습
- 처음 학습할 때는 Generator는 실제 데이터와는 다른 데이터를 생성하고 Discriminator는 진위를 제대로 구별하지 못하는 상태
- Discriminator부터 역전파시키는 구조이므로 처음에는 Generator가 Discriminator의 역전파에 영향을 받지 않도록 Generator의 가중치를 고정
- Generator에서 샘플을 생성하고 생성된 샘플을 실제 샘플과 함께 Discriminator를 통과
- 오차를 Back propagation해서 Discriminator의 가중치를 갱신하여 학습
- 이번엔 Generator를 학습
- 먼저 Discriminator의 가중치를 고정
- Generator가 샘플을 생성하고 Discriminator를 통과
- 오류를 Back propagation하여 Generator의 가중치를 갱신하여 학습
3. Minimax Game
GAN은 원하는 패턴을 생성하는 문제를 Minimax Game이론으로 접근
Minimax Game이란?
발생할 수 있는 손실 중 가장 최대의 손실을 최소화하는 의사결정 원칙
즉, 발생 가능한 최악의 손실(loss)를 최소로 줄이는 방법
패턴을 출력하는 GAN은 패턴을 잘 생성해내는 게 목적
Generator의 입장에서 Minimax Game을 적용해야함
Generator의 입장에서 가장 최악(max)의 경우는 Discriminator가 주어진 임의의 데이터를 완벽히 파악하는 것->Discriminator의 판별 정확도(loss)를 최소화(min)하는 방향으로 학습이 진행
이 때 Discriminator의 판별 정확도 중 최솟값을 0.5(O/X를 구분할 수 없어 무작위로 고를 때 확률이 0.5라서)
->학습이 진행될수록 Discriminator가 주어진 데이터를 판별할 확률은 0.5로 수렴해야함
GAN의 Discriminator와 Generator는 학습을 거듭하면서 평형상태에 도달
(a)는 아직 학습 데이터 분포와 G의 데이터 분포가 다르기 때문에 D의 출력이 흔들리고 부분적으로 일치
(b)와 (c)에서 학습을 진행하며 G의 분포와 학습 데이터의 분포가 점점 근접
(d)에서 정확히 일치하면서 D가 최적의 평형 상태인 0.5에 도달
4. GAN 목적함수
1. 기호 정의
D(x)=Discriminator가 출력하는 값, 임의의 sample x가 주어진 실제 data일 확률
G(z)=Random Noise z를 입력받아 Generator가 만든 sample
2. 최적화 방향
- 실제 데이터로부터 뽑힌 sample x가 Discriminator에 입력되면 G(x)=1이 되도록
- Generator가 만든 sample G(z)가 Discriminator에 입력되면
- Discriminator입장에서는 D(G(z))=0이 되도록
- Generator의 입장에서는 D(G(z))=1이 되도록
3. GAN의 목적함수
첫번째 항은 D는 학습데이터를 진짜라고 판단할 수 있는 능력
두번째 항은 D가 G에서 만든 데이터를 가짜라고 판정할 수 있는 능력
Discriminator는 가짜와 진짜에 대한 구별을 잘 하는 방향으로 학습을 진행해야하기 때문에 위 함수를 크게 만드는 방향으로 학습 진행, 즉 경사 상습법 사용하여 학습
목적함수가 최대가 되려면 logD(x)는 최대가 되어야 하고 log(1-D(G(z)))는 최소가 되어야함
->D(x)는 최대, 1-D(G(z))는 최소가 되어야함
Generator는 D를 속일 수 있을정도로 진짜같은 가짜를 만드는 방향으로 학습을 하며 목적함수의 첫번째 항은 G와 무관하기 때문에 두번째 항을 작게 만드는 방향으로 학습 진행, 즉 경사 하강법을 사용하여 학습
1-D(G(z))는 D가 G로부터 입력받은 sample이 real data가 아니라고 분류할 확률이므로 최소가 되어야함
하지만 G는 이 목적함수를 경사하강법으로 사용하면 학습이 잘 진행되지 않는 문제 존재
why?
학습 초기에는 G가 진짜 같은 가짜 이미지를 만들어낼 능력이 부족해서 D가 쉽게 가짜를 구별해냄
gradient값이 작기 때문에 학습이 잘 되지 않음
그래서 1-D(G(z))대신 D(G(z))가 최대가 되는 방향으로 학습을 하면 초기에 큰 gradient를 확보하면서 문제 해결
5. WGAN
분포의 유사도를 측정하는 지표에는 Generative Model에 많이 쓰이는 KL-Divergence 등이 있는데 그 중 Wasserstein Distance를 GAN에 적용한 모델
Wassertein Distance
=Earth-mover Distance
inf는 최소비용에만 관심이 있음, r(x,y)는 옮긴 흙의 전체양, ||x-y||는 전체 이동 거리
특정 확률분포를 따르는 흙더미가 다른 분포가 되도록 옮겨야 하는 최소한의 흝더미 양으로 해석 가능
Wasserstein Distance를 사용하면 다른 기준을 사용해서 분포의 유사도를 측정했을때보다 두 분포의 차이에 상관없이 일반적으로 안정적인 미분값을 보여주는 특성이 있어서 GAN학습이 안정적으로 이뤄지는 것으로 알려져 있음
6. Conditional GAN
이미지를 생성할 때 GAN을 쓰면 학습에 사용한 이미지와 유사한 가짜 이미지를 만들어낼 수 있음
실제 이미지와 똑같은 이미지를 만드는 것이 궁극적인 목표인데 어떤 이미지를 만들어내는지 제어할 수 없었음
->그래서 등장한 Conditional GAN
구조
Generator는 노이즈 z와 새로운 조건 x를 입력받아 가짜 데이터를 출력
출력된 가짜 데이터는 Discriminator의 입력으로 들어가 Generator의 가짜 데이터와 조건 x,실제 데이터를 입력받아 진위 여부 판별
'교육 > 서울 ICT AI서비스 기획과정' 카테고리의 다른 글
220517-CNN (0) 2022.05.23 220516 (0) 2022.05.23 220510 (0) 2022.05.23 220509 (0) 2022.05.23 220504 (0) 2022.05.23