모두의 AI
머신러닝AI논문
로딩 중…

배우기

🏅내 업적

Ch.17

오토인코더: 압축했다가 복원하기

오토인코더: 압축과 복원

긴 설명을 메모 한 줄로 줄였다가 다시 풀어 쓰는 복원 연습과 비슷합니다.

입력 xxx를 인코더가 잠재 병목 zzz로 압축하고, 디코더가 다시 x^\hat{x}x^로 펼칩니다. 재구성 손실이 작을수록 원본과 비슷해집니다.

입력 x인코더병목 z디코더손실

학습 흐름 한눈에

  1. ① 입력: 벡터·이미지 등 원본 데이터 xxx를 넣습니다.
  2. ② 인코더: xxx를 저차원 잠재 표현 zzz로 압축합니다.
  3. ③ 병목: zzz의 차원이 작아 정보가 요약됩니다.
  4. ④ 디코더: zzz에서 x^\hat{x}x^로 공간을 다시 펼칩니다.
  5. ⑤ 손실: xxx와 x^\hat{x}x^의 차이(MSE 등)를 줄이도록 학습합니다.
복잡한 이미지나 고차원 데이터 xxx를 신경망에 넣으면, 모델이 먼저 데이터의 뼈대만 남긴 중요한 요약 코드 zzz(잠재 표현, Latent Representation)로 압축(Encoding)합니다. 그리고 이 짧은 요약본만 보고 다시 원본과 똑같은 모양의 x^\hat{x}x^로 복원(Decoding)해내는 대칭 구조의 신경망, 이것이 바로 오토인코더(Autoencoder)입니다.
오토인코더의 유일한 학습 목표는 입력값(xxx)과 출력값(x^\hat{x}x^)의 차이를 줄이는 재구성 손실(Reconstruction Loss)을 최소화하는 것입니다. 정답 라벨(Label) 없이 데이터 그 자체를 정답으로 삼는 대표적인 비지도 학습(Unsupervised Learning)입니다. 이 장에서는 고차원 데이터를 좁은 '병목(Bottleneck)'으로 쥐어짜며 차원 축소와 이상 탐지를 수행하는 원리를 다지고, 다음 장(Chapter 18)에서 배울 생성 모델인 VAE(변분 오토인코더)의 튼튼한 기초를 세웁니다.

수식, 이렇게 읽으면 됩니다 (오토인코더)

1. 인코더·디코더 한 줄
z=fθ(x)z = f_\theta(x)z=fθ​(x), x^=gϕ(z)\hat{x} = g_\phi(z)x^=gϕ​(z). 손실은 예를 들어 L=∥x−x^∥22\mathcal{L} = \|x-\hat{x}\|_2^2L=∥x−x^∥22​ 입니다.
- zzz: 병목에서의 잠재 코드
- x^\hat{x}x^: 복원된 출력
x인코더z병목디코더x̂x와 x̂ 비교 · 재구성 손실
한 줄로: 입력 xxx가 인코더를 지나 좁은 zzz로 압축되고, 디코더가 x^\hat{x}x^로 펼칩니다. 원본 xxx와 비교해 손실을 줄입니다.
2. 병목과 압축
입력 차원 ddd, 병목 차원 k≪dk \ll dk≪d이면, 압축 비는 대략 k/dk/dk/d 입니다.
- kkk가 작을수록 더 강한 압축(정보 손실 가능)
- kkk가 클수록 복원은 쉬워지지만 요약력은 약해질 수 있음
3. 선형 오토인코더와 PCA
활성화가 선형이고 MSE를 쓰면, 특정 조건에서 주성분 방향과 연결되는 직관이 있습니다(데이터와 제약에 따라 다름).
- 비선형이면 더 풍부한 표현이 가능
4. 실무 팁
데이터 스케일을 맞추고, 병목·깊이를 조절하며, 필요하면 노이즈를 넣는 DAE로 견고한 표현을 학습합니다.

오토인코더: 압축했다가 복원하기

