[CV] CS231N 8강 정리 [Attention and Transformers]

김성윤(Jack)·2025년 9월 15일

CV

목록 보기
8/36

1. 어텐션과 트랜스포머 (Attention and Transformers)

RNN의 복습과 한계

  • RNN (Recurrent Neural Networks): 순차적인 데이터(Sequence Data)를 처리하기 위해 설계된 신경망 아키텍처입니다. 텍스트, 음성 등 시간적 순서가 중요한 데이터 처리에 강점을 가집니다.
    • 활용 분야: 이미지 캡셔닝 (하나의 이미지 입력, 순차적인 텍스트 출력), 감정 분석 (순차적인 텍스트 입력, 하나의 결과 출력), 기계 번역 (순차적인 텍스트 입력, 순차적인 텍스트 출력) 등 다양합니다.
  • 기존 RNN의 문제점: 커뮤니케이션 병목 (Communication Bottleneck) 현상이 발생합니다.
    • 원인: Sequence-to-Sequence 모델에서 인코더(Encoder)는 입력 문장의 모든 정보를 고정된 크기의 벡터, 즉 컨텍스트 벡터(Context Vector) C에 압축해야 합니다.
    • 한계: 문장이 길어지거나 정보량이 많아지면, 이 하나의 벡터에 모든 정보를 담기 어려워 정보 손실이 발생합니다. 이는 모델의 성능 저하로 이어집니다. 특히, 문장 앞부분의 정보가 뒤로 갈수록 희석되는 장기 의존성 문제(Long-term Dependency Problem)가 심각했습니다.

2. 어텐션 메커니즘 (Attention Mechanism)

어텐션의 등장 배경

  • 해결하고자 하는 문제: RNN의 정보 병목 현상장기 의존성 문제를 해결하기 위해 등장했습니다.
  • 핵심 아이디어: 디코더(Decoder)가 번역할 단어를 예측하는 매 시점마다, 고정된 컨텍스트 벡터 하나에만 의존하는 대신, 인코더의 전체 입력 시퀀스를 다시 한번 참고하여 현재 예측에 가장 중요한 단어에 "집중(Attend)"하는 것입니다.
    • 즉, 매번 새로운 컨텍스트 벡터를 동적으로 생성하여 사용함으로써, 필요할 때마다 원본 문장의 필요한 부분에서 정보를 직접 가져옵니다.

어텐션의 작동 원리

  1. 정렬 점수 (Alignment Scores) 계산: 디코더의 현재 은닉 상태(Query)와 인코더의 모든 은닉 상태들(Keys) 간의 유사도를 계산합니다. 이 점수는 현재 예측하려는 단어와 입력 시퀀스의 각 단어가 얼마나 관련 있는지를 나타냅니다.
  2. 어텐션 가중치 (Attention Weights) 계산: 계산된 정렬 점수에 소프트맥스(Softmax) 함수를 적용하여 0과 1 사이의 값으로 구성된 확률 분포를 만듭니다. 이 가중치들은 총합이 1이며, 각 입력 단어의 '중요도'를 나타냅니다.
  3. 새로운 컨텍스트 벡터 생성: 어텐션 가중치와 인코더의 은닉 상태들을 가중합(Weighted Sum)하여 새로운 컨텍스트 벡터를 생성합니다.
    • 수식: Ci=jαijhjC_i = \sum_{j} \alpha_{ij} h_j
      • CiC_i: 디코더의 i번째 시점에서의 컨텍스트 벡터
      • αij\alpha_{ij}: i번째 예측 단어와 j번째 입력 단어 간의 어텐션 가중치
      • hjh_j: 인코더의 j번째 은닉 상태 (입력 단어의 정보)

