coredot.today
오토인코더 완전 정복: 데이터를 압축했다 복원하면 AI가 '이해'를 배운다
블로그로 돌아가기
오토인코더VAE잠재 공간차원 축소이상 탐지생성 모델

오토인코더 완전 정복: 데이터를 압축했다 복원하면 AI가 '이해'를 배운다

여행 가방에 짐을 압축하듯, 데이터의 핵심만 남기고 다시 복원하는 오토인코더. 이 단순한 아이디어가 이상 탐지, 노이즈 제거, 생성 AI의 기초가 된 이유를 사례와 함께 풀어봅니다.

코어닷투데이2025-07-2138

여행 가방의 철학

해외여행을 준비해본 적 있나요? 방 안 가득한 짐을 하나의 캐리어에 넣어야 합니다. 모든 걸 가져갈 수는 없으니, 정말 중요한 것만 골라 압축해서 넣습니다. 도착하면 캐리어를 열고 짐을 풀어 다시 생활을 시작하죠.

**오토인코더(Autoencoder)**가 하는 일이 정확히 이겁니다.

원본 데이터
방 안 가득한 짐
압축 (인코더)
캐리어에 핵심만 담기
잠재 표현
꽉 찬 캐리어
복원 (디코더)
짐을 풀어 재현하기
복원된 데이터
다시 펼쳐진 짐

"입력을 압축했다가 다시 복원한다?" 그게 뭐가 대단하냐고요? 이 단순한 아이디어가 이상 탐지, 노이즈 제거, 추천 시스템, 그리고 생성 AI의 기초가 됩니다. 더 놀라운 건, 이 과정에서 AI가 데이터의 **"본질"**을 이해하게 된다는 것입니다.


1. 오토인코더의 탄생: "스스로 인코딩하는 기계"

역사적 기원 (1986~1987)

오토인코더의 기원은 1986년으로 거슬러 올라갑니다. 루멜하트, 힌턴, 윌리엄스(Rumelhart, Hinton & Williams)가 "Learning representations by back-propagating errors"(Nature, 1986)에서 역전파 알고리즘을 발표할 때, 이미 "입력을 복원하도록 학습하는 네트워크"의 개념을 소개합니다.

이듬해인 1987년, 발렌(Baldi)과 호르닉(Hornik)이 이를 더 정교하게 발전시킵니다. 하지만 "오토인코더"라는 이름이 널리 쓰이기 시작한 건 2000년대 중반, 힌턴이 딥 오토인코더로 차원 축소의 새로운 가능성을 보여준 이후입니다(Hinton & Salakhutdinov, "Reducing the Dimensionality of Data with Neural Networks", Science, 2006).

왜 이런 게 필요했을까?

당시 가장 큰 문제는 **차원의 저주(Curse of Dimensionality)**였습니다.

🎯 차원의 저주란?

이미지 하나가 100×100 픽셀이라면, 변수가 10,000개입니다.
1000×1000이면 1,000,000개.

변수가 이렇게 많으면:
• 데이터 간 거리가 무의미해진다 (모든 점이 비슷하게 멀어짐)
• 필요한 학습 데이터가 기하급수적으로 증가한다
• 모델이 학습하기 극도로 어려워진다

해결책: 10,000개의 변수 중 진짜 중요한 핵심 몇십 개만 남길 수 있다면?

기존에는 **PCA(주성분 분석)**가 이 문제의 표준 해법이었습니다. 하지만 PCA는 선형 변환만 가능합니다. 데이터의 복잡한 비선형 구조를 포착하지 못하죠.

오토인코더는 신경망의 비선형 변환 능력을 활용하여, PCA가 놓치는 복잡한 패턴까지 압축할 수 있습니다. 2006년 힌턴의 논문은 이를 명확히 보여줬고, 오토인코더의 시대가 열립니다.


2. 오토인코더의 구조: 병목이 만드는 마법

인코더 — 데이터를 캐리어에 압축하는 로봇

세 가지 핵심 구성요소

오토인코더는 놀랍도록 단순한 구조입니다:

인코더 (Encoder)

고차원 입력을 저차원으로 압축

784차원 이미지 → 32차원 벡터

"핵심만 남겨라"
잠재 공간 (Latent Space)

압축된 표현이 사는 병목(Bottleneck)

데이터의 "정수"가 담긴 공간

