본문 바로가기

주저하지말고 주저리주저리

왜 Transformer는 RNN을 대체했을까? ChatGPT의 시작, Attention Is All You Need

 

attention is all you need

 

ChatGPT, Claude, Gemini등, 지금 우리가 사용하는 거의 모든 생성형 AI의 공통 조상은 Transformer다.

그리고 그 Transformer는 2017년 발표된 단 한 편의 논문, Attention Is All You Need 에서 시작됐다.

흥미로운 점은 당시 이 논문이 제안한 아이디어가 상당히 급진적이었다는 것이다. 2017년 자연어처리 분야의 표준은 RNN과 LSTM이었다. 대부분의 연구자들은 더 나은 RNN을 만드는 데 집중하고 있었고, Attention은 어디까지나 성능을 조금 더 끌어올리기 위한 보조 장치로 여겨졌다.

그런데 Vaswani 등은 정반대의 주장을 한다. "Attention만으로 충분하다." 제목 그대로 Attention Is All You Need 였다. 당시에는 다소 과감해 보였던 이 주장은 결과적으로 맞았다. 이후 BERT, GPT, ChatGPT, Claude, Gemini, LLaMA에 이르기까지 현대 AI의 핵심 구조는 모두 이 논문에서 출발한다.

 

이 글에서는 왜 RNN이 한계에 부딪혔는지, 왜 Attention이 그 문제를 해결할 수 있었는지, 그리고 이 논문이 어떻게 오늘날 LLM 시대로 이어졌는지를 중심으로 살펴보려 한다.


논문 제목을 처음 봤을 때는 그냥 그럴싸한 제목이라고 생각했다. all you need 라니.... 논문치고는 너무 과장되었다고 생각하기도 하였다.

 그런데 배경을 알고 나면 "Attention Is All You Need"가 단순한 마케팅이 아니라는 걸 이해하게 된다. 2017년 당시 NLP 커뮤니티에서 RNN이 사실상 표준이었다는 걸 감안하면, 이 제목은 일종의 선전포고에 가깝다. "RNN 없이도 된다.

 

Attention만으로 충분하다." 이 한 문장이 이후 현대 AI의 판도를 바꿨다.

 

 


RNN/LSTM: 한 시대를 지배했지만 태생적 한계가 있었다

2017년 이전 자연어처리에서는 LSTM, GRU 같은 순환신경망(RNN) 계열이 사실상 표준이었다.

번역, 요약, 챗봇, 감성 분석까지 거의 다 RNN으로 만들었다. 그런데 이 구조에는 구조상 피하기 어려운 문제가 있었다.

1. 병렬화 불가능 — 가장 실질적인 병목

RNN은 문장을 앞에서 뒤로 한 단어씩 처리한다. 세 번째 단어를 처리하려면 두 번째 단어의 처리가 끝나야 한다. 당연해 보이지만 GPU 관점에서는 치명적이다. GPU는 수천 개의 연산을 동시에 처리하는 데 최적화된 하드웨어인데, RNN은 구조상 반드시 "순서대로만" 계산해야 한다.

모델 크기를 키우고 데이터를 늘릴수록 이 병목은 더 심해졌다. 당시 연구자들이 "더 큰 모델을 학습시키고 싶어도 시간이 너무 오래 걸린다"는 벽에 부딪히고 있었는데, 이게 단순한 불편함의 문제가 아니라 연구 방향 자체를 제한하는 수준이었다.

2. 장거리 의존성 — 멀리 있는 단어를 기억하지 못한다

"어제 내가 먹은 그 음식 중에서 특히 기억에 남는 것은 ______ 이었다."

이 문장에서 빈칸을 채우려면 앞 맥락 전체가 필요하다. RNN이 이걸 하려면 첫 단어 "어제"의 정보를 마지막까지 전달해야 한다. 그런데 RNN은 각 시점에서 hidden state를 업데이트하면서 정보를 전달하는 구조라, 문장이 길어질수록 초반 정보가 희석된다. LSTM이 이 문제를 어느 정도 완화했지만 근본적으로 해결하지는 못했다.

이론적으로 표현하면, RNN에서 위치 i와 위치 j 사이의 정보 전달 경로 길이는 |i−j|에 비례한다. 두 위치 사이가 멀수록 정보가 여러 단계를 거쳐 전달되고, 기울기 소실(vanishing gradient) 문제도 함께 커진다.

