13강 / 20강

어텐션 — 어디를 볼지 배운다

거리와 상관없이, 한꺼번에

어텐션 — 어디를 볼지 배운다
지금 자리에서 모든 자리를 본 뒤, 중요한 곳에 더 큰 무게를 줍니다.

발상을 한 줄로 적으면 이렇습니다.

각 자리가 모든 자리를 보고, 얼마나 볼지를 스스로 정한다

거리가 1이든 500이든 한 걸음입니다. 그리고 모든 자리를 동시에 계산할 수 있어요. 12강의 두 제약이 한꺼번에 풀립니다.

자리마다 세 가지를 만든다 질의 Q "나는 무엇을 찾고 있나" 열쇠 K "나는 무엇을 갖고 있나" 값 V "내가 넘겨줄 내용" 점수 = Q·K (질의와 열쇠가 맞으면 점수가 높다) 무게 = softmax(점수) 출력 = 무게로 가중한 V 의 합
여섯 줄입니다. <code>sqrt(d)</code> 로 나누는 이유까지 아래에서 확인해요.
Python 브라우저에서 실행
질의를 옮겨 보세요. 어느 자리에 무게가 쏠리는지.
불러오는 중…

왜 이것이 그렇게 강한가

순환합성곱어텐션
멀리 있는 것까지 거리O(n) 걸음층을 쌓아야한 걸음
병렬로 계산안 된다된다된다
계산량O(n)O(n)O(n²)
무엇을 볼지정해져 있다이웃만배운다

세 번째 줄이 대가입니다 — 모든 자리가 모든 자리를 보니 길이의 제곱으로 계산이 늘어요. 서열이 길어지면 이게 벽이 되고, 그 벽을 넘으려는 연구가 지금도 활발합니다.

🤔 확인 문제
어텐션의 계산량이 서열 길이 n 에 대해 O(n²) 인 이유는?