기계적 해석 가능성
더 많은 작업
- Mechanistic interpretability; 기계적 해석 가능성
- 신경망의 가중치와 활성값을 직접 들여다보며, 모델이 출력을 계산하는 내부 알고리즘을 사람이 이해할 수 있는 부품 단위로 역설계하는 연구
기계적 해석 가능성(mechanistic interpretability, 줄여서 mech interp)은 학습된 신경망을 컴파일된 프로그램처럼 보고, 그 안에서 어떤 변수(특징)가 어떤 연산(회로)으로 이어져 출력이 나오는지를 밝혀내려는 연구 분야다. "기계론적 해석 가능성"이라고도 쓴다.[1] 입력의 어느 부분이 예측에 기여했는지 점수를 매기는 설명 가능한 인공지능 기법(예: LIME, SHAP)이 모델을 블랙박스로 두고 겉에서 설명한다면, 기계적 해석 가능성은 상자를 열어 내부 계산 자체를 설명하려 한다.
이 분야가 주목받는 까닭은 인공지능 정렬 때문이다. 행동 평가만으로는 모델이 시험 중에만 착하게 구는지, 겉으로 드러나지 않는 목표를 품고 있는지 가려내기 어렵다. 내부 계산을 읽을 수 있다면 기만, 아첨, 위험한 지식 같은 성질을 출력 이전 단계에서 찾고 고칠 수 있다는 기대가 있다. 앤트로픽, OpenAI, 구글 딥마인드가 모두 이 분야 연구를 발표하고 있고, 2025년에는 여러 기관 연구자 29명이 이 분야의 미해결 문제를 정리한 논문을 냈다.[2]
크리스 올라(Chris Olah) 등은 2020년 3월 Distill에 실은 〈Zoom In: An Introduction to Circuits〉에서 이 분야의 세 가지 가설을 내놓았다.[3]
- 특징(feature): 신경망 표현의 기본 단위. 곡선 검출기, 개 머리 검출기처럼 사람이 이해할 수 있는 성질에 대응하는 활성 공간의 방향이다.
- 회로(circuit): 특징들이 가중치로 연결되어 만드는 계산 부분 그래프. 가중치를 읽으면 "곡선 검출기는 앞 층의 짧은 선분 검출기들을 이렇게 조합한다"처럼 알고리즘을 직접 확인할 수 있다.
- 보편성(universality): 비슷한 특징과 회로가 서로 다른 모델과 과제에서 되풀이해 나타난다.
앤트로픽 연구진은 2021년 12월 〈A Mathematical Framework for Transformer Circuits〉에서 트랜스포머를 읽는 틀을 정리했다.[4] 임베딩, 어텐션 헤드, MLP, 언임베딩은 모두 잔차 스트림(residual stream)이라는 공용 통로의 서로 다른 부분 공간을 읽고 쓰며 통신한다. 잔차 스트림은 앞선 모든 층 출력과 임베딩의 합일 뿐이므로 층 출력을 더하고 빼는 선형 분석이 가능하다. 어텐션 헤드 하나는 두 개의 독립된 행렬로 나눠 볼 수 있다.
QK 회로는 "어느 위치를 볼지"를, OV 회로는 "본 위치에서 무엇을 가져와 쓸지"를 결정한다. 두 헤드가 앞뒤 층에서 합성되는 방식(Q·K·V 합성)을 따라가면 인덕션 헤드 같은 회로를 가중치만으로 찾아낼 수 있다.
뉴런 하나가 서로 무관한 여러 개념에 반응하는 현상을 다의성(polysemanticity)이라 한다. 2022년 9월 앤트로픽의 〈Toy Models of Superposition〉은 그 원인을 중첩(superposition)으로 설명했다. 표현하려는 특징 수가 차원 수보다 많을 때, 특징들이 드물게만 켜진다면 모델은 서로 거의 직교하는 방향들에 특징을 겹쳐 담아 차원보다 많은 특징을 표현한다는 것이다.[5]
장난감 모델은 차원 특징 벡터 를 더 작은 차원으로 줄였다가 되살린다.
손실은 특징마다 중요도 를 곱한 가중 평균 제곱 오차 이다. 특징이 촘촘하게 켜지면 모델은 중요한 특징 개만 담고 나머지는 버리지만(주성분 분석과 비슷), 희소해질수록 더 많은 특징을 겹쳐 담는다. 이 전환은 상전이처럼 갑자기 일어나고, 겹쳐 담긴 특징들은 대척점 쌍, 삼각형, 오각형, 사면체 같은 기하 구조를 이룬다. ReLU 같은 활성화 함수가 있어야 기저 방향이 특별해지는데(특권 기저, privileged basis), 그렇더라도 특징이 뉴런 축에 맞춰 놓인다는 보장은 없다. 그래서 뉴런 단위가 아니라 활성 공간의 방향 단위로 특징을 찾아야 하고, 이것이 희소 오토인코더가 나온 배경이다.
이 논의 밑에는 선형 표현 가설이 깔려 있다. 고수준 개념이 활성 공간의 한 방향(선형 부분 공간)으로 표현된다는 가정으로, 워드 임베딩의 "남자-여자" 방향 같은 관찰에서 출발했다. 프로빙과 활성값 조종(steering)도 같은 가정을 쓴다.
| 기법 | 묻는 질문 | 인과적 개입 | 비용 |
|---|---|---|---|
| 선형 프로빙 | 이 층에 개념 X가 (선형으로) 들어 있나 | 없음(상관) | 낮음 |
| 로짓 렌즈, 튜닝 렌즈 | 중간 층은 무엇을 예측하려 하나 | 없음 | 매우 낮음 |
| 활성 패칭(인과 추적) | 어느 층·위치·헤드가 이 행동에 필요하고 충분한가 | 있음 | 위치·층 수에 비례 |
| 절제(ablation) | 이 부품을 없애면 무엇이 무너지나 | 있음 | 낮음 |
| 희소 오토인코더 | 이 층의 활성을 이루는 해석 가능한 특징은 무엇인가 | 특징 고정으로 확인 | 학습 비용 큼 |
| 트랜스코더·귀속 그래프(회로 추적) | 특징끼리 어떤 경로로 출력을 만드나 | 특징 교란으로 검증 | 매우 큼 |
| 자동 회로 발견(ACDC 등) | 행동을 재현하는 최소 부분 그래프는 | 있음 | 큼 |
활성 패칭(activation patching)은 같은 모양의 두 입력, 즉 원하는 행동이 나오는 깨끗한(clean) 입력과 그 행동을 바꾸는 오염된(corrupted) 입력을 준비하고, 오염된 실행의 특정 활성 하나를 깨끗한 실행의 값으로 바꿔 끼운 뒤 출력이 얼마나 되살아나는지 재는 기법이다. 인과 추적(causal tracing), 교환 개입(interchange intervention)이라고도 부른다.[6] 2022년 케빈 멩(Kevin Meng) 등의 ROME 논문은 주어 토큰 임베딩에 표준편차의 3배 크기 가우스 잡음을 더해 오염시키고 은닉 상태를 하나씩 복원하는 방식으로, GPT 모델이 사실 연상을 중간 층 MLP에서 처리한다는 것을 보이고 그 MLP 가중치를 고쳐 사실을 편집했다.[7] 잡음 대신 한 단어만 바꾼 반사실 입력을 쓰는 방식이 해석이 더 깔끔해 이후 많이 쓰였고, 어느 지표(로짓 차이, 확률)와 어느 오염 방식을 쓰느냐에 따라 결론이 달라질 수 있다는 점이 지적되었다.[6][8]
효과는 보통 로짓 차이로 정규화한다. 를 정답 토큰과 오답 토큰의 로짓 차이라 하면
이 0이면 그 활성은 관계없고, 1이면 그 활성 하나만으로 깨끗한 행동이 완전히 돌아온다. 아래는 Hugging Face Transformers의 GPT-2 small에 PyTorch 훅만으로 잔차 스트림 패칭을 하는 최소 예다(transformers 4.49, torch 2.5에서 실행 확인).
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2").eval()
clean = "When John and Mary went to the store, John gave a drink to" # 답: Mary
corrupt = "When John and Mary went to the store, Mary gave a drink to" # 답: John
c_ids = tok(clean, return_tensors="pt").input_ids
x_ids = tok(corrupt, return_tensors="pt").input_ids
assert c_ids.shape == x_ids.shape # 위치별로 바꿔 끼우려면 토큰 수가 같아야 한다
mary, john = tok.encode(" Mary")[0], tok.encode(" John")[0]
def logit_diff(logits):
return (logits[0, -1, mary] - logits[0, -1, john]).item()
# 1) 깨끗한 실행에서 블록별 출력(잔차 스트림)을 저장
cache = {}
def save(i):
def hook(mod, inp, out): cache[i] = out[0].detach()
return hook
hs = [b.register_forward_hook(save(i)) for i, b in enumerate(model.transformer.h)]
with torch.no_grad(): clean_ld = logit_diff(model(c_ids).logits)
for h in hs: h.remove()
with torch.no_grad(): corrupt_ld = logit_diff(model(x_ids).logits)
# 2) 오염된 실행에서 (층, 위치) 하나만 깨끗한 값으로 바꾼다
def patch(layer, pos):
def hook(mod, inp, out):
h = out[0].clone(); h[:, pos] = cache[layer][:, pos]
return (h,) + out[1:]
handle = model.transformer.h[layer].register_forward_hook(hook)
with torch.no_grad(): ld = logit_diff(model(x_ids).logits)
handle.remove()
return (ld - corrupt_ld) / (clean_ld - corrupt_ld)
T = c_ids.shape[1]
scores = torch.tensor([ [patch(l, p) for p in range(T)] for l in range(12) ]) # (층, 위치)
이 예에서 깨끗한 입력의 로짓 차이는 약 2.5, 오염된 입력은 약 -3.0이다. 회복률을 그려 보면 앞쪽 층에서는 두 번째 이름 토큰(위치 9, "John"/"Mary") 하나만 바꿔도 거의 완전히 회복되고, 6번 블록과 9번 블록(0부터 셈) 사이에서 그 정보가 마지막 토큰 위치로 옮겨 가 9번 블록 이후에는 마지막 위치를 바꿔야 회복된다. 정보가 언제 어느 위치로 이동하는지를 보여 주는 전형적인 결과다. 같은 과제(간접 목적어 식별, IOI)를 분석한 2022년 논문은 GPT-2 small 안에서 26개 어텐션 헤드가 7개 부류(중복 토큰 헤드, S-억제 헤드, 이름 이동 헤드, 예비 이름 이동 헤드 등)로 나뉘어 협력하는 회로를 찾아냈다.[9] 실무에서는 TransformerLens 같은 라이브러리가 모든 중간 활성에 훅 이름을 붙여 이런 실험을 줄여 준다.
로짓 렌즈(logit lens)는 중간 층의 잔차 스트림에 최종 레이어 정규화와 언임베딩 행렬을 바로 적용해 "이 층에서 멈췄다면 무엇을 예측했을까"를 보는 기법이다. 2020년 8월 nostalgebraist라는 필명의 연구자가 LessWrong에 처음 소개했다.[10]
ids = tok("The Eiffel Tower is located in the city of", return_tensors="pt").input_ids
with torch.no_grad():
out = model(ids, output_hidden_states=True)
# hidden_states[0]은 임베딩, 마지막 원소에는 ln_f가 이미 적용되어 있어 제외
for l, h in enumerate(out.hidden_states[:-1]):
logits = model.lm_head(model.transformer.ln_f(h[0, -1]))
print(l, tok.decode(logits.argmax()))
GPT-2 small에서 이 코드를 돌리면 앞쪽 층은 " the" 같은 흔한 토큰을 내다가 6번째 블록 무렵 " England", 9번째 " Rome", 10번째 " London"을 거쳐 11번째 블록 출력부터 " Paris"를 가리킨다. 다만 앞쪽 층의 표현은 마지막 층과 기저가 달라 로짓 렌즈가 엉뚱한 결과를 내기 쉽다. 2023년 튜닝 렌즈(tuned lens)는 층마다 아핀 변환 하나를 학습해 끼워 넣어 이 문제를 줄였고, 최대 200억 매개변수 모델에서 로짓 렌즈보다 예측력과 신뢰도가 높음을 보였다.[11]
중첩 때문에 뉴런 하나하나를 해석하기 어렵다면, 활성 벡터를 더 많은 수의 희소한 특징 방향의 합으로 분해하면 된다. 이를 위해 쓰는 것이 희소 오토인코더(SAE)다. 앤트로픽은 2023년 10월 1층 트랜스포머의 MLP 뉴런 512개를 수천~13만여 개 특징으로 분해했고, 2024년 5월에는 클로드 3 소넷의 중간 층에서 최대 3,400만 개 특징을 뽑았다. 자세한 내용은 희소 오토인코더 문서 참고.
SAE 특징은 한 층의 표현을 설명할 뿐, 특징끼리 어떻게 계산을 주고받는지는 알려 주지 않는다. 이를 위해 MLP 층의 입력을 받아 출력을 재구성하는 트랜스코더(transcoder)가 제안되었고,[12] 앤트로픽은 2025년 3월 한 층의 특징이 뒤따르는 모든 층의 MLP 출력에 쓰는 층 교차 트랜스코더(cross-layer transcoder, CLT)로 모델의 MLP를 통째로 대체한 대체 모델을 만들었다.[13] 프롬프트 하나에 대해 어텐션 패턴과 정규화 분모를 고정하고 층·위치마다 오차 노드를 더하면 원래 모델과 출력이 정확히 같은 국소 대체 모델이 된다. 여기서 특징 사이의 직접적인 선형 기여 를 간선으로 하는 귀속 그래프(attribution graph)를 그리고, 중요하지 않은 노드와 간선을 가지치기해 사람이 읽을 수 있는 회로로 만든다. 이 과정을 회로 추적(circuit tracing, 국내 기사에서는 "서킷 트레이싱"으로도 표기)이라 부른다. 같은 날 공개된 동반 논문은 이 방법으로 클로드 3.5 하이쿠를 분석해 다음을 보고했다.[14]
- "댈러스가 있는 주의 주도는"이라는 질문에 모델 내부에서 "텍사스"를 중간 단계로 거쳐 "오스틴"을 내는 2단계 추론이 일어나고, 그 중간 특징을 바꾸면 답도 바뀐다.
- 시를 쓸 때 줄을 시작하기 전에 운을 맞출 단어 후보를 미리 고르고, 그 계획이 줄 전체를 이끈다.
- 언어별 회로와 언어에 무관한 공통 회로가 섞여 있고, 공통 회로의 비중은 작은 모델보다 클로드 3.5 하이쿠에서 더 크다.
앤트로픽은 2025년 5월 이 방법을 circuit-tracer 라이브러리로 공개했고, Gemma-2-2b와 Llama-3.2-1b 같은 공개 가중치 모델의 귀속 그래프를 Neuronpedia 웹 화면에서 직접 만들어 볼 수 있게 했다.[15] 방법 논문 스스로 꼽은 한계도 크다. 어텐션 패턴을 고정하므로 QK 회로가 왜 그 위치를 보는지는 설명하지 못하고, 재구성 오차("암흑 물질")가 남으며, 가장 큰 CLT도 원래 모델의 다음 토큰과 약 50%의 프롬프트에서만 일치한다.[13]
| 연도 | 대상 | 발견 | 주요 기법 |
|---|---|---|---|
| 2020 | InceptionV1(이미지) | 곡선 검출기 등 특징과 그 회로 | 가중치·활성 시각화[3] |
| 2022 | 작은 트랜스포머 | 인덕션 헤드가 인컨텍스트 러닝의 상당 부분을 담당 | 가중치 분석, 절제 |
| 2022 | GPT 계열 | 사실 연상이 중간 층 MLP에 국소화, ROME으로 편집 | 인과 추적[7] |
| 2022 | GPT-2 small | 간접 목적어 식별 회로(26개 헤드, 7개 부류) | 경로 패칭[9] |
| 2023 | 모듈러 덧셈 트랜스포머 | 이산 푸리에 변환과 삼각함수 항등식으로 덧셈을 원 위의 회전으로 바꾸는 알고리즘, 그로킹을 암기→회로 형성→정리의 세 단계로 설명 | 가중치 분석, 푸리에 공간 절제[18] |
| 2024 | 클로드 3 소넷 | 금문교, 코드 오류, 아첨, 기만 등 추상적이고 다국어·다중 모달인 특징 | SAE |
| 2024 | 공개 채팅 모델 13종 | 거절 행동이 잔차 스트림의 방향 하나로 매개됨 | 평균 차이 방향, 절제[19] |
| 2025 | 클로드 3.5 하이쿠 | 2단계 추론, 시의 운 계획, 언어 공통 회로 | 회로 추적[14] |
| 2025 | 가중치 희소 트랜스포머 | 따옴표 짝 맞추기를 잔차 채널 5개, MLP 뉴런 2개 등으로 수행하는 분리된 작은 회로 | 처음부터 희소하게 학습[1] |
마지막 항목은 방향이 다르다. OpenAI는 2025년 11월, 이미 학습된 밀집 모델을 사후에 풀어내는 대신 뉴런마다 다음 층의 몇 개 뉴런에만 연결되도록 가중치를 희소하게 학습시키면 회로가 분리되어 해석이 쉬워진다는 결과를 발표했다. 같은 크기에서는 희소할수록 성능이 떨어지지만, 모델을 키우면 성능과 해석 가능성의 경계가 함께 바깥으로 밀린다고 보고했다.[1]
- 불완전성: SAE와 트랜스코더는 재구성 오차를 남긴다. 클로드 3.5 하이쿠용 가장 큰 CLT의 정규화 재구성 오차는 21.7%였다.[13] 남은 오차 안에 중요한 계산이 숨어 있을 수 있다.
- 충실성: 대체 모델이 원래 모델과 같은 출력을 내도 같은 메커니즘을 쓴다는 보장은 없다. 로짓 렌즈처럼 개입 없는 관찰은 상관관계만 보여 준다.
- 확장성: 회로 하나를 이해하는 데 연구자 몇 명이 몇 주에서 몇 달을 쓴다. 회로 추적도 프롬프트 하나에 대한 그래프를 사람이 읽어야 한다.
- 실용성 논쟁: 구글 딥마인드 해석 가능성 팀은 2025년 3월, 사용자 프롬프트의 유해 의도 탐지라는 실제 과제에서 SAE 기반 분류기가 단순한 선형 프로브보다 분포 밖 일반화가 떨어졌다며 SAE 기초 연구의 우선순위를 낮춘다고 밝혔다.[20] 비슷한 시기 다른 연구도 SAE가 프로빙 과제에서 기존 방법을 일관되게 넘지 못한다고 보고했다.[21]
- 해석의 착시: 활성 예시 몇 개를 보고 붙인 이름표가 실제 특징의 기능보다 좁거나 넓을 수 있다. 앤트로픽도 사전 학습 결과의 질을 판정할 정답 기준이 아직 없다고 밝혔다.
- ↑ 1.0 1.1 1.2 OpenAI, 희소 회로를 통해 인공 신경망을 이해하기, 2025-11-13.
- ↑ Lee Sharkey 외, 〈Open Problems in Mechanistic Interpretability〉, 2025. arXiv:2501.16496
- ↑ 3.0 3.1 Chris Olah 외, Zoom In: An Introduction to Circuits, Distill, 2020-03-10.
- ↑ Nelson Elhage 외, A Mathematical Framework for Transformer Circuits, Transformer Circuits Thread, 2021-12-22.
- ↑ Nelson Elhage 외, Toy Models of Superposition, Transformer Circuits Thread, 2022-09-14.
- ↑ 6.0 6.1 Fred Zhang, Neel Nanda, 〈Towards Best Practices of Activation Patching in Language Models: Metrics and Methods〉, ICLR 2024. arXiv:2309.16042
- ↑ 7.0 7.1 Kevin Meng 외, 〈Locating and Editing Factual Associations in GPT〉, NeurIPS 2022. arXiv:2202.05262
- ↑ Stefan Heimersheim, Neel Nanda, 〈How to use and interpret activation patching〉, 2024. arXiv:2404.15255
- ↑ 9.0 9.1 Kevin Wang 외, 〈Interpretability in the Wild: a Circuit for Indirect Object Identification in GPT-2 small〉, ICLR 2023. arXiv:2211.00593
- ↑ nostalgebraist, interpreting GPT: the logit lens, LessWrong, 2020-08-31.
- ↑ Nora Belrose 외, 〈Eliciting Latent Predictions from Transformers with the Tuned Lens〉, 2023. arXiv:2303.08112
- ↑ Jacob Dunefsky, Philippe Chlenski, Neel Nanda, 〈Transcoders Find Interpretable LLM Feature Circuits〉, NeurIPS 2024. arXiv:2406.11944
- ↑ 13.0 13.1 13.2 Emmanuel Ameisen 외, Circuit Tracing: Revealing Computational Graphs in Language Models, Transformer Circuits Thread, 2025-03-27.
- ↑ 14.0 14.1 Jack Lindsey 외, On the Biology of a Large Language Model, Transformer Circuits Thread, 2025-03-27.
- ↑ Anthropic, Open-sourcing circuit tracing tools, 2025-05-29.
- ↑ Arthur Conmy 외, 〈Towards Automated Circuit Discovery for Mechanistic Interpretability〉, NeurIPS 2023. arXiv:2304.14997
- ↑ OpenAI, Language models can explain neurons in language models, 2023-05-09.
- ↑ Neel Nanda 외, 〈Progress measures for grokking via mechanistic interpretability〉, ICLR 2023. arXiv:2301.05217
- ↑ Andy Arditi 외, 〈Refusal in Language Models Is Mediated by a Single Direction〉, 2024. arXiv:2406.11717
- ↑ Lewis Smith 외, Negative Results for SAEs On Downstream Tasks and Deprioritising SAE Research, AI Alignment Forum, 2025-03-26.
- ↑ Subhash Kantamneni 외, 〈Are Sparse Autoencoders Useful? A Case Study in Sparse Probing〉, 2025. arXiv:2502.16681
- Transformer Circuits Thread (앤트로픽 해석 가능성 팀 논문 모음)
- TransformerLens
- Neuronpedia