Transformer의 기본 구조

이수진·2025년 10월 26일
0

트랜스포머의 기본 구조는 인코더(Encoder)디코더(Decoder)라는 두 가지 핵심 블록을 여러 개 쌓아 올린 형태

1. 전처리 과정

입력 계층인코더와 디코더에 데이터가 들어가기 전에, 두 가지 중요한 전처리 과정이 수행

  • 입력 임베딩 (Input Embedding): 단어(토큰)를 모델이 처리할 수 있는 고차원 벡터로 변환
  • 위치 인코딩 (Positional Encoding): 트랜스포머는 RNN과 달리 순차적으로 데이터를 처리하지 않고 병렬 처리하기 때문에, 시퀀스 내의 단어 순서 정보를 알지 못함.
    - 이 문제를 해결하기 위해, 각 토큰의 위치 정보를 담은 벡터를 입력 임베딩 벡터에 더함 (주로 사인 및 코사인 함수를 사용하여 구현)

2. 인코더 (Encoder) 블록

인코더는 입력 시퀀스를 처리하고 그 의미를 추출하여 문맥을 이해하는 역할
여러 개의 동일한 인코더 블록이 쌓여 있음(논문에서는 6개)
각 인코더 블록은 두 개의 서브 레이어로 구성됨.

1. 멀티-헤드 셀프-어텐션 (Multi-Head Self-Attention)역할:

  • 입력 문장 내의 모든 단어들 간의 관계를 동시에 파악합니다.
  • 원리: 각 단어는 문장 내 다른 단어들과의 중요도를 계산하여 자신의 표현을 업데이트합니다. 이를 통해 모델은 문장의 문맥을 효과적으로 포착할 수 있습니다.

2. 피드 포워드 네트워크 (Feed-Forward Network, FFN)역할:
어텐션 레이어의 출력을 받아 비선형적 변환을 수행하여 특징 표현을 강화합니다.

  • 구조: 선형 계층 \to ReLU \to 선형 계층의 간단한 MLP 구조
  • 추가 구성 요소: 각 서브 레이어의 출력은 잔차 연결(Residual Connection)을 거친 후 층 정규화(Layer Normalization)가 적용

3. 디코더 (Decoder) 블록

디코더는 인코더의 출력을 바탕으로 출력 시퀀스(번역문, 답변 등)를 생성하는 역할
인코더와 마찬가지로 여러 개의 동일한 디코더 블록이 쌓여 있음 (논문에서는 6개)
각 디코더 블록은 세 개의 서브 레이어로 구성

1. 마스크드 멀티-헤드 셀프-어텐션 (Masked Multi-Head Self-Attention)역할:
출력 단어를 순차적으로 생성할 때, 현재 시점의 단어가 미래의 단어(아직 생성되지 않은 단어)를 참고하지 못하도록 마스킹(Masking)

  • 원리: 이전 시점까지 생성된 단어들만을 참고하여 다음 단어를 예측하도록 함

2. 인코더-디코더 어텐션 (Encoder-Decoder Attention, Cross-Attention)역할:
디코더의 현재 상태(Query)와 인코더의 최종 출력(Key, Value) 간의 관계를 파악

  • 원리: 현재 출력해야 할 단어가 입력 문장(소스 문장)의 어떤 부분과 가장 관련이 있는지 집중(Attention)하여 정보를 추출

3. 피드 포워드 네트워크 (Feed-Forward Network, FFN)
인코더와 동일하게 비선형 변환 및 특징 강화를 수행

4. 최종 출력 계층

디코더 스택의 마지막 출력은 선형 계층(Linear Layer)과 소프트맥스(Softmax) 함수를 거쳐 모델의 전체 어휘 집합에 대한 다음 단어의 확률 분포로 변환

  • 이 중 가장 높은 확률을 가진 단어가 최종 출력으로 선택
profile
뇽안

0개의 댓글