2026. 7. 1. 15:43ㆍ논문리뷰
Kaggle에서 ViT APTOS 2019 Blindness Detection 데이터셋으로 학습시키고(kaggle ViT 학습 리뷰), ViT에도 grad-cam같은 기술이 있는지 찾아보다가 Attention Rollout/Flow를 알게 되었다. 원래는 공부한 내용들을 노트에 손필기로 정리했었는데, 블로그에 정리하는 것이 더 깔끔하고 다른 사람들과 정보를 공유할 수 있기 때문에 블로그를 시작해보려고 한다. 시간이 된다면 내가 노트에 정리한 내용을 하나씩 블로그에 작성해볼 계획이다.
- 제목: Quantifying Attention Flow in Transformers
- 저자: Samira Abnar/Willem Zuidema(ILLC, University of Amsterdam)
- 게재 학회: ACL 2020
- 인용수: 1803회(2026.07.01)
Abstract
트랜스포머 모델은 레이어를 거치면서 정보가 무분별하게 섞이게 된다. 이런 이유 때문에 raw attention을 모델을 해석하기 위해 사용했을때, 모델 내부를 정확하게 설명하지 못하는 한계가 있다. 논문은 attention rollout과 attention flow라는 post hoc method 을 제안하는데, 두 방법 모두 raw attention보다 ablation method와 input gradient를 사용했을 때 입력 토큰의 중요도 점수와 높은 상관관계가 있는것으로 나타났다. 간단하게 설명하면 어텐션 가중치를 역으로 추적하여 최종 출력에서 입력 토큰까지의 정보 흐름을 추적해서 근사(approxiamte)한다.
Setups and Problem Statement
모델이 정확히 어떤 단어를 어텐션하고 있는지 명확하게 알 수 있는 '동사 복수형 맞히는 문제(verb number prediction task)'를 사용했다. 모델은 GPT-2 인코더를 사용.

<verb>를 맞히는 문제에 대해 raw attention map을 시각화한 figure이다. 논문에서는 상위 계층으로 갈수록 가중치가 비슷(Uniform)해져서 같은 정보를 가진다고 한다.(carry all similar information). 이는 레이어를 거듭할수록 주변 단어의 정보가 무분별하게 섞이면서(Contextualized), 상위 레이어의 토큰들이 결국 다 비슷비슷한 정보를 공유하게 되기 때문이다.
따라서 input layer까지 어텐션 가중치를 확인해봐야 하고, 그 방법들이 attention rollout/flow이다.
Residual Connection
논문에서는 어텐션 가중치 분석을 할때 잔차 연결을 반드시 고려해야 한다고 한다. 잔차 연결은 다른 layer의 같은 위치를 tying하는 핵심 역할을 하기 때문에 중요하다고 주장한다.

따라서 실제 계산을 할 때에는 어텐션 행렬에 identity metrix를 0.5의 비율로 더해서 새로운 행렬을 만들고, 새로운 행렬을 이용해 계산한다.
Attention Rollout
논문은 introduction에서 rollout은 레이어에서 정보가 넘어갈때 곱하기와 더하기만으로 정보가 전달된다는 선형 가정을 한다.

먼저 논문에 나온 path는 정보의 이동 통로, node는 내부의 단어, edge는 어텐션 가중치라고 생각하면 이해하기 쉽다. Attention flow는 한 노드에서 다른 노드로 가는 정보의 양을 edges를 곱해서 계산한 다음, 모든 path를 더한다. 이 연산은 행렬끼리의 곱셈으로 계산할 수 있는데, 구체적인 식은 아래와 같다.

