Skip to main content

어텐션의 탄생

Views 22약 8분생성형 AI 활용

RNN과 LSTM은 순서를 다루는 데 큰 진전을 만들었다. 문장을 왼쪽에서 오른쪽으로 읽으며, 앞에서 본 정보를 뒤로 전달하는 방식은 분명 자연스러웠다. 사람도 책을 읽을 때 글자를 한꺼번에 보지 않고 순서대로 읽으니, 처음에는 꽤 그럴듯해 보였다.

하지만 실제로 문장을 길게 다뤄 보면 문제가 드러난다. 앞부분의 중요한 정보가 뒤로 갈수록 희미해지고, 모델은 긴 문맥을 붙잡아 두는 데 자꾸 힘겨워했다. LSTM은 이 문제를 완화했지만, 완전히 없애지는 못했다. 바로 이 지점에서 어텐션이라는 아이디어가 등장한다. 어텐션은 모델에게 이렇게 말한다. "모든 정보를 하나의 좁은 병목에 억지로 밀어 넣지 말고, 필요할 때 필요한 부분을 직접 다시 보라."

이 발상의 전환은 딥러닝의 흐름을 바꿨다. 어텐션은 단순한 기능 추가가 아니었다. 모델이 문맥을 다루는 방식 자체를 다시 설계한 사건이었다.

어텐션의 탄생

순차 모델의 병목은 어디에 있었을까

RNN 계열 모델의 가장 큰 특징은 입력을 순서대로 처리한다는 점이다. 첫 번째 단어를 읽고, 그 결과를 다음 단어로 넘기고, 다시 그 결과를 또 다음 단어로 넘긴다. 이 방식은 문장의 흐름을 반영한다는 장점이 있지만, 동시에 뚜렷한 한계를 만든다.

첫째, 정보가 멀리 떨어질수록 전달이 어렵다. 문장 첫머리의 단어가 마지막 단어를 이해하는 데 중요해도, 그 정보는 여러 단계를 거치며 희미해질 수 있다. 둘째, 모든 정보를 중간 상태에 압축해야 한다. 마치 긴 소설 전체를 한 장의 메모에 적어 두고, 뒤에서 필요할 때 그 메모만 보고 판단하는 셈이다. 셋째, 계산이 순차적이어서 느리다. 앞 단계를 끝내야 다음 단계를 계산할 수 있기 때문이다.

예를 들어, "어제 도서관에서 빌린 두꺼운 역사책을 오늘 반납했다"라는 문장을 생각해 보자. 여기서 "반납했다"를 제대로 이해하려면 무엇을 반납했는지, 즉 앞쪽의 "역사책"과 연결해야 한다. 문장이 더 길어지고 수식어가 더 많아질수록, 이런 연결은 점점 어려워진다.

RNN은 정보를 이어 달리게 만드는 모델이었다. 반면 어텐션은 필요한 곳을 직접 바라보게 만드는 모델이다. 이 차이는 생각보다 훨씬 크다.

모든 단어가 모든 단어를 본다면

어텐션의 핵심은 놀랄 만큼 단순하다. 문장 안의 각 단어가 자기 앞의 몇 단어만 보는 것이 아니라, 문장 전체를 훑어보며 지금 자신에게 중요한 단어가 무엇인지 판단하게 하자는 것이다.

즉, 어떤 단어를 이해할 때 굳이 중간 전달자만 믿지 않는다. 필요한 정보가 멀리 있어도 직접 참고한다. "반납했다"는 "역사책"을 보고, "그녀"는 앞에 나온 인물을 보고, "그곳"은 이전에 언급된 장소를 본다. 문장의 길이가 늘어나도 정보 접근 방식은 같다. 멀리 있든 가까이 있든, 관련이 있으면 참고할 수 있다.

이 아이디어가 긴 문맥 이해에 유리한 이유는 명확하다. 중요한 정보가 시간의 흐름 속에서 희석되지 않기 때문이다. 모델은 "어디에 중요한 정보가 있는가"를 스스로 배우고, 그 위치가 앞이든 뒤든 직접 연결할 수 있다.