"작지만 핵심만 담겨 있다"
디코더 (Decoder)

저차원 표현을 원래 차원으로 복원

32차원 벡터 → 784차원 이미지

"압축을 풀어 재현하라"

코드로 보는 오토인코더

hljs language-python
import torch
import torch.nn as nn

class Autoencoder(nn.Module):
    def __init__(self):
        super().__init__()
        # 인코더: 784 → 128 → 32 (압축)
        self.encoder = nn.Sequential(
            nn.Linear(784, 128),
            nn.ReLU(),
            nn.Linear(128, 32),   # 병목! 784차원 → 32차원
        )
        # 디코더: 32 → 128 → 784 (복원)
        self.decoder = nn.Sequential(
            nn.Linear(32, 128),
            nn.ReLU(),
            nn.Linear(128, 784),
            nn.Sigmoid(),
        )

    def forward(self, x):
        z = self.encoder(x)       # 압축
        reconstructed = self.decoder(z)  # 복원
        return reconstructed

# 학습 목표: 입력과 출력의 차이를 최소화
loss = nn.MSELoss()
# loss(input, output) → 0에 가까울수록 잘 복원하는 것!

핵심을 주목하세요: 학습의 목표는 입력을 그대로 출력하는 것입니다. "그게 뭐가 어렵냐"고 생각할 수 있지만, 중간에 32차원이라는 병목이 있습니다. 784차원의 정보를 32차원으로 쥐어짜야 하니, 모델은 어쩔 수 없이 **"어떤 정보가 진짜 중요한지"**를 학습하게 됩니다.

이것이 오토인코더의 마법입니다: **"나 자신을 복원하라"**는 단순한 과제를 통해, 모델은 데이터의 핵심 구조를 스스로 파악합니다.


3. 잠재 공간: 데이터의 비밀 지도

잠재 공간 — 압축된 정보들이 사는 마법의 세계

잠재 공간(Latent Space)이란?

오토인코더에서 가장 흥미로운 부분은 중간의 **잠재 공간(Latent Space)**입니다. 이 공간은 데이터의 압축된 본질이 사는 곳입니다.

쉽게 비유하면:

사진 앨범에 수만 장의 사진이 있다고 합시다. 모든 사진을 하나하나 기억할 수는 없지만, 우리 뇌는 "해변 사진", "가족 사진", "음식 사진" 같은 핵심 개념으로 정리합니다.

잠재 공간은 AI가 데이터를 이렇게 핵심 개념으로 정리한 지도입니다.

잠재 공간에서 일어나는 신기한 일

MNIST 손글씨 숫자(0~9)를 오토인코더로 학습시키고, 잠재 공간을 2차원으로 시각화하면:

🗺️ 잠재 공간의 지도 (MNIST 예시)

잠재 공간에서 비슷한 숫자들이 자연스럽게 모여 있습니다:

• "1"들은 한쪽 구석에 모여 있고
• "0"들은 다른 쪽에 모여 있고
• "4"와 "9"는 비슷하게 생겼기에 가까이 위치합니다

더 신기한 건: 잠재 공간의 두 점 사이를 부드럽게 이동하면,
"3" → "3.5 같은 중간 형태" → "8" 로 자연스럽게 변환됩니다!

→ 이것을 잠재 공간 보간(interpolation)이라고 합니다.

이 성질이 왜 중요할까요? 잠재 공간이 잘 구성되면:

  1. 비슷한 데이터끼리 가까이 위치합니다 → 유사도 검색, 추천에 활용
  2. 잠재 공간의 점 하나가 데이터 하나에 대응합니다 → 새로운 데이터 생성에 활용
  3. 연속적인 변환이 가능합니다 → 스타일 전환, 보간에 활용
🔍 PCA와 오토인코더의 잠재 공간은 뭐가 다른가요? (눌러서 펼치기)

PCA는 데이터에서 분산이 가장 큰 방향(주성분)을 찾는 선형 방법입니다. 직선, 평면으로만 데이터를 잘라낼 수 있죠.

오토인코더는 신경망을 사용하므로 비선형 변환이 가능합니다. 구부러지고 꼬인 데이터 구조도 파악할 수 있습니다.

비유하면:

  • PCA = 종이를 직선으로만 접어서 줄이기
  • 오토인코더 = 종이를 자유롭게 구기고 접어서 줄이기

