attention에 대한 가장 깔끔한 한 줄: soft하고 미분 가능한 dictionary lookup이다. 보통 Python dict는 exact key를 exact value로 매핑 — hit 아니면 miss. attention은 이걸 일반화해. 각 토큰이 query를 제시, context의 모든 토큰이 key와 value를 제시, 출력은 모든 value의 가중합, query-key similarity로 가중.
이 한 수가 세 가지를 동시에 사: 미분 가능(학습 중 gradient 흐름), 병렬(n × n similarity 행렬을 단일 matmul로), 관계적(동사가 주어를 찾는 같은 연산이 대명사가 선행사를 찾는 것도 가능하게).
구성 요소 셋, 역할 셋
- Query (Q): "지금 내가 뭘 찾고 있나?" — 묻는 토큰에서 생성.
- Key (K): "나는 어떤 종류의 정보냐?" — 보이는 각 토큰에서 생성.
- Value (V): "내가 attend되면 어떤 정보를 제공하냐?" — 마찬가지로 보이는 각 토큰에서 생성, 단 K와 달라도 됨.
왜 K와 V가 다를 수 있나: 매칭 기준("이 토큰이 내가 원하는 건가?")이 일단 보기로 결정한 뒤 추출하고 싶은 정보랑 다를 수 있어. K는 lookup signature, V는 payload. 분리하면 모델 표현력 증가.