NL-347, NeurIPS 2027-01
코멘트
- 일단 수식이 너무 많다. 말하고자 하는 의미는 파악했는데, 엄밀히 수식을 검증하기도 어렵고 따라가면서도 몇 가지 의문점들이 존재한다.
- 기본적으로 용어가 너무 어렵고 설명이 불친절하다.
- 식 1에서, bias을 빼서 tilda h을 활용하겠다는 것인데, 이거 빼는게 정말 좋을지?
- 왜냐하면 bias에 유의미한 정보가 담겨있으면 어떡하나? 그래서 여기서 하고자하는 flow(식5)의 영향을 주면 어떡하나?
- 식 6에서 tilda h을 곱해서 만드는 벡터 p가 정말로 원하는 의미가 담기는 것인가?
- 레이어별로 정보를 담고 있는 것이 다르기 때문에, tilda h 차이로 감지되는 것이 다른 종류의 정보일 수 있다.
- 이걸 GRU로 순차적으로 보는게 어떤 의미일까?
- 기본적인 가정인 크게 움직이고 방향이 많이 꺽인게 왜 환각일 수 있는가?
- 논문의 방법은 학습된 GRU로 환각 검출을 하게 되는데, 이 학습을 위해서 데이터를 만들어야한다.
- 하지만 비교 방법들은 학습 방법이 아니다.
- 즉 이는 공정하지 못한 비교이다.
- 또한 학습/테스트 데이터를 만들때 사용된 chatgpt-4o-mini의 성능은 믿을만한가? 데이터 신뢰도에 대해 문제가 있고 사람의 개입이 없어보인다.
Depthwise Flow Signatures for Hallucination Detection and Refinement in Large Language Models
Abstract
대규모 언어 모델은 유창하지만 전역적으로는 잘못된 답변을 생성할 수 있으며, 대부분의 안전장치는 생성이 완료된 뒤에야 출력을 검증한다. 우리는 다른 접근법을 취한다. 모델이 무엇을 말했는지 확인하는 대신, 모델이 어떻게 결정했는지를 모니터링한다. 각 토큰 예측을 트랜스포머의 깊이 전반에 걸쳐 진화하는 궤적의 종착점으로 보고, 그 궤적에서 층, 토큰, 모델 전반에 걸쳐 구조적으로 안정적인 압축 기하 요약을 추출한다.
이러한 요약을 학습한 경량 validator는 base model을 수정하지 않고도 hallucination을 탐지한다. 또한 동일한 신호가 궤적이 어느 깊이에서 잘못된 방향으로 벗어났는지를 식별하므로, 생성 중 특정 단일 block을 겨냥한 correction도 가능하게 한다. QA, 일반 도메인 사실성, 요약, 추론을 포함하는 12개 benchmark와 5개의 open-weight base LLM 전반에서, 우리의 detector는 5개의 기존 baseline과 비교해 60개의 model-dataset 조합 중 45개에서 최고 AUROC를 달성했으며, single-block refinement는 평가된 45개 조합 중 29개에서 hallucination ratio를 10% 이상 감소시켰다.
1 Introduction
대규모 언어 모델은 종종 국소적으로는 일관적이지만 전역적으로는 잘못된, 유창한 답변을 생성한다. 대부분의 안전장치는 생성 이후에 출력을 검증한다. 예를 들어 retrieval, 추가 LLM을 judge로 사용하는 방식, 또는 sampling 기반 consistency 검사가 있다. 이러한 detector들은 generator를 black box로 취급하며, 그 대가를 치른다. 각 post-hoc 검사는 latency와 compute를 증가시키고, 종종 query 하나당 여러 번의 추가 complete generation을 요구한다. 그러나 답변을 생성한 computation 자체에는 이미 depth별, token별 decision trajectory가 인코딩되어 있다.
우리는 이 computation을 signal의 원천으로 진지하게 다룬다. Autoregressive transformer는 단순한 input-to-output map이 아니다. 그것은 token prediction이 여러 block에 걸친 successive update를 통해 형성되는 depthwise dynamical system이다. 우리는 token decision이 hallucinated answer로 붕괴될 때, 그 trajectory가 비정상적으로 큰 step, 급격한 turn, 또는 local frame의 갑작스러운 reorientation과 같은 geometric trace를 남긴다고 가정한다. 문제는 그러한 trace를 depth, sample, model 전반에서 안정적으로 탐지할 수 있을 만큼 충분히 안정적인 형태로 추출할 수 있는가이다.
Naive measurement를 불안정하게 만드는 두 가지 장애물이 있다. 첫째, readout-relevant direction은 depth에 따라 이동하므로, 단일 global subspace는 우리가 원하는 signal을 흐리게 만든다. 둘째, 각 block의 boundary normalization은 학습된 depth-dependent bias를 도입하며, 이는 token-wise motion을 token-shared translation으로 오염시킨다. 우리는 local moving frame 안에서 measurement를 안정화함으로써 이 두 문제를 모두 해결한다. Bias-centered state는 token-shared offset을 제거하고, readout-aligned subspace는 depth window별로 fitting되며, orthogonal transport는 인접 frame을 정렬해 window boundary를 가로지르는 motion에 spurious rotation이 포함되지 않도록 한다.
이러한 signature 위에 우리는 lightweight GRU-based validator를 학습시킨다. 이 validator는 base LLM을 수정하지 않고 generated answer가 hallucinated인지 예측한다. 또한 signature는 anomalous event가 발생한 block을 식별하므로, sample을 flag하는 동일한 validator가 depth를 따라 failure가 어디에서 나타났는지도 가리킨다. 우리는 이 localization을 minimal refinement operator에 활용한다. 즉 generation을 culprit token으로 rollback하고 suffix를 regenerate하며, 다른 모든 depth는 보존한 채 단 하나의 transformer block에만 intervene한다. Detection과 refinement는 설계상 하나의 동일한 geometric signal을 공유한다.
Contributions.
• Local moving frame에서 depthwise measurement를 안정화하는 gauge-invariant flow signature를 제안한다. 이 signature는 within-window basis choice에 대해 invariant하며(Lemma 2), boundary normalization에 의해 shell-bounded된다(Lemma 1). 따라서 per-model calibration 없이도 depth, sample, model 전반에서 비교 가능하다.
• 이러한 signature를 학습하는 lightweight self-checking validator를 제안한다. 12개 benchmark와 5개 open-weight base LLM 전반에서 5개의 대표 baseline과 비교했을 때, 우리의 validator는 60개 cell 중 45개에서 최고 AUROC를 달성했으며, 평균 +3.32pp의 우위를 보인다(§4.1).
• Validator의 localization을 재사용하는 flow-guided single-block refinement operator를 제안한다. 평가된 45개 cell 중 29개에서 hallucination ratio가 10% 이상 상대적으로 감소했다(§4.2). Signature extraction은 step당 22–32%의 overhead를 추가하지만, early rollback을 통해 amortize된다(§4.4).
Scope.
이 접근법은 token trajectory에서 depth-localized regime change로 나타나는 hallucination을 대상으로 한다. 경험적으로 이는 factuality-anchored QA, general-domain factuality, summarization, single-step reasoning error와 잘 맞는다. 반면 multi-step chain-of-thought의 여러 block에 걸쳐 error가 분산되는 경우에는 더 약하며, 이 한계는 §5에서 정량화한다.
2 Related work
Post-hoc hallucination detection.
많은 선행 연구는 LLM 출력이 생성된 이후에 이를 검증한다. SelfCheckGPT와 같은 sampling-based detector는 query마다 여러 continuation을 생성하고, Semantic Entropy와 같은 scalar uncertainty estimator는 likelihood 기반 signal을 집계한다. 그 밖의 접근법은 retrieval augmentation, 별도 LLM을 이용한 post-hoc judging, 또는 전용 faithfulness benchmark에 의존한다. 이러한 모든 방법은 output이 이미 존재한 뒤에 작동하므로 latency와 compute를 추가하며, generator를 black box로 취급한다.
Internal-representation detectors.
또 다른 연구 흐름은 base model의 internal state를 읽어 unreliable output을 예측한다. INSIDE는 hidden representation을 probe하고, LLM-Check는 eigenvalue analysis를 수행하며, HalluShift는 distributional shift를 탐지한다. 또한 이전 연구들은 internal state가 factual knowledge에 대한 정보를 담고 있음을 보여주었다. 그러나 이러한 detector들은 internal state를 scalar 또는 static snapshot으로 요약할 뿐, 그것이 depth 전반에서 어떻게 진화하는지는 추적하지 않는다.
Depth probing and representation geometry.
Logit Lens와 Tuned Lens 같은 intermediate-readout 방법은 모든 block의 hidden state에서 logits를 decoding한다. 관련 연구들은 semantic information이 언제 linearly decodable해지는지, 그리고 intermediate state가 이후 state를 어떻게 예측하는지를 추적한다. Task-relevant direction은 단일 global subspace에 존재하는 것이 아니라 layer 전반에서 이동한다. 우리의 구성은 이러한 depthwise 관점을 계승하지만, static snapshot을 사용하는 대신 gauge-invariant moving frame 안에서 dynamic trajectory를 다룬다(§3).
Inference-time intervention.
몇몇 방법은 decoding 중 internal state를 수정함으로써 hallucination을 줄인다. Activation steering은 선택된 layer에 고정된 direction을 더하고, DoLa는 intermediate layer와 final layer의 logits를 대조하며, 최근 vision-language model 연구는 targeted hidden-state edit을 적용한다. 이러한 intervention들은 target을 전역적으로 선택한다. 반면 우리의 refinement는 detection을 수행하는 동일한 validator를 사용해 sample-specific culprit event를 localize하고, orthogonal residual은 보존하면서 단 하나의 block에만 intervene한다(§3.5).
3 Depthwise flow signatures
우리는 pretrained transformer의 residual stream이 depth 방향으로 진화하는 과정에서 gauge-invariant flow signature를 추출한다. 이를 위해 세 가지 요소를 사용한다. 첫째, 고정된 monitoring boundary에서 bias-centered state를 사용한다(§3.1). 둘째, depth와 함께 이동하는 readout-aligned subspace를 구성한다(§3.2). 셋째, 인접 frame 사이에 orthogonal transport를 적용한다(§3.3). 이 signature들은 lightweight validator를 통한 detection(§3.4)과 single-block operator를 통한 localized refinement(§3.5)에 사용된다.
3.1 Monitoring boundary and bias-centered states
Residual stream at a fixed boundary.
토큰 시퀀스 \(x_{1:n}\)에 대한 autoregressive transformer가 \(B\)개의 block을 가진다고 하자. 토큰 위치 \(t \in \{1,\ldots,n\}\)와 boundary index \(b \in \{0,\ldots,B\}\)에 대해, \(h_{t,b} \in \mathbb{R}^{d}\)를 한 번 선택되어 고정된 inter-block boundary에서의 residual stream state라고 하자. 각 block \(b\)에 대해, \(o_{t,b}, m_{t,b} \in \mathbb{R}^{d}\)는 각각 attention과 MLP의 전체 contribution이다. Monitoring되는 update는 다음과 같다.
\[ h_{t,b+1}=N_{b+1}\left(h_{t,b}+o_{t,b}+m_{t,b}\right), \]
여기서 \(N_{b+1}\)은 학습된 affine parameter를 가진 boundary normalization이다. Readout \(W \in \mathbb{R}^{V \times d}\)는 logits \(\ell_{t,b}=Wh_{t,b}\in\mathbb{R}^{V}\)를 생성한다. 우리는 \(W\)를 §3.2에서 depth-local probe direction을 얻기 위해서만 사용한다.
Bias-centered states.
\(\beta_b \in \mathbb{R}^{d}\)를 \(N_b\)의 학습된 affine shift라고 하자. 우리는 bias-centered state를 다음과 같이 monitoring한다.
\[ \tilde{h}_{t,b}=h_{t,b}-\beta_b. \tag{1} \]
즉 여기서 bias을 빼서 tilda h을 활용하겠다는 의미. bias-centered state을 이렇게 구하겠다는 것이 핵심
bias는 LLM 학습시 저장된 파라미터인거라 여기서 뭐 따로 학습하는 것은 아님
Depth step \(b \to b+1\)에서 offset \(\beta_{b+1}-\beta_b\)는 depth에는 의존하지만 token index에는 의존하지 않는다. 따라서 centering은 token-wise motion에서 token-shared translation을 제거하고, token-pooled summary를 안정화한다.
Lemma 1 (Shell bound from boundary normalization).
Monitoring되는 boundary normalization이 다음 affine form을 가진다고 가정하자.
\[ N_b(u_{t,b})=\Gamma_b S(u_{t,b})+\beta_b,\quad \Gamma_b=\mathrm{diag}(\gamma_{b,1},\ldots,\gamma_{b,d}), \tag{2} \]
모든 \(b,i\)에 대해 \(0<\gamma_{\min}\leq\gamma_{b,i}\leq\gamma_{\max}\)이며, \(S\)는 모델의 native normalization, 즉 LayerNorm 또는 RMSNorm이다. 또한 monitoring되는 영역에서 normalization denominator가 degeneracy로부터 떨어져 있어, \(0<c_{\min}\leq c_{\max}\)에 대해 다음이 성립한다고 가정한다.
\[ c_{\min}\sqrt{d}\leq \|S(u)\|_2 \leq c_{\max}\sqrt{d}. \]
그러면 모든 \((t,b)\)에 대해,
\[ \gamma_{\min}c_{\min}\sqrt{d} \leq \|\tilde{h}_{t,b}\|_2 \leq \gamma_{\max}c_{\max}\sqrt{d}. \tag{3} \]
Shell bound는 cross-depth comparability를 위한 전제조건이다. 그러면 §3.3에서 도입되는 모든 norm-based quantity는 monitoring region 안에서 \(\sqrt{d}\) 규모로 잘 scaling된다. LayerNorm과 RMSNorm에서 \(c_{\min}, c_{\max}\)에 대한 증명과 충분조건은 Appendix A.2에 있다.
3.2 Competitor directions and moving subspaces
Readout과 관련된 방향은 depth에 따라 이동하므로, 하나의 global subspace만 사용하는 것은 불안정하다. 우리는 top token과 그에 가까운 competitor들의 readout row로부터 depth window마다 \(k\)-dimensional subspace를 fitting한다. 이를 통해 frame은 모델이 현재 어떤 선택지들 사이에서 결정하고 있는지를 따라가게 된다.
Depth windows.
우리는 block을 \(b \in \{0, \ldots, B-1\}\)로 index하고,
window length \(L \geq 1\)과 stride \(s \geq 1\)을 고정한다.
\(j \geq 1\)에 대해 \(b_j = (j-1)s\)이고,
window는 \(W_j = \{b_j, \ldots, b_j + L - 1\}\)로 둔다.
마지막 window는 \(B-1\)에서 끝나도록 잘린다.
Deterministic assignment \(j(b)\)는 각 block을 그 block을 포함하는 가장 최근 window에 mapping한다.
Closed form과 endpoint handling은 Appendix A.3에 제시되어 있다.
Readout competitors.
각 \((t,b)\)에 대해, \(\hat{y}_{t,b}\)를 \(\ell_{t,b}\)에서 top-ranked token이라고 하고,
\(C_{t,b}\)를 \(\hat{y}_{t,b}\)를 제외한 top \(K\) competitors라고 하자.
Window \(W_j\)에 대해, 우리는 readout-row difference direction을 다음과 같이 수집한다.
여기서 \(M \in \{0,1\}^{n}\)은 special token과 delimiter token을 제외하는 token mask이다.
- layer b의 hidden representation에 W을 곱할건데 W은 unembedding 매트릭스임.
- 즉 logit lens처럼 각 layer에서 출력 토큰 확률을 뽑음
- 여기서 top1 토큰과 그외 competitor token이 있을것임
- top1에 해당하는 unembedding wi와 competitor token들에 해당하는 wj을 빼서 구한것을 모으면 Aj임
- 8개 단위로 W을 묶는다고 하자.
- 입력 시퀀스는 10개토큰이고 competitor token은 32개로 할게
- 그러면 8*10개의 top token이 있잖아. 이를 ti,j라고 할게 그리고 8*10*32개의 competitor token이 있잖아. 이를 ci,j,k라고 하면.
- 그럼 ti,j-ci,j,k하면 8*10*32 개의 차이 벡터가 있는데 이를 stack한게 Aj 라는 것
- Dj는 Aj을 그냥 행렬화 한건데, 8*10*32=2560이고 벡터크기가 4096라면 즉 행렬은 2560*4096 형태가 되는것
Window basis.
\(A_j\)에서 sampled 및 unit-normalized direction들을 row로 쌓아
\(D_j \in \mathbb{R}^{M_j \times d}\)를 만들고,
compact SVD \(D_j = U_j^{(D)} \Sigma_j V_j^\top\)를 취한다.
그다음 window basis를 top-\(k\) right singular vector로 정의한다.
Sampling, capping, fallback detail은 Appendix A.5에 있다.
위에서 뽑은 D에서 중요한 벡터를 SVD로 뽑겠다는 의미 -> Uj∈R4096×16 (16차원으로 줄인것)
Projected coordinates.
Assigned basis \(U_{j(b)}\)와 Eq. (1)의 bias-centered state \(\tilde{h}_{t,b}\)를 사용해,
moving coordinate \(p_{t,b}\)를 다음과 같이 정의한다.
Basis \(U_j\)는 within-window orthogonal rotation까지만 식별 가능하다. 서로 다른 SVD 구현, seed, sign convention은 같은 subspace를 span하더라도 서로 다른 basis를 만들 수 있기 때문이다. §3.3의 orthogonal transport는 이러한 ambiguity를 제거한다.
tilda h을 가져와서 4096x1 을 곱해서 16 벡터로 만든게 p_{t,b}
전체 예시: “The capital of Australia is ___”
모델이 다음 token을 예측한다고 하자.
정답은 Canberra인데, 모델이 헷갈려서 Sydney를 말할 수도 있어.
Transformer는 layer가 여러 개 있으니까, 모델 내부에서는 대충 이런 일이 일어난다고 보면 된다.
Layer 0: 아직 모호함
Layer 5: Australia 관련 정보 활성화
Layer 12: capital city 후보들이 경쟁
Layer 20: Canberra 쪽으로 가야 함
Layer 28: 최종 token 결정
이 논문은 최종 출력 “Sydney”만 보는 게 아니라, layer 0부터 layer 28까지 hidden state가 어떻게 움직였는지를 본다.
정상적인 경우라면 hidden state가 점점 Canberra 쪽으로 안정적으로 가야 할 것 같다.
환각이 생기는 경우라면 어느 layer에서 갑자기 Sydney 쪽으로 튀거나, 방향이 확 꺾이거나, 후보들 사이의 판단 기준이 흔들릴 수 있다고 본다.
단, 앞에서 말했듯이 이건 causal proof는 아니고, 그런 내부 움직임이 hallucination label과 잘 맞는지 보는 feature 기반 방법이다.
3.1 Monitoring boundary and bias-centered states
3.1에서 하는 일
먼저 모델 내부 hidden state를 어디서 볼지 정한다.
Transformer block 하나는 보통 attention, MLP, normalization 등을 포함한다. 이 논문은 각 block 사이의 특정 지점을 monitoring boundary로 정하고, 그 지점의 residual stream을 관찰한다.
token 위치 (t), layer/block boundary (b)에서 hidden state를
$$
h_{t,b}
$$
라고 한다.
예를 들어 “Australia” 문장의 마지막 token을 예측하는 위치가 (t)라면, 그 token의 내부 표현이 layer마다
$$
h_{t,0}, h_{t,1}, h_{t,2}, \ldots, h_{t,B}
$$
이렇게 바뀐다.
논문은 이걸 trajectory처럼 본다.
왜 bias-centering을 하나?
각 layer의 normalization에는 learned bias, 즉 shift가 있다. 논문에서는 이를 (\beta_b)라고 한다.
그래서 hidden state를 그대로 보면, token이 실제로 움직인 것뿐 아니라 layer마다 공통으로 더해지는 bias도 섞인다.
그래서 논문은
$$
\tilde{h}{t,b} = h{t,b} - \beta_b
$$
를 본다.
쉽게 말하면:
“모든 token에 공통으로 더해지는 layer별 offset은 빼고, token 자체의 움직임을 보자.”
예를 들어 모든 학생 점수에 선생님이 +5점을 일괄로 더했다면, 학생 간 실력 변화를 보려면 그 +5점을 제거해야 하잖아.
여기서 (\beta_b)를 빼는 게 그런 역할이다.
3.2 Competitor directions and moving subspaces
3.2에서 하는 일
4096차원 hidden state를 그대로 보면 너무 크고 복잡하다.
그래서 논문은 “지금 모델이 어떤 token 후보들 사이에서 고민하는지”와 관련된 작은 공간만 본다.
예를 들어 현재 모델의 top token이 Sydney이고, 경쟁 후보들이
Canberra, Melbourne, Perth, Brisbane, ...
라고 하자.
그러면 모델이 실제로 고민하는 방향은 “Sydney vs Canberra”, “Sydney vs Melbourne” 같은 차이일 가능성이 크다.
논문은 readout matrix (W)의 row를 이용해서 top token과 competitor token의 차이 방향을 만든다.
$$
a_{t,b,y} = w_{\hat{y}_{t,b}} - w_y
$$
여기서 (\hat{y}_{t,b})는 현재 layer에서 top-ranked token이고, (y)는 competitor token이다.
왜 window basis를 만들까?
layer 하나하나마다 basis를 만들면 너무 불안정하다.
그래서 여러 layer를 묶은 window를 만든다.
예를 들어 window 길이 (L=8)이면,
Window 1: layer 0~7
Window 2: layer 4~11
Window 3: layer 8~15
...
이런 식으로 묶는다.
각 window 안에서 top token과 competitor token의 차이 방향들을 많이 모은 뒤, SVD를 해서 중요한 (k)개 방향만 뽑는다.
$$
U_j \in \mathbb{R}^{d \times k}
$$
이게 window (j)의 basis다. 논문은 sampled normalized competitor directions를 row로 쌓아 (D_j)를 만들고, SVD의 top-(k) right singular vectors를 window basis로 사용한다고 설명한다.
예를 들어 원래 hidden dimension이 4096이고 (k=16)이면, 복잡한 4096차원 상태를 “현재 token decision에 중요한 16차원 공간”으로 줄여서 본다.
Projected coordinates는 뭐냐?
bias-centered hidden state (\tilde{h}_{t,b})를 이 basis에 투영한다.
$$
p_{t,b} = U_{j(b)}^\top \tilde{h}_{t,b}
$$
즉 4096차원 hidden state를 16차원 좌표로 바꾸는 것이다.
예를 들어:
원래 hidden state: 4096차원
중요한 decision subspace: 16차원
투영된 좌표 p: 16차원
이제 모델 내부 trajectory를 4096차원에서 직접 보지 않고, 이 16차원 좌표의 움직임으로 본다.
3.3 Transported flow signatures
3.3에서 하는 일
이제 각 token의 좌표 (p_{t,b})가 layer를 따라 어떻게 움직이는지 본다.
하지만 문제가 있다.
window마다 basis (U_j)가 다르다.
예를 들어 window 1의 1번 축은 “Sydney vs Canberra”에 가까울 수 있고, window 2의 1번 축은 “Sydney vs Melbourne”에 가까울 수 있다.
그러면 window가 바뀔 때 좌표를 그냥 빼면 안 된다.
그래서 논문은 orthogonal transport로 인접 window의 좌표계를 최대한 정렬한다. 논문은 raw coordinate switch가 실제 trajectory 변화와 인위적인 frame rotation을 섞을 수 있기 때문에, Procrustes 정렬로 adjacent frame을 align한다고 설명한다.
쉽게 말하면:
서로 다른 카메라 각도로 찍은 영상을 비교하기 전에, 카메라 방향을 최대한 맞춰놓는 것.
Motion: 얼마나 크게 움직였나?
정렬한 뒤, 이전 좌표와 다음 좌표의 차이를 본다.
$$
\Delta p_{t,b} = p_{t,b+1} - R_b p_{t,b}
$$
그리고 그 크기를
$$
s_{t,b} = |\Delta p_{t,b}|_2
$$
로 잰다.
예를 들어 “Canberra”로 안정적으로 가던 hidden state가 어느 layer에서 갑자기 “Sydney” 방향으로 크게 이동하면 (s_{t,b})가 커질 수 있다.
Turning: 방향이 얼마나 꺾였나?
단순히 얼마나 이동했는지만 보는 게 아니라, 방향이 갑자기 바뀌었는지도 본다.
$$
\theta_{t,b}
\angle(u_{t,b+1}, R_b u_{t,b})
$$
이 값이 크면, trajectory가 갑자기 꺾였다는 뜻이다.
예를 들어 모델이 초반에는 “Canberra” 쪽으로 가다가, 중간 layer에서 갑자기 “Sydney” 쪽으로 방향을 틀면 turning angle이 커질 수 있다.
Token-shared centering: 모든 token이 같이 움직인 효과 제거
어떤 layer에서는 모든 token이 공통으로 비슷하게 움직일 수 있다.
그건 특정 token의 이상 징후가 아니라 layer 전체의 일반적인 변화일 수 있다.
그래서 각 depth step에서 token들의 평균적 이동, 정확히는 robust center (\mu_b), 를 빼준다.
$$
\Delta p^c_{t,b} = \Delta p_{t,b} - \mu_b
$$
이렇게 하면 “전체가 같이 움직인 것”이 아니라 “이 token만 유난히 움직인 것”을 볼 수 있다.
Drift: decision subspace 자체가 얼마나 바뀌었나?
motion과 turning은 좌표계 안에서 token이 어떻게 움직였는지를 본다.
그런데 window가 바뀌면서 좌표계 자체, 즉 decision subspace가 많이 바뀔 수도 있다.
예를 들어 window 1에서는 모델이
Sydney vs Canberra
를 주로 고민했는데, window 2에서는 갑자기
Sydney vs Melbourne
Sydney vs "the"
Sydney vs "."
같은 식으로 다른 경쟁 구조를 보게 되면 subspace 자체가 바뀐다.
논문은 이 frame 변화량도 drift로 기록한다.
$$
\chi_{t,j}
$$
와
$$
D_t = \sum_j \chi_{t,j}
$$
가 그 역할을 한다. 이 drift는 projector (U_j U_j^\top)에만 의존하므로 basis의 임의적 회전에 둔감하다고 설명한다.
쉽게 말하면:
모델이 움직인 것뿐 아니라, 모델이 “무엇을 기준으로 판단하는지” 자체가 얼마나 바뀌었는지도 본다.
3.3.2 Component attribution
3.3.2에서 하는 일
이제 “이상한 움직임이 있었다”는 것만 보면 부족하다.
그 움직임이 attention 때문인지, MLP 때문인지도 알고 싶다.
Transformer block 안에는 보통 attention contribution과 MLP contribution이 있다.
논문에서는 각 step을 attention contribution과 MLP contribution으로 나누려고 한다. 하지만 normalization이 nonlinear이기 때문에, attention vector (o_{t,b}), MLP vector (m_{t,b})를 그냥 더해서 보는 것은 정확하지 않다.
그래서 boundary normalization을 통과하는 경로를 따라 Jacobian을 적분해서 effective contribution을 계산한다. 논문은 path-integrated update를 통해 attention과 MLP contribution을 각각 target frame에 projection한다고 설명한다.
쉽게 말하면:
“이 layer에서 trajectory가 튄 이유가 attention 쪽에서 온 건지, MLP 쪽에서 온 건지 나눠보자.”
예를 들어 hallucination이 factual retrieval 실패라면 attention 쪽이 이상할 수도 있고, 내부 지식 변환 문제라면 MLP 쪽이 더 관련될 수도 있다. 논문은 이걸 feature로 넣는다.
Residual ratio는 뭐냐?
normalization은 nonlinear하다.
그래서 단순 linear approximation으로 설명되지 않는 부분이 있을 수 있다.
논문은 path-integrated update와 single-point linearization의 차이를 residual (\eta_{t,b})로 보고,
$$
\rho_{t,b}
\frac{|\eta_{t,b}|2}{|\Delta q{t,b}|_2 + \varepsilon}
$$
를 계산한다.
쉽게 말하면:
“이 update가 얼마나 비선형적으로 일어났는가?”
이다.
환각 상황에서는 단순하고 안정적인 변화보다, normalization 경로에서 비선형적인 휘어짐이 커질 수 있다고 보는 것이다.
3.3.3 Gauge invariance
왜 gauge invariance가 중요하냐?
SVD로 basis를 뽑으면 basis의 부호나 회전이 임의적이다.
예를 들어 같은 2차원 평면을 두고도 basis를 이렇게 잡을 수 있다.
basis A: x축, y축
basis B: 45도 회전된 축, -45도 회전된 축
둘은 같은 공간을 표현하지만 좌표값은 다르다.
그런데 detector feature가 이런 임의적 basis 선택에 따라 바뀌면 안 된다.
그래서 논문은 motion norm, turning angle, residual ratio, drift 같은 값들이 within-window orthogonal rotation에 대해 invariant하다는 Lemma 2를 제시한다.
쉽게 말하면:
“좌표축을 어떻게 돌려 잡아도, 우리가 쓰는 특징값은 변하지 않게 만들자.”
다만 중요한 caveat가 있다. 논문 구현에서는 coordinate-wise median으로 centering을 하는데, 이건 엄밀하게 rotation-equivariant하지 않다. 논문은 Euclidean mean으로 바꾸면 AUROC 변화가 0.3% 미만이었다고 설명한다.
3.4 Self-checking via flow signature validation
3.4에서 하는 일
이제 앞에서 뽑은 feature들을 detector에 넣는다.
각 sample, token, depth step마다 10차원 event vector를 만든다.
구성은 대략 이렇다.
motion: step size, centered step size, turning angle
attribution: attention magnitude, MLP magnitude, effective update size, residual ratio
ratio: attention/MLP curvature ratios
drift: subspace drift
논문은 이 10개 signature를 하나의 event vector로 묶고, 모든 entry가 gauge-invariant라서 depth, sample, model 간 비교가 가능하다고 설명한다.
Validator는 어떻게 판단하나?
이 event grid를 GRU 기반 validator에 넣는다.
구조는 대략:
10차원 feature
→ LayerNorm
→ small MLP encoder
→ GRU
→ masked logsumexp pooling
→ hallucination probability
출력은
$$
\hat{y}_n \in [0,1]
$$
이다.
즉 이 답변이 hallucination일 확률을 낸다. 논문은 validator가 feature-wise LayerNorm, small MLP encoder, single-layer GRU, mask-aware pooling을 사용하고, base LLM은 수정하지 않는다고 설명한다.
여기서 중요한 점은 이거야.
motion이 크면 무조건 hallucination이라고 rule을 짜는 게 아니다.
여러 feature 패턴을 보고 hallucination label과 맞는지 학습한다.
그래서 이 방법은 “수식 하나로 환각을 증명”하는 방법이라기보다, 내부 trajectory feature를 이용한 learned detector라고 보는 게 맞다.
3.5 Flow-guided single-block refinement
3.5에서 하는 일
여기서는 detection에서 끝나지 않고, hallucination을 줄이려고 한다.
validator가 “이 sample은 hallucination 같아”라고 할 뿐 아니라, 어느 token, 어느 depth step이 가장 수상한지도 알려준다고 본다.
그 위치를
$$
(t_0, b_0)
$$
라고 하자.
예를 들어:
token 위치 t0: "Sydney"를 만들기 직전
block b0: layer 18
이면, 논문은 그 지점까지 rollback하고, suffix를 다시 생성한다. 단, 전체 모델을 바꾸는 게 아니라 block (b_0) 하나에서만 intervention한다. 논문은 culprit event를 찾고, prefix (x_{1:t_0})까지 rollback한 뒤, block (b_0)에서만 개입하면서 suffix를 regenerate한다고 설명한다.
어떻게 intervention하나?
문제가 된 block에서 input hidden state와 output hidden state가 있다.
h_in → block b0 → h_out
이 둘을 local readout-aligned basis (U)에 투영한다.
$$
p^{in} = U^\top h^{in}
$$
$$
p^{out} = U^\top h^{out}
$$
그리고 step을 본다.
$$
\Delta p = p^{out} - p^{in}
$$
만약 이 step이 prefix에서 보던 정상적인 scale보다 너무 크면, 줄인다.
논문에서는 prefix에서 reference step scale (s_{\text{ref}})를 구하고, step이 upper band를 넘을 때만 shrink한다.
쉽게 말하면:
“문제가 된 layer에서 hidden state가 너무 세게 튀면, 그 방향은 유지하되 크기만 줄인다.”
중요한 점은 전체 hidden state를 다 바꾸는 게 아니라, readout-aligned subspace 안의 component만 바꾼다는 것이다. 나머지 orthogonal residual은 보존한다.
즉:
전체 모델 수정 X
전체 layer 수정 X
모든 token 수정 X
문제가 된 token 이후 suffix만 재생성
문제가 된 block 하나만 살짝 clamp
이게 single-block refinement다.
전체를 하나의 pipeline으로 정리하면
예시 질문:
Q: The capital of Australia is?
Model output: Sydney
논문 방법은 다음 순서로 작동한다.
Step 1. 모델 내부 hidden state를 layer별로 저장
h_t,0 → h_t,1 → h_t,2 → ... → h_t,B
각 token이 layer를 지나며 어떻게 변하는지 본다.
Step 2. bias를 뺀다
h_t,b에서 layer별 공통 bias β_b 제거
그래서 token 자체 움직임을 더 안정적으로 본다.
Step 3. top token과 competitor를 뽑는다
예를 들어 현재 top token이 Sydney이고 competitors가 Canberra, Melbourne 등이라면,
Sydney - Canberra
Sydney - Melbourne
Sydney - Perth
...
같은 readout direction을 만든다.
Step 4. window별 local decision subspace를 만든다
각 depth window마다 SVD로 중요한 (k)차원 basis를 만든다.
4096차원 hidden state → 16차원 decision coordinate
Step 5. window 간 좌표계를 정렬한다
basis가 window마다 다르니까 orthogonal transport로 최대한 맞춘다.
Step 6. 움직임 feature를 뽑는다
각 token, 각 depth step에 대해:
얼마나 크게 움직였나?
방향이 얼마나 꺾였나?
모든 token 공통 이동을 뺀 뒤에도 튀나?
subspace 자체가 얼마나 drift했나?
attention/MLP 중 어디가 기여했나?
비선형 residual은 큰가?
를 계산한다.
Step 7. GRU validator가 hallucination 여부를 예측한다
10차원 event feature들의 sequence를 보고,
이 답변은 hallucination일 가능성이 높다/낮다
를 출력한다.
Step 8. 문제가 된 token/layer를 찾아 한 block만 보정한다
가장 수상한 event ((t_0,b_0))를 찾고, 그 지점으로 rollback한 뒤 block (b_0)에서만 step을 clamp하며 다시 생성한다.
이 섹션의 핵심 아이디어
섹션 3은 결국 이 말을 수식화한 것이다.
답변이 틀렸는지를 출력 후에만 확인하지 말고,
답변이 만들어지는 동안 모델 내부 hidden state의 움직임을 관찰하자.
hallucination이 생기는 경우, 특정 token과 특정 layer에서 trajectory가 비정상적으로 흔들릴 수 있고,
그 흔들림을 feature로 뽑아 detector와 refinement에 쓰자.
다만 네가 지적한 것처럼 이 방법은 “왜 그 움직임이 반드시 환각인가”를 이론적으로 증명하는 방식은 아니다.
더 정확히는:
layer-wise local decision geometry에서 나오는 변화량들이 hallucination과 경험적으로 상관되어 있는지를 학습하는 방법
이라고 보는 게 가장 안전하다.
근데 레이어별로 감지하는 변화가 다르잖아. top이랑 competitor 차이가 항상 같은걸 말하는게 아닌데, 레이어별로 다른걸 보는게 의미가 있어?
그리고 가장 큰 가정인 크게 움직이고 방향이 꺽인게 왜 환각일 수 있는게 믿을만해?
4 Experiments 전체 요약
섹션 4는 이 논문 방법이 실제로 hallucination detection과 hallucination refinement에 효과가 있는지 실험으로 검증하는 부분이야.
실험은 크게 네 가지를 본다.
4.1 Hallucination detection
Flow signature 기반 validator가 기존 baseline보다 hallucination을 잘 감지하는가?4.2 Flow-guided refinement
감지된 hallucination에 대해, 문제가 된 layer 하나만 조정하면 hallucination ratio가 줄어드는가?4.3 Feature group ablation
motion, attribution, drift, ratio 중 어떤 feature 그룹이 중요한가?4.4 Runtime cost and scalability
이 방법이 얼마나 느리고, 실제 inference 비용이 얼마나 증가하는가?
실험 세팅
Benchmarks
논문은 총 12개 benchmark를 사용한다.
분류하면 다음과 같다.
| Category | Dataset |
|---|---|
| QA | SQuAD, CoQA, TriviaQA, NQ-Open, TruthfulQA, HaluEval QA |
| General-domain factuality | HaluEval General, FELM |
| Summarization | xSUM, SAMSum |
| Reasoning | GSM8K, BBH |
즉 단순 QA뿐 아니라 factuality, summarization, reasoning까지 비교한다.
Base LLMs
모델은 5개 open-weight instruction-tuned LLM을 사용한다.
| Model |
|---|
| Qwen2.5-7B |
| Gemma2-9B |
| Phi-3-mini |
| LLaMA3-8B |
| Mistral-7B |
추가 fine-tuning 없이 released instruction-tuned weights를 사용한다.
Protocol
각 prompt에 대해 먼저 greedy decoding으로 하나의 continuation을 생성한다.
그 다음 prompt와 generated continuation을 같은 모델에 teacher-forced 방식으로 다시 넣어서 flow signature를 추출한다.
즉 생성 중에 바로 signature를 뽑는 것이 아니라, 실험에서는 생성된 답변을 다시 replay하면서 내부 trajectory를 측정한다.
Hallucination label은 frozen ChatGPT-4o-mini judge를 사용해 얻는다.
Baselines
비교 대상은 5개다.
| Baseline | 성격 |
|---|---|
| SelfCheckGPT | sampling-based consistency |
| Semantic Entropy | uncertainty 기반 |
| INSIDE | internal state 기반 |
| LLM-Check | eigenvalue/internal analysis 기반 |
| HalluShift | distribution shift 기반 |
모든 baseline은 같은 output, prompt, label 조건에서 재구현된다. Metric은 AUROC를 사용한다. 각 dataset-model pair마다 독립적인 validator를 학습하고, train/test는 8:2 split이다.
4.1 Hallucination detection
무엇을 실험하나?
이 하위 섹션은 제안한 Flow-Signature validator가 기존 baseline보다 hallucination을 잘 구분하는지 본다.
Table 1이 핵심 결과다.
총 실험 cell은:
$$
12 \text{ datasets} \times 5 \text{ models} = 60
$$
개다.
그중 제안 방법이 45/60 cell에서 최고 AUROC를 달성한다. 평균적으로 각 cell의 strongest baseline보다 +3.32 percentage point 높고, 전체 평균 AUROC는 65.67%다.
QA 결과
QA에서는 총 30개 cell 중 22개에서 승리한다. 평균 이득은 +2.41pp다.
특히 강한 dataset은 다음과 같다.
TriviaQA
HaluEval QA
SQuAD
이런 dataset은 hallucination이 비교적 명확한 factual error로 나타난다. 예를 들어 정답 entity를 틀리게 말하는 식이다.
반대로 CoQA, NQ-Open, TruthfulQA에서는 advantage가 줄어든다. 논문은 이 benchmark들이 paraphrastic reference mismatch가 많고, 모든 방법이 대략 50–65 AUROC 근처에 머문다고 설명한다.
쉽게 말하면:
정답/오답이 명확한 factual QA에서는 잘 먹히고, 정답 표현이 다양하거나 label이 애매한 QA에서는 효과가 줄어든다.
General-domain factuality 결과
General-domain factuality에서는 총 10개 cell 중 6개에서 승리한다. 평균 이득은 +5.15pp로 category 중 가장 크다.
특히 HaluEval General에서는 5개 모델 모두에서 제안 방법이 이기고, gap도 +13pp에서 +17pp로 크다.
하지만 FELM에서는 결과가 섞인다. 특히 Gemma2 × FELM은 이 논문의 약한 cell 중 하나다.
해석하면:
일반 factual hallucination처럼 특정 factual decision이 틀어지는 경우에는 flow signature가 강하게 작동하지만, dataset/model 조합에 따라 안정적이지 않은 경우도 있다.
Summarization 결과
Summarization에서는 xSUM과 SAMSum을 사용한다.
제안 방법은 총 10개 cell 중 9개에서 승리하고, 평균 이득은 +4.36pp다.
논문은 summarization이 어려운 이유를 “source와의 paraphrastic divergence” 때문이라고 설명한다. 즉 요약에서는 틀린 내용인지 단순 표현 차이인지 판단하기 어려운 경우가 많다.
그런데도 제안 방법은 꽤 강하게 나온다. 특히 LLaMA3 × xSUM에서는 baseline들이 44–53 AUROC에 머무는 반면, 제안 방법은 68.96까지 올라간다.
Reasoning 결과
Reasoning에서는 GSM8K와 BBH를 사용한다.
제안 방법은 총 10개 cell 중 8개에서 승리하고, 평균 이득은 +3.17pp다.
다만 두 개의 loss가 있다.
Gemma2 × GSM8K: INSIDE가 +10.52pp 앞섬
Phi-3 × GSM8K: SelfCheckGPT가 +6.49pp 앞섬
BBH에서는 5개 모델 모두에서 제안 방법이 이긴다.
해석하면:
reasoning에서도 detection은 어느 정도 되지만, factual QA만큼 명확한 구조는 아니다. 특히 multi-step reasoning 오류는 한 token/layer의 국소적 이상으로만 설명하기 어렵다.
4.2 Flow-guided refinement
무엇을 실험하나?
여기서는 detection에서 끝나지 않고, flow signature가 찾은 suspicious token/layer에 실제로 intervention을 하면 hallucination ratio가 줄어드는지 본다.
Table 2가 핵심이다.
총 실험 cell은:
$$
9 \text{ datasets} \times 5 \text{ models} = 45
$$
개다.
각 cell에서 refinement 전 hallucination ratio와 refinement 후 hallucination ratio를 비교한다.
결과적으로 45개 중 29개 cell에서 hallucination ratio가 10% 이상 상대 감소한다. 평균 감소율은 17.9%, median은 14.5%다.
어디서 잘 작동하나?
가장 잘 작동하는 경우는 hallucination이 특정 depth에 localized되어 있을 때다.
대표적으로 HaluEval QA에서는 5개 모델 모두에서 10% 이상 감소한다. 특히:
LLaMA3: −48.94%
Phi-3: −48.22%
까지 줄어든다.
FELM에서도 큰 감소가 나온다.
Qwen2.5: −68.74%
Phi-3: −57.62%
Mistral: −54.26%
논문은 이런 경우 hallucinated token이 명확한 localized burst를 만들기 때문에, single step clamp만으로도 continuation을 redirect할 수 있다고 해석한다.
쉽게 말하면:
특정 layer에서 확 튄 것이 문제라면, 그 layer 하나만 눌러줘도 답변 흐름이 바뀔 수 있다.
어디서 약한가?
Reasoning에서는 효과가 약하다.
총 10개 reasoning cell 중 4개만 10% 이상 감소한다. Gemma2 × BBH에서는 변화가 전혀 없다.
$$
34.39% \rightarrow 34.39%
$$
논문은 reasoning error가 하나의 depth에서 갑자기 생긴다기보다 여러 intermediate step에 퍼져 있기 때문이라고 해석한다. single-block clamp는 한 링크는 고칠 수 있어도 downstream propagation 전체를 고치지는 못한다.
Summarization은 그 중간 정도다. localized fabrication과 distributed drift가 섞여 있기 때문에 median reduction이 14.6% 정도라고 해석한다.
모델별 차이
Gemma2는 refinement benefit이 가장 약하다. 9개 dataset 중 4개에서만 10% 이상 감소한다. 논문은 이 패턴이 detection에서도 보였던 Gemma2의 약한 결과와 연결된다고 말한다.
즉:
Gemma2의 hallucination은 특정 depth에 집중되기보다 depth 전반에 퍼지는 경향이 있어 이 방법이 덜 잘 맞는다.
4.3 Feature group ablation
무엇을 실험하나?
여기서는 10차원 signature를 네 그룹으로 나눈 뒤, 하나씩 제거하면서 성능이 얼마나 떨어지는지 본다.
feature group은 다음과 같다.
| Group | 의미 |
|---|---|
| Motion | step size, centered step size, turning angle |
| Attribution | attention/MLP/update/residual 관련 |
| Drift | subspace drift |
| Ratio | attention vs MLP curvature ratio |
실험은 HaluEval QA에서 수행한다. 각 group을 제거한 뒤 validator를 다시 학습하고 AUROC 변화를 본다.
결과
모든 group은 어느 모델에서든 도움이 된다.
즉 어떤 group을 제거해도 full validator보다 좋아지는 경우는 없고, 성능은 떨어진다. 논문은 “no group is redundant”라고 해석한다.
하지만 어떤 group이 가장 중요한지는 모델마다 다르다.
| Model | 가장 중요한 group |
|---|---|
| Qwen2.5 | Ratio |
| Gemma2 | Ratio |
| LLaMA3 | Ratio |
| Phi-3 | Attribution |
| Mistral | Motion |
논문은 dominant group이 모델마다 다르다고 설명한다.
예를 들어 Gemma2는 Ratio group을 제거하면 AUROC가 66.7에서 54.8로 크게 떨어진다. Phi-3는 네 그룹을 제거했을 때 모두 비슷하게 크게 떨어진다.
의미
이 결과의 핵심은:
hallucination signal이 하나의 단일 통계량에만 있지 않고, motion, attribution, drift, ratio가 서로 보완적으로 작동한다.
그래서 단순히 “큰 step만 보면 된다”거나 “turning angle만 보면 된다”는 식의 방법은 모델마다 불안정할 수 있다. 논문은 이 complementarity가 왜 single-statistic detector가 어떤 모델에서는 강하지만 다른 모델에서는 약할 수 있는지 설명한다고 말한다.
4.4 Runtime cost and scalability
무엇을 실험하나?
이 방법은 내부 hidden state를 추적하고, SVD를 하고, signature를 뽑기 때문에 당연히 비용이 든다.
Table 4는 base LLM별 per decoding step wall-clock overhead를 보여준다.
결과
Signature extraction은 base forward pass 위에 22–32% 추가 overhead를 만든다. 절대 시간으로는 step당 62–86ms 정도다.
모델별 overhead는 대략 다음과 같다.
| Model | Overhead |
|---|---|
| Phi-3 | 32% |
| Gemma2 | 24% |
| Qwen2.5 | 22% |
| LLaMA3 | 26% |
| Mistral | 26% |
Scalability
논문은 비용이 sequence length (T)에 대해 선형으로 증가하고, token당 계산량은
$$
O(B(k+K)d)
$$
라고 설명한다.
여기서:
(B): number of blocks
(k): subspace dimension
(K): number of competitors
(d): hidden dimension
이다.
Refinement 비용
Refinement는 rollback해서 suffix를 다시 생성한다. 최악의 경우 base decode cost의 2배를 넘지 않는다.
왜냐하면 현재 위치 (t_{\text{cur}})에서 문제 위치 (t_0)까지 돌아가고, 버린 suffix만 다시 생성하기 때문이다. 논문은 overhead factor가
$$
1 + \frac{t_{\text{cur}} - t_0}{T} \le 2
$$
라고 설명한다.
문제를 early하게 잡으면 실제 overhead는 nominal 1.22–1.32배보다 낮아질 수 있다.
Baseline과 비용 비교
논문은 SelfCheckGPT와 Semantic Entropy는 query마다 5–10개의 추가 complete generation이 필요하다고 지적한다. 반면 이 방법은 signature extraction overhead가 22–32% 수준이다.
즉 비용 측면에서 논문은 이렇게 주장한다.
여러 번 sampling해서 output consistency를 보는 방법보다, 한 번 생성한 내부 trajectory를 읽는 방식이 더 효율적일 수 있다.
섹션 4의 결론
섹션 4가 보여주려는 메시지는 다음과 같다.
첫째, flow signature 기반 detector는 12개 dataset과 5개 LLM에서 기존 hallucination detection baseline보다 대체로 높은 AUROC를 보인다. 특히 factual QA, HaluEval General, summarization에서 강하다.
둘째, validator가 찾은 suspicious depth/token 위치를 이용해 single-block refinement를 하면 hallucination ratio가 줄어든다. 하지만 이 효과는 hallucination이 특정 depth에 localized되어 있을 때 강하고, multi-step reasoning처럼 오류가 여러 단계에 퍼지는 경우에는 약하다.
셋째, motion, attribution, drift, ratio feature는 모두 필요하다. 어떤 하나의 geometric signal만으로 충분하지 않고, 모델마다 중요한 feature group이 다르다.
넷째, 추가 비용은 step당 22–32% 수준이다. sampling-based baseline처럼 여러 개의 full generation을 요구하지 않는다는 점에서 비용상 장점이 있다고 주장한다.
한 줄로 정리하면:
섹션 4는 “내부 depthwise flow signature가 hallucination detection에 실제로 유용하고, 일부 경우에는 single-block correction에도 쓸 수 있다”는 것을 실험적으로 보여주는 부분이다. 다만 reasoning처럼 오류가 분산되는 경우에는 한계가 분명하다.
- 여기서는 GRU로 환각 검출을 한다는데, 이거는 따로 학습되어야 하는 것
- 다른 비교 방법은 학습이 안된거인데?
- 그리고 데이터 만들때 사용된 ChatGPT-4o-mini judge의 성능을 믿을만한가? 사람이 개입이 없는거 같은데
5 Discussion
Depth-localization is a scope, not a universal claim.
깊이 방향의 국소화(depth-localization)는 이 방법이 적용되는 범위이지, 보편적인 주장(universal claim)은 아니다. §3의 flow signature는 token의 depthwise trajectory에서 국소적인 regime change로 나타나는 hallucination을 감지한다. Factuality 중심 task에서는 hallucination이 자주 하나의 depth event에 대응하며, 이 경우 detection과 refinement gain이 가장 크다. 반면 reasoning에서는 오류가 여러 block에 걸쳐 분산되며, single-block refinement가 개선할 수 있는 여지는 더 작다(§4.2). 우리는 이를 이 방법이 설계된 regime의 경험적 형태로 본다.
Performance depends on the base model’s internal dynamics.
성능은 base model의 내부 dynamics에 의존한다. Separability는 base model의 hallucination이 특정 depth에 얼마나 일관되게 집중되는지에 의해 제한된다. Gemma2는 가장 어려운 경우이다. Gemma2에서는 hallucination이 한 지점에 집중되기보다 depth 전반에 퍼지기 때문에, detection과 refinement가 모두 약해진다. Signature 자체는 architecture-agnostic하다(Lemmas 1, 2). 다만 validator만 특정 ((model, dataset)) pair에 맞게 specialized된다.
Limitations of the evaluation signal.
평가 signal에는 한계가 있다. 우리의 hallucination label은 고정된 deterministic prompt를 사용하는 frozen ChatGPT-4o-mini judge에서 얻어진다. 이는 모든 방법의 달성 가능한 AUROC를 제한하는 label-noise floor를 도입한다. 따라서 절대적인 AUROC 값보다, 각 cell에서 우리 방법과 가장 강한 baseline 사이의 gap이 더 신뢰할 만하다. 모든 방법이 chance 수준 근처에 모이는 benchmark들, 예를 들어 TruthfulQA, CoQA, NQ-Open은 이 label-noise floor에 의해 제약될 가능성이 높다.
6 Conclusion
우리는 언어 모델의 내부 decision trajectory가 깊이 방향으로 어떻게 전개되는지를 모니터링함으로써 hallucination을 감지하고 수정하는 방법을 제시했다. 세 가지 설계 원칙은 gauge-invariant flow signature를 만들어내며(Lemma 2), 이를 통해 cross-depth 및 cross-model 비교가 구조적으로 잘 정의되도록 한다. 이러한 signature로 학습한 lightweight GRU validator는 12개 benchmark와 5개 base LLM 전반에서 60개의 ((model, dataset)) cell 중 45개에서 가장 높은 AUROC를 달성했다. 또한 single-block refinement operator는 45개 cell 중 29개에서 hallucination을 10% 이상 줄였으며, per-step overhead는 22–32%였다.
이 방법은 보편적인 도구가 아니라 targeted tool이다. Flow signature는 geometric footprint가 depth-localized된 hallucination을 감지한다. 반대로 chain-of-thought computation의 여러 block에 걸쳐 failure가 분산되는 경우에는 약해진다(§5). 이러한 범위 안에서는, 답변이라는 결과물만 읽는 것보다 답변을 만들어내는 과정을 읽는 것이 추가적인 signal을 제공한다. 가장 자연스러운 확장은 single-block intervention에서 multi-site intervention으로 나아가는 것이다. validator는 이미 candidate depth들을 찾아내고 있으며, 우리는 이를 이 방향의 마무리가 아니라 다음 단계로 본다.
Reference
댓글
댓글 쓰기