한 출력까지 이어지는 중간 경로를 노드와 선으로 펼친다
“파리” 뒤에 “프랑스”를 예측한 한 실행을 분석한다고 하자. 입력 토큰, 중간 특징, 어텐션 헤드나 MLP 구성요소, 출력 로짓을 노드로 놓고 직접 기여를 선으로 연결한다. 양의 선은 목표 노드를 높이는 방향, 음의 선은 낮추는 방향이며 굵기는 정한 기여값의 절댓값을 나타낸다.
그래프는 특정 프롬프트와 목표 출력에 대한 국소 분석이다. 이 글의 노드 이름과 수치는 실제 상용 모델에서 꺼낸 결과가 아니라 문법을 익히기 위한 교육용 구성이다. 실제 분석이라면 모델, 체크포인트, 토큰, 분석 라이브러리, 특징 사전과 그래프 생성 설정을 공개한다.
노드의 단위에 따라 그래프가 설명하는 범위가 달라진다
어텐션 헤드 전체를 노드로 두면 계산 구조와 직접 대응하지만 한 헤드가 여러 역할을 할 수 있다. 개별 뉴런도 다의적일 수 있다. sparse autoencoder나 transcoder가 만든 특징을 노드로 쓰면 사람이 읽을 수 있는 개념이 나타나기도 하지만, 특징 분해 자체가 학습된 근사다.
Anthropic의 2025년 circuit tracing 연구는 cross-layer transcoder로 원래 MLP 계산을 근사하는 대체 모델을 만들고, 입력 임베딩·특징·오차 노드·출력 로짓을 그래프에 넣는다. 이 대체 모델은 분석 창구이며 원래 모델과 항상 같은 메커니즘을 사용한다고 보장되지 않는다.
| 노드 단위 | 장점 | 한계 |
|---|---|---|
| 헤드·MLP | 원래 구조와 직접 대응 | 한 노드에 여러 기능 |
| 뉴런 | 세밀한 구성 단위 | 다의성과 규모 |
| 학습된 특징 | 해석 가능한 패턴 가능 | 분해·재구성 오차 |
| 슈퍼노드 | 복잡한 그래프 요약 | 사람의 묶음 판단 포함 |
| 오차 노드 | 설명하지 못한 몫 표시 | 의미 라벨을 붙이기 어려움 |
선은 활성값·가중치·국소 기여를 구분해 적는다
가중치가 크다고 실제 프롬프트에서 기여가 큰 것은 아니다. 입력에 따라 source feature의 활성값이 작으면 효과도 작다. attribution graph의 선은 흔히 활성값과 국소적인 연결 효과를 결합한 값으로 정의한다. 그래프마다 edge score 식과 부호의 기준을 공개한다.
양의 기여는 목표 특징이나 로짓을 올리는 방향이고 음의 기여는 낮추는 방향이다. 음의 선이 곧 오류나 방해를 뜻하지 않는다. 잘못된 후보를 억제해 올바른 출력을 돕는 회로도 있다. 서로 다른 목표 토큰을 선택하면 같은 노드와 선의 부호·크기가 달라질 수 있다.
| 선 수치 | 질문 | 주의 |
|---|---|---|
| 원시 가중치 | 구조상 연결은 얼마나 큰가 | 입력별 활성 미반영 |
| 활성×가중치 | 이번 입력의 직접 기여는 어떤가 | 비선형·간접 경로 제한 |
| gradient×activation | 국소 민감도는 어떤가 | 기준·포화 영향 |
| 복원·제거 효과 | 개입 뒤 출력은 변하는가 | 개입 분포와 보상 경로 |
직접 경로와 여러 단계 경로를 나누어 읽는다
입력 토큰이 출력 로짓에 바로 쓰는 경로와, 여러 특징을 거쳐 간접적으로 도달하는 경로가 함께 있을 수 있다. 한 노드의 모든 나가는 선을 더했다고 전체 인과 효과가 되는 것은 아니다. 뒤 노드의 문턱과 다른 경로의 상호작용 때문에 간접 효과가 달라질 수 있다.
그래프는 위상 순서에 따라 아래에서 위로 배치하고, 층과 토큰 위치를 노드 라벨에 넣는다. 같은 특징 이름이 여러 층·위치에서 나타나면 별도 노드로 유지한다. 경로 길이와 층 순서가 뒤섞이지 않도록 순환처럼 보이는 선을 피하고, 잔차 우회 경로를 별도 범례로 적는다.
가지치기는 읽기 가능성과 설명 손실을 함께 만든다
짧은 프롬프트에서도 활성 특징과 선이 매우 많아 전체 그래프를 한 화면에 그릴 수 없다. 목표 출력에 대한 기여가 작은 노드와 선을 제거하거나 상위 경로만 남긴다. 임계값을 높이면 읽기 쉬워지지만 약한 병렬 경로와 상쇄 관계가 사라질 수 있다.
그래프마다 제거 전 노드·선 수, 제거 후 수, 보존한 기여량 또는 출력 근사 오차를 기록한다. 특정 결론에 필요한 노드를 사람이 고정해 남겼다면 자동 가지치기와 구분한다. 동일한 임계값에서도 프롬프트마다 그래프 밀도가 달라질 수 있으므로 “노드 20개” 같은 개수만 품질 기준으로 삼지 않는다.
| 설정 | 남은 노드 | 남은 선 | 설명된 기여(교육용) |
|---|---|---|---|
| 임계값 0.05 | 42 | 86 | 94% |
| 임계값 0.15 | 23 | 39 | 82% |
| 임계값 0.30 | 11 | 16 | 61% |
| 상위 경로 1개 | 6 | 5 | 38% |
특징 라벨은 증거와 불확실성을 함께 가진다
특징은 여러 활성 예시와 상위 출력 방향을 보고 “국가 관계”, “도시 이름”처럼 사람이 이름을 붙일 수 있다. 하지만 몇 개 예시만 본 라벨은 특징의 모든 작동 범위를 담지 못한다. 이름이 자연스럽다고 그 특징이 사람의 개념과 정확히 일치하는 것은 아니다.
라벨 옆에 대표 활성 예시 수, 반례, 순도 지표, 자동 라벨인지 사람 검토인지 표시한다. 하나의 특징이 서로 무관한 문맥에서 켜지면 좁은 이름을 붙이기보다 “국가·소속 문맥에 자주 활성”처럼 관찰 범위로 적는다. 원시 활성 예시로 돌아가는 링크를 보존한다.
| 항목 | 기록 예 |
|---|---|
| 특징 ID | L12-F2048 |
| 임시 라벨 | 국가·소속 문맥 |
| 강한 활성 예시 | 파리–프랑스 등 20개 |
| 반례 | 스포츠 팀 소속 4개 |
| 검토 상태 | 사람 검토·잠정 |
| 출력 방향 | 프랑스 등 국가 토큰 일부 상승 |
그래프 가설은 원래 모델의 개입으로 시험한다
대체 모델에서 “국가 관계 특징 → 프랑스 후보 특징” 선이 크다면 원래 모델에서 해당 특징 방향을 억제하거나 증폭해 목표 출력과 뒤 특징의 변화를 본다. 예측한 방향으로 바뀌면 가설을 지지하는 증거가 된다. 변화가 없으면 누락 경로나 대체 모델의 비충실성을 의심한다.
한 특징을 크게 조작하면 훈련 분포에서 벗어난 상태를 만들 수 있다. 작은 개입 여러 수준, 무관 특징 대조, 반대 방향, 여러 프롬프트를 사용한다. 최종 출력 변화가 가장 중요한 검증 대상이며 중간 특징만 맞는 결과를 완전한 회로 검증으로 기록하지 않는다.
수정 전후는 원래 모델과 대체 모델을 구분하는 데서 갈린다
수정 전 그림은 특징 노드에 “모델의 생각”이라고 적고, 가지치기한 경로 하나를 “실제 추론 과정”으로 소개했다. 오차 노드와 잘린 기여량이 없었고 사람이 묶은 슈퍼노드도 원래 모델의 부품처럼 보였다.
수정 후에는 “대체 모델의 국소 기여 그래프”라고 제목을 바꾸고 원래 구성요소·학습된 특징·사람 묶음·오차 노드를 다른 테두리로 표시했다. 보존한 기여량과 개입 검증 결과를 별도 표로 두고, 그래프를 메커니즘 가설로 설명했다.
공개 전에는 노드·선·검증의 세 층을 확인한다
모든 노드에 층·토큰 위치·특징 ID가 있는지, 모든 선에 방향·부호·단위가 있는지 검사한다. 제거된 노드와 선 수, 설명된 기여량, 오차 노드 비중을 계산한다. 모바일에서는 복잡한 전체 그래프와 단순화된 설명 그림을 나누고 작은 화살촉과 충분한 선 간격을 유지한다.
마지막으로 상위 경로의 특징을 원래 모델에서 억제·증폭했을 때 예측한 출력 변화가 나타나는지 확인한다. 다른 프롬프트와 무관 특징 대조에서 재현되지 않으면 범위를 해당 사례로 제한한다. “회로 발견”이라는 표현은 구성요소·기능·검증이 모두 기록됐을 때 쓴다.
| 검사 | 통과 기준 | 미통과 행동 |
|---|---|---|
| 노드 | 출처·ID·층·위치 표시 | 라벨 보완 |
| 선 | 방향·부호·단위 일치 | 계산 재확인 |
| 가지치기 | 손실량 공개 | 임계값 낮춰 비교 |
| 개입 | 원래 모델 출력에서 예측 확인 | 가설 범위 축소 |
| 화면 | 선·글자 겹침 없음 | 그래프 분할·정렬 |
복사해서 쓸 수 있는 LLM 요청문
아래 요청문은 교육용 예시다. 원문을 함께 제공하고, 모델이 빈칸을 추측하지 않도록 금지 조건을 넣었다. 결과를 받으면 원문 문장과 노드·선의 대응을 사람이 다시 확인한다.
회로·기여 관계 자료를 그래프로 정리해 줘. 1. 모델·체크포인트·프롬프트·목표 출력과 그래프 생성 방법을 적는다. 2. 입력·원래 모델 구성요소·학습된 특징·오차 노드·출력 노드를 구분한다. 3. 각 노드에 ID·층·토큰 위치·라벨 근거를 붙인다. 4. 각 선에 방향·부호·기여 단위를 적고 음의 선을 오류로 번역하지 않는다. 5. 가지치기 전후의 노드·선 수와 보존 기여량을 기록한다. 6. 사람의 슈퍼노드 묶음과 원래 모델 구조를 구분한다. 7. 대체 모델 그래프를 원래 모델의 완전한 내부 생각 경로로 표현하지 않는다. 8. 상위 경로마다 원래 모델에서 수행할 억제·증폭·무관 특징 대조를 제안한다. [노드·선·오차·가지치기·개입 자료] …
직접 실습하고 결과를 읽기
이 실습은 브라우저 안에 준비한 교육용 자료만 사용한다. 외부 LLM을 호출하거나 실제 기관 자료를 조회하지 않는다. 입력을 바꾸어 결과가 어떻게 달라지는지 보고, 설명과 맞지 않는 결과가 나오면 어떤 정보가 빠졌는지 적어 본다.
자료와 출처
아래 자료는 이번 글의 정의와 표기법을 확인하는 데 사용했다. 생각그림과 사례 문장은 원자료를 복제하지 않고 이 글의 교육 목적에 맞게 새로 구성했다.