환각을 잡는 새로운 눈: 어텐션 흐름의 위상적 흔적을 따라가다
답의 확률이 아니라 토큰 사이 정보 흐름의 모양으로 환각을 읽는 연구를 해설합니다. Forman-Ricci 곡률과 impaired context sharing의 의미를 실제 시스템 관점에서 풀어냅니다.
원문 논문 보기
arXiv에 공개된 Detecting Hallucination in LLMs: Tracing the Topological Signatures of Impaired Context Sharing (arXiv 2609.21096)은 환각 감지를 답의 내용이 아니라 어텐션 그래프 속 정보 흐름의 모양으로 풀어보자고 제안합니다. 이 논문이 내세우는 주장은 한 문장으로 정리됩니다. 생성 과정에서 토큰 사이의 context sharing이 무너지는 방식에는 반복되는 위상적 흔적이 남고, 그 흔적을 읽으면 단일 패스만으로 환각을 가려낼 수 있다는 것입니다. 원문은 제목 아래 연결해 두었습니다.
이 짧은 요약만 보면 또 하나의 감지 기법처럼 들릴 수도 있습니다. 그런데 저는 이 논문을 읽으면서 감지 성능보다 진단의 방향이 더 오래 남았습니다. 답이 맞았는지 틀렸는지를 묻는 대신, 답이 만들어지는 동안 모델 안에서 무슨 일이 있었는지를 묻고 있기 때문입니다. 오늘 글에서는 그 질문을 처음부터 따라가 보겠습니다.
환각은 틀린 문장이 아니라 끊긴 흐름에서 시작된다
제가 이 논문에서 가장 흥미롭게 본 부분은 문제의 정의 방식입니다. 보통 환각 이야기를 하면 팩트 오류나 그럴듯한 거짓말 같은 결과물부터 떠올리죠. 그런데 저자들은 시작점을 결과물이 아니라 과정으로 옮깁니다. 토큰이 하나씩 만들어지는 causal generation 동안, 앞선 토큰들이 가진 정보가 뒤쪽 토큰에게 제대로 전달됐는지를 보자는 것입니다.
생각해보면 사람도 비슷하게 말합니다. 회의에서 누군가 엉뚱한 결론을 내놓을 때, 우리는 그 문장 하나만 보지 않습니다. 그 사람이 앞선 논의를 들었는지, 메모를 잘못 읽었는지, 아니면 자기 생각에만 빠져 있었는지를 함께 봅니다. 모델의 생성도 이와 다르지 않습니다. 앞 문맥을 제대로 참조하지 못한 채 다음 토큰을 찍어내면, 문장은 유창하지만 어딘가 비어 있는 답이 나오니까요.
그렇다면 흐름이 끊겼다는 것을 어떻게 측정할까요? 여기서 많은 기존 방법이 답의 확률이나 여러 번 다시 물어본 응답의 일치도를 봅니다. 확률이 낮으면 의심하고, 여러 번 물었을 때 답이 흔들리면 의심하는 방식이죠. 저는 이 방식이 실무에서는 꽤 유용하다고 봅니다. 다만 한계도 분명합니다. 확률은 모델이 얼마나 자신 있어 하는지를 말해주지만, 왜 그렇게 됐는지는 말해주지 않기 때문입니다. 이 논문은 바로 그 빈칸을 파고듭니다.
토큰들은 생성되는 내내 서로 무엇을 나누고 있을까
모델이 답을 만들 때 토큰들은 서로 끊임없이 신호를 주고받습니다. 앞선 토큰이 뒤쪽 토큰에게 내가 가진 정보를 가져가라고 손을 내미는 장면을 떠올리시면 됩니다. 이를 context sharing이라고 부르는데, 말 그대로 문맥을 나눠 갖는 일입니다. 질문에 등장한 이름, 날짜, 조건, 지시 같은 것들이 생성 끝까지 살아남으려면 이 나눔이 계속 이어져야 합니다.
문제는 그다음입니다. 나눔이 항상 균등하게 일어나지 않습니다. 어떤 토큰은 주변 토큰과 활발히 연결되고, 어떤 토큰은 거의 고립된 채 자기 신호만 되뇝니다. 어떤 경우에는 참조가 너무 넓게 흩어져서 정작 중요한 토큰의 목소리가 묻히기도 합니다. 또 어떤 경우에는 많은 정보가 좁은 통로로 억지로 밀려들어가면서 원래 의미가 눌려버립니다.
저는 여기서 한 번 멈칫했습니다. 우리는 흔히 어텐션을 참조의 양으로만 이야기하는데, 이 논문은 참조의 모양을 보자고 말하기 때문입니다. 얼마나 많이 참조했는지가 아니라, 어떤 구조로 참조했는지가 환각과 연결된다는 것이죠. 이 차이는 생각보다 중요합니다. 양은 평균으로 뭉개지기 쉽지만, 모양은 무너진 지점을 가리키기 때문입니다.