실제로, 은닉층이 하나이고 활성화 함수가 없는 오토인코더는 PCA와 수학적으로 동일합니다 (Baldi & Hornik, 1989). 비선형 활성화 함수를 추가하는 순간 PCA를 넘어서게 됩니다.


4. 오토인코더의 변신: 변형들의 세계

기본 오토인코더는 시작일 뿐입니다. 다양한 변형들이 각각의 문제를 해결합니다.

디노이징 오토인코더 (Denoising Autoencoder, DAE)

빈센트 등(Vincent et al., "Extracting and Composing Robust Features with Denoising Autoencoders", 2008)이 제안한 이 변형은 간단하지만 강력한 아이디어입니다:

1단계: 오염 깨끗한 입력에 일부러 노이즈를 추가한다 (픽셀을 무작위로 0으로 만들거나, 가우시안 노이즈 추가)
2단계: 학습 오염된 입력을 인코더에 넣고, 디코더가 깨끗한 원본을 복원하도록 학습
결과 모델이 노이즈에 강건해지고, 데이터의 진짜 구조만 학습하게 됨

비유하면: 일부러 번진 글씨를 주고 "원래 글씨로 복원해봐"라고 시키는 것입니다. 이 과정에서 모델은 글씨의 본질적 형태를 배우게 되죠.

참고: 이 "노이즈를 추가했다 제거하는" 아이디어는 훗날 **디퓨전 모델(Diffusion Model)**의 핵심 원리로 발전합니다. 디노이징 오토인코더는 디퓨전 모델의 사실상 조상입니다!

희소 오토인코더 (Sparse Autoencoder)

병목을 좁히는 대신, 잠재 표현에 희소성 제약을 겁니다. "32개 뉴런 중 5개만 동시에 활성화되게 하라"는 규칙을 주는 것이죠. 차원을 줄이지 않으면서도 의미 있는 특징을 추출할 수 있습니다.

2024~2025년 흥미로운 연구 트렌드로, 대형 언어 모델(LLM)의 내부를 해석하기 위해 희소 오토인코더가 사용되고 있습니다. Anthropic의 연구(Cunningham et al., 2023)에서는 Claude의 중간 활성화에 희소 오토인코더를 적용해 "모델이 내부적으로 어떤 개념을 표현하는지" 밝혀냈습니다. 예를 들어, 특정 뉴런이 "거짓말", "프랑스어", "코드 구문" 같은 해석 가능한 개념에 대응한다는 것을 발견했습니다.

컨볼루셔널 오토인코더 (Convolutional Autoencoder)

이미지 데이터에 특화된 변형입니다. 인코더와 디코더에 CNN(합성곱 신경망)을 사용하여 이미지의 공간적 구조를 보존합니다. 의료 영상, 위성 사진 등의 이미지 처리에 필수적입니다.


5. VAE: 오토인코더가 "창조"를 배우다

VAE — 잠재 공간에서 랜덤으로 새 데이터를 생성하는 슬롯머신

기본 오토인코더의 한계

기본 오토인코더는 복원은 잘 하지만, 새로운 데이터 생성은 못합니다. 왜일까요?

잠재 공간이 빈틈투성이이기 때문입니다. 학습 데이터에 해당하는 점들만 의미 있고, 그 사이의 빈 공간에서 샘플링하면 엉뚱한 결과가 나옵니다.

🤔 기본 오토인코더의 잠재 공간 문제

"3" 데이터들은 잠재 공간의 (2.1, 3.5) 근처에 모여 있고
"8" 데이터들은 (7.3, -1.2) 근처에 모여 있다고 합시다.

문제: (4.5, 1.0) 같은 중간 지점에서 디코더를 돌리면?
→ "3도 아니고 8도 아닌 이상한 무언가"가 나옴 💀

잠재 공간이 연속적이지 않기 때문입니다.

VAE(Variational Autoencoder)의 등장 (2013)

킹마와 웰링(Kingma & Welling, "Auto-Encoding Variational Bayes", 2013)은 이 문제를 우아하게 해결합니다.

핵심 아이디어: 인코더가 점 하나가 아니라 **확률 분포(평균과 분산)**를 출력하게 합니다.

기본 오토인코더

인코더 → 점 하나 (z = 2.5)

"이 이미지는 이 좌표에 해당"

잠재 공간에 빈틈이 많음
VAE

