[NLP] CS224N 8강 정리 [Self-Attention and Transformers]

김성윤(Jack)·2025년 8월 30일

NLP

목록 보기
10/35

1. RNN의 한계점

  • Transformer가 등장한 배경을 이해하려면, 기존의 왕좌를 차지했던 RNN(순환 신경망)이 왜 한계에 부딪혔는지 알아야 합니다.

1) 선형 상호작용 거리 (Linear Interaction Distance)

  • 강의에서는 "The chef who went to the stores... and loves garlic was great."라는 예시를 듭니다.
  • 여기서 주어인 'chef'와 동사 'was'는 의미적으로 강하게 연결되어 있지만, 물리적으로는 멀리 떨어져 있습니다.
  • RNN은 이 관계를 파악하기 위해 'chef'부터 'was'까지 모든 단어를 순차적으로 거쳐야 합니다.
  • 이 과정에서 정보가 여러 계산 단계를 지나며 희석되거나 변질되는 기울기 소실(Vanishing Gradient) 문제가 발생하기 쉬워, 장거리 의존성 학습에 치명적인 약점을 보입니다.

2) 병렬화의 어려움

  • RNN의 구조는 ht=f(ht1,xt)h_t = f(h_{t-1}, x_t) 수식으로 표현됩니다.
  • 즉, 현재 단계(tt)의 결과를 계산하려면 반드시 이전 단계(t1t-1)의 결과가 필요합니다.
  • 이는 마치 도미노처럼 순서대로만 계산이 가능함을 의미합니다.
  • 아무리 성능 좋은 GPU가 있어도 모든 연산을 동시에 처리할 수 없어, 시퀀스가 길어질수록 학습 속도가 현저히 느려지는 병목 현상이 발생합니다.

2. Self-Attention의 기본 원리

  • 이러한 RNN의 문제를 해결하기 위해 등장한 것이 바로 Self-Attention입니다.

1) 핵심 개념

  • Self-Attention은 문장을 순차적으로 처리하는 대신, 하나의 집합(Set)으로 간주합니다.
  • 모든 단어가 다른 모든 단어와 직접적인 연결망을 형성하여, 거리에 상관없이 한 번에 상호작용합니다.
  • 이를 통해 장기 의존성 문제를 해결하고, 모든 계산을 동시에 처리하여 병렬화를 극대화합니다.

2) 작동 방식 (Query, Key, Value)

  • 마치 정보 검색 시스템처럼 작동합니다.
  1. 각 단어는 세 가지 역할, 즉 Query(Q), Key(K), Value(V)로 변신합니다.
    Query: 정보를 요청하는 '검색어'입니다. (예: "내 주변에 문맥상 중요한 단어는?")
    Key: 각 단어가 가진 '색인' 또는 '키워드'입니다. Query와 비교 대상이 됩니다.
    * Value: 해당 단어의 실제 '내용' 또는 '의미'입니다.

  2. 특정 단어의 Q는 문장 내 모든 단어의 K와 내적(Dot-Product) 연산을 통해 '관련도 점수'를 계산합니다. 이 점수가 높을수록 두 단어는 관련성이 높다고 판단합니다.

  3. 이 점수들은 Softmax 함수를 거쳐 합이 1인 '어텐션 가중치'로 변환됩니다. 이는 각 단어의 의미(V)를 얼마나 참고할지에 대한 비율입니다.

  4. 마지막으로 이 가중치와 각 단어의 V를 곱하여 모두 더합니다(가중합). 이렇게 생성된 벡터는 문장 전체의 문맥 정보가 자신을 중심으로 재구성된 새로운 표현이 됩니다.


3. Self-Attention의 문제점 및 해결 방안

  • 강력한 Self-Attention에도 몇 가지 보완점이 필요합니다.

1) 순서 정보 부재와 위치 인코딩

  • "His uncle made Zuko"와 "Zuko made his uncle"은 Self-Attention에게는 그저 동일한 단어들의 집합일 뿐이라 의미 차이를 구분하지 못합니다.
    * **해결책**: 단어 임베딩에 **위치 인코딩(Positional Encoding)** 벡터를 더해줍니다. 이는 각 단어에 고유한 위치 좌표(GPS 정보)를 부여하는 것과 같습니다. 강의에서는 주기 함수인 사인/코사인 함수를 이용하는 방식과, 각 위치 벡터 자체를 학습시키는 방식 두 가지를 소개합니다.