어텐션 그래프를 지도로 읽으면 무엇이 보일까
어텐션 그래프라는 말을 들으면 어렵게 느껴질 수도 있습니다. 그런데 지도라고 생각하면 훨씬 편합니다. 토큰을 마을이라고 하고, 어텐션을 마을 사이 도로라고 해보죠. 어떤 마을은 여러 도로로 연결되어 물자가 잘 오가고, 어떤 마을은 다리가 끊겨 자기 마을에서 나는 것만으로 버팁니다. 논문은 이 지도의 모양, 즉 topology에서 환각의 단서를 찾습니다.
기존의 어텐션 기반 감지 방법도 어텐션을 보긴 했습니다. 다만 대체로 특정 가중치가 크다거나 분산이 크다는 식의 국소적인 신호에 머무른 경우가 많았습니다. 반면 이 연구는 시야를 넓힙니다. 개별 도로 하나의 굵기가 아니라, 도로망 전체가 정보를 얼마나 잘 흘려보내는 구조인지를 보자는 것입니다. 그래서 semi-local한 흐름과 global한 흐름을 함께 본다고 설명합니다.
여기서 재미있는 질문이 생깁니다. 전체 구조를 본다는 것은 구체적으로 무엇을 재겠다는 걸까요? 도로망이 좋다는 것은 감으로 말할 수 있지만, 감지기로 만들려면 숫자로 재야 하니까요. 저자들은 이 지점에서 기하학 도구를 꺼냅니다. 바로 Forman-Ricci 곡률입니다.
곡률이라는 낯선 도구가 여기서 필요한 이유
곡률이라고 하면 휘어진 공간을 떠올리시는 분이 많을 텐데요. 그래프에서의 곡률은 훨씬 직관적입니다. 어떤 길목이 주변보다 유난히 좁아서 흐름이 막히는지, 아니면 여러 갈래로 잘 퍼져나가는지를 재는 눈금이라고 보시면 됩니다. 도로로 치면 병목 구간에 붙는 경고 표지판 같은 것이죠.
이 도구가 필요한 이유는 정보 병목 때문입니다. 어텐션 그래프에서 어떤 연결 주변에 신호가 몰리거나, 반대로 연결이 끊긴 섬처럼 떠 있으면, 그 지점에서는 문맥이 제대로 공유되기 어렵습니다. 곡률은 그런 지점을 구조적으로 짚어냅니다. 저는 이 숫자보다 그 뒤의 발상이 더 중요하다고 봅니다. 모델의 판단 내용을 해석하려 하지 않고, 판단이 흐르는 통로의 상태를 먼저 본다는 점에서 그렇습니다.
물론 여기서 조금 조심해서 읽을 필요가 있습니다. 곡률이 높거나 낮다는 것이 곧바로 거짓말을 의미하지는 않기 때문입니다. 곡률은 어디가 좁고 어디가 넓은지를 말해줄 뿐, 그 좁음이 실제로 답을 망쳤는지는 다른 증거와 함께 봐야 합니다. 논문도 그래서 곡률 하나가 아니라 여러 층위에서 모은 흐름 특징을 함께 사용합니다. 도구가 우아하다고 해서 도구 하나로 모든 것을 설명할 수 있는 것은 아니니까요.
그렇다면 이 도구는 환각의 어떤 얼굴들을 가려낼까요? 다음 장면에서 그 모양들을 하나씩 펼쳐보겠습니다.

