2wnswoo 2025. 6. 27. 17:03

 

  • 주의 (Attention) 메커니즘은 순환 신경망(RNN)의 성능을 획기적으로 향상시켰음
  • Seq2Seq 모델의 한계를 극복하고, 더 효과적으로 긴 시퀀스를 처리할 수 있게 해줌
  • "Attention is All You Need?" 제안 논문
  • Transformer, NLP 분야 혁신적으로 발전시킴
  • 높은 BLEU 점수를 얻었음
    • *BLEU(Bilingual Evaluation Understudy): 기계 번역 성능 평가 지표 BLEU는 기계가 번역한 문장과 사람이 직접 번역한 참조 문장(Reference) 간의 유사성을 평가, 주로 0부터 1까지의 점수로 표현
  • 2016년경, NLP에서 가장 널리 사용되는 방법은, 양방향 LSTM을 이용하여 문장을 인코딩하는 것이였음.
  • Attention 메커니즘을 활용하여 주목해야 할 정보에만 접근하여 정보를 더 효과적으로 활용이 가능해짐
  • 트랜스포머 동기: 1. 선형 상호작용 거리 최소화
    • 장거리 의존성을 학습하기 어려움
    • *장거리 의존성: 문장 초반의 정보를 문장 후반까지 제대로 기억하지 못하는 현상
    • 단어의 선형순서가 "고정" 되어 있음
      • > 이미 시퀀스 구조만으로는 모든 것을 설명할 수 없다는 걸 알고 있음
  • 트랜스포머 동기: 2. 병렬화 최대화
    • 순방향 및 역방향 패스에는 시퀀스 길이 만큼 병렬화가 불가능한 연산이 존재함
    • e.g. 문장 A B C D가 있다면:
      • 기존 RNN, LSTM은 A를 처리한 후 → B를 처리 → 그다음 C → D 순으로 진행
      • 반면 트랜스포머는 A, B, C, D 모든 단어를 동시에 self-attention 구조로 처리 가능 (병렬화 계산)
  • Attention 은 각 단어의 표현을 쿼리로 취급하여, 값의 집합에서 정보를 접근하고 통합하는 방식
  • Self-Attention은 여기서 한 걸음 더 나아가, 입력 시퀀스 내의 모든 단어가 서로에게 주목할 수 있게 함
    • e.g. "나는 맛있는 사과를 먹었다."
      • 위 문장에서의 "맛있는" 이라는 단어는 "사과"에 가장 많이 주목할 것임
      • Self-attention은 모든 단어가 서로 직접적으로 정보를 주고 받을 수 있게 해줌
  • Transformer는 크게 인코더, 디코더로 나뉨
    • 이 둘은, 비슷한 구조를 가지나 각각의 역할이 다름
    • 인코더 역할: 입력 문장을 이해, 그 의미를 추상화
    • 디코더 역할: 추상화된 정보 바탕으로 출력 문장을 생성
      • e.g.입력 문장: “그는 사과를 먹었다”
        → 인코더는 ‘그’, ‘사과’, ‘먹었다’의 관계를 파악하고
        → “누가 무엇을 했다”는 의미 구조로 벡터화하여
        → 디코더가 출력 문장(예: 영어 번역) 생성에 활용할 수 있도록 정보를 정제하는 겁니다.
      • > 추상화: 문장의 의미를 수치화하여 디코더가 사용할 수 있도록 정리한 것
  • 값(Value)를 찾기 위해 쿼리(query)를 테이블의 키(keys)와 비교함
    • e.g. 그는 항구에서 큰 배를 보았고, 그 배를 타고 여행을 떠났다.
      •  '배' 단어의 의미를 위해 self-attention은 문장 내의 다른 모든 단어와의 관계를 고려함
      • 항구, 여행을 통해 이 '배'가 과일이 아닌 선박이라는 것을 이해함
      • 이러한 방식으로 Self-Attention은 단어의 모호성을 해소하고 더 정확한 의미파악을 가능하게 함
        • >  긴 문장이나 복잡한 구조에서 단어의 의미를 정확하게 이해하는데 큰 도움이 됨
        • > 문맥(context)을 기반으로 단어의 의미를 동적으로 결정하는 것, 단어 하나만 보고 판단하는 것이 아닌 전체를 보고 판단하는 이것이 Self-Attention임
  • Attention 메커니즘
    • e.g. 
      • 일반적인 도서 검색 시스템은 정확한 제목이나 저자 이름으로 책을 찾음
      • 똑똑한 사서가 있다고 할 때, 어떠한 주제에 대해 물어본다면
        • 사서는 모든 책을 한 번 훑어보고 관련성을 판단함
        • 그 후 가장 관련 있는 내용들을 종합해서 알려줌
        • 이 과정에서 사서는, 질문을 "쿼리", 각 책의 주제를 '키' 책의 내용을 '값'으로 생각함
  • 인코더에서 Self-Attention?
    • 1단계: 각 단어에 대해 쿼리, 키, 밸류 값을 계산함
      • 쿼리: 현재 단어가 무엇을 알고 싶어 하는지?
      • 키: 각 단어가 어떤 정보를 가지고 있는지?
      • 밸류: 그 정보의 내용을 나타냄
    • 2단계: 쿼리와 키들 사이의 Attention Score를 계산함
    • 3단계: 소프트맥스를 적용해서 어텐션 스코어를 정규화함
    • 4단계: 값을 가중합하여 반환
  • 인코더에서 Feedforward Layer?
    • Attention 만으로는 충분하지 않음
    • 문제: 요소별 비선형성이 없으므로, 셀프 어텐션은 단순히 값 벡터들의 재평균화만 수행
    • 해결책: 어텐션의 출력에 피드포워드 레이어를 적용하여 비선형 활성화(+ 추가적인 표현력)을 제공
    • 이렇게 Self-Attention 과 Feedforward 층을 결합함으로써, Transformer는 단순한 관계 포착을 넘어서 복잡한 추론까지 가능한 강력한 모델이 되어줌

 

위의 내용은 기본적인 Transformer을 기술함. 그러나 실제로 깊은 네트워크를 만들기 위해서는 몇 가지 추가적인 기술이 필요함

 

따라서 Transformer은 세 가지 중요한 학습 기법(훈련 트릭)을 사용함

 

1. Residual Connection, 잔차 연결

2. Layer Normalization, 층 정규화

3. Scaled Dot Product, 스케일된 점곱 어텐션

 

아래부터는 자세한 설명을 기술함.

 

훈련 트릭 #1 : 잔차 연결, Residual Connections