1. 오토인코더의 대칭 구조: 인코더와 디코더
개념: 입력 xxx를 인코더(Encoder) fθf_\thetafθ​가 잠재 벡터 z=fθ(x)z=f_\theta(x)z=fθ​(x)로 변환하고, 이를 디코더(Decoder) gϕg_\phigϕ​가 넘겨받아 x^=gϕ(z)\hat{x}=g_\phi(z)x^=gϕ​(z)로 되돌려 놓습니다. 이때 zzz의 차원은 원본 입력보다 훨씬 작은 병목(Bottleneck) 공간에 갇히게 됩니다.
직관적 비유: 목격자가 몽타주 화가에게 범인의 얼굴을 설명할 때, 수만 개의 픽셀을 다 묘사할 수는 없습니다. 대신 "눈이 처짐, 코가 높음, 입술이 얇음"이라는 3가지 핵심 특징(병목, zzz)만 압축해서 전달하고, 화가(디코더)는 이 요약본만 듣고 원본 얼굴을 똑같이 복원해 그리는 훈련과 완벽히 같습니다.
2. 손실 함수: 얼마나 똑같이 복원했나?
개념: 복원된 데이터가 원본과 얼마나 비슷한지 평가하기 위해, 실수 연속값 피처에는 픽셀 단위의 평균제곱오차(MSE)인 1d∑i(xi−x^i)2\frac{1}{d}\sum_i (x_i-\hat{x}_i)^2d1​∑i​(xi​−x^i​)2 를 주로 사용합니다. 데이터가 [0,1][0, 1][0,1] 사이로 정규화된 흑백 이미지라면 이진 교차 엔트로피(BCE) 를 쓰기도 합니다.
직관: 마치 원본 사진과 복사본 사진을 겹쳐 놓고, 불빛을 비춰보며 픽셀 하나하나가 얼마나 어긋났는지 오차 점수를 매기는 혹독한 채점관과 같습니다.
3. 왜 '병목(Bottleneck)'이 핵심인가?
개념: 만약 요약본 zzz의 크기가 원본과 똑같다면 어떨까요? 모델은 아무 특징도 학습하지 않고 단순히 입력값을 출력으로 '복사+붙여넣기(항등 함수)' 해버릴 것입니다. 병목을 좁게 쥐어짜야만, 신경망은 손실을 줄이기 위해 데이터에 숨겨진 진짜 패턴과 구조적 규칙만을 골라 zzz에 꾹꾹 눌러 담게 됩니다.
실전 (이상 탐지): 공장의 불량품 탐지에 탁월합니다. '정상' 제품 사진으로만 복원 훈련을 시켜두면, 처음 보는 '비정상(스크래치 등)' 사진이 들어왔을 때 모델은 이를 복원하는 방법을 몰라 재구성 오차가 확 치솟게 됩니다. 이 오차 크기로 불량을 잡아냅니다.
4. 노이즈 제거 오토인코더 (Denoising AE)
응용: 단순히 똑같이 복원하는 것을 넘어, 원본 데이터에 일부러 지지직거리는 가짜 노이즈(잡음)나 마스킹을 추가한 뒤, 이를 '깨끗한 원본'으로 복원하도록 아주 가혹하게 학습시킵니다. 이 과정을 거치면 모델은 겉보기 노이즈에 흔들리지 않는 데이터의 본질적인(Robust) 특징을 훨씬 깊게 파악하게 됩니다.
5. 잠재 공간(Latent space)이란?
개념: 잠재 공간은 픽셀·원시 특징이 아니라, 인코더가 만든 코드 zzz가 놓이는 저차원 벡터 공간을 말합니다. 각 데이터 샘플은 이 공간 안의 한 점(좌표 벡터)에 대응하고, 학습이 진행되면 비슷한 입력은 가까운 영역으로, 다른 패턴은 멀리 떨어지도록 기하학적 구조가 잡히는 경우가 많습니다.
오토인코더에서: 병목 차원 kkk가 곧 잠재 공간의 차원입니다. 디코더 gϕg_\phigϕ​는 이 공간의 점을 다시 원래 차원의 x^\hat{x}x^로 펼치는 역할을 합니다. (다음 장 VAE에서는 이 공간에 확률분포를 얹어 샘플링·생성으로 확장합니다.)
6. PCA(주성분 분석)는 무엇인가?
개념: PCA(Principal Component Analysis, 주성분 분석)는 여러 샘플이 모여 있는 고차원 데이터에서, 분산이 가장 크게 퍼지는 방향을 순서대로 찾아 서로 직교하는 주축(주성분, principal component)을 만드는 선형 차원 축소입니다. 데이터를 그 축들 위로 투영하면 앞쪽 몇 개 축만 남겨도 원본 분포를 가능한 한 많은 분산을 유지한 채 요약한 저차원 표현이 됩니다(뒤로 버린 축에 실렸던 분산만큼 정보가 줄어듭니다).
오토인코더와 비교: PCA는 선형 변환만 다루지만, 활성화를 넣은 오토인코더는 비선형으로 더 복잡한 구조를 학습할 수 있어, 복잡한 데이터에서는 AE가 더 유연할 때가 많습니다. (선형 AE에 MSE를 쓰면 특정 조건에서 PCA와 연결되는 직관이 있습니다.)

