Programming/TIL

[TIL] Transformers Architecture

R.i.c.K.y 2024. 1. 3. 02:33

트랜스포머 아키텍처

원본 트랜스포머 아키텍처는 Encoder-Decoder 구조를 기반으로 한다.

Encoder

입력 토큰의 시퀀스를 은닉 상태(hidden state) or 문맥(context) 이라 부르는 임베딩 벡터의 시퀀스로 변환한다.

Decoder

인코더의 은닉 상태를 사용하여 출력 토큰의 시퀀스를 한 번에 하나씩 반복적으로 생성한다.

원본 트랜스포머 아키텍처는 기계 번역과 같은 Seq2Seq 작업을 위해 고안되었지만, 시간이 지나며 인코더와 디코더는 독립적인 모델로 발전되었다.

인코더 유형

  • 텍스트 시퀀스 입력을 풍부한 수치 표현으로 변환한다.
  • 한 토큰에 대해 계산된 표현은 왼쪽(이전 토큰)과 오른쪽(이후 토큰) 문맥에 따라 달라지는 Bidirectional Attention의 특징을 가진다.
  • 텍스트 분류, 개체명 인식 등에 적합하다
  • BERT 계열이 대표적인 인코더 유형이다.

디코더 유형

  • 시작 텍스트가 주어지면 가장 가능성 있는 다음 단어를 예측하는 식으로 시퀀스를 자동 완성한다.
  • 한 토큰에 대해 계산된 표현은 오직 왼쪽(이전 토큰) 문맥에 따라 달라지는 Causal Attention, Autoregressive Attention의 특징을 가진다.
  • GPT 계열이 대표적인 디코더 유형이다.

인코더-디코더 유형

  • 한 텍스트의 시퀀스를 다른 시퀀스로 매핑하는 복잡한 모델링에 사용한다.
  • 기계 번역과 요약 작업 등에 적합하다.
  • BART, T5 모델이 대표적인 인코더-디코더 유형이다.

인코더

인코더 층의 종류

  • Multi-head Self-Attention Layer
  • Fully connected Feed-Forward Layer

셀프 어텐션 (Self-Attention)

각 토큰에 대해 고정된 임베딩을 사용하는 대신, 전체 시퀀스를 사용해 각 임베딩의 가중 평균을 계산하는 것.

각 임베딩의 가중 평균을 구하는 이유?

문맥 고려 임베딩을 위해! (셀프 어텐션을 사용하는 이유)

  • time flies like an arrow → flies는 파리(fly)일수도, 날다(fly)일수도 있지만, 해당 토큰의 앞뒤 문맥을 통해 어텐션 가중치가 달라진다. 이를 파악하기 위해 가중 평균을 구한다.

어텐션 가중치 계산 방법

  • 스케일드 점곱 어텐션 (Scaled dot-product Attention)
    1. 각 토큰 임베딩을 Query, Key, Value 세 개의 벡터로 투영
    2. 어텐션 점수를 계산. 유서도 함수를 사용해 Query와 Key의 유사도를 출력한다.
      쿼리와 키가 비슷하면 점곱 결과가 크고, 아니면 작다.
      이 단계의 출력을 어텐션 점수라 하며, n개의 입력 토큰의 경우 n*n 행렬로 표현
    3. 어텐션 가중치를 계산. 어텐션 점수에 스케일링 인자를 곱해 분산을 정규화한 후, 소프트맥스 함수를 적용해 모든 열의 합이 1이 되게 만들어준다. 이렇게 만들어진 n*n 행렬에는 어텐션 가중치가 담긴다.
    4. 토큰 임베딩을 업데이트한다. 어텐션 가중치가 계산되면 이것을 값 벡터와 곱해 업데이트된 표현식을 얻는다.

의의

동일한 쿼리와 키 벡터를 사용하는 어텐션 메커니즘은 문맥에서 동일한 단어, 특히 현재 읽어들인 단어에 매우 큰 점수를 할당한다.

한계

하지만 실전에서는 단어 그 자체보다 앞뒤 문맥의 단어들이 해당 단어의 의미를 파악하는데 더 큰 도움을 준다.

앞뒤 문맥의 단어들과의 관계를 통한 의미 추출을 어떻게 만들 수 있을까? → 멀티 헤드 어텐션

멀티 헤드 어텐션

왜 싱글 헤드만 사용하면 안될까?

: 편향 방지를 위해서.

한 헤드의 소프트맥스가 유사도의 한 측면에만 초점을 맞추는 경향이 있기 때문에, 여러 개 헤드가 있으면 모델은 동시에 여러 측면에 초점을 맞추게 된다.

예) 헤드1 → 주어-동사 상호작용에 초점, 헤드2 → 인접한 형용사에 초점

마치 합성곱 신경망처럼, 각 헤드들이 동시에 특정 부분에 포커싱을 하기 때문에 편향성을 많이 줄인 채로 정확한 분석을 할 수 있게 된다.

'Programming > TIL' 카테고리의 다른 글

[TIL] [리뷰] GPT-4 for Defense specific Named Entity Extraction  (2) 2024.01.04