예시를 들어서 설명해보겠다.
2개의 입력 단어(토큰)를 $V_1, V_2$라고 하고, 최종 레이어의 출력 토큰이 $CLS$인 레이어 2개의 Transformer가 있다고 해보자.
먼저 Layer 1 의 어텐션 맵을 $A_1 $= $\begin{pmatrix} 0.7 & 0.3 \\ 0.2 & 0.8 \end{pmatrix}$ 라고 하고,
Layer 2의 CLS 벡터를 $A_2$= $\begin{pmatrix} 0.6 & 0.4 \end{pmatrix}$ 라고 하자.
두 어텐션 행렬의 곱으로 attention rollout을 구하는 과정은 아래와 같다.
이때 $CLS$토큰이 최초 $V_1$ 토큰으로부터 받은 정보의 경로를 분석해보면
1. 첫번째 경로( $0.6 \times 0.7$)
$CLS \xrightarrow{0.6} V_1 \xrightarrow{0.7} V_1$
2.두번째 경로( $0.4 \times 0.2$)
$CLS \xrightarrow{0.4} V_2 \xrightarrow{0.2} V_1$
이다.
다만 이는 단순화된 버전이고, 실제 rollout을 계산할때는 0.5의 비율로 잔차연결을 더한 행렬을 이용해 rollout을 구한다.
계산 복잡도는 $O(d \times n^2)$ (d는 모델의 depth, n은 토큰개수)
Attention Flow
attention flow는 최대 유량 알고리즘(max flow algorithm)를 이용하여 정보의 경로를 분석한다. 간단하게 설명해서, rolllot은 정보 전달량을 product로 계산했다면 flow는 경로에 존재하는 간선의 최솟값으로 정의한다. 파이프에 물이 흐를때, 전체 유량은 가장 좁은 구간에서 결정되는 것과 같은 원리로, 상위 layer의 어텐션이 아무리 높아도 하위 layer의 낮은 어텐션이 실제 정보 전달량의 상한을 결정한다.
path에서 가장 작은 값을 찾아서 다 더하고/겹치는 path는 분배해준다.
예시를 들면
$ex.1$
h1: 0.1 → 0.1
입력(capacity=1.0) → h2: 0.1 → 0.1 → 출력
h3: 0.8 → 0.0
$$\text{h1 경로: } \min(0.1,\ 0.1) = 0.1$$ $$\text{h2 경로: } \min(0.1,\ 0.1) = 0.1$$ $$\text{h3 경로: } \min(0.8,\ 0.0) = 0.0$$ $$\text{최대 유량} = 0.1 + 0.1 + 0.0 = 0.2$$
$ex.2$
입력(capacity=0.5) → h1: 0.4 → 출력
→ h2: 0.3 →
$$\text{capacity: } h_1 = 0.4,\ h_2 = 0.3,\ \text{입력} = 0.5$$ $$h_1\text{에 } 0.4 \text{ 흘림} \Rightarrow h_2\text{에 남은 양} = 0.5 - 0.4 = 0.1$$ $$\therefore\ h_2\text{의 실제 flow} = 0.1 \neq \min(0.5, 0.3) = 0.3$$ $$\text{최대 유량} = 0.4 + 0.1 = 0.5$$
두번째 예시에서 가장 최소 capacity를 더하면 0.7이지만(overflow), 앞의 공유 파이프의 최대 capacity가 0.5이기 때문에 h2의 실제 flow는 0.1이 된다. ex.1에서 0.2를 구하고, ex.2에서 0.5를 구하는 과정이 최대 유량 알고리즘이다.
계산 복잡도는 $O(d^2 \times n^4)$ (d는 모델의 depth, n은 토큰개수)
Analysis & Discussion

논문에서 실험결과 attention flow의 정확도가 attention rollout보다 높다고 한다. flow는 최대 전파 가능 용량을 측정하고, rollout은 정확한 양을 측정하는데 이때 rollout은 단순화된 가정(선형 가정 등)을 사용해서 보다 유연한 방식인 flow보다 정확도가 떨어진다고 한다.



Conclusion
논문에서는 Transformer 모델의 내부를 설명하는 방법으로 정보가 무분별하게 섞여서 정확도가 떨어지는 기존의 raw attention map 대신 잔차연결을 고려하고, token attention을 재귀적으로 계산하는 방식인 attention rollout/attention flow 방법을 제안했다. ablation method, input gradient를 사용해 실험해본 결과 기존 raw attention map보다 모델을 잘 설명하는 것으로 드러났다.
flow 방식대로라면 처음에 0.1만 어텐션한 path라면 나중에 0.9들 높은 값으로 어텐션되나 0.01로 어텐션되나 같은 정보 전달로 파악될텐데 이 점이 attention flow의 약점이 될 수 있다고 생각했다. 이 논문이 나온 이후 flow를 vit에 적용한 논문으로 Transformer Interpretability Beyond Attention Visualization (CVPR 2021)가 있다고 하는데, 다음에 읽어봐야겠다.
Attention Rollout 구현
Attention Rollout 코드 구현(APTOS 2019)
APTOS 캐글 데이터셋 ViT로 학습시키다가 여기까지 와버렸다. 블로그 작성은 계획에 없었는데 너무 기록을 대충 하는 것 같아서 이렇게라도 해야겠다고 생각했다.
논문 읽는것도 거의 처음이고, 초등학생 때 이후로 인터넷 공간에 글을 작성하는게 처음이라 너무 어색하고 힘들다... 꾸준하게 해봐야지.
이제 APTOS 데이터셋을 학습시킨 ViT를 Rollout기법으로 시각화한 코드를 리뷰해보겠다.