인코더 → 분포 (μ=2.5, σ=0.3)
→ 이 분포에서 랜덤 샘플링

"이 이미지는 이 범위 어딘가에 해당"

잠재 공간이 연속적으로 채워짐

분포에서 랜덤으로 샘플링하기 때문에, 학습 과정에서 잠재 공간의 빈틈이 메워집니다. 비슷한 데이터의 분포가 겹치면서, 잠재 공간 어디에서 샘플링해도 그럴듯한 데이터가 나옵니다.

hljs language-python
# VAE 인코더: 점이 아니라 분포를 출력
class VAEEncoder(nn.Module):
    def forward(self, x):
        h = self.shared_layers(x)
        mu = self.fc_mu(h)        # 평균
        log_var = self.fc_var(h)   # 분산 (로그)
        return mu, log_var

# 리파라미터화 트릭: 분포에서 샘플링
def reparameterize(mu, log_var):
    std = torch.exp(0.5 * log_var)
    eps = torch.randn_like(std)    # 랜덤 노이즈
    return mu + eps * std          # 샘플!
🔍 리파라미터화 트릭이 왜 필요한가요? (눌러서 펼치기)

신경망 학습에는 역전파가 필요한데, "분포에서 랜덤 샘플링"하는 과정은 미분이 불가능합니다. 랜덤 연산을 통과할 수 없으니까요.

리파라미터화 트릭은 이 문제를 우회합니다:

  • 랜덤 부분(ε)을 외부 입력으로 빼내고
  • z = μ + ε × σ 로 재정의합니다

이제 z는 μ와 σ에 대해 미분 가능하므로, 역전파가 정상 작동합니다. 간단하지만, 이 트릭 없이는 VAE가 존재할 수 없었습니다.

VAE의 손실 함수: 두 가지 목표의 균형

VAE는 두 가지를 동시에 최적화합니다:

복원 손실
입력을 잘 복원하는가?
+
KL 발산
잠재 분포가 정규분포에
가까운가?
=
ELBO 최대화
두 목표의 균형

**KL 발산(Kullback-Leibler Divergence)**은 잠재 공간의 분포를 표준 정규분포에 가깝게 유지하는 정규화 항입니다. 이것이 잠재 공간을 매끄럽고 연속적으로 만들어, 어디서 샘플링해도 자연스러운 결과를 보장합니다.


6. 실전 응용: 오토인코더는 어디에 쓰이나

이상 탐지 — 불량품을 잡아내는 로봇 경비원

응용 1: 이상 탐지 (Anomaly Detection)

오토인코더의 가장 강력한 실전 응용입니다.

원리 오토인코더를 "정상" 데이터로만 학습시킨다.
추론 새로운 데이터를 넣고 복원한다. 정상 데이터는 잘 복원되지만, 이상 데이터는 잘 복원되지 않는다 (한 번도 본 적 없으니까).
판별 복원 오차(Reconstruction Error)가 크면 → 이상! 🚨

이 방법이 강력한 이유: "정상"의 라벨만 있으면 됩니다. "이상"이 어떤 형태인지 미리 알 필요가 없습니다. 한 번도 본 적 없는 새로운 유형의 이상도 잡아낼 수 있죠.

실전 사례 — 제조업 불량 탐지

반도체 웨이퍼, 자동차 부품, 디스플레이 패널의 표면 검사에 오토인코더 기반 이상 탐지가 널리 사용됩니다. 정상 제품의 이미지로 학습시킨 뒤, 새 제품을 통과시켜 복원 오차를 측정합니다. 미세한 스크래치, 이물질, 패턴 불량을 사람 눈보다 빠르고 정확하게 잡아냅니다.

실전 사례 — 네트워크 침입 탐지

정상 네트워크 트래픽으로 오토인코더를 학습시키고, 비정상적인 패킷 패턴(DDoS, 포트 스캐닝 등)을 복원 오차로 탐지합니다. 기존 규칙 기반 시스템이 놓치는 제로데이 공격(이전에 알려지지 않은 공격)도 감지할 수 있다는 장점이 있습니다.

실전 사례 — 금융 사기 탐지

정상 거래 패턴을 학습한 오토인코더가, 평소와 다른 거래 패턴(급격한 금액 변화, 이상한 시간대, 새로운 지역)을 감지합니다. PayPal, Stripe 등 결제 플랫폼에서 실시간 사기 탐지의 한 축으로 활용됩니다.