2) 비선형성(Nonlinearities) 부족과 피드포워드 네트워크(Feed-Forward Network)

  • Self-Attention은 본질적으로 값(Value)들의 가중 평균을 구하는 선형적 연산에 가깝습니다.
  • 이런 층을 여러 개 쌓아도 결국 하나의 큰 선형 변환과 비슷해져, 복잡한 패턴을 학습하는 딥러닝의 능력을 충분히 발휘하기 어렵습니다.
    * 해결책: 어텐션 층 뒤에 피드포워드 네트워크(FFN)를 추가합니다. 이는 각 단어 벡터를 독립적으로 더 복잡한 비선형 공간으로 매핑하는 역할을 하여, 모델 전체의 표현력을 크게 향상시킵니다.

3) 미래 정보 참조 문제(We don't look at the future)와 마스킹(Masking)

  • 다음 단어를 예측하는 언어 모델을 학습시킬 때, 모델이 정답인 미래의 단어들을 미리 '엿보는' 문제가 발생할 수 있습니다.
    * 해결책: 어텐션 점수를 계산한 뒤, 현재 단어보다 뒤에 있는 미래 단어들의 점수를 음의 무한대(-∞)로 강제 변환합니다. 이렇게 하면 Softmax 함수를 통과했을 때 해당 단어들의 가중치는 0이 되어, 미래 정보를 원천적으로 차단하는 마스킹(Masking) 효과를 얻습니다.



4. Transformer 아키텍처의 구성 요소

1) Multi-Head Attention

  • 하나의 큰 어텐션으로 문장을 보는 대신, 여러 개의 작은 어텐션 '헤드'를 병렬로 운영합니다.
  • 이는 마치 여러 명의 전문가가 각기 다른 관점(예: 한 전문가는 문법 관계, 다른 전문가는 의미 관계)에서 문장을 동시에 분석하고 그 결과를 종합하는 것과 같습니다.
  • 이를 통해 더 풍부하고 다각적인 문맥을 학습할 수 있습니다.



2) Scaled Dot-Product Attention

  • 벡터의 차원이 커지면 내적(Dot-Product)의 결과값도 매우 커지는 경향이 있습니다.
  • 이 값이 그대로 Softmax 함수에 들어가면 기울기가 거의 0이 되어 학습이 멈출 수 있습니다.
  • 이를 방지하기 위해 내적 결과를 키 벡터 차원의 제곱근(dk\sqrt{d_k})으로 나누어 값을 안정적인 범위로 조절(Scaling)합니다.

3) 잔여 연결 (Residual Connections)

  • 어텐션 층이나 FFN 층을 통과한 결과에 통과하기 전의 원래 입력을 다시 더해주는 기법입니다.
  • 이는 층이 깊어져도 정보가 소실되지 않도록 하는 '지름길(Shortcut)' 역할을 하며, 기울기가 잘 흐르도록 도와 매우 깊은 모델의 학습을 가능하게 합니다.

4) 계층 정규화 (Layer Normalization)

  • 각 층을 통과하는 데이터의 분포가 출렁이지 않도록 안정화시키는 장치입니다.
  • 각 단어 벡터 내에서 평균을 0, 분산을 1로 정규화하여 학습 과정을 더 빠르고 안정적으로 만듭니다.


5. Transformer 모델의 전체 구조

1) 인코더(Encoder)와 디코더(Decoder)

  • 인코더는 입력 문장을 받아 전체적인 문맥을 깊이 이해하는 역할을 합니다.
  • 디코더는 인코더가 이해한 정보와 이전에 자신이 생성한 단어들을 바탕으로 다음 단어를 예측하여 출력 문장을 생성합니다.


2) Cross-Attention

  • 디코더가 인코더의 정보를 활용하는 핵심적인 연결고리입니다.
  • 디코더가 특정 단어를 생성하려는 시점에, "지금 이 단어를 만들기 위해 입력 문장의 어떤 부분에 가장 집중해야 할까?"라고 질문(Query)을 던지면, 인코더는 자신의 모든 단어(Key, Value)를 바탕으로 가장 관련 있는 정보를 제공합니다.
  • 이는 과거 RNN 모델이 입력 문장 전체를 하나의 고정된 벡터로 압축하려 했던 '정보 병목 현상'을 해결한 혁신적인 방식입니다.

6. 결론: Transformer의 영향과 과제

영향

  • Transformer는 뛰어난 성능과 병렬화 효율성을 바탕으로 NLP 패러다임을 바꾸었으며, BERT, GPT와 같은 현대적인 대규모 언어 모델의 기반이 되었습니다.

과제

  • 가장 큰 단점은 2차 복잡도(Quadratic Complexity)입니다.
  • 시퀀스 길이가 2배가 되면 계산량과 메모리 사용량은 4배(222^2)로 증가합니다.
  • 이 때문에 책 한 권과 같은 매우 긴 시퀀스를 한 번에 처리하기에는 비용이 매우 비싸다는 명확한 한계를 가집니다.

profile
AI 공부합니다

0개의 댓글