이 레슨과 관련된 학습 키워드
인공지능(AI) — 기계가 생각하는 법 → 딥러닝(Deep Learning) — 인공 신경망의 세계 → 순환 신경망 및 시퀀스 모델 — 순서가 있는 데이터 다루기 → 트랜스포머(Transformers)
스케일드 닷-프로덕트 자기 어텐션을 처음부터 구현합니다.
여러분, 셀프 어텐션을 이해하려면 먼저 크로스 어텐션의 한계부터 봐야 합니다.
그림 왼쪽을 보세요. 크로스 어텐션은 기계 번역에서 인코더의 소스 문장과 디코더의 타겟 문장, 두 개의 다른 시퀀스를 연결했습니다.
쿼리는 디코더에서, 키와 밸류는 인코더에서 가져오는 구조입니다.
하지만 한 가지 큰 문제가 있었어요.
같은 문장 안에서 단어들끼리의 관계는 어떻게 파악할까요?
예를 들어 "The cat sat on the mat because it was tired"에서 it이 무엇을 가리키는지, 같은 문장 안에서 알아내야 합니다.
크로스 어텐션으로는 이게 불가능합니다. 소스와 타겟이 같은 문장이니까요.
이제 오른쪽 셀프 어텐션을 보세요.
셀프 어텐션은 쿼리, 키, 밸류를 모두 같은 시퀀스에서 만듭니다.
한 문장의 모든 토큰이 다른 모든 토큰과 직접 관계를 계산합니다.
오른쪽 아래 어텐션 점수 행렬을 보세요. 4 곱하기 4 그리드입니다.
it이라는 토큰이 cat에 0.42라는 높은 점수를 주고 있습니다.
중간에 7개의 토큰이 있어도, 셀프 어텐션은 단 한 번의 행렬곱으로 이 관계를 파악합니다.
알엔엔이라면 7단계를 순차적으로 거쳐야 하지만, 셀프 어텐션은 오 원의 경로 길이를 가집니다.
이것이 2017년 "Attention is All You Need" 논문의 핵심 아이디어입니다.
왼쪽의 크로스 어텐션 수식과 오른쪽 셀프 어텐션 수식을 비교해보세요.
크로스는 Attn에 쿼리 디코더, 키 인코더, 밸류 인코더를 넣지만.
셀프는 Attn에 쿼리 셀프, 키 셀프, 밸류 셀프를 넣습니다. 전부 같은 출처입니다.
이 간단한 변경이 자연어 처리의 패러다임을 완전히 바꿨습니다.
다음 블록에서 구체적인 예시로 셀프 어텐션이 어떻게 대명사를 해석하는지 살펴봅시다.
선생님: 크로스 어텐션과 셀프 어텐션의 가장 큰 차이가 뭘까요?
학생: 크로스 어텐션은 쿼리가 한 시퀀스에서 오고 키와 밸류가 다른 시퀀스에서 오는데, 셀프 어텐션은 전부 같은 시퀀스에서 나오는 거 아닌가요?
선생님: 정확해요. 그래서 셀프 어텐션은 같은 문장 안에서 단어들 사이의 관계를 파악할 수 있습니다.
학생: 그러면 크로스 어텐션은 아예 안 쓰나요?
선생님: 아닙니다. 번역처럼 두 시퀀스를 연결해야 할 때는 여전히 크로스 어텐션을 씁니다. 트랜스포머 디코더에 둘 다 있어요.