응용 2: 이미지 노이즈 제거 (Denoising)

디노이징 오토인코더의 직접적 응용입니다:

분야응용효과
의료 영상저선량 CT 노이즈 제거환자 방사선 노출 감소
천문학망원경 이미지 선명화먼 천체 관측 정밀도 향상
사진 복원오래된 사진 복원역사적 사진 디지털 복원
음성 처리배경 소음 제거통화/녹음 품질 향상

응용 3: 추천 시스템

사용자의 아이템 상호작용 벡터를 오토인코더로 압축·복원하면, **빈 칸(아직 접하지 않은 아이템)**에 대한 예측이 나옵니다. 넷플릭스, 스포티파이의 추천 시스템에서 협업 필터링의 한 방법으로 사용됩니다.

응용 4: 데이터 생성 (VAE)

VAE로 학습한 잠재 공간에서 랜덤 포인트를 샘플링하면 새로운 데이터가 생성됩니다:

  • 신약 설계: 약물 분자의 잠재 공간에서 새로운 분자 구조 생성 (Gómez-Bombarelli et al., 2018)
  • 얼굴 생성: 잠재 공간을 조작하여 표정, 각도, 조명 변경
  • 음악 생성: Google Magenta의 MusicVAE는 멜로디를 잠재 공간에서 보간하여 새로운 곡 생성

7. 오토인코더 vs 유사 개념: 뭐가 다른 거야?

PCA vs 오토인코더

비교 항목
PCA
오토인코더
변환 종류
선형만 가능
비선형 가능
표현력
제한적
매우 높음
해석 가능성
높음 (주성분 방향 해석)
낮음 (블랙박스)
계산 비용
빠름 (수학적 풀이)
느림 (학습 필요)
추천 상황
탐색적 분석, 작은 데이터
복잡한 데이터, 딥러닝 파이프라인

VAE vs GAN

비교 항목
VAE
GAN
학습 방식
복원 + KL 발산 최적화
생성자 vs 판별자 경쟁
이미지 품질
흐릿한 경향
선명하고 사실적
다양성
높음 (모드 붕괴 없음)
낮을 수 있음 (모드 붕괴)
학습 안정성
안정적
불안정 (균형 필요)
잠재 공간
구조적, 연속적
불규칙적
수학적 기반
변분 추론 (ELBO)
게임 이론 (미니맥스)

VAE가 흐릿한 이유: VAE의 복원 손실은 보통 MSE(평균제곱오차)를 사용합니다. MSE를 최소화하면 "평균적으로 맞는" 이미지를 만들게 되는데, 이것이 **흐릿함(blur)**으로 나타납니다. GAN은 판별자가 "이거 흐릿하네 → 가짜!"라고 피드백하므로 선명한 이미지를 만들 수밖에 없습니다.

오토인코더와 디퓨전 모델의 관계

2025년 가장 강력한 이미지 생성 모델인 Stable Diffusion은 사실 오토인코더와 디퓨전 모델의 결합입니다.

1단계: 오토인코더로 압축 고해상도 이미지(512×512)를 오토인코더의 잠재 공간(64×64)으로 압축
2단계: 잠재 공간에서 디퓨전 원본 이미지가 아니라, 압축된 잠재 공간에서 노이즈 추가/제거 학습 → 훨씬 효율적!
3단계: 디코더로 복원 디퓨전으로 생성된 잠재 표현을 오토인코더의 디코더로 고해상도 이미지로 복원

롬바흐 등(Rombach et al., "High-Resolution Image Synthesis with Latent Diffusion Models", 2022)의 **Latent Diffusion Model(LDM)**이 바로 이 아키텍처입니다. 오토인코더가 없었다면, 디퓨전 모델은 512×512 해상도에서 직접 학습해야 해서 계산 비용이 수십 배 더 들었을 것입니다.

결국 2025년의 AI 이미지 생성은 **오토인코더(압축) + 디퓨전(생성) + 트랜스포머(조건부 제어)**의 합작품입니다.


8. 2025년, 오토인코더는 어디에 있는가

LLM 내부를 해석하는 열쇠

앞서 언급한 **희소 오토인코더(Sparse Autoencoder)**를 이용한 LLM 해석 가능성 연구가 2024~2025년 AI 안전성(AI Safety) 분야에서 가장 뜨거운 주제입니다.