자기만 바라보는 토큰과 흩어진 참조는 어떻게 다를까
논문이 그리는 환각의 모습은 한 가지가 아닙니다. 크게 세 가지 흐름 붕괴가 반복해서 나타난다고 설명하는데요. 저는 이 구분이 실제 디버깅 감각과 맞닿아 있어서 오래 기억에 남았습니다.
첫째는 자기 어텐션에 대한 과도한 의존입니다. 뒤쪽 토큰이 앞선 문맥을 끌어오기보다 자기 자신의 신호를 계속 되돌려보는 상태입니다. 회의로 비유하면 다른 사람 말을 듣지 않고 자기 메모만 계속 읽는 사람과 비슷합니다. 말은 매끄럽게 이어지지만, 질문에서 준 조건은 어느새 사라집니다. 이런 생성에서는 문장이 자신감 있게 들릴수록 오히려 위험할 수 있는데요. 참조가 끊겼는데도 생성이 멈추지 않기 때문입니다.
둘째는 흩어진 context retrieval입니다. 겉으로 보면 많은 토큰을 참조하니 좋아 보입니다. 그런데 참조가 너무 넓게 퍼져서 정작 중요한 토큰의 비중이 옅어집니다. 도서관에서 책 백 권을 펼쳐놓고 한 권도 제대로 읽지 못하는 모습에 가깝습니다. 모델은 분명 무언가를 보고 있긴 한데, 무엇을 근거로 답을 만들었는지 흐릿해집니다.
셋째는 정보 over-squashing입니다. 많은 앞선 정보가 너무 좁은 통로를 통해 뒤쪽으로 밀려들어가면서 서로 겹치고 눌리는 현상입니다. 출퇴근 시간에 여러 차선이 갑자기 하나로 합쳐지는 병목을 떠올리시면 됩니다. 차는 지나가긴 하지만, 원래 순서와 간격은 망가집니다. 문맥도 마찬가지로 전달은 되는데 왜곡된 채로 전달됩니다.
이 세 가지가 특히 최종 transformer 층에서 뚜렷하게 나타난다는 대목은 곱씹을 만합니다. 최종 층은 답을 내놓기 바로 직전의 정제 단계이기 때문입니다. 앞선 층에서 만들어진 표현이 마지막에 하나로 모이는데, 그 모이는 지점에서 공유가 무너지면 되돌릴 기회가 거의 없습니다. 실제 시스템 관점에서 보면 다음 질문이 바로 생깁니다. 중간 층 신호는 미리 경고등으로 쓸 수 없을까요? 논문이 최종 층을 강조한다고 해서 중간 층이 쓸모없다는 뜻은 아니니까요.

한 번의 패스로 읽어내는 감지기는 어떻게 움직일까
이 연구가 제안하는 감지기는 single pass로 동작합니다. 답을 여러 번 다시 생성해서 비교하지 않고, 한 번 생성되는 동안 남는 어텐션 흐름의 흔적만으로 판단한다는 뜻입니다. 저는 이 선택을 운영 비용의 관점에서 높게 평가했습니다. 여러 번 물어보는 방법은 정확할 수 있지만, 그만큼 시간과 계산이 곱으로 늘기 때문입니다.
동작 방식을 흐름 순서대로 따라가 보겠습니다. 먼저 모델이 평소대로 답을 하나 생성합니다. 그 과정에서 각 attention head가 남긴 연결 구조를 그래프로 다시 읽습니다. 이어서 그 그래프의 semi-local한 이웃 관계와 전체적인 흐름 구조에서 특징을 뽑아냅니다. 이때 Forman-Ricci 곡률이 병목처럼 보이는 지점을 가려내는 역할을 합니다. 마지막으로 이렇게 모은 구조 특징을 바탕으로 이번 응답이 환각일 가능성을 점수로 매깁니다.
표면적으로 보면 단순합니다. 실제로는 그렇지 않습니다. 어려운 부분은 어떤 head의 어떤 흐름을 얼마나 믿을지 정하는 일이기 때문입니다. 어텐션 head마다 보는 범위가 다르고, 층마다 역할도 다릅니다. 그래서 저자들은 특정 head 하나에 기대지 않고 여러 head와 층위에서 나타나는 흐름 특징을 함께 본다고 설명합니다. 한 사람의 증언보다 여러 사람의 엇갈린 증언을 모아 판단하는 셈이죠.
좋은 건 알겠는데, 이걸 실제로 어떻게 서빙할까요? 단일 패스라고 해도 그래프 특징을 계산하는 비용이 새로 붙기 때문입니다. 논문은 추가 생성 없이 끝낸다는 점을 강점으로 내세우는데, 운영 측면에서 보면 이 계산이 토큰 생성 지연에 얼마나 얹혀지는지가 관건입니다. 다행히 방향 자체는 분명합니다. 생성을 두세 번 반복하는 것보다 한 번의 생성에서 더 많은 정보를 짜내는 쪽이 대기 시간 구조에는 유리하니까요.

