Autoencoder(오토인코더)란 representation learning 작업에 신경망을 활용하도록 하는 비지도 학습 방법
이때, 데이터를 압축하는 부분을 Encoder, 복원하는 부분을 Decoder 라고 하며 압축과정에서 추출한 의미 있는 데이터 Z를 보통 latent vector 라고 부르며 이를 latent variable, feature 과도 같이 부른다
Input 데이터로 데이터가 들어오면 특징을 추출하여 Output 데이터로 원본 데이터를 재건한다
오토인코더가 특징 추출기처럼 작동하여 심층신경망의 비지도 학습 에 사용될 수 있다
가장 기본적인 Autoencoder 구조의 경우 input layer, hidden layer, output layer 로 이루어진 Autoencoder 구조이고 이 구조에서 hidden layer의 개수를 늘린것을 stacked autoencoder 혹은 Deep autoencoder 라고 부른다
Sparse Autoencoder 은 기본적인 Autoencoder 의 구조와는 다르게 Hidden layer 내의 Node 수가 더 많아진다.
Autoencoder 를 사용하게 되면 원본데이터의 Feature 를 압축하다보면, 다른 데이터가 들어와도 training set 과 비슷하게 만들어버리는 overfitting 의 문제점이 존재하는데 , 이를방지하기 위해 Sparse Autoencoder 를 사용한다. Sparse Autoencoder 를 사용하게 되면 overfitting 을 줄이는 효과가 있다
Sparse AutoEncoder 를 통해 sparse(0이 많은) 한 노드들을 만들고, 그 중에서
0과 가까운 값들은 전부 0으로 보내버리고 0 이 아닌값들만 사용하여 네트워크 학습을 진행한다.
Denoising Autoencoder 은 입력층에서 Hidden layer로 갈 때, Noise를 추가한 것이다.
이러한 Noise 를 추가하였을 때 사람의 인식으로는 같은 데이터라고 느끼지만 실제로는 성능향상의 효과를 얻을 수 있다.
VAE 는 Input image X 를 잘 설명하는 feature 를 추출하여 Latent vector z 에 담고, Latent vector z 를 통해 X와 유사하지만 새로운 데이터를 생성하는 것을 목표로 한다. 이떄, 각 feature는 가우시안 분포를 따른다고 가정하고 평균과 분산값을 나타내어 준다.
VAE는 확률적 오토인코더이다. 따라서 학습이 끝난 이후에도 출력이 부분적으로 우연에 의해 결정된다.
VAE는 생성 오토인코더이며, 학습 데이터셋에서 샘플링된 것과 같은 새로운 샘플을 생성할 수 있다.
VAE는 생성 모델이기 때문에, 디코더를 학습시키는 것을 주 목적으로 한다
VAE 의 인코더는 주어진 입력에 대하여 평균 코딩과, 표준편차 코딩을 만든다
실제 코딩은 가우시안 분포에서 랜덤하게 샘플링되며, 이렇게 샘플링된 코딩을 디코더의 입력으로 사용해 원본 입력으로 재구성하게 된다
VAE의 손실함수
재구성 손실 (Reconstruction loss)
이고, 두번째로, 가우시안 분포에서 샘플링 된 것같은 코딩을 가지도록 인코더를 제어하는 latent loss
이다.참고/레퍼런스
excelsior-cjh.tistory
pebpung.github.io
hyen4110.tistory
inspaceai.github.io
wooono.tistory
analysisbugs.tistory