GPT나 Claude 같은 모델 내부에서 어떤 일이 일어나는지는 여전히 미스터리입니다. 수십억 개의 파라미터가 만들어내는 패턴을 사람이 이해하기란 불가능에 가깝죠. 하지만 희소 오토인코더를 적용하면:

LLM의 중간 활성화
(해석 불가능한 고차원 벡터)
희소 오토인코더
해석 가능한 특징으로 분해
"프랑스어" 뉴런
"코드 구문" 뉴런
"부정적 감정" 뉴런

이 연구가 중요한 이유는 AI 안전성 때문입니다. 모델이 왜 그런 답변을 했는지 이해할 수 있으면, 해로운 출력을 방지하고 모델의 행동을 더 정밀하게 제어할 수 있습니다.

Stable Diffusion의 숨은 영웅

이미 다뤘지만 다시 강조할 가치가 있습니다. DALL-E, Stable Diffusion, Midjourney — 2025년을 정의하는 이미지 생성 서비스들의 심장부에 오토인코더가 있습니다. 매일 수억 장의 이미지가 오토인코더의 잠재 공간을 거쳐 생성되고 있습니다.

실무에서의 위치

🔍 여전히 강한 영역

• 이상 탐지 (제조, 보안, 금융)
• 노이즈 제거 (의료, 음성)
• 특징 추출/차원 축소
• LLM 해석 가능성
• 디퓨전 모델의 핵심 컴포넌트
🔄 다른 기술에 흡수된 영역

• 단독 이미지 생성 → GAN, 디퓨전에 밀림
• 단순 차원 축소 → UMAP이 대중화
• 단독 표현 학습 → 자기지도학습(SimCLR, MAE)에 통합

마무리: 단순한 질문이 만드는 깊은 이해

📦 압축 (인코더)

"이 데이터에서 진짜 중요한 건 뭐야?"
→ 본질을 파악하는 능력
💎 잠재 공간

"데이터의 본질은 이 작은 공간에 담긴다"
→ AI의 "이해"가 깃드는 곳
🎨 복원 (디코더)

"본질에서 다시 세상을 재현할 수 있어"
→ 이해의 증명

오토인코더가 던지는 질문은 놀라울 정도로 단순합니다:

"이 데이터를 압축했다가 다시 복원할 수 있어?"

하지만 이 질문에 답하는 과정에서 모델은 데이터의 핵심 구조를 이해하게 됩니다. 어떤 정보가 중요하고, 어떤 정보는 버려도 되는지를. 어떤 데이터가 "정상"이고, 어떤 데이터가 "이상"인지를.

1986년에 태어나 거의 40년이 된 이 아이디어는, Stable Diffusion의 심장에서, LLM의 해석에서, 공장의 불량 탐지에서 여전히 현역으로 활약하고 있습니다. 이름에 "Auto"가 붙은 이유 — 스스로 인코딩하는 기계 — 가 말해주듯, 오토인코더의 진짜 가치는 "사람이 알려주지 않아도 스스로 배운다"는 것입니다.

그리고 이것이야말로 인공지능의 가장 근본적인 목표 아닐까요.


참고 논문 및 자료

  • Rumelhart, D., Hinton, G. & Williams, R. (1986). Learning representations by back-propagating errors. Nature.
  • Baldi, P. & Hornik, K. (1989). Neural Networks and Principal Component Analysis. Neural Networks.
  • Hinton, G. & Salakhutdinov, R. (2006). Reducing the Dimensionality of Data with Neural Networks. Science.
  • Vincent, P. et al. (2008). Extracting and Composing Robust Features with Denoising Autoencoders. ICML.
  • Kingma, D. & Welling, M. (2013). Auto-Encoding Variational Bayes. ICLR.
  • Rezende, D. et al. (2014). Stochastic Backpropagation and Approximate Inference in Deep Generative Models. ICML.
  • Gómez-Bombarelli, R. et al. (2018). Automatic Chemical Design Using a Data-Driven Continuous Representation of Molecules. ACS Central Science.
  • van der Maaten, L. & Hinton, G. (2008). Visualizing Data using t-SNE. JMLR.
  • Rombach, R. et al. (2022). High-Resolution Image Synthesis with Latent Diffusion Models. CVPR.
  • Cunningham, H. et al. (2023). Sparse Autoencoders Find Highly Interpretable Features in Language Models. ICLR.