두 개의 벤치마크에서 무엇이 달라졌을까
연구팀은 두 개의 확립된 벤치마크에서 기존 방법들과 비교했다고 설명합니다. 비교 대상은 크게 두 갈래입니다. 하나는 어텐션을 보는 기존 감지 방법들이고, 다른 하나는 여러 응답을 만들어 비교하는 multi-response 계열입니다. 후자는 대체로 성능이 좋지만 비용이 크다고 알려져 있죠.
결과를 한 문장으로 정리하면, 제안한 단일 패스 방법이 두 벤치마크에 걸쳐 기존 어텐션 기반 방법과 multi-response 기준선을 꾸준히 앞섰다는 것입니다. 저는 이 꾸준하다는 표현을 주의 깊게 읽었습니다. 한 벤치마크에서만 튀는 결과가 아니라 두 곳에서 같은 방향이 나왔다는 점이, 구조 신호가 특정 데이터 분포에만 붙어 있는 우연이 아니라는 쪽에 힘을 싣기 때문입니다.
다만 이 숫자는 그대로 믿기 전에 조건을 봐야 합니다. 벤치마크 두 개가 현실의 모든 질문 유형을 대변하지는 않기 때문입니다. 요약, 질의응답, 긴 문서 이해처럼 과제 모양이 바뀌면 어텐션 흐름의 모양도 달라질 수 있습니다. 특히 지시가 길거나 문서가 길 때 나타나는 흐름 붕괴가, 짧은 질문에서 나타나는 붕괴와 같은 얼굴을 하고 있을지는 따로 확인이 필요합니다.
그럼에도 해석의 여지는 남습니다. 여러 번 생성하지 않고도 multi-response 계열과 견줄 만한 결과가 나왔다면, 이는 흐름의 모양이 답의 흔들림을 어느 정도 대신 설명한다는 뜻이기 때문입니다. 다시 말해 흔들림이라는 결과 대신 흔들림이 생기는 통로 자체를 본 셈이죠. 저희가 새로운 AI 구조를 볼 때도 숫자만 보지는 않습니다. 실제로 무엇이 바뀌었고, 그 변화가 시스템에서 어떤 비용 구조를 만드는지를 함께 봅니다. 이 논문은 그 기준으로 보면 계산을 늘리지 않고 정보 밀도를 높인 경우에 가깝습니다.
모델이 바뀌어도 신호는 그대로일까
또 하나 눈여겨볼 대목은 여러 LLM 구조에 걸친 평가입니다. 모델마다 층 수, head 수, 학습 데이터, 정렬 방식이 다른데도 제안한 방법이 경쟁력 있는 성능을 유지했다고 설명합니다. 구조가 바뀌어도 통한다는 것은 신호가 특정 모델의 버릇이 아니라 생성 과정의 공통된 약점을 보고 있다는 뜻일 수 있습니다.
왜 이런 일반화가 가능할까요? 제 해석은 이렇습니다. causal generation이라는 뼈대 자체가 모든 자가회귀 모델에 공통이기 때문입니다. 앞만 보고 한 걸음씩 나아가는 생성 방식에서는 누구나 앞선 정보를 뒤로 가져와야 하고, 그 과정에서 병목이 생길 여지도 비슷하게 생깁니다. 모델 크기가 달라져도 이 뼈대는 바뀌지 않으니, 흐름 붕괴의 모양도 어느 정도 공유된다는 것이죠.
하지만 여기서도 과도한 일반화는 경계하고 싶습니다. 구조가 다르다는 것은 어텐션 분포의 습관도 다르다는 뜻이기 때문입니다. 어떤 모델은 특정 층에 정보를 몰아주는 경향이 있고, 어떤 모델은 여러 층에 나눠주는 경향이 있습니다. 최종 층에서 신호가 가장 뚜렷하다는 이번 관찰이 모든 구조에서 같은 강도로 나타날지는 열린 질문입니다. 제가 앞으로 보고 싶은 것은 모델 계열별로 이 신호의 층 분포가 어떻게 달라지는지를 그린 지도입니다. 감지기를 붙일 위치를 정하는 데 바로 쓸 수 있기 때문입니다.