어텐션을 사람의 독서 습관에 비유해 보자. 우리는 문장을 읽다가 의미가 애매하면 눈을 다시 앞줄로 돌린다. 등장인물이 헷갈리면 이전 문장을 확인하고, 대명사가 가리키는 대상을 찾기 위해 앞 문맥을 다시 본다. 어텐션은 이런 "되돌아보기"를 모델 안에 구조적으로 넣은 장치라고 생각하면 된다.

어텐션은 중요도를 계산하는 장치다

어텐션은 결국 "무엇을 얼마나 참고할 것인가"를 계산한다. 모든 단어를 똑같이 보는 것이 아니라, 현재 처리 중인 단어와 관련이 큰 단어에 더 높은 비중을 준다.

예를 들어 "검은 고양이가 소파 위에서 잔다"라는 문장에서 "잔다"를 이해할 때 모델은 "고양이"를 강하게 참고할 가능성이 크다. "검은"은 "고양이"를 꾸미는 말이므로 역시 어느 정도 중요하다. 반면 "소파"는 장소 정보를 주므로 다른 방식으로 관련된다. 이렇게 각 단어 사이의 관련성을 점수처럼 계산하고, 그 점수에 따라 정보를 섞어 새로운 표현을 만든다.

이때 중요한 점은 어텐션이 규칙을 사람이 손으로 정하지 않는다는 것이다. "동사는 주어를 많이 봐라" 같은 규칙을 하드코딩하지 않는다. 대신 학습을 통해, 어떤 상황에서 무엇을 봐야 예측이 잘 되는지를 모델이 직접 익힌다. 그래서 어텐션은 단순한 연결이 아니라, 데이터로부터 배운 연결이다.

Query, Key, Value를 직관적으로 이해하기

어텐션을 처음 배울 때 가장 낯선 말이 Query, Key, Value다. 이름만 보면 데이터베이스나 해시 테이블이 떠오르지만, 여기서는 훨씬 직관적으로 이해할 수 있다.

어떤 단어를 처리하는 순간, 모델은 사실 세 가지를 동시에 준비한다.

  • Query는 "나는 지금 무엇을 찾고 있는가"라는 질문이다.

  • Key는 "나는 어떤 특징을 가진 정보인가"라는 표지다.

  • Value는 "실제로 전달할 내용이 무엇인가"라는 본문이다.

도서관에서 책을 찾는 장면을 떠올려 보자. 독자가 찾고 싶은 주제가 Query다. 책 등에 붙은 분류표나 제목이 Key다. 책 속 실제 내용이 Value다. 독자는 자신의 질문과 잘 맞는 표지를 가진 책을 고르고, 그 책의 내용을 읽는다. 어텐션도 비슷하게 작동한다. 현재 단어의 Query가 다른 단어들의 Key와 얼마나 잘 맞는지를 계산하고, 잘 맞는 단어들의 Value를 더 많이 가져온다.

이 비유를 문장에 대입해 보자. "그 영화는 너무 길었지만 결말은 놀라웠다"에서 "놀라웠다"를 이해하는 단어는 현재 자신의 Query를 들고 문장 전체를 둘러본다. 그러다가 "결말" 같은 단어의 Key와 잘 맞으면, 그 단어의 Value를 많이 받아온다. 그 결과 "놀라웠다"의 표현은 단순히 자기 자신만의 표현이 아니라, 문맥이 반영된 표현으로 바뀐다.

여기서 Query, Key, Value를 굳이 따로 두는 이유도 중요하다. 단어는 하나지만, "무엇을 찾는 입장"과 "무엇을 제공하는 입장"은 같지 않을 수 있다. 어떤 단어는 질문하는 기준으로 중요하고, 어떤 단어는 정보를 제공하는 기준으로 중요하다. 이 역할을 분리해 두면, 관계를 더 유연하게 배울 수 있다.

