저번 포스팅에서 오토인코더의 기본적인 개념에 대해서 알아 보았다. 

복습하면 오토인코더는 딥러닝을 2개 붙여놓은 것으로 

  • 하나의 딥러닝 구조는 Encoder로 Hidden(latent space)로 압축 하는 것. 
  • 하나의 딥러닝 구조는 Decoder Hidden(latent space)으로 압축된 것에서 원본으로 복원하는 것. 

이다. 즉, 단순히 출력 =입력이 되도록 하는 개념이다. 하지만 이런 Autoencoder도 여러 기법을 사용한다. 

예를 들어서 Denoising autoencoder, 그리고 Stacked encoder와 같은 방법이 존재한다. 

Denoising autoencoder(https://excelsior-cjh.tistory.com/187)

입력에 Noise를 추가하고 노이즈가 없는 우너본 입력을 Decoder가 구성하도록 학습시키는 것. 

Denoising AE 

일반적으로 Gaussian Random을 추가하며, 복원할 떄는 입력된 초기 값을 복원한다. 

- Denoising Auto Encoder를 사용하면 (Training Data + Noise) - Training Data를 학습한 결과가 Encoder에 넣어져서 노이즈를 붙이기 전 데이터와 노이즈를 붙였을 때 Data와의 차이를 구한다.

- 어떤 Data가 Noise에 대해 강력한 지 알 수 있다. 

- 예) 사람이라면 머리, 눈, 코가 가장 강력하게 구분하는 데 강력한 영향을 미치고, 주근깨 등은 적은 영향을 미침. 

- 따라서 Denoising Auto Encoder를 잘 활용하면 데이터가 별로 없는 상황에서도 어떤 특성이 가잔 영향력을 많이 미치는 지 비지도 학습으로 딥러닝을 수행할 수 있다. 

Stacked Auto Encoder(http://jaynewho.com/post/9)

Stacked Encoder의 구조

Auto Encoder자체가 비지도 학습이지만 Stacked Encoder는 Latent Space를 더 많이 사용하여 레이블되지 않은 데이터가 많을 때 사용하는 방법이다. 즉, Hidden layer를 더 많이 사용함으로써, 1)  전체 데이터를 학습시켜서 데이터를 레이블링한 다음 2)  하위 레이어를 사용하여 다시 학습시키는 방법을 사용하여 성능을 증가 시키는 방법을 사용한다. 

이 방법으로 일반적인 오토인코더보다 성능이 훨씬 개선되지만 정확한 수식이나 코드는 아직 보지 못했다. 최근에는 Denoising과 Stacked Auto Encoder를 섞어서 사용하는 것 같은데 이러한 방법에 대해서도 알아 봐야 할 것 같다. 다음에는 이, Stacked Denoising Auto Encoder아니면 Stacked나 Denoising Autoencoder의 코드를 알아 보도록 하겠다. 

-끝- 

 

 

+ Recent posts