숫자를 그대로 믿기 전에 한 번 더 물을 것
여기까지 읽으면 이 방법이 환각 문제를 푼 것처럼 들릴 수도 있습니다. 그런데 저는 이 결과보다 그 뒤의 빈칸이 더 중요하다고 봅니다. 논문이 보여준 것은 흐름 붕괴와 환각 사이의 강한 연결이지, 붕괴가 환각의 원인이라는 증명은 아니기 때문입니다.
예를 들어 이런 경우를 생각해볼 수 있습니다. 모델이 애초에 잘못된 지식을 가지고 있다면 흐름은 멀쩡해도 답은 틀립니다. 반대로 흐름이 잠시 흔들려도 모델이 가진 강한 사전 지식이 답을 구해낼 수도 있습니다. 곡률이 가리키는 병목이 실제로 답을 망친 지점인지, 아니면 답이 망가지는 과정에서 덩달아 나타난 그림자인지를 가르는 일은 여전히 남습니다. 이 구분 없이 구조 점수만 올리면 엉뚱한 최적화로 이어질 수 있죠.
또 하나 짚고 싶은 것은 측정 범위에 관한 것입니다. 이 분석은 어텐션이라는 하나의 통로에 집중합니다. 그런데 요즘 모델의 생성에는 위치 인코딩, 피드포워드 변환, 잔차 흐름 같은 다른 통로들도 함께 얽혀 있습니다. 어텐션 지도가 깨끗해도 다른 통로에서 정보가 샐 수 있다는 뜻입니다. 그래서 저는 이 방법을 단독 감지기보다 복합 감지기의 한 축으로 보는 쪽이 현실적이라고 봅니다. 어텐션 흐름 점수에 확률 신호나 검색 기반 확인을 얹으면, 서로의 빈틈을 메울 수 있으니까요.
그렇다면 이 한계를 어떻게 실험으로 좁힐 수 있을까요? 병목을 인위적으로 만들거나 풀었을 때 환각률이 어떻게 움직이는지를 보는 개입 실험이 있으면 해석이 훨씬 단단해질 것입니다. 지금은 관찰된 연결이 강하다는 단계이니, 다음 단계는 그 연결을 흔들어보는 일이겠죠.
제가 다음에 보고 싶은 장면은 이것입니다
이 논문을 덮으면서 가장 먼저 떠오른 장면은 운영 중인 서비스의 밤 시간대입니다. 사용자가 긴 문서를 올리고 요약을 요청하는데, 모델이 그럴듯하지만 원문에 없는 숫자를 끼워 넣는 경우 말이죠. 이런 사고는 확률 점수만으로는 잡기 어렵습니다. 확률은 당당하고 문장은 매끄럽기 때문입니다. 반면 흐름 지도를 함께 본다면 최종 층 근처에서 참조가 끊긴 흔적이 먼저 눈에 들어올 수 있습니다.
실제 시스템 관점에서 보면 다음 질문이 바로 생깁니다. 이 점수를 언제, 어디서, 얼마나 자주 계산할 것인가입니다. 모든 토큰마다 계산하면 부담이 커지고, 답이 끝난 뒤 한 번만 계산하면 개입 시점을 놓칠 수 있습니다. 저는 긴 생성의 중간 지점에서 가벼운 흐름 검사를 먼저 하고, 의심스러운 경우에만 정밀 분석으로 넘어가는 2단계 구조를 상상해 봤습니다. 단일 패스라는 장점을 살리면서 비용을 조절하는 방식이죠. 물론 이는 논문이 제안한 그대로는 아니고, 제 나름의 운영 상상입니다.
연구 측면에서도 보고 싶은 것이 많습니다. 층별 신호의 시간 변화, head별 역할 분리, 과제 유형별 붕괴 모양의 차이, 그리고 다른 감지 신호와의 조합 효과가 그렇습니다. 특히 multi-response 방법과 결합하면 재미있는 결과가 나올 수 있는데요. 흐름 점수가 의심스럽다고 표시한 사례에서만 추가 생성을 하는 식이면, 비용은 아끼고 정확도는 챙길 수 있기 때문입니다.

흐름을 보면 답이 보인다
처음에 던진 질문으로 돌아가 보겠습니다. 환각은 왜 그렇게 당당할까요? 이 논문이 주는 답은 꽤 명료합니다. 답의 표면이 아니라 답에 이르는 통로가 무너졌기 때문이라는 것입니다. 자기만 바라보는 참조, 너무 넓게 흩어진 참조, 좁은 목에 눌린 참조는 모두 다른 얼굴이지만 같은 이야기를 합니다. 문맥을 나눠 갖는 일이 어딘가에서 끊겼다는 것이죠.
저는 그래서 이 연구를 감지기 하나로만 기억하지 않으려 합니다. 모델을 평가하는 눈을 하나 더 얻었다는 쪽에 가깝습니다. 맞았는지 틀렸는지를 세는 눈 옆에, 흐름이 healthy했는지를 보는 눈을 놓는 것입니다. 두 눈을 함께 쓰면 실수를 더 빨리 찾고, 찾은 뒤에는 어디를 고쳐야 할지도 더 분명해집니다.
그렇다면 우리의 역할은 무엇일까요. 모델이 더 유창해질수록 표면만 보고 판단하는 일은 더 어려워집니다. 그때 필요해지는 것은 통로를 읽는 습관입니다. 이번 논문의 곡률이라는 도구가 그 습관의 한 형태라고 저는 봅니다. 완벽하지는 않지만, 방향은 분명합니다. 다음에 모델이 엉뚱한 답을 내놓을 때, 답의 문장이 아니라 그 문장에 이르는 길을 먼저 물어보는 것입니다.