본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
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): 비슷한 특징과 회로가 서로 다른 모델과 과제에서 되풀이해 나타난다.

잔차 스트림과 QK·OV 회로

편집 원본 편집

앤트로픽 연구진은 2021년 12월 〈A Mathematical Framework for Transformer Circuits〉에서 트랜스포머를 읽는 틀을 정리했다.[4] 임베딩, 어텐션 헤드, MLP, 언임베딩은 모두 잔차 스트림(residual stream)이라는 공용 통로의 서로 다른 부분 공간을 읽고 쓰며 통신한다. 잔차 스트림은 앞선 모든 층 출력과 임베딩의 합일 뿐이므로 층 출력을 더하고 빼는 선형 분석이 가능하다. 어텐션 헤드 하나는 두 개의 독립된 행렬로 나눠 볼 수 있다.

WQK=WQ⊤WK,WOV=WOWV

QK 회로는 "어느 위치를 볼지"를, OV 회로는 "본 위치에서 무엇을 가져와 쓸지"를 결정한다. 두 헤드가 앞뒤 층에서 합성되는 방식(Q·K·V 합성)을 따라가면 인덕션 헤드 같은 회로를 가중치만으로 찾아낼 수 있다.

중첩과 다의성

편집 원본 편집

뉴런 하나가 서로 무관한 여러 개념에 반응하는 현상을 다의성(polysemanticity)이라 한다. 2022년 9월 앤트로픽의 〈Toy Models of Superposition〉은 그 원인을 중첩(superposition)으로 설명했다. 표현하려는 특징 수가 차원 수보다 많을 때, 특징들이 드물게만 켜진다면 모델은 서로 거의 직교하는 방향들에 특징을 겹쳐 담아 차원보다 많은 특징을 표현한다는 것이다.[5]

장난감 모델은 n차원 특징 벡터 x를 더 작은 m차원으로 줄였다가 되살린다.

h=Wx,x′=ReLU(W⊤Wx+b)

손실은 특징마다 중요도 Ii를 곱한 가중 평균 제곱 오차 ∑x∑iIi(xi−x'i)2이다. 특징이 촘촘하게 켜지면 모델은 중요한 특징 m개만 담고 나머지는 버리지만(주성분 분석과 비슷), 희소해질수록 더 많은 특징을 겹쳐 담는다. 이 전환은 상전이처럼 갑자기 일어나고, 겹쳐 담긴 특징들은 대척점 쌍, 삼각형, 오각형, 사면체 같은 기하 구조를 이룬다. 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]

효과는 보통 로짓 차이로 정규화한다. LD를 정답 토큰과 오답 토큰의 로짓 차이라 하면

회복률=LDpatched−LDcorruptLDclean−LDcorrupt

이 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] 프롬프트 하나에 대해 어텐션 패턴과 정규화 분모를 고정하고 층·위치마다 오차 노드를 더하면 원래 모델과 출력이 정확히 같은 국소 대체 모델이 된다. 여기서 특징 사이의 직접적인 선형 기여 As→t=asws→t를 간선으로 하는 귀속 그래프(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]

수작업 패칭을 자동화하려는 시도도 이어졌다. ACDC는 계산 그래프의 간선을 하나씩 지워 보며 행동에 필요 없는 것을 제거하는 알고리즘으로, GPT-2 small의 "보다 크다" 회로에서 3만 2,000개 간선 중 68개만 남겼는데 이것이 모두 이전 연구가 손으로 찾은 간선이었다.[16] OpenAI는 2023년 5월 GPT-4가 GPT-2 뉴런의 활성 예시를 보고 설명문을 쓰고 그 설명을 채점하게 하는 자동 해석 방법을 발표하고, GPT-2의 뉴런 307,200개 전부에 대한 설명을 공개했다.[17]

연도 대상 발견 주요 기법
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. ↑ 1.0 1.1 1.2 OpenAI, 희소 회로를 통해 인공 신경망을 이해하기, 2025-11-13.
  2. ↑ Lee Sharkey 외, 〈Open Problems in Mechanistic Interpretability〉, 2025. arXiv:2501.16496
  3. ↑ 3.0 3.1 Chris Olah 외, Zoom In: An Introduction to Circuits, Distill, 2020-03-10.
  4. ↑ Nelson Elhage 외, A Mathematical Framework for Transformer Circuits, Transformer Circuits Thread, 2021-12-22.
  5. ↑ Nelson Elhage 외, Toy Models of Superposition, Transformer Circuits Thread, 2022-09-14.
  6. ↑ 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. ↑ 7.0 7.1 Kevin Meng 외, 〈Locating and Editing Factual Associations in GPT〉, NeurIPS 2022. arXiv:2202.05262
  8. ↑ Stefan Heimersheim, Neel Nanda, 〈How to use and interpret activation patching〉, 2024. arXiv:2404.15255
  9. ↑ 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
  10. ↑ nostalgebraist, interpreting GPT: the logit lens, LessWrong, 2020-08-31.
  11. ↑ Nora Belrose 외, 〈Eliciting Latent Predictions from Transformers with the Tuned Lens〉, 2023. arXiv:2303.08112
  12. ↑ Jacob Dunefsky, Philippe Chlenski, Neel Nanda, 〈Transcoders Find Interpretable LLM Feature Circuits〉, NeurIPS 2024. arXiv:2406.11944
  13. ↑ 13.0 13.1 13.2 Emmanuel Ameisen 외, Circuit Tracing: Revealing Computational Graphs in Language Models, Transformer Circuits Thread, 2025-03-27.
  14. ↑ 14.0 14.1 Jack Lindsey 외, On the Biology of a Large Language Model, Transformer Circuits Thread, 2025-03-27.
  15. ↑ Anthropic, Open-sourcing circuit tracing tools, 2025-05-29.
  16. ↑ Arthur Conmy 외, 〈Towards Automated Circuit Discovery for Mechanistic Interpretability〉, NeurIPS 2023. arXiv:2304.14997
  17. ↑ OpenAI, Language models can explain neurons in language models, 2023-05-09.
  18. ↑ Neel Nanda 외, 〈Progress measures for grokking via mechanistic interpretability〉, ICLR 2023. arXiv:2301.05217
  19. ↑ Andy Arditi 외, 〈Refusal in Language Models Is Mediated by a Single Direction〉, 2024. arXiv:2406.11717
  20. ↑ Lewis Smith 외, Negative Results for SAEs On Downstream Tasks and Deprioritising SAE Research, AI Alignment Forum, 2025-03-26.
  21. ↑ Subhash Kantamneni 외, 〈Are Sparse Autoencoders Useful? A Case Study in Sparse Probing〉, 2025. arXiv:2502.16681