어텐션의 장점

  • 성능 향상: 정보 병목 현상을 해결하여 특히 긴 문장에서 번역의 질을 획기적으로 높입니다. 필요한 정보를 직접 참조하므로 장기 의존성 문제도 효과적으로 완화합니다.
  • 해석 가능성 (Interpretability): 어텐션 가중치를 시각화하면, 모델이 출력 단어를 생성할 때 입력 시퀀스의 어떤 부분에 집중했는지 직관적으로 파악할 수 있습니다. 이는 모델의 예측 과정을 이해하고 디버깅하는 데 큰 도움을 줍니다.
    • 예를 들어, 영어-프랑스어 번역에서 단어 순서가 같다면 대각선 형태의 어텐션 맵이 나타나고, 순서가 다르다면 비대각선 패턴이 나타납니다.

3. 일반화된 어텐션 연산

어텐션의 재정의: 쿼리, 키, 값

  • 어텐션 메커니즘을 RNN에서 분리하여 하나의 독립적인 연산자(Operator)로 일반화할 수 있습니다. 이는 도서관에서 책을 찾는 과정에 비유할 수 있습니다.
  • 구성 요소:
    • 쿼리 (Query): 내가 찾고 싶은 정보에 대한 질문. (예: "머신러닝 역사에 대한 책 찾아줘")
    • 키 (Key): 도서관의 모든 책에 붙어있는 색인 또는 제목. 쿼리와 비교될 대상입니다. (예: "딥러닝의 이해", "머신러닝의 역사", "데이터 과학 입문")
    • 값 (Value): 책의 실제 내용. 키와 쿼리의 유사도(관련성)가 높을수록 해당 값(책 내용)을 더 많이 참고하게 됩니다.
  • Scaled Dot-Product Attention: 가장 널리 쓰이는 어텐션 계산 방식입니다.
    • 수식: Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
      • Q,K,VQ, K, V: 각각 쿼리, 키, 값 행렬
      • dkd_k: 키 벡터의 차원
      • dk\sqrt{d_k}로 나누는 이유: 벡터의 차원이 커질수록 내적(Dot Product) 값이 기하급수적으로 커져 소프트맥스 함수가 극단적인 값(0 또는 1)을 출력하게 됩니다. 이는 기울기 소실(Vanishing Gradient) 문제를 일으켜 학습을 불안정하게 만듭니다. 스케일링을 통해 이 현상을 방지하고 학습을 안정시킵니다.

심화 내용: 어텐션의 종류와 발전

  • 크로스 어텐션 (Cross Attention): 쿼리 벡터와 키/값 벡터가 서로 다른 소스에서 오는 경우입니다. 인코더-디코더 구조에서 디코더가 인코더의 출력을 참고할 때 사용됩니다.
  • 셀프 어텐션 (Self Attention): 쿼리, 키, 값이 모두 같은 소스(하나의 입력 시퀀스)에서 오는 경우입니다. 문장 내에서 "그것"이라는 대명사가 어떤 명사를 가리키는지 파악하는 것처럼, 입력 시퀀스 내부의 단어들 간의 관계를 파악하는 데 탁월한 성능을 보입니다.
    • 순열 등변성 (Permutation Equivariance): 입력 벡터의 순서를 바꿔도 출력 벡터의 순서만 바뀔 뿐, 결과는 동일합니다. 즉, 셀프 어텐션은 순서가 없는 '집합(Set)'에 대한 연산으로 볼 수 있습니다.
    • 위치 임베딩 (Positional Embedding): 순서 정보를 제공하기 위해 각 입력 벡터에 위치 정보를 담은 벡터를 더해줍니다.
    • 마스크드 셀프 어텐션 (Masked Self Attention): 특정 위치의 입력이 미래의 입력에 접근하지 못하도록 마스킹하는 기법입니다. 주로 언어 모델에서 다음 단어를 예측할 때, 정답을 미리 보는 것을 방지하기 위해 사용됩니다.
    • 멀티 헤드 어텐션 (Multi-headed Self Attention): 하나의 어텐션으로 한 가지 관계만 보는 것이 아니라, 여러 개의 어텐션 '헤드(Head)'를 병렬적으로 사용하여 각기 다른 관점의 정보(예: 문법적 관계, 의미적 관계 등)를 동시에 학습하는 기법입니다. 이는 모델이 더 풍부하고 다각적인 표현을 학습하도록 도와주며, 현재 가장 보편적으로 사용됩니다.