셀프 어텐션은 입력 안의 관계를 한꺼번에 본다

셀프 어텐션은 말 그대로 입력이 자기 자신에게 어텐션을 주는 방식이다. 문장 안의 각 토큰이 같은 문장 안의 다른 토큰들을 참고해 자신의 표현을 업데이트한다.

핵심은 "동시에"라는 점이다. RNN에서는 첫 단어, 둘째 단어, 셋째 단어를 순서대로 처리해야 했다. 그러나 셀프 어텐션에서는 문장 전체가 한 번에 테이블 위에 올라온다. 그리고 각 토큰은 다른 모든 토큰과의 관련성을 계산한다. 문장 내부의 관계망이 한 번에 그려지는 셈이다.

예를 들어 "작은 아이가 큰 우산을 들고 학교로 뛰어갔다"라는 문장을 생각해 보자. 셀프 어텐션은 각 단어가 다른 단어와 어떤 관계를 가지는지 동시에 계산한다. "작은"은 "아이"와 강하게 연결되고, "큰"은 "우산"과 연결된다. "뛰어갔다"는 "아이"와 "학교" 모두와 관련을 맺는다. 이렇게 만들어진 표현은 단어 사전의 뜻만 담은 벡터가 아니라, 문장 안에서의 역할까지 반영한 벡터다.

이 점이 아주 중요하다. 같은 단어라도 문맥에 따라 표현이 달라질 수 있기 때문이다. "은행"이 금융기관인지 강둑인지, "배"가 과일인지 탈것인지, 결국 주변 단어를 봐야 알 수 있다. 셀프 어텐션은 이런 문맥 반영을 입력 내부의 상호작용으로 해결한다.

왜 긴 문맥에서 특히 강력할까

어텐션이 긴 문맥에서 강력한 이유는, 멀리 떨어진 정보와도 직접 연결할 수 있기 때문이다. RNN에서는 20번째 단어가 1번째 단어를 이해하려면 2, 3, 4번째 단계를 차례로 거쳐야 했다. 하지만 셀프 어텐션에서는 20번째 단어가 1번째 단어를 바로 참고할 수 있다.

이 차이는 문장이 길어질수록 커진다. 문서 요약, 번역, 질의응답처럼 긴 문맥에서 핵심 정보를 찾아야 하는 작업에서는 특히 그렇다. 문장의 앞부분에 등장한 개념이 뒷부분의 해석을 결정하고, 뒷부분의 단서가 앞부분의 의미를 다시 정리하기도 한다. 어텐션은 이런 전역적 관계를 다루는 데 자연스럽다.

물론 모든 단어가 모든 단어를 본다는 것은 계산량이 많아진다는 뜻이기도 하다. 하지만 문맥 이해력에서 얻는 이점이 너무 컸기 때문에, 어텐션은 곧 중심 기술로 자리 잡게 된다. 이후에는 이 계산을 더 효율적으로 만들기 위한 다양한 연구도 쏟아졌다.

병렬화가 가져온 진짜 혁신

어텐션의 혁신은 문맥 이해에만 있지 않았다. 학습 방식 자체를 바꿔 놓았다는 점에서 더 결정적이었다.

RNN은 본질적으로 순차적이다. 첫 단어의 계산이 끝나야 둘째 단어를 계산할 수 있다. 이 구조는 GPU처럼 한꺼번에 많은 연산을 처리하는 하드웨어와 궁합이 좋지 않다. 문장이 길어질수록 시간이 오래 걸리고, 모델을 크게 키우는 데도 제약이 생긴다.

반면 셀프 어텐션은 입력 토큰들 사이의 관계를 한 번에 계산할 수 있다. 각 위치의 Query, Key, Value를 만들고, 토큰들 사이의 관련성을 행렬 연산으로 처리할 수 있다. 여기서 행렬 연산이란 숫자를 표처럼 묶어 한꺼번에 계산하는 방식인데, GPU가 가장 잘하는 일이다. 덕분에 학습 속도가 빨라지고, 더 큰 데이터와 더 큰 모델을 다루기 쉬워졌다.

