비지도 학습(unsupervised learning) : 데이터는 제공하지만 명확한 정답은 제공하지 않는 학습 방법

 

목적

  1. 데이터 압축
  2. 차원축소
  3. Discovering most important features

 

오토인코더(Autoencoder)는 아래의 그림과 같이 단순히 입력을 출력으로 복사하는 신경망이다. 어떻게 보면 간단한 신경망처럼 보이지만 네트워크에 여러가지 방법으로 제약을 줌으로써 어려운 신경망으로 만든다. 예를들어 아래 그림처럼 hidden layer의 뉴런 수를 input layer(입력층) 보다 작게해서 데이터를 압축(차원을 축소)한다거나, 입력 데이터에 노이즈(noise)를 추가한 후 원본 입력을 복원할 수 있도록 네트워크를 학습시키는 등 다양한 오토인코더가 있다. 이러한 제약들은 오토인코더가 단순히 입력을 바로 출력으로 복사하지 못하도록 방지하며, 데이터를 효율적으로 표현(representation)하는 방법을 학습하도록 제어한다.

출처: https://excelsior-cjh.tistory.com/187 [EXCELSIOR]

<그림출처 : https://excelsior-cjh.tistory.com/187>

 

종류

1. Stacked 오토인코더

 : 여러개의 히든 레이어를 가지는 오토인코더

Tip 
한 번에 전체 오토인코더를 학습시키는 것보다 한 번에 오토인코더 하나를 학습하고, 이를 쌓아올려서 stacked-오토인코더를 만드는 것이 훨씬 빠르며, 깊은 오토인코더일 경우에 유용하다.

<그림출처 : https://excelsior-cjh.tistory.com/187>

 

2. Denoising 오토인코더

 :  입력에 노이즈(noise, 잡음)를 추가하고, 노이즈가 없는 원본 입력을 재구성하도록 학습시킨다.

노이즈 추가방법
입력에 가우시안(Gaussian) 노이즈를 추가하거나, 드롭아웃(dropout)처럼 랜덤하게 입력 유닛(노드)를 off 시킨다

 

3. Sparse 오토인코더

 :  좋은 특성을 추출하도록 희소성(sparsity) 제약을 추가시킨다. 이 방법은 손실함수에 적절한 항을 추가하여 오토인코더가 코딩층(coding layer, 가운데 층)에서 활성화되는 뉴런 수를 감소시킨다. 예를 들어 코딩층에서 평균적으로 5% 뉴런만 활성화되도록 만들어 주게 되면, 모델은 5%의 뉴런만을 조합하여 입력을 재구성해야하기 때문에 더욱 유용한 특성을 추출하게 된다.

4. VAE (Variational AutoEncoder)

   Generative 모델의 시초

 :  위의 다른 AutoEncoder와는 아래와 같은 차이점이 있다.

  1. 확률적 오토인코더, 학습이 끝난 후에도 출력이 부분적으로 우연에 의해 결정된다.
  2. 생성 오토인코더, 학습 데이터셋에서 샘플링된 것과 같은 새로운 샘플을 생성할 수 있다.
    <그림 출처 : https://excelsior-cjh.tistory.com/187>

<그림 출처 : https://velog.io/@ohado/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EA%B0%9C%EB%85%90-1.-VAEVariational-Auto-Encoder>

 

  • VAE의 인코더는 입력 데이터를 평균과 표준 편차 벡터로 인코딩 한 후, 두 벡터에 대응하는 분포에서 샘플링을 수행
  • 쿨백-라이블러 발산(KL divergence)을 손실함수로 사용하여, 해당 분포가 가우시안 분포(gaussian distribution, 표준정규분포)에 가까워지도록 학습
  • Latent vector는 가우시안 분포(gaussian distribution)에서 랜덤하게 샘플링되며, 디코더(decoder)가 원본 입력으로 재구성하게 된다.
  • 즉, VAE는 Latent vector를 통해 입력값과 유사한 새로운 데이터를 생성하는 것을 목표로 하게 된다.
반응형

+ Recent posts