회의실에서는 한 사람만 듣지 않는다
다섯 사람이 회의실에 앉아 있다고 생각해 봅시다. 각 사람은 문장의 단어 하나를 맡고 있습니다.
회의에서 한 사람만 다른 사람의 말을 듣는 것은 아닙니다. 모든 사람이 필요한 사람의 말을 들으며 자신의 생각을 정리합니다.
문장 속 모든 단어가 서로를 바라본다
현재 단어
Tom이 자신의 문맥을 더 풍부하게 만들려고 합니다.
Tom이 참고하는 단어
앞에서 배운 과정이 모든 단어에서 반복된다
Tom만 Attention을 수행하는 것이 아닙니다. lives, in, New York, today도 각각 자신의 Query를 만들고 문장 속 모든 Key와 비교합니다.
원래 단어가 문맥을 가진 새로운 표현으로 바뀐다
왜 이름에 Self가 붙을까?
한쪽 정보가 다른 쪽 정보에서 필요한 부분을 참고합니다.
예: 번역할 문장을 만들면서 입력 문장을 참고합니다.
같은 문장 안의 단어들이 같은 문장의 다른 단어들을 참고합니다.
참고하는 쪽과 참고받는 쪽이 같은 입력 안에 있습니다.
순서대로 전달하는 방식과 서로 직접 참고하는 방식
단어를 앞에서 뒤로 순서대로 처리합니다.
앞의 정보가 중간 단계를 거쳐 뒤로 전달됩니다.
모든 단어가 필요한 다른 단어를 직접 참고합니다.
멀리 떨어진 단어도 중간 단계를 거치지 않고 바로 연결됩니다.
멀리 떨어진 단어도 바로 참고할 수 있다
The animal didn't cross the street because it was too tired.
it을 이해하려면 문장 앞쪽의 animal을 참고해야 합니다. 두 단어 사이에는 여러 단어가 있지만 Self-Attention에서는 바로 연결할 수 있습니다.
단어를 선택해 참고 관계를 살펴보자
현재 단어를 선택하면 어떤 단어를 많이 참고하는지 확인할 수 있습니다.
현재 단어가 찾는 정보
참고하는 단어와 비중
모든 계산을 실제로 어떻게 한 번에 처리할까?
문장에 단어가 5개라면 각 단어가 5개의 Key를 비교합니다. 문장이 길어질수록 비교해야 할 관계는 빠르게 늘어납니다.
다음 페이지에서는 Self-Attention의 전체 계산 흐름을 문장 하나를 따라가며 단계별로 정리합니다.
핵심 정리
- Self-Attention에서는 문장 속 모든 단어가 다른 단어들을 참고합니다.
- 각 단어는 Query를 만들고 모든 Key와 비교합니다.
- Attention Score와 Softmax를 거쳐 참고 비중을 정합니다.
- Value를 가중합해 각 단어의 새로운 문맥 벡터를 만듭니다.
- 같은 문장 안에서 서로를 참고하기 때문에 Self-Attention이라고 부릅니다.
- 멀리 떨어진 단어도 중간 단계를 거치지 않고 직접 참고할 수 있습니다.
- 모든 단어의 계산은 행렬로 묶어 병렬 처리할 수 있습니다.