3. 고정된 벡터 병목

초기 Encoder-Decoder 구조는 인코더가 원문 전체를 단 하나의 고정 벡터로 압축하고, 디코더가 이 벡터에서 번역문을 생성했다. 문장이 길어질수록 이 병목이 심각한 성능 저하로 이어졌다.

Attention은 이 병목을 해결하기 위한 보조 장치로 처음 등장했다(Bahdanau et al., 2015). 그러다 Vaswani 등이 다른 질문을 던졌다. "Attention이 병목을 해결해준다면, Attention만으로 충분하지 않을까?"


"Attention Is All You Need" — 보조 장치가 주인공이 된 순간

Bahdanau et al.(2015)의 논문에서 기계번역 성능을 높이기 위해 디코더가 원문의 어느 부분을 참고할지 계산하는 방식이 제안됐다. 이때의 Attention은 어디까지나 RNN 위에 얹은 부속 장치였다.

Transformer는 여기서 발상을 뒤집는다. RNN 위에 Attention을 얹는 게 아니라, Attention만 남기고 RNN을 버린다.

이 발상이 실제로 동작했다는 게 이 논문의 핵심이다. 단순히 동작한 것이 아니라, WMT 2014 영어-독일어 번역에서 28.4 BLEU, 영어-프랑스어에서 41.0 BLEU를 기록하며 당시 최고 성능을 갱신했다. 그것도 당시 최고 모델 대비 학습 비용 약 8분의 1로.


Transformer 구조: 왜 이렇게 생겼는가

구조 설명 자체는 이미 좋은 자료들이 많다. 여기서는 "이 부품이 왜 이 자리에 있어야 했는가"에 집중한다.

Self-Attention: 문맥을 스스로 만드는 방법

Self-Attention의 핵심은 문장 내 모든 단어가 다른 모든 단어를 참고해 자신의 표현을 업데이트한다는 것이다.

 

마치 통계에서의 AR() 자기회귀와 같은 방식으로 글을 읽어나간다는 부분이다.

attention 1

 

Q(Query), K(Key), V(Value)가 낯설게 느껴진다면, Query는 내가 지금 찾는 것, Key는 각 문서가 가진 태그, Value는 실제 문서 내용이다. 내 Query와 비슷한 Key를 가진 문서에 높은 가중치가 붙고, 그 가중치로 Value들을 섞어 최종 표현을 만든다.

언어적으로 보면, "bank"라는 단어가 "money", "account" 근처에 있으면 금융 의미에 높은 가중치를 주고, "river", "fish" 근처에 있으면 강둑 의미에 높은 가중치를 준다. 같은 단어라도 문맥에 따라 다른 표현으로 바뀐다.

 

수식에서  Dk(루트값)로  나누는 건 단순한 테크닉처럼 보이지만 이유가 있다. 차원 Dk가 커질수록 내적값이 커지면서 softmax가 극단적으로 날카로워지고 기울기가 불안정해진다. 이를 방지하기 위한 스케일링이다.

Multi-Head Attention: 여러 관점을 동시에

하나의 Attention으로 문장을 보면 한 가지 관계만 포착할 수 있다. 실제 언어에는 주어-동사 관계, 수식어-피수식어 관계, 대명사-지시 대상 관계 등이 동시에 중요하다.

Multi-Head Attention은 Attention을 h개의 head로 나눠 각각 다른 선형 투영(linear projection)으로 학습한다.

attention 2

원 논문은 8개의 head를 사용했다. 이론적으로 각 head가 서로 다른 유형의 관계에 특화될 수 있고, 이후 연구(Voita et al., 2019)에서 실제로 특정 head가 문법 관계에, 다른 head가 장거리 참조에 더 민감하게 반응한다는 것이 확인됐다.

Positional Encoding: 순서를 모르는 모델에게 순서 알려주기

RNN은 순서대로 처리하기 때문에 자연스럽게 위치 정보를 갖는다. Transformer는 모든 토큰을 동시에 처리하기 때문에 그냥 두면 "나는 너를 좋아해"와 "너는 나를 좋아해"를 구분하지 못한다.

