어텐션(attention)은 2014년 등장한 신경망의 핵심 아이디어로, 「출력의 한 부분을 만들 때 입력의 어느 부분에 더 주목할지를 동적으로 결정하는」 메커니즘입니다.
사람의 인지에서 이름을 빌렸으며, 실제로 사람이 무언가에 「집중」하는 모습을 흉내 냅니다.
기계 번역으로 예를 들어 보겠습니다.
「I love you」를 「나는 너를 사랑한다」로 번역할 때, 「나는」을 만들 때는 「I」에 주목해야 하고, 「너를」을 만들 때는 「you」에, 「사랑한다」를 만들 때는 「love」에 주목해야 합니다.
어텐션은 이 「어디를 봐야 할지」를 학습으로 자동 결정합니다.
기술적으로 어텐션은 세 가지 벡터로 작동합니다.
「쿼리(Query)」 — 지금 무엇을 찾고 있는가, 「키(Key)」 — 입력의 각 위치가 어떤 정보를 가지고 있는가, 「값(Value)」 — 그 위치의 실제 정보.
쿼리와 모든 키의 유사도를 계산해 가중치를 만들고, 그 가중치로 값들의 가중 평균을 내는 식입니다.
비유하자면 어텐션은 「거대한 도서관에서 정확한 책을 찾는 검색」과 같습니다.
내가 알고 싶은 주제(쿼리)를 머릿속에 떠올리고, 모든 책의 표지(키)를 빠르게 훑어 가장 관련 있는 책들을 찾고, 그 책들의 내용(값)을 비중 있게 읽는 식입니다.
어텐션의 등장은 seq2seq 모델의 「긴 문장에서 정보 손실」 문제를 거의 해결했고, 그 자체가 너무 강력해 결국 2017년 「Attention is All You Need」 논문에서 RNN을 완전히 제거하고 어텐션만으로 만든 Transformer가 등장합니다.
오늘날 모든 LLM의 토대가 된 핵심 기술입니다.
한 줄 요약
어텐션은 출력의 한 부분을 만들 때 입력의 어느 부분에 주목할지를 동적으로 결정하는 메커니즘이며, 쿼리·키·값 세 벡터로 작동합니다.
Transformer와 모든 LLM의 토대입니다.
더 알아볼 것
- Soft attention vs Hard attention
- Bahdanau attention과 Luong attention
- Cross-attention과 Self-attention의 차이