왜 중요한지

PCA를 뛰어넘는 강력한 차원 축소
위에서 PCA가 무엇인지 본 것처럼, PCA는 선형 압축에 가깝습니다. 반면 오토인코더는 비선형 활성화로 고차원 데이터를 2~3차원으로 구불구불하고 유연하게 압축·시각화할 수 있습니다.
레이블이 필요 없는(Unsupervised) 만능 특징 추출기
정답(Label)을 달아주는 작업은 비싸고 힘듭니다. 오토인코더는 정답 없이 데이터 자체만으로 특징(zzz)을 뽑아낼 수 있습니다. 이렇게 미리 훈련된 인코더의 가중치를 가져와 다른 분류 모델의 초기값으로 쓰는 전이 학습(Transfer Learning)의 훌륭한 재료가 됩니다.
생성 AI(Generative AI)의 출발점
단순히 데이터를 압축하는 것을 넘어, '잠재 공간(zzz)의 숫자들을 살짝 바꾸면 완전히 새로운 얼굴 이미지가 튀어나오지 않을까?'라는 상상력은 이후 VAE(변분 오토인코더)와 GAN 같은 위대한 생성 모델의 탄생으로 이어졌습니다.

어떻게 쓰이는지

1단계: 데이터 정규화 및 스케일링
이미지 픽셀은 보통 000~255255255이므로 [0,1][0, 1][0,1]로 Min–Max 스케일하거나 채널별로 표준화(평균·분산 맞추기)합니다. RGB는 채널 순서 (R,G,B)(R,G,B)(R,G,B)를 고정하고, 배치마다 동일한 전처리를 적용합니다. 스케일이 들쭉날쭉하면 MSE 기울기 스케일이 달라져 수렴이 느리거나 불안정해질 수 있습니다.
2단계: 아키텍처·병목 kkk·손실 선택
이미지는 합성곱 오토인코더(CAE) 로 국소 패턴을 살리는 것이 일반적이고, 벡터·시계열이면 1D 합성곱이나 완전연결 스택을 씁니다. 병목 차원 kkk는 작을수록 압축이 강하지만 디테일이 사라지고, 클수록 복원은 쉬워지나 ‘요약’이 약해집니다—검증 손실로 kkk를 고릅니다. 출력이 실수면 MSE, [0,1][0,1][0,1] 흑백에 가깝면 BCE 후보를 둡니다.
3단계: 학습 루프·출력 활성화·안정화
미니배치마다 x^\hat{x}x^를 계산해 손실을 역전파합니다. 출력이 [0,1][0,1][0,1]이면 디코더 마지막 층에 시그모이드를 두어 x^\hat{x}x^ 범위를 맞춥니다. Adam 등 적응적 옵티마이저, 학습률 스케줄, 필요 시 그래디언트 클리핑으로 폭주를 막습니다. 학습/검증을 나누어 과적합이면 조기 종료·드롭아웃·가중치 감쇠·Denoising AE를 검토합니다.
4단계: 평가·시각화·다운스트림
손실 곡선만 보지 말고 복원 x^\hat{x}x^를 직접 시각화합니다. 잠재 벡터 zzz를 2차원으로 투영(예: t-SNE)해 군집·이상 여부를 볼 수 있습니다. 이상 탐지는 정상만 학습한 뒤 재구성 오차 임계값을 검증셋으로 정합니다. 학습된 인코더를 고정하거나 미세조정해 소량 라벨 분류·군집에 붙이는 패턴이 흔합니다.
응용 한눈에 정리
  • 목적이상 탐지
  • 요지정상 데이터로만 학습 → 높은 재구성 오차 샘플을 의심
  • 목적노이즈 제거
  • 요지DAE: 손상 입력 → 깨끗한 원본으로 복원
  • 목적차원 축소·시각화
  • 요지좁은 zzz 또는 zzz의 2D 투영으로 구조 파악
  • 목적표현 선행학습
  • 요지인코더를 떼어 분류기 앞단·다른 과제에 전이