해결책은 입력 임베딩에 위치 정보를 더해주는 것이다. 원 논문은 사인/코사인 함수 기반 Positional Encoding을 사용했다.

attention 3

이 방식의 장점은 학습 없이 위치 정보를 주입할 수 있고, 훈련 시 보지 못한 길이의 시퀀스에도 어느 정도 일반화된다는 점이다. 이후 BERT, GPT 등은 학습 가능한 positional embedding으로 발전했고, 최근 LLM들은 주로 RoPE(Rotary Positional Embedding, Su et al., 2021)를 사용한다.

Residual Connection과 LayerNorm

6층의 인코더를 쌓으면서 학습을 안정화하는 장치가 필요했다. 각 서브층 뒤에 잔차 연결과 Layer Normalization을 붙인다.

attention 4

잔차 연결은 입력을 그대로 더해줌으로써 기울기가 깊은 층까지 흐를 수 있게 한다. ResNet에서 이미 효과가 입증된 방식이다. 이 구조 덕분에 Transformer는 층을 깊게 쌓아도 학습이 비교적 안정적으로 유지된다.


병렬화가 큰 장점을 가지는 이유

Transformer의 가장 큰 실용적 장점은 병렬화다. Self-Attention은 모든 토큰 쌍의 관계를 동시에 계산할 수 있어 GPU 구조에 잘 맞는다.

이게 중요한 이유는, "더 많은 데이터로 더 큰 모델을 더 오래 학습시키면 성능이 좋아진다"는 Scaling Law가 점점 강하게 입증되고 있었기 때문이다. GPT-3(1750억 파라미터), GPT-4, Claude, Gemini 같은 모델들이 존재할 수 있는 건 이 Scaling Law가 실제로 작동하기 때문이고, 그 전제로 효율적인 병렬 학습이 가능해야 한다.

RNN으로는 이 스케일링이 사실상 불가능했다. 순차 처리 구조 때문에 데이터가 늘어날수록 학습 시간이 선형적으로 늘어난다. Transformer가 없었다면 현재의 LLM은 존재하기 어려웠을 것이다.

원 논문에서 이 점이 수치로 명시된다. WMT 2014 영어-독일어 번역 기준으로 Transformer는 당시 최고 성능 모델 대비 학습 비용이 훨씬 낮았다. 단순히 빠른 게 아니라, 적은 비용으로 더 좋은 결과를 냈다.


Transformer에서 현대 LLM까지: 

이 논문 이후 NLP의 발전 방향이 크게 두 갈래로 갈라졌다.

BERT: 인코더 중심의 이해 모델

Google이 2018년 발표한 BERT는 Transformer의 인코더만 사용한다. 특징은 Masked Language Model이라는 사전학습 방식으로 양방향 문맥을 동시에 학습한다는 점이다. 텍스트 분류, 질의응답, 개체명 인식 등 이해 중심 task에서 당시 SOTA를 대거 경신했다. "사전학습 후 파인튜닝" 패러다임을 NLP에 정착시킨 논문이기도 하다.

GPT 계열: 디코더 중심의 생성 모델

OpenAI의 GPT는 Transformer의 디코더 구조를 기반으로 "다음 토큰 예측"에 집중했다. GPT-1, GPT-2, GPT-3를 거치면서 모델 크기와 학습 데이터를 키웠고, GPT-3(2020)에서 in-context learning이라는 현상이 처음 대규모로 확인됐다. 예시를 몇 개만 보여줘도 새로운 task를 수행한다는 것인데, 이 성질이 ChatGPT로 이어지는 직접적인 토대가 됐다.

Anthropic의 Claude, Google의 Gemini, Meta의 LLaMA 모두 Transformer 기반 디코더 구조를 따른다. 세부 구현에 차이가 있지만(RoPE, Grouped Query Attention, FlashAttention 등), 근간은 2017년 이 논문이 제안한 아키텍처다.

비전(ViT), 오디오, 멀티모달 모델들도 마찬가지다. "토큰 간 상호작용을 Self-Attention으로 처리한다"는 원칙이 이미지 패치, 오디오 프레임, 다양한 모달리티에 그대로 적용됐다.


Attention 중심의 한계점과 개선

