AutoEncoder는 입력 데이터를 압축했다가 복원하는 과정을 통해
특징을 학습하는 비지도 학습모델을 의미한다. AutoEncoder는 잡음 제거,
이상 감지, 이미지 생성, 텍스트 번역 등 다양한 분야에서 활용된다.

01. Autoencoder 기본 개념

  • Encoder : 입력 데이터를 저차원 잠재 공간(latent space)으로 압축
  • Latent space : 정보가 압축된 표현(코드)
  • Decoder : 잠재 공간에서 원래 입력으로 복원

02. 수식으로 정리

(1) Encoder

z=fθ(x)z = f_{\theta}(x)
  • fθ(x)f_{\theta}(x) : Encoder 함수, 파라미터 θ\theta
  • 보통 선형 + 활성화 함수 형태(예시: Linear, ReLU)

(2) Decoder

x^=gϕ(z)\hat{x} = g_{\phi}(z)
  • gθg_{\theta} : Decoder함수, 파라미터 ϕ\phi

(3) 손실 함수(Loss function)

  • 목표는 복원된 x^\hat{x}가 입력 xx와 최대한 유사하도록 학습하는 것
    보통 MSE(Mean Squared Error) 사용
L(x,x^)=xx^2=xgϕ(fθ(x))2\mathcal{L}(x, \hat{x}) = \|x-\hat{x}\|^2=\|x-g_{\phi}(f_{\theta}(x))\|^2

03. 구조적 특징

  • 병목 구조 : 중간 차원을 의도적으로 축소해 중요한 정보만 통과시킴
  • 비지도학습 : 라벨 없이 입력 데이터만으로 학습
  • 재구성기반 : 입력 복원을 통해 특징을 학습
  • 잡음 제거 : Denoising Autoencoder는 일부러 노이즈를 주고 원래를 복원

04. Autoencoder 종류

  • Vanilla Autoencoder : 기본 구조
  • Denoising Autoencoder : 노이즈 추가 후 복원
  • Sparse Autoencoder : 활성 노드 수에 제약 (희소성)
  • Variational Autoencoder (VAE) : 잠재공간에 확률 분포 적용
  • Convolutional Autoencoder : CNN 기반, 이미지 입력에 적합

05. Pytorch 구조 예시

import torch
import torch.nn as nn
import torch.optim as optim

# Autoencoder 클래스 정의
class Autoencoder(nn.Module):
    def __init__(self):
        super(Autoencoder, self).__init__()
        
        # encoder
        self.encoder = nn.Sequential(
            nn.Linear(784, 128),
            nn.ReLU(),
            nn.Linear(128, 64)
        )
        
        # decoder
        self.decoder = nn.Sequential(
            nn.Linear(64, 128),
            nn.ReLU(),
            nn.Linear(128, 784),
            nn.Sigmoid() # 입력이 [0,1]이면 사용
        )
    
    def forward(self, x):
        z = self.encoder(x)
        out = self.decoder(z)
        return out

# 모델, 손실 함수, 옵티마이저 정의
model = Autoencoder()
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=1e-3)

# 데이터 예시: MNIST처럼 784차원 벡터 사용
x = torch.rand((16, 784))  # batch size 16
output = model(x)
loss = criterion(output, x)
loss.backward()
optimizer.step()

06. 읽으면 좋을 자료 리스트

회사 다니면서 여기까지 챙겨볼 여유가 있을지는 모르겠지만, 일단 나중에 보기 위해서라도 리스트를 남겨두었다. 사실 이것 말고도 arxiv에서
Autoencoder 관련 논문은 넘치지만, 여기 나열한 것 읽고 나서 생각하자.

profile
2025화이팅!

0개의 댓글