VAE(Variational Autoencoder)는 오토인코더(자기부호화기)라는 신경망의 발전 형태를 기반에 두었다. 오토인코더는 인코더와 디코더로 구성되어 있다.
[Autoencoder]
입력과 출력의 크기는 같고, 은닉층의 크기는 그보다 작다. 신경망은 출력에서 입력한 데이터를 재현하도록 학습하지만, 은닉층의 크기는 입력보다 작다. 인코더로 데이터를 압축하고 디코더로 압축한 데이터를 원래 데이터로 복원한다. 입력 데이터가 이미지라면 은닉층은 인코더와 디코더를 이용해 원래 이미지보다 적은 데이텨 양으로 이미지의 특징을 유지 한다. 즉 오토인코더는 신경망을 이용한 입력의 압축과 복원이라고 이해하면 쉽다.
오토인코더는 지도 데이터가 필요 없으므로 비지도 학습이다. 입력과 출력의 차이를 이용해 비정상적인 값을 찾을 수 있으므로 산업 현장의 문제 부분 감지 등에 사용한다.
[VAE]
생성모델(generative model) 은 훈련 데이터를 학습한 후 해당 데이터와 비슷한 새로운 데이터를 생성하는 모델이다. 딥러닝에서는 생성 모델을 사용해 데이터를 생성하기도 한다. 생성 모델은 VAE와 GAN이 대표적이다.
VAE(Variational autoencoder)는 잠재변수(latent vatiable)를 이용하여 훈련 데이터의 특징을 파악한 후 훈련 데이터와 비슷한 데이터를 생성한다.
VAE는 먼저 인코더를 이용해 입력에서 평균 벡터 $\mu$와 분산 벡터$\sigma$를 계산 합니다. 이를 바탕으로 잠재 변수 z를 확률에 따라 샘플링한 후, 디코더를 이용해 z에서 원래 데이터를 재현한다.
VAE의 특징 중 하나는 잠재 변수 z를 조정하여 연속해서 변하는 데이터를 생성할 수 있다.
잠재 변수 z를 연속해서 변화시켜 생성되므로 매번 값이 변화한다. 따라서 노이즈의 영향을 적게 받고 연속 분포이므로 출력 특성을 조절할 수 있다. VAE는 실제로 노이즈 제거, 문제 발견, 클러스터링 등에 활용된다.
'Deep Learning' 카테고리의 다른 글
Tensorflow Initializer 초기화 종류 (0) | 2021.02.18 |
---|---|
VAE(Variational Autoencoder) (2) (0) | 2021.02.18 |
nvidia-smi 옵션 (0) | 2021.02.16 |
RNN을 이용한 이미지 생성(feat.MNIST) (0) | 2021.02.15 |
[DL] GRU (gated recurrent unit) (0) | 2021.02.10 |