Autoencoder를 활용한 차원 축소 및 특징 추출
Autoencoder를 활용한 차원 축소 및 특징 추출
1. 개념
Autoencoder는 입력 데이터를 압축한 뒤 다시 복원하는 비지도 신경망입니다. Encoder → Latent Space → Decoder 구조로 구성됩니다.
✅ 목표: 입력과 복원 데이터의 차이를 최소화하면서 중요한 특징만 추출하는 것
2. 적용 방법
목적 | 설명 |
차원 축소 | 고차원 데이터를 중요한 정보만 남기고 축소 |
특징 추출 | Encoder의 Latent Output을 새로운 Feature로 활용 |
3. 실무 코드 (PyTorch)
import torch
import torch.nn as nn
from torch.utils.data import DataLoader, TensorDataset
X = torch.rand(1000, 100)
class Autoencoder(nn.Module):
def __init__(self):
super().__init__()
self.encoder = nn.Sequential(
nn.Linear(100, 64), nn.ReLU(),
nn.Linear(64, 32), nn.ReLU(),
nn.Linear(32, 10)
)
self.decoder = nn.Sequential(
nn.Linear(10, 32), nn.ReLU(),
nn.Linear(32, 64), nn.ReLU(),
nn.Linear(64, 100), nn.Sigmoid()
)
def forward(self, x):
latent = self.encoder(x)
output = self.decoder(latent)
return output, latent
model = Autoencoder()
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
loader = DataLoader(TensorDataset(X, X), batch_size=64, shuffle=True)
for epoch in range(20):
for x_batch, _ in loader:
optimizer.zero_grad()
output, _ = model(x_batch)
loss = criterion(output, x_batch)
loss.backward()
optimizer.step()
with torch.no_grad():
_, latent_features = model(X)
4. 장단점
구분 | 내용 |
장점 | 비선형 구조 학습, 노이즈 제거, 복잡한 데이터에 유리 |
단점 | 학습 시간 필요, 과적합 위험, 구조 설계 필요 |
5. 기대 효과
- 복잡한 고차원 데이터의 효과적 압축
- PCA보다 우수한 비선형 특징 보존
- 클러스터링이나 분류 전 처리로 활용
6. 사용 시기
상황 | 설명 |
고차원 이미지, 텍스트 | ResNet, BERT 출력 압축 시 |
노이즈 제거 | Denoising Autoencoder로 활용 |
클러스터링 전 처리 | Latent space를 KMeans 등에 활용 |
7. 실무 팁
- BatchNorm, Dropout으로 안정적 학습 유도
- 과적합 방지를 위한 EarlyStopping 활용
- Latent Vector 분포 시각화로 검증
8. 응용 코드: Autoencoder + KMeans
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
with torch.no_grad():
_, z = model(X)
kmeans = KMeans(n_clusters=5)
labels = kmeans.fit_predict(z.numpy())
pca = PCA(n_components=2)
z_2d = pca.fit_transform(z.numpy())
plt.scatter(z_2d[:, 0], z_2d[:, 1], c=labels, cmap='rainbow')
plt.title("Autoencoder 기반 KMeans 시각화")
plt.show()
9. 요약
항목 | 내용 |
목적 | 고차원 비정형 데이터 압축 및 특징 추출 |
구성 | Encoder → Latent → Decoder |
활용 | 클러스터링, 이상 탐지, 시각화 등 |
비교 | PCA(선형)보다 유연함 |