오토인코더(Autoencoder)는 입력을 압축한 후 복원하는 방식으로 학습하는 비지도 신경망이다. 인코더가 입력을 저차원 잠재 공간(Latent Space)으로 압축하고, 디코더가 이를 다시 원래 차원으로 복원한다.
구조
입력 x → [인코더] → 잠재 벡터 z → [디코더] → 재구성 x̂
손실: L = ||x - x̂||²
python
import torch
import torch.nn as nn
class Autoencoder(nn.Module):
def __init__(self, input_dim=784, latent_dim=32):
super().__init__()
# 인코더
self.encoder = nn.Sequential(
nn.Linear(input_dim, 256),
nn.ReLU(),
nn.Linear(256, latent_dim)
)
# 디코더
self.decoder = nn.Sequential(
nn.Linear(latent_dim, 256),
nn.ReLU(),
nn.Linear(256, input_dim),
nn.Sigmoid()
)
def forward(self, x):
z = self.encoder(x)
return self.decoder(z)
model = Autoencoder()
x = torch.randn(32, 784)
recon = model(x)
loss = nn.MSELoss()(recon, x)
오토인코더 변형
| 종류 | 특징 | 용도 |
|---|
| 기본 AE | 단순 복원 | 차원 축소, 특징 추출 |
| 잡음 제거 AE | 손상된 입력 복원 | 데이터 정제 |
| 희소 AE | 잠재 벡터 희소 제약 | 특징 선택 |
| VAE | 확률적 잠재 공간 | 생성 모델 |
| β-VAE | 분리된 표현 학습 | 표현 학습 |
활용
- •이상 탐지: 정상 패턴만 학습 후 복원 오류로 이상 탐지
- •차원 축소: PCA보다 비선형 관계 포착
- •추천 시스템: 협업 필터링
- •이미지 압축 및 노이즈 제거
관련 개념