<aside>
✅ 입력이 들어왔을 때, 해당 입력 데이터를 최대한 압축시킨 후, 데이터의 특징을 추출하여 다시 본래의 입력 형태로 복원시키는 신경망

</aside>
- Encoder : 인지 네트워크, 입력을 내부 표현으로 변환시키는 것을 말함
- Decoder : 생성 네트워크, 내부 표현을 출력으로 변환시크는 것을 말함
<aside>
✅ 데이터를 압축하는 부분을 Encoder, 복원하는 부분을 Decoder라고 하며 압축 과정에서 추출한 의미 있는 데이터를 Z로 보통 latent vector라고 부르며 이를 latent variable, feature 라고도 부름
</aside>
사용)
특징 추출기처럼 사용하여 심층 신경망의 비지도 학습에 사용될 수 있음
활용)
- 차원 감소
- 인코더는 입력을 선형 및 비선형의 데이터로 차원을 줄이기 위하여 hidden layer로 인코딩
- 이상 탐지
- Auto Encoder는 훈련의 일부로 재구성 오류 최소화하려 함, 재구성 손실의 크기를 통하여 이상치 탐지를 가능하게 한다.
- 이미지 잡음제거
- 이미지 인식
- 겹겹이 쌓인 Auto Encoder 이미지의 다른 특성을 학습하여 이미지 인식에 사용
- 이미지 생성
- Auto Encoder 한 종류인 변형 Auto Encoder(VAE, Variational Autoencoder) 이미지 생성에 사
<aside>
✅ Stacked Autoencoder

가장 기본적인 Autoencoder 구조 : input_layer, hidden_layer, output_layer 구성
위 구조에서 hidden_layer 개수를 늘린 것을 stacked autoencoder, deep autoencoder로 부름
- layer를 추가할수록 Auto Encoder가 더 복잡한 코딩을 학습
</aside>
<aside>
✅ Saprse Autoencoder

hidden_layer 내 노드 수를 증가 시킨다.
- 원본 데이터의 Feature 압축시키게 되면, 다른 데이터가 들어와도 training set과 비슷하게 만들어버리는 overfitting를 방지
- Sparse AutoEncoder 통해 sparse 한 노드들을 만들고, 그 중에서 0과 가까운 값들은 전부 0으로 보내버리고 0이 아닌 값들만 사용하여 네트워크 학습 진행
</aside>
<aside>
✅ Denoising Autoencoder

입력 층에서 hidden_layer 로 갈 때, Noise 추가한 것
- 성능 향상의 효과를 얻을 수 있음
</aside>
<aside>
✅ Variational Autoencoder

vae 인코더는 주어진 입력에 대하여 평균 코딩과, 표준편차 코딩을 만듬
- 실제 코딩은 가우시안 분포에서 랜덤하게 샘플링되며, 이렇게 샘플링된 코딩을 디코더의 입력으로 사용해 원본 입력으로 재구성 가능
vae 손실함수
- vae 손실함수는 두 부분으로 구성되어 있으며 첫 번째로, 오토인코더가 입력을 재구성하도록 만드는 일반적인 재구성 손실이고 두 번째로 가우시안 분포에서 샘플링 된 것같은 코딩을 가지도록 인코더를 제어하는 latent loss이다.
</aside>