이 병렬화 가능성은 단순한 속도 향상이 아니었다. 더 많은 데이터를, 더 큰 모델로, 더 빠르게 학습할 수 있다는 뜻이었다. 그리고 이것은 곧 성능 향상으로 이어졌다. 어텐션은 "더 잘 이해하는 구조"이면서 동시에 "더 크게 키울 수 있는 구조"였던 셈이다.

딥러닝의 역사를 돌아보면, 좋은 아이디어가 등장해도 계산 비용 때문에 한동안 주류가 되지 못하는 경우가 많았다. 어텐션은 달랐다. 성능의 이점과 계산상의 이점이 함께 있었다. 바로 이 점이 이후 거대한 모델 시대를 여는 문이 된다.

어텐션은 중요도를 배우는 방식이다

어텐션을 한 문장으로 요약하면, 모델이 스스로 "어디를 봐야 하는지" 배우게 하는 메커니즘이다. 이전에는 특징을 사람이 설계하거나, 순차 구조가 자연스럽게 알아서 해결해 주길 기대하는 면이 있었다. 하지만 어텐션은 중요도를 명시적으로 계산한다.

이것은 딥러닝의 큰 흐름과도 맞닿아 있다. 좋은 모델은 좋은 표현을 만들고, 좋은 표현은 중요한 관계를 잘 담는다. 어텐션은 관계를 표현 안으로 끌어들이는 장치다. 단어 하나를 고립된 기호로 다루지 않고, 다른 단어들과의 연결 속에서 이해하도록 만든다.

그래서 어텐션은 단순히 "문장을 잘 처리하는 기법"이 아니다. 정보 사이의 관련성을 학습하는 일반적 방법론에 가깝다. 언어뿐 아니라 이미지, 음성, 멀티모달 데이터까지 넓게 확장될 수 있었던 이유도 여기에 있다.

"Attention is All You Need"는 무슨 뜻이었을까

이 유명한 표현은 과장처럼 들리지만, 당시 맥락에서는 선언에 가까웠다. 순차 처리에 의존하던 시대에서 벗어나, 어텐션만으로도 충분히 강력한 모델을 만들 수 있다는 주장이다.

물론 현실적으로는 어텐션만 덩그러니 있는 것이 아니라, 정규화, 피드포워드 네트워크, 잔차 연결 같은 여러 구성 요소와 함께 작동한다. 하지만 중심 아이디어는 분명하다. 문맥을 이해하는 핵심 엔진으로 어텐션을 놓겠다는 것이다.

이 선언이 중요했던 이유는, 모델 설계의 무게중심을 바꿨기 때문이다. 과거에는 순서를 따라 상태를 전달하는 것이 중심이었다면, 이제는 전체 문맥 안에서 관계를 계산하는 것이 중심이 되었다. 그리고 그 변화는 곧 트랜스포머의 시대를 열었다.

다음 장으로 가는 문

어텐션의 탄생은 딥러닝에서 하나의 장면 전환과 같다. 이제 모델은 정보를 한 줄로 넘겨받는 대신, 전체를 펼쳐 놓고 필요한 것을 골라 볼 수 있게 되었다. 긴 문맥을 다루는 능력, 병렬화에 유리한 구조, 그리고 모델 규모 확대의 가능성까지 함께 손에 넣었다.

다음 장에서는 이 어텐션이 어떻게 하나의 완전한 구조가 되었는지 살펴볼 것이다. 인코더와 디코더는 어떤 역할을 나누는지, 포지셔널 인코딩은 왜 필요한지, 멀티헤드 어텐션은 무엇을 더해 주는지 차근차근 따라가다 보면, 오늘날의 트랜스포머가 왜 AI의 기본 골격이 되었는지 훨씬 또렷하게 보이게 될 것이다.

책 목록

딥러닝의 감각 — 신경망에서 파운데이션 모델까지, AI를 끝까지 이해하는 가장 현실적인 지도

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기