이 논문을 "완벽한 답"으로 보는 건 과장이다. 명확한 한계가 있다.

O(n²) 복잡도 (빅O)

Self-Attention은 모든 토큰 쌍의 관계를 계산하므로, 시퀀스 길이 n에 대해 계산량이 $O(n^2)$으로 증가한다. 짧은 문장에서는 문제없지만, 긴 문서나 코드 전체를 처리하려면 메모리와 연산량이 빠르게 한계에 달한다.

이 한계 때문에 Longformer(2020), Performer(2020), FlashAttention(2022) 등 다양한 변형이 등장했다. 특히 FlashAttention은 정확도를 유지하면서 메모리 접근 패턴을 최적화해 실용적인 속도 향상을 달성했고, 현재 대부분의 LLM 학습에서 표준처럼 쓰인다.

Positional Encoding의 일반화 한계

원 논문의 sinusoidal positional encoding은 학습 시 보지 못한 길이의 시퀀스에서 성능 저하가 생긴다.

이 문제를 해결하기 위해 RoPE(Su et al., 2021), ALiBi 등이 제안됐고, LLaMA, Claude, GPT-4 같은 최신 모델들은 대부분 RoPE 계열을 사용한다.

스케일링의 비용 문제

Transformer의 장점인 스케일링은 반대로 단점이기도 하다. 성능을 극대화하려면 막대한 데이터와 컴퓨팅 자원이 필요하다. AI 개발이 자본력 있는 소수 기업에 집중되는 구조적 문제로 이어진다는 점에서, 이건 기술적 한계이기도 하고 사회적 문제이기도 하다.

결국 앞으로의 전력, 데이터 센터의 투자부분에 더욱더 많은 자본이 투입될 수 밖에 없다.


결론

"Attention Is All You Need"는 단순히 새 모델을 제안한 논문이 아니다. RNN이 주류였던 시대에 "병렬화가 안 되는 구조는 결국 한계에 부딪힌다"는 문제를 정확히 짚고, Attention만으로 그 문제를 돌파한 논문이다.

이 논문이 없었다면 ChatGPT도, Claude도, Gemini도 지금과 같은 형태로 존재하지 못했을 것이다. 현재 AI가 할 수 있는 것들의 상당 부분이 이 논문이 열어놓은 길 위에서 만들어졌다.

공부하는 입장에서, 이 논문은 한 번은 반드시 원문으로 읽어볼 만하다. 특히 4절 "Why Self-Attention" 은 왜 이 구조를 선택했는지 저자들의 논리가 잘 정리되어 있다. RNN, CNN과의 비교가 경로 길이, 계산 복잡도, 병렬화 가능성 세 축으로 정리되어 있는데, 이 부분을 읽고 나면 구조를 외우는 것보다 훨씬 오래 남는 이해가 생긴다.


앞으로 더 읽어볼 논문 5개 (AI 추천)

1. Neural Machine Translation by Jointly Learning to Align and Translate (Bahdanau et al., 2015)

Transformer 이전 Attention의 원형. 이 논문을 보면 Attention이 왜 "보조 장치에서 주인공"으로 격상됐는지의 맥락이 훨씬 잘 보인다. Transformer를 읽기 전에 이 논문을 먼저 보는 것을 추천한다.

2. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (Devlin et al., 2018) Transformer 인코더 기반 사전학습 + 파인튜닝 패러다임의 출발점. NLP에서 Transfer Learning이 어떻게 자리잡았는지 이해할 수 있다.

3. Language Models are Few-Shot Learners (Brown et al., 2020)

— GPT-3 모델이 충분히 크면 예시 몇 개만으로 새로운 task를 수행한다는 in-context learning을 대규모로 실증한 논문. 현재 ChatGPT와 LLM의 직접적 선조다.

4. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (Dosovitskiy et al., 2020) — ViT Transformer가 이미지에도 적용된다는 걸 보여준 논문. 텍스트를 넘어 멀티모달 AI의 토대를 이해하는 데 도움이 된다.

5. FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness (Dao et al., 2022)

O(n²) 문제를 실용적으로 해결한 논문. 현재 대부분의 LLM 학습에서 FlashAttention이 쓰이고 있다는 점에서, 오늘날 AI 인프라를 이해하는 데 필수적이다.