4. 트랜스포머 (Transformers)

트랜스포머 아키텍처

  • "Attention is All You Need": 2017년 구글이 발표한 논문에서 처음 제안된 아키텍처로, RNN이나 CNN 같은 순차적 구조를 완전히 배제하고 오직 어텐션만으로 구성되었습니다.
  • 핵심 아이디어: 셀프 어텐션을 기본 계산 단위로 사용하여 입력 시퀀스 내의 모든 단어 간의 관계를 한 번에 병렬적으로 계산합니다. 이는 RNN이 단어를 하나씩 순차적으로 처리해야 했던 것과 대조적입니다.
  • 트랜스포머 블록의 구조:
    1. 멀티 헤드 셀프 어텐션: 입력 간의 내적 관계를 학습합니다.
    2. 잔차 연결 (Residual Connection) 및 레이어 정규화 (Layer Normalization): 깊은 네트워크에서 정보가 소실되거나 학습이 불안정해지는 것을 막습니다. 이전 층의 입력을 현재 층의 출력에 그대로 더해주는 방식으로, 학습을 안정시키고 더 깊은 모델을 가능하게 합니다.
    3. 피드포워드 신경망 (Feed-Forward Network): 각 단어 벡터에 대해 독립적으로 적용되는 완전 연결 신경망으로, 어텐션을 통해 얻은 관계 정보를 비선형적으로 변환하여 더 복잡한 표현을 학습합니다.
    4. 잔차 연결 및 레이어 정규화: 동일하게 적용됩니다.
    • 이러한 블록을 여러 겹으로 쌓아(Stacking) 모델을 구성하며, BERT는 이 블록의 인코더 부분을, GPT는 디코더 부분을 기반으로 발전했습니다.

심화 내용: 트랜스포머의 영향과 최신 동향

  • 기술적 배경 및 의의: RNN의 순차적 계산 방식은 GPU의 병렬 처리 능력을 제대로 활용하지 못해 학습 속도가 느렸습니다. 트랜스포머는 모든 계산을 행렬 곱으로 처리하여 대규모 병렬 처리가 가능해졌고, 이는 모델의 크기를 비약적으로 키울 수 있는 기반이 되었습니다. 또한 모든 단어 쌍 간의 거리가 1이기 때문에, RNN의 고질적인 장기 의존성 문제를 구조적으로 해결했습니다.

  • 최신 동향: 트랜스포머 아키텍처는 BERT, GPT 등 현대 자연어 처리(NLP) 모델의 표준이 되었습니다. 이제는 언어를 넘어 이미지(Vision Transformer), 음성 등 다양한 데이터에 적용되어 인공지능 분야의 혁신을 이끌고 있습니다.

  • 명확한 한계점 및 연구 방향:

    • 계산 복잡도: 시퀀스 길이(n)의 제곱(O(n2)O(n^2))에 비례하는 계산량과 메모리 사용량을 가집니다. 이로 인해 매우 긴 문서나 고해상도 이미지를 처리하는 데 한계가 있습니다.
    • 연구 방향: 이러한 한계를 극복하기 위해 어텐션의 계산을 근사하는 Sparse Attention, Linear Transformer 등 효율적인 트랜스포머 변형 모델들이 활발히 연구되고 있습니다.
  • 결론: 어텐션은 벡터 집합에 적용할 수 있는 유연하고 확장 가능한 연산이며, 이를 기반으로 한 트랜스포머는 대규모 병렬 처리와 장기 의존성 문제 해결을 통해 현대 딥러닝의 거의 모든 분야에서 사용되는 가장 강력하고 중요한 아키텍처로 자리 잡았습니다.

profile
AI 공부합니다

0개의 댓글