Sparse Autoencoders (SAE)
희소 오토인코더(SAE)는 네트워크 활성화를 다수의 특징으로 분해하며, 각 시점에는 그중 일부만 활성화됩니다. 이는 LLM을 해석하는 핵심 도구입니다.
희소 오토인코더(SAE)는 특정 입력에서 소수의 유닛만 활성화되는 은닉층을 통해 입력을 재구성하도록 학습된 오토인코더입니다. 현재 AI 연구에서는 대규모 언어 모델(LLM)이나 비전 모델의 내부 활성화로 SAE를 학습하며, 입력 차원보다 훨씬 많은 은닉 유닛을 사용합니다. 각 은닉 유닛은 특성 또는 잠재 표현이라고 불리며, 사람이 알아볼 수 있는 하나의 개념에 반응하는 경향이 있습니다. SAE는 메커니즘 해석 가능성을 위한 핵심 도구입니다. Anthropic은 2024년 단의미성의 확장 연구에서 Claude 3 Sonnet의 활성화에 최대 3,400만 개의 특성을 갖는 SAE를 학습해 금문교, 코드 오류, 기만과 같은 개념의 특성을 발견했습니다.
희소 특성이 해석 가능성에 도움이 되는 이유#
대규모 모델의 개별 뉴런은 서로 관련 없는 여러 개념에 반응하는 다의미적 특성을 보이는 경우가 많습니다. Anthropic의 중첩의 장난감 모델에서 연구한 중첩 가설은 그 이유를 설명합니다. 차원이 d인 계층은 한 번에 소수의 개념만 활성화되는 한, 거의 직교하는 방향을 사용해 d보다 훨씬 많은 개념을 표현할 수 있습니다. SAE는 이러한 과잉 완비 방향 집합을 탐색합니다. 활성화의 희소 코드는 어떤 방향 몇 개가 존재하는지와 그 강도를 나타내므로, 수천 개의 혼합된 뉴런 값을 읽는 것보다 훨씬 쉽습니다.
희소 오토인코더 작동 방식#
인코더는 활성화 벡터를 훨씬 넓은 잠재 벡터로 매핑한 뒤 ReLU를 적용합니다. 디코더는 열 벡터의 가중합으로 활성화를 재구성하므로, 디코더의 각 열은 하나의 특성 방향을 나타냅니다. 학습은 재구성 오류와 희소성 제약 조건의 합을 최소화합니다. 전통적인 방식은 잠재 표현에 L1 페널티를 적용하는 정규화입니다. OpenAI의 TopK SAE는 입력마다 가장 큰 잠재 표현 k개만 유지하며, GPT-4 활성화에 대해 1,600만 개 잠재 표현을 갖는 SAE까지 확장되었습니다. Google DeepMind의 JumpReLU SAE는 학습된 임계값 미만의 잠재 표현을 모두 0으로 만듭니다. 학습을 마친 SAE의 잠재 표현은 주로 두 가지 방식으로 활용됩니다:
아래 장난감 예제는 알려진 특성 방향 64개를 32차원에 압축하므로 어떤 단일 차원도 하나의 특성에 대응하지 않습니다. 그런 다음 이를 복원하도록 TopK SAE를 학습합니다:
import torch
import torch.nn.functional as F
torch.manual_seed(0)
# Toy activations: 64 feature directions packed into 32 dimensions (superposition), ~3 active per sample
features = F.normalize(torch.randn(64, 32), dim=1)
acts = (torch.rand(8192, 64) * (torch.rand(8192, 64) < 0.05)) @ features
encoder, decoder = torch.nn.Linear(32, 256), torch.nn.Linear(256, 32) # 256 latents: 8x overcomplete
optimizer = torch.optim.Adam([*encoder.parameters(), *decoder.parameters()], lr=1e-3)
for step in range(3000):
# TopK sparsity: keep each sample's 4 largest latents and zero the rest
values, idx = encoder(acts).topk(4, dim=-1)
latents = torch.zeros(len(acts), 256).scatter(-1, idx, F.relu(values))
loss = (decoder(latents) - acts).pow(2).sum(-1).mean()
optimizer.zero_grad()
loss.backward()
optimizer.step()
directions = F.normalize(decoder.weight.T, dim=1) # one learned direction per latent
print(f"Unexplained variance: {loss.item() / (acts - acts.mean(0)).pow(2).sum(-1).mean().item():.3f}")
print(f"Features matching a single neuron: {(features.abs().max(dim=1).values > 0.9).sum().item()} of 64")
print(f"Features matching an SAE latent: {((directions @ features.T).max(dim=0).values > 0.9).sum().item()} of 64")샘플마다 활성 잠재 표현이 최대 4개일 때 SAE는 분산의 7.1%를 설명하지 못합니다. 심지어 64개로 설정한 특성 중 어느 것도 코사인 유사도가 0.9를 넘는 단일 입력 차원과 정렬되지 않지만, 64개 모두 SAE 잠재 표현의 디코더 방향 중 하나와 정렬됩니다.
응용 분야#
- 특성 발견: 연구자는 각 잠재 표현을 가장 많이 활성화하는 입력을 모아 라벨을 지정하며, 이때 LLM이 라벨을 작성하는 경우가 많습니다. 그리고 이 특성을 사용해 모델이 무엇을 표현하는지 점검합니다.
- 조정: 특성 값을 높은 값으로 고정하면 동작이 바뀌며, 이는 조정 벡터를 더하는 것과 비슷합니다. Anthropic은 2024년 5월 금문교 특성을 증폭해 거의 모든 답변에 다리가 언급되도록 한 버전인 Golden Gate Claude를 잠시 공개했습니다.
- 회로 추적: Anthropic의 2025년 기여도 그래프는 크로스 레이어 트랜스코더를 사용해 Claude 3.5 Haiku 내부의 다단계 계산을 추적합니다. 크로스 레이어 트랜스코더는 한 계층의 활성화를 읽고 이후 MLP 계층의 출력을 재구성하는 SAE 변형입니다.
- 공개 SAE 제품군: Google DeepMind의 Gemma Scope는 Gemma 2 2B 및 9B의 모든 계층에 대해 JumpReLU SAE를 공개했으며, Gemma Scope 2는 270M에서 27B 매개변수 규모의 Gemma 3 모델에 SAE와 트랜스코더를 추가합니다. SAELens 라이브러리는 이러한 SAE를 학습하고 불러옵니다.
- 비전 모델: CLIP 및 Vision Transformer 활성화로 학습한 SAE도 해석 가능한 시각적 개념을 찾습니다. SAE에는 활성화 벡터 데이터셋이 필요하며, Ultralytics YOLO26의
model.embed()은 기본적으로 끝에서 두 번째 계층을 사용하고, 어느 계층 인덱스에서든 이미지당 평균 풀링된 활성화 벡터 하나를 반환합니다.
한계#
SAE는 활성화를 완벽하게 재구성하지 못하며, 계층의 활성화를 재구성 값으로 대체하면 모델의 손실이 측정 가능할 정도로 증가합니다. 발견되는 특성은 사전 크기와 학습 실행에 따라 달라집니다. 더 넓은 SAE는 하나의 특성을 더 세분화된 여러 특성으로 나누며, 일부 잠재 표현은 전혀 활성화되지 않습니다. 2025년 3월 Google DeepMind의 해석 가능성 팀은 SAE 특성으로 구축한 프로브가 분포 외 프롬프트에서 유해한 의도를 탐지하는 데 일반 선형 프로브보다 성능이 낮다고 보고했습니다. 또한 기초 SAE 연구의 우선순위를 낮추는 한편 SAE는 여러 도구 중 하나로 계속 사용하겠다고 밝혔습니다.
SAE와 관련 개념 비교#
- 일반 오토인코더: 압축 또는 차원 축소를 위해 입력보다 좁은 병목 계층을 거쳐 데이터를 압축합니다. SAE는 은닉층을 확장하고 희소성을 강제해 개념을 분리합니다.
- 선형 프로빙: 미리 선택한 하나의 개념을 탐지하도록 지도 분류기를 학습합니다. SAE는 비지도 방식이며 라벨 없이 특성을 발견합니다.
- 표현 공학(RepE): 쌍을 이루는 프롬프트의 활성화를 비교해 개념 방향을 찾습니다. 반면 SAE 특성은 재구성만으로 도출됩니다.
- 희소 코딩: 입력마다 최적화를 수행하는 대신 인코더를 한 번 통과하는 방식으로 SAE가 근사하는 오래된 사전 학습 방법입니다. Olshausen과 Field(1996)는 자연 이미지로 학습한 희소 코드가 국소적이고 방향성이 있는 에지 형태의 필터를 생성하며, 이러한 필터가 일차 시각 피질의 단순 세포 수용 영역과 유사하다는 점을 보였습니다.










