Measuring Mechanistic Uncertainty in Large Language Models via Causal Robustness
0. Summary
- 기본 정보 : ArXiv,2026.10.15, Measuring Mechanistic Uncertainty in Large Language Models via Causal Robustness
- 연구 배경 : 대규모 언어 모델(LLM)은 점점 더 중요한 영역에서 쓰이고 있지만, 환각에 취약하기 때문에 신뢰할 수 있고 해석 가능한 불확실성 정량화(UQ)가 필수적이다. 그런데 기존 UQ 방법 대부분은 출력 수준에서 불확실성을 측정한다. 이런 방법들은 답이 불확실해 보이는지는 알려주지만, 그 불확실성이 모델 내부에서 왜 생기는지는 거의 말해주지 않는다. 예측 불확실성은 “모델이 자기 예측을 얼마나 확신하지 못하는가”를 묻지만, 그 응답을 떠받치는 내부 계산이 안정적인지, 아니면 그 계산을 살짝만 건드려도 다른 답이 나올지는 드러내지 못한다. 이 논문은 Mechanistic Interpretability method를 사용하여 모델의 예측을 뒷받침하는 내부 계산은 얼마나 견고한지를 측정하는데, 출력 분포만으로 불확실성을 재는 대신, 응답을 만들어내는 내부 인과 과정의 견고함으로부터 불확실성을 추론할 수 있는지 묻는다.
- 발견 사실 : 오픈소스 모델 3종과 QA 데이터셋 5종에서 통제된 Jlens 개입을 통해 causal robustness margin을 정의한다. 그 결과 틀린 응답은 일반적으로 더 작은 margin을 보이고, 이 margin이 출력 기반 불확실성 지표를 보완한다는 것을 발견했다. 또 통제된 지식 주입 실험에서는 특정 엔티티에 대한 지식 소스로 학습한 뒤 새로 정답이 된 응답의 margin이 커지는 것을 확인했는데, 이는 성공적인 학습이 더 큰 내부 안정성으로 이어짐을 보여준다. 이 결과들을 종합하면 causal robustness는 개입에 기반한 불확실성 신호로서 뒷받침된다.
- 핵심 기여 :
- 응답을 뒷받침하는 내부 계산의 인과적 취약성으로서 기계적 불확실성 개념을 새로 도입하고, 기준 응답으로부터 의미적으로 벗어나게 만드는 최소 개입으로 정의되는 causal robustness margin으로 이를 형식화함
- 생성 직전에 언어화될 준비가 된 consensus token의 표현 방향으로(또는 반대 방향으로) Jlens를 이용해 스티어링하는 방식으로 이 margin을 구현
- 5개 데이터셋과 오픈소스 LLM들에 대한 실험으로, causal robustness margin이 응답의 정확성을 예측하고, 출력 기반 불확실성 방법을 보완하며, 내부 메커니즘의 안정성을 포착함을 보임
관련 개념
불확실성 정량화(Uncertainty Quantification, UQ)
불확실성 정량화(UQ)는 모델이 내놓은 답을 얼마나 믿어도 되는지를 숫자로 표현하는 문제입니다. LLM은 틀린 내용을 그럴듯하게 말하는 환각(hallucination) 을 자주 일으키기 때문에, “이 답은 의심스럽다”는 신호를 모델 스스로 낼 수 있어야 의료·법률 같은 고위험 영역에서 쓸 수 있습니다.
📊 1. 기존 UQ 방법은 대부분 “출력”만 본다
논문이 베이스라인으로 쓰는 방법들은 전부 출력 분포(output distribution) 에서 계산됩니다.
| 계열 | 대표 방법 (논문 베이스라인) | 핵심 아이디어 |
|---|---|---|
| 토큰 확률 기반 | 평균 토큰 엔트로피, 최대 토큰 확률, Perplexity, Energy | 생성된 토큰들의 확률이 낮거나 분산되어 있으면 불확실하다고 봄 |
| 샘플링 일관성 | Self-consistency (K=10, T=0.7) | 같은 질문을 여러 번 샘플링했을 때 답이 서로 다르면 불확실하다고 봄 |
| 의미 기반 | Semantic entropy (Kuhn et al., 2023) | 표현은 달라도 뜻이 같은 답을 묶은 뒤, 의미 군집 단위로 엔트로피 계산 |
| 언어화 신뢰도 | Verbalized confidence | 모델에게 “얼마나 확신하니?”라고 직접 물어봄 |
🔍 2. 예측 불확실성 vs 기계적 불확실성
| 구분 | 예측 불확실성 (Predictive) | 기계적 불확실성 (Mechanistic, 본 논문) |
|---|---|---|
| 질문 | 모델이 자기 출력에 얼마나 확신이 없는가? | 그 출력을 만든 내부 계산이 얼마나 쉽게 무너지는가? |
| 측정 위치 | 출력 분포(로짓, 샘플) | 중간 레이어의 잔차 스트림(residual stream) |
| 측정 방법 | 관찰(observation) | 개입(intervention) — 내부 표현을 직접 건드려 봄 |
| 알려주는 것 | 답이 불확실해 보이는지 | 불확실성이 내부 어디서, 왜 생기는지 |
논문은 기계적 불확실성을 “응답을 떠받치는 내부 계산의 인과적 취약성(causal fragility)“으로 정의하고, 예측 불확실성을 대체하는 것이 아니라 보완하는 신호로 자리매김합니다. 실제로 로지스틱 회귀에 기존 베이스라인만 넣었을 때보다 margin $\alpha^*$를 함께 넣었을 때 오류 탐지 성능이 유의하게 올라갑니다(5-fold CV × 10 shuffle, paired bootstrap 1,000회).
💡 Key Takeaway 출력이 자신 있어 보여도 내부 계산이 살짝만 밀어도 뒤집히는 상태일 수 있습니다. 논문은 이 “밀어 보기”를 통해 출력만 봐서는 안 보이는 불확실성을 꺼내 보입니다.
잔차 스트림(Residual Stream)과 Logit Lens
Jlens를 이해하려면 먼저 잔차 스트림과 Logit Lens를 알아야 합니다.
🧱 1. 잔차 스트림: 레이어들이 공유하는 “메모장”
Transformer의 각 레이어는 입력을 통째로 바꾸는 것이 아니라, 이전 레이어까지의 벡터 $h_{\ell}$에 자신이 계산한 값을 더해 넘깁니다.
\[h_{\ell+1} = h_{\ell} + \text{Attn}_\ell(h_\ell) + \text{MLP}_\ell(h_\ell)\]이 누적 벡터 $h_\ell \in \mathbb{R}^{d_{model}}$ 을 잔차 스트림이라 부르고, 모든 레이어가 읽고 쓰는 공유 메모장처럼 동작합니다. 마지막 레이어의 잔차 스트림에 unembedding 행렬 $W_U$ 를 곱하면 어휘(vocabulary) 로짓이 됩니다. 논문의 모든 개입은 이 잔차 스트림 위에서 일어납니다.
🔭 2. Logit Lens: 중간 레이어를 “미리 읽기”
Logit Lens(nostalgebraist, 2020) 는 마지막 레이어가 아닌 중간 레이어의 $h_\ell$ 에 곧바로 $W_U$ 를 곱해, 그 시점에 모델이 어떤 토큰을 “생각하고 있는지” 엿보는 기법입니다.
\[\text{LogitLens}(h_\ell) = \text{softmax}(W_U \cdot \text{norm}(h_\ell))\]| 장점 | 한계 |
|---|---|
| 추가 학습 없이 간단함 | 중간 레이어는 아직 마지막 레이어 좌표계와 다름 → 초·중반 레이어에서 읽기 결과가 무의미하거나 노이즈 |
| 레이어별로 예측이 어떻게 형성되는지 추적 가능 | 뒤에 남은 레이어들이 벡터를 어떻게 바꿀지를 전혀 반영하지 못함 |
이 한계를 “뒤에 남은 레이어의 효과를 선형 근사로 끼워 넣자”는 아이디어로 보완한 것이 Jacobian Lens입니다.
Jacobian Lens(Jlens)
Jacobian Lens(Jlens, Gurnee et al., 2026) 는 중간 레이어의 활성 $h_\ell$ 이 최종 출력에 미치는 1차(first-order) 인과 효과를 선형으로 근사한 뒤, 그 근사를 통해 중간 레이어를 읽어내는 기법입니다. 논문은 Jlens가 Logit Lens를 “크게 개선”한다고 서술하며, Neuronpedia가 Hugging Face에 공개한 사전 계산된 Jlens 행렬을 그대로 사용합니다.
🧮 1. 핵심 수식
(1) 레이어별 야코비안(Jacobian) — 레이어 $\ell$, 위치 $t$ 의 잔차 스트림이 최종 레이어의 위치 $t’ \ge t$ 에 미치는 영향을 프롬프트 코퍼스 전체에 대해 평균합니다.
\[J_\ell = \mathbb{E}_{t,\, t' \ge t,\, \text{prompt}}\left[\frac{\partial h_{\text{final},\, t'}}{\partial h_{\ell,\, t}}\right] \in \mathbb{R}^{d_{model} \times d_{model}}\](2) 읽기(Readout) — 뒤에 남은 모든 레이어를 $J_\ell$ 하나로 대체한 뒤 unembedding합니다.
\[\text{Jlens}(h_\ell) = \text{softmax}\big(W_U \cdot \text{norm}(J_\ell\, h_\ell)\big)\](3) 스티어링 벡터 — 토큰 $t$ 의 unembedding 행 $W_U^{(t)}$ 를 야코비안으로 되돌려 보내면, 레이어 $\ell$ 에서 “토큰 $t$ 를 말하게 만드는 방향”이 됩니다.
\[v_t = J_\ell\, W_U^{(t)}, \qquad h_\ell \leftarrow h_\ell + \alpha\, v_t\]$\alpha > 0$ 이면 그 개념을 증폭, $\alpha < 0$ 이면 억제합니다.
🗺️ 2. Logit Lens와의 비교
| Logit Lens | Jacobian Lens | |
|---|---|---|
| 읽기 방식 | $W_U \cdot h_\ell$ | $W_U \cdot J_\ell h_\ell$ |
| 남은 레이어 반영 | ✗ | ✓ (선형 근사) |
| 초·중반 레이어 해석 | 노이즈 큼 | 비교적 일관된 개념이 보임 |
| 개입 방향 제공 | 별도 계산 필요 | $v_t = J_\ell W_U^{(t)}$ 로 즉시 얻음 |
논문은 Jlens가 보여주는 중간 레이어 개념 공간을 “글로벌 워크스페이스(global workspace)” 라고 부르며, 모델이 곧 말하려고 준비 중인 개념(poised to verbalize) 이 여기에 드러난다고 봅니다.
💡 Key Takeaway Jlens는 “읽기”와 “쓰기”를 같은 행렬로 제공합니다. 어떤 토큰을 읽어낸 바로 그 방향으로 밀거나 당길 수 있기 때문에, 이 논문의 통제된 개입(controlled intervention) 도구로 딱 맞습니다.
스티어링 벡터(Steering Vectors)
스티어링 벡터는 잔차 스트림에 특정 방향 벡터를 더해 모델의 행동이나 출력 개념을 바꾸는 기법입니다. 가중치를 바꾸지 않고 추론 시점(inference-time) 에 활성만 건드린다는 점이 특징입니다.
🧭 1. 방향을 얻는 일반적인 방법들
| 방법 | 방향 구하는 법 | 비고 |
|---|---|---|
| Activation addition / 차이 평균 | 대조되는 두 프롬프트 집합(예: 긍정 vs 부정)의 활성 평균 차이 | 데이터 쌍이 필요 |
| 선형 프로브 | 개념 유무를 분류하는 선형 분류기의 가중치 방향 | 레이블 필요 |
| SAE 특성 방향 | 희소 오토인코더(SAE)가 찾은 단일 특성의 디코더 방향 | SAE 학습 필요 |
| Jlens 방향 (본 논문) | $v_t = J_\ell W_U^{(t)}$ — 토큰 하나만 고르면 바로 계산 | 추가 데이터·학습 불필요 |
⚙️ 2. 논문의 구체적 개입 방식 (Eq. 8)
레이어 밴드 $\mathcal{B}$(마지막 10개 레이어)의 마지막 프롬프트 토큰 $t^*$ 위치에서, 레이어마다 잔차 스트림 크기에 맞춰 정규화된 스티어링을 수행합니다.
\[h_\ell \leftarrow h_\ell + \alpha \cdot \frac{\lVert h_\ell \rVert}{\lVert v_\ell^{c^*} \rVert}\, v_\ell^{c^*}, \qquad \ell \in \mathcal{B}\]- $v_\ell^{c^}$: 합의 토큰 $c^$ 의 레이어 $\ell$ Jlens 벡터
- $\lVert h_\ell \rVert / \lVert v_\ell^{c^*} \rVert$: 레이어마다 잔차 스트림의 norm이 다르기 때문에, $\alpha$ 가 “잔차 스트림 크기 대비 몇 %를 밀었는가” 라는 동일한 의미를 갖도록 맞춰주는 정규화
- $\alpha$ 의 부호를 양쪽 모두 시도 — 합의 개념 쪽으로 밀기(+)와 반대로 밀기(−)
초기 레이어는 읽기 결과가 노이즈가 많아 제외하고, 중·후반 레이어 밴드만 개입 대상으로 삼습니다.
합의 토큰(Consensus Token)
합의 토큰 $c^*$ 는 “스티어링 방향으로 쓸 토큰을 무엇으로 고를 것인가”에 대한 논문의 답입니다. 주의할 점은 여러 번 샘플링해서 다수결을 취하는 방식이 아니라, Jlens 읽기 결과를 레이어들 사이에서 투표시키는 방식이라는 것입니다.
🗳️ 1. 정의 (Eq. 5–7)
생성이 시작되기 직전, 마지막 프롬프트 토큰 $t^*$ 위치에서:
- 레이어별 읽기: $\;p_\ell = \text{softmax}\big(W_U\, \text{norm}(J_\ell h_{\ell, t^*})\big)$
- 레이어별 1등 토큰: $\;\hat{c}\ell = \arg\max_w p\ell(w)$
- 밴드 내 다수결: $\;c^*(x) = \arg\max_w \sum_{\ell \in \mathcal{B}} \mathbb{I}[\hat{c}_\ell = w]$
즉, 밴드 $\mathcal{B}$ 의 레이어들이 각각 “지금 말하려는 토큰”을 하나씩 내고, 가장 많이 뽑힌 토큰이 합의 토큰입니다.
🤔 2. 왜 “언어화될 준비가 된(ready to be verbalized)” 토큰인가
- 합의 토큰은 아직 생성되지 않은 토큰입니다. 워크스페이스 안에서 가장 강하게 활성화된 개념일 뿐입니다.
- 논문의 oracle 실험에 따르면, 모델이 틀린 답을 말했는데도 Jlens 읽기 결과에는 정답이 올라와 있는 경우가 자주 있습니다. 워크스페이스의 내용과 실제 출력이 다를 수 있다는 뜻입니다.
- 그래서 “지금 모델이 내보내려는 핵심 개념”을 대표하는 방향으로 합의 토큰을 고르고, 그 방향을 밀고 당겨서 응답이 얼마나 쉽게 바뀌는지 봅니다.
💡 Key Takeaway 합의 토큰은 출력이 아니라 내부 상태의 대표값입니다. 출력 샘플을 여러 번 뽑는 self-consistency와 달리, 한 번의 forward pass로 얻을 수 있습니다.
읽기(Readout)
Readout은 어떤 레이어·위치의 내부 벡터를 어휘 분포로 번역한 것입니다. 이 논문에서는 Eq. 2의 Jlens 출력 $\text{softmax}(W_U\, \text{norm}(J_\ell h_\ell))$ 이 곧 readout입니다.
📖 1. 논문에서 readout이 하는 두 가지 역할
| 역할 | 설명 |
|---|---|
| 합의 토큰 정의 | 밴드 내 각 레이어의 readout 1등 토큰을 모아 다수결 |
| 워크스페이스 ≠ 출력 입증 | oracle 실험에서 정답이 readout에는 있지만 실제 생성에서는 빠지는 사례를 보여줌 → 내부에는 정보가 있는데 출력으로 이어지지 못하는 경우가 있음 |
🧩 2. 직관적으로
Readout은 모델의 “속마음을 자막으로 띄우는 것” 에 가깝습니다. Logit Lens가 조악한 자막이라면, Jlens는 남은 레이어의 효과까지 반영한 더 정확한 자막입니다. 다만 1차 선형 근사이므로 완벽한 번역은 아닙니다.
인과적 견고함(Causal Robustness)과 Causal Robustness Margin
인과적 견고함은 “모델의 내부 계산을 인위적으로 개입했을 때 출력이 얼마나 버티는가”입니다. 단순히 입력을 바꿔 보는 것(입력 섭동)과 달리, 중간 표현을 직접 건드린다는 점에서 “인과적(causal)”입니다.
📐 1. 정의 (Definition 1)
$f(x)$ 를 개입 없는 기준 출력, $f^{I}(x)$ 를 개입 $I$ 를 가한 출력, $m(I)$ 를 개입의 크기라 할 때,
\[R^*(x) = \min_{I \in \mathcal{I}} \big\{\, m(I) \;:\; f^{I}(x) \not\equiv f(x) \,\big\}\]즉 출력을 바꾸는 데 필요한 가장 작은 개입의 크기가 margin입니다.
- margin이 작다 → 살짝만 밀어도 답이 바뀜 → 취약(fragile), 기계적 불확실성 높음
- margin이 크다 → 세게 밀어도 답이 유지됨 → 견고, 기계적 불확실성 낮음
🔬 2. 논문의 구현: $\alpha^*$
개입 집합을 “합의 토큰 방향의 정규화 스티어링”으로 한정하면 margin은 스칼라 $\alpha$ 하나로 표현됩니다.
\[\alpha^*(x) = \min_\alpha |\alpha| \quad \text{s.t.}\quad f_\theta^{\alpha}(x) \not\equiv_{\text{sem}} f_\theta(x)\]| 항목 | 설정 |
|---|---|
| 탐색 범위 | $\lvert\alpha\rvert \in {0.01, 0.02, \dots, 0.50}$, 양·음 부호 모두 |
| 정지 조건 | 기준 답과 의미적으로 달라지는 첫 $\alpha$ |
| 의미 변화 판정 | 단답형: alias/exact match · TruthfulQA: Qwen3-32B 판정 (정답 여부는 truthfulqa-truth-judge-llama2-7B) |
| 개입 위치 | 마지막 10개 레이어, 마지막 프롬프트 토큰 |
📈 3. 주요 결과
- 세 모델(Llama-3.1-8B-Instruct, Qwen2.5-7B-Instruct, Gemma-3-12B-Instruct) × 다섯 데이터셋(TriviaQA, TruthfulQA, PopQA, SciQ, MedQA)에서 틀린 응답의 margin이 평균적으로 더 작고, $\alpha^*$ 가 커질수록 정확도가 단조 증가합니다(Fig. 2).
- 출력 기반 베이스라인에 $\alpha^*$ 를 추가하면 오류 탐지 AUROC가 유의하게 개선됩니다.
💡 Key Takeaway margin은 “답이 맞냐”가 아니라 “답을 얼마나 세게 밀어야 바뀌느냐“를 잽니다. 그래서 정답/오답과 상관관계가 있으면서도 출력 확률과는 다른 정보를 담습니다.
반사실적 설명(Counterfactual Explanation)과 적대적 견고함
Causal robustness margin은 두 가지 기존 아이디어의 내부 표현 버전입니다.
🔁 1. 두 가지 뿌리
| 개념 | 대표 연구 | 핵심 질문 | 본 논문과의 관계 |
|---|---|---|---|
| 적대적 견고함(Adversarial Robustness) | Szegedy et al. (2013), Madry et al. (2018) | 출력을 바꾸는 최소 입력 섭동은 얼마나 작은가? | 입력 대신 중간 표현을 섭동 |
| 반사실적 설명(Counterfactual Explanation) | Wachter et al. (2017) | “무엇이 조금만 달랐다면 결과가 바뀌었을까?” — 결과를 바꾸는 최소 변화 | 변화 지점을 입력에서 잔차 스트림으로 옮김 |
🧠 2. 왜 “최소 변화”가 설명이 되는가
반사실적 설명의 논리는 이렇습니다. 어떤 결정에 대해 “소득이 500만 원만 더 높았다면 대출이 승인됐다”는 식으로 결과를 뒤집는 가장 작은 변화를 보여주면, 그 결정이 무엇에 의존하는지 설명이 됩니다. 이 논문은 같은 논리를 LLM 내부에 적용합니다. “합의 개념 방향으로 $\alpha^*$ 만큼만 밀면 답이 바뀐다” 는 사실 자체가, 그 답이 내부적으로 얼마나 얇은 근거 위에 서 있는지를 설명해 줍니다.
💡 Key Takeaway 적대적 견고함은 “얼마나 쉽게 속일 수 있나”, 반사실적 설명은 “무엇이 결정을 바꾸나”를 묻습니다. 이 논문의 margin은 두 질문을 내부 표현 공간에서 동시에 묻는 셈입니다.
지식 주입(Knowledge Injection) 실험
논문은 margin이 정말 “내부 안정성”을 재는지 확인하기 위해 통제된 지식 주입 실험을 추가합니다. 핵심 논리는 “모델에 새 지식을 성공적으로 가르치면, 그 지식에 대한 응답의 내부 계산이 더 견고해져야 한다”입니다.
🧪 1. 설정
| 항목 | 내용 |
|---|---|
| 데이터 구성 | Knowledge-Instruct(Ovadia et al., 2025) 방식, PopQA + Wikipedia 문맥 → 1,935개 사실 쌍 |
| 증강 | Qwen3-32B로 문맥화·중복 제거·사실당 5개 패러프레이즈, 25개 템플릿으로 instruction-response 변환 |
| 최종 SFT 데이터 | 126,364쌍 (OpenOrca 10,000쌍 포함) |
| 학습 | LoRA (rank 64, lr 1e-4, 2 epoch), 대상 엔티티에만 적용 |
| 지표 | $\Delta M = \bar{\alpha}^_{\text{post}} - \bar{\alpha}^_{\text{pre}}$ — 양수이면 학습 후 개입에 더 잘 버팀 |
📊 2. 결과
- 대상 엔티티 정확도: Llama 11.1% → 55.4%, Qwen 4.0% → 32.8%, Gemma 6.1% → 43.0%
- 틀렸다가 맞게 된(W→R) 응답에서 margin 증가가 가장 뚜렷함 (Llama: 0.040 → 0.072)
- 학습하지 않은 통제(control) 엔티티의 margin 변화는 미미함
💡 Key Takeaway 정확도만 올라간 것이 아니라 margin도 함께 올라갔다는 점이 중요합니다. 이것은 margin이 단순한 정답 상관 지표가 아니라, 지식이 실제로 내부에 안정적으로 자리 잡았는지를 반영한다는 증거입니다.