AI VIDEO BRIEFING

트랜스포머 신경망 구조 해설: 어텐션, 인코더·디코더, 병렬 처리의 원리

RNN과 LSTM의 한계에서 출발해 트랜스포머가 어떻게 병렬 처리와 어텐션으로 시퀀스 문제를 푸는지, 인코더·디코더와 멀티헤드 어텐션 구조를 단계별로 풀어 설명한다.

트랜스포머 신경망 쉽게 이해하기: RNN의 한계를 넘은 '어텐션'의 구조 영상 대표 이미지

핵심 메시지

  • RNN과 LSTM은 입력을 순차적으로 처리해야 해서 느리고, 긴 시퀀스에서 기울기 소실·폭발 문제를 겪는다.
  • 2017년 등장한 트랜스포머는 인코더-디코더 구조를 쓰되, 문장의 모든 단어를 동시에(병렬로) 입력해 GPU 병렬 연산을 활용한다.
  • 단어는 임베딩으로 벡터화되고, 위치 인코딩으로 단어 간 순서·거리 정보를 더해 맥락을 갖춘다.
  • 어텐션은 '입력의 어느 부분에 집중할지'를 답하며, 각 단어가 문장 내 다른 단어와 얼마나 관련 있는지를 어텐션 벡터로 나타낸다.
  • 여러 개의 어텐션 벡터를 쓰는 멀티헤드 어텐션과 마스크드 어텐션 덕분에 트랜스포머는 RNN·LSTM을 대체하며 다양한 문제에 쓰인다.

쉽게 이해하기

트랜스포머를 이해하려면 먼저 RNN의 한계를 봐야 한다. RNN은 시간에 따라 펼친 피드포워드 신경망으로 순서가 있는 시퀀스 데이터를 다루며, 벡터-투-시퀀스(이미지 캡셔닝), 시퀀스-투-벡터(감성 분석), 시퀀스-투-시퀀스(번역) 같은 구조를 만든다. 하지만 RNN은 느려서 잘린 역전파를 써야 하고, 긴 시퀀스에서는 기울기가 사라지거나 폭발한다.

이를 보완하려고 1991년 LSTM이 등장해 '장단기 기억' 셀로 과거 정보를 더 오래 유지하도록 했다. 덕분에 수백 단어 수준의 시퀀스는 다룰 수 있게 됐지만, LSTM은 일반 RNN보다 더 복잡하고 느리다. 무엇보다 RNN·LSTM 모두 입력을 하나씩 순차적으로 넣어야 해서 병렬 연산에 강한 오늘날의 GPU를 제대로 활용하지 못한다.

2017년 트랜스포머는 이 '순차 데이터를 어떻게 병렬화할까'라는 질문에 답한다. 영상은 영어→프랑스어 번역을 예로 든다. RNN 인코더는 단어를 하나씩 넣어 이전 단어의 은닉 상태에 의존하지만, 트랜스포머 인코더는 시간 단계 개념 없이 문장의 모든 단어를 동시에 넣어 임베딩을 한꺼번에 만든다. 단어 임베딩은 의미가 비슷한 단어가 가까이 놓이는 임베딩 공간에 매핑되고, 사인·코사인 함수로 만든 위치 인코딩이 더해져 맥락을 갖춘다.

인코더 블록은 멀티헤드 어텐션과 피드포워드 층으로 이뤄진다. 셀프 어텐션은 같은 문장 안에서 한 단어가 다른 단어들과 얼마나 관련 있는지를 어텐션 벡터로 계산한다. 다만 단어가 자기 자신과의 관련도만 크게 잡으면 쓸모가 없으므로, 단어마다 여러 개(예: 8개)의 어텐션 벡터를 만들어 가중 평균하는 멀티헤드 어텐션을 쓴다. 각 어텐션 연산이 독립적이라 병렬화가 가능하다.

디코더는 프랑스어 단어 임베딩과 위치 정보를 받아 마스크드 어텐션을 거친다. 다음 단어를 생성할 때 영어 문장 전체는 보되 프랑스어는 이전 단어까지만 보도록, 뒤따르는 단어를 0으로 가려 학습이 무의미해지는 것을 막는다. 이어 인코더-디코더 어텐션이 두 언어 단어의 관계를 매핑하고, 피드포워드·선형 층과 소프트맥스를 거쳐 확률이 가장 높은 다음 단어를 예측한다. 이를 문장 끝 토큰이 나올 때까지 반복한다.

주요 인사이트

  • 트랜스포머의 핵심 혁신은 '순차 처리'를 '병렬 처리'로 바꾼 것이며, 이는 GPU의 병렬 연산 능력을 살리기 위한 설계다.
  • 위치 인코딩이 없으면 단어를 동시에 넣을 때 순서 정보가 사라지므로, 임베딩에 위치 벡터를 더해 맥락을 보존한다.
  • 단어가 자기 자신에만 강하게 주목하는 문제를 피하려고 여러 어텐션 벡터를 평균 내는 멀티헤드 어텐션을 사용한다.
  • 디코더의 마스크드 어텐션은 미래 단어를 가림으로써 모델이 실제로 다음 단어를 '예측'하도록 학습시킨다.
  • 트랜스포머는 시퀀스-투-시퀀스 등 여러 문제에서 LSTM을 대체했고, 구글의 BERT처럼 NLP 사전학습 모델의 토대가 됐다.

자주 묻는 질문

트랜스포머는 RNN·LSTM과 무엇이 다른가요?

RNN과 LSTM은 입력을 한 단어씩 순차적으로 처리해야 하지만, 트랜스포머는 문장의 모든 단어를 동시에 병렬로 입력합니다. 덕분에 GPU 병렬 연산을 활용해 더 빠르고, 긴 시퀀스에서 생기는 기울기 문제도 완화합니다.

어텐션(attention)이란 무엇인가요?

어텐션은 '입력의 어느 부분에 집중할지'를 결정하는 메커니즘입니다. 셀프 어텐션은 한 단어가 같은 문장의 다른 단어들과 얼마나 관련 있는지를 어텐션 벡터로 계산해, 단어 간 맥락 관계를 담아냅니다.

멀티헤드 어텐션은 왜 필요한가요?

하나의 어텐션 벡터만 쓰면 단어가 자기 자신과의 관련도를 지나치게 크게 잡아 다른 단어와의 상호작용을 놓칠 수 있습니다. 그래서 단어마다 여러 개의 어텐션 벡터를 만들어 가중 평균함으로써 더 풍부한 관계를 포착합니다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식