[AI] 생성 모델 ( 오토인코더, GAN, PixelCNN, PixelRNN )

2023. 6. 11. 21:48

생성 모델

주어진 학습 데이터를 기반으로 해당 분포에서 새로운 샘플을 생성한다. 

우리는 P_model(x)를 얻어서 새로운 x를 샘플링하는 것이 목적이다. 

  • 명시적(explicit) 밀도 추정 : P_model(x) 를 명시적으로 정의하고 찾아내는 방법
  • 암시적(implicit) 밀도 추정 : P_model(x)를 명시적으로 정의하지 않고도 샘플링 할 수 있는 모델을 학습하는 방법

 

화소를 독립적으로 생각하여 이미지를 생성하는 모델

  • 확률적 생성모델
    화소 별로 확률을 파악해 랜덤으로 생성한다. 

MINST에 확률적 생성 모델을 적용한 모습

화소별로 학습해 생성한 결과는 그리 좋지 않게 보인다. 그래서 뒤쪽에 나오는 오토인코더나 GAN 등이 만들어졌다. 

 

화소가 서로 독립적이지 않다고 생각하는 모델

  • PixelRNN
    순환 신경망을 이용하여 생성하는 방법
    새롭게 생성된 픽셀이 다음 픽셀을 생성할 때 영향을 준다. (왼쪽 위에서 부터 한개씩 생성)

 

  • PixelCNN
    합성곱 신경망을 이용한 방법이다. 

고정된 주변 영역 값이 학습 이미지에서 알려져 있으므로 컨볼루션을 병렬화 가능해 PixelRNN보다 학습이 빠르다는 장점이 있다. 

 

오토인코더 (Autoencoder)

입력 패턴과 출력 패턴이 같은 신경망이다. 사람이 레이블을 달 필요가 없는 비지도 학습이며 영상 압축, 잡음 제거, 특징 추출, 생성 모델에 사용한다. 

입력과 출력의 차이를 최소화하는 방향으로 학습한다. 

보통 인코더와 디코더는 대칭한 형태로 제작을 한다. 

 

GAN ( 생성 적대 신경망 )

2개의 신경망이 적대적인 관계에서 학습하는 생성 모델

판별망 D와 생성망 G가 있다. D와 G를 번갈아가면서 학습한다.

판별망 D는 분류하는 사진의 진짜와 가짜를 분류한다. 판별망에는 G가 생성한 가짜 샘플과 실제 사진 샘플이 들어오는데 이를 구분하면 된다. 
생성망 G는 가짜 샘플을 만들어 D를 속이는 역할을 한다. 생성망을 학습시킬 때는 판별망이 학습되는 것을 막기 위해 가중치를 고정해둔다. ( + G 가 생성한 가짜 샘플에 레이블 1을 붙여서 학습한다. = 속이는게 목표 )

 

GAN이 완벽하게 학습 된다면 생성망은 진짜와 가짜를 구분할 수 없는 데이터를 생성하고 분별망은 진짜와 가짜에 대해 랜덤한 결과를 내보낸다. ( T : 1/2 , F : 1/2 ) 

BELATED ARTICLES

more