목적요지
이상 탐지정상 데이터로만 학습 → 높은 재구성 오차 샘플을 의심
노이즈 제거DAE: 손상 입력 → 깨끗한 원본으로 복원
차원 축소·시각화좁은 zzz 또는 zzz의 2D 투영으로 구조 파악
표현 선행학습인코더를 떼어 분류기 앞단·다른 과제에 전이

요약

한 줄 요약 — 오토인코더는 인코더가 데이터를 좁은 병목(zzz)으로 압축하고, 디코더가 이를 다시 원본(x^\hat{x}x^)으로 복원하는 과정을 통해, 스스로 데이터의 핵심 특징을 찾아내는 똑똑한 딥러닝 알고리즘입니다.
연결점: 앞서 배운 선형층(Dense)과 CNN을 마음껏 조합하여 인코더와 디코더 블록을 조립할 수 있으며, 복잡한 데이터일수록 CNN을 쓴 합성곱 오토인코더가 유리합니다.
다음 장 예고: 단순한 압축을 넘어, 이 잠재 공간(zzz)에 정교한 확률분포를 얹어 우리가 원하는 새로운 얼굴이나 이미지를 무에서 유로 '생성'해 내는 마법, VAE(변분 오토인코더)의 세계로 넘어갑니다.

문제 풀이를 위한 설명

오토인코더 문제는 “z=fθ(x)z=f_\theta(x)z=fθ​(x), x^=gϕ(z)\hat{x}=g_\phi(z)x^=gϕ​(z)” 한 줄과 “재구성 손실로 xxx와 x^\hat{x}x^를 맞춘다”는 목표를 같이 떠올리면 풀기 쉽습니다. 병목에서는 보통 k≪dk \ll dk≪d이고, 완전연결층 d→kd \to kd→k 한 층의 파라미터는 대략 가중치 d×kd \times kd×k + 편향 kkk로 세면 됩니다. 이미지를 한 줄로 펼친 길이는 (세로)×(가로)(RGB면 ×3), 패치 격자(CLS 없이)는 (H/p)×(W/p)(H/p)\times(W/p)(H/p)×(W/p)로 잡습니다(ViT 패치 수·격자 계산, Chapter 05 복습과 같은 줄).
이상 탐지는 정상 데이터로만 복원을 학습한 뒤 재구성 오차가 큰 샘플을 의심하는 그림이고, Denoising AE는 손상된 입력을 깨끗한 원본으로 되돌리며 견고한 표현을 배웁니다. 실수 픽셀에는 MSE 1d∑i(xi−x^i)2\frac{1}{d}\sum_i(x_i-\hat{x}_i)^2d1​∑i​(xi​−x^i​)2, [0,1][0,1][0,1] 흑백 등에는 BCE가 흔합니다. 압축 비나 k/dk/dk/d 퍼센트가 나오면 분자·분모를 정확히 대응시켜 봅니다.
합성곱 오토인코더(CAE)는 Chapter 12 CNN으로 국소 패턴·공간 구조를 유지한 채 인코더·디코더를 쌓는 그림입니다. 병목 kkk가 너무 크면 정보가 거의 안 줄어들어 항등 복사에 가까워지기 쉬워, 문제는 종종 “kkk를 줄이면 무엇이 강해지는가”처럼 압축과 표현력의 트레이드오프를 묻습니다.
다음 장 VAE는 이 잠재 zzz에 확률분포를 얹어 생성으로 확장합니다. “잠재를 확률적으로 다루며 샘플링·생성”이 키워드면 VAE와 연결해 보면 됩니다.