어텐션 — 어디를 볼지 배운다
거리와 상관없이, 한꺼번에
지금 자리에서 모든 자리를 본 뒤, 중요한 곳에 더 큰 무게를 줍니다.
발상을 한 줄로 적으면 이렇습니다.
각 자리가 모든 자리를 보고, 얼마나 볼지를 스스로 정한다
거리가 1이든 500이든 한 걸음입니다. 그리고 모든 자리를 동시에 계산할 수 있어요.
12강의 두 제약이 한꺼번에 풀립니다.
자리마다 세 가지를 만든다
질의 Q "나는 무엇을 찾고 있나"
열쇠 K "나는 무엇을 갖고 있나"
값 V "내가 넘겨줄 내용"
점수 = Q·K (질의와 열쇠가 맞으면 점수가 높다)
무게 = softmax(점수)
출력 = 무게로 가중한 V 의 합
여섯 줄입니다. <code>sqrt(d)</code> 로 나누는 이유까지 아래에서 확인해요.
왜 이것이 그렇게 강한가
| 순환 | 합성곱 | 어텐션 |
| 멀리 있는 것까지 거리 | O(n) 걸음 | 층을 쌓아야 | 한 걸음 |
| 병렬로 계산 | 안 된다 | 된다 | 된다 |
| 계산량 | O(n) | O(n) | O(n²) |
| 무엇을 볼지 | 정해져 있다 | 이웃만 | 배운다 |
세 번째 줄이 대가입니다 — 모든 자리가 모든 자리를 보니 길이의 제곱으로 계산이 늘어요.
서열이 길어지면 이게 벽이 되고, 그 벽을 넘으려는 연구가 지금도 활발합니다.
🤔 확인 문제
어텐션의 계산량이 서열 길이 n 에 대해 O(n²) 인 이유는?
해설 n×n 짜리 점수 행렬을 만듭니다. 길이 1,000이면 백만 칸이고 10,000이면 1억 칸이에요 — 긴 서열에서 이것이 벽이 됩니다.