이번 포스팅 부터는 트랜스포머의 구성 요소에 대해서 상세하게 알아 볼 예정입니다.
상세 구성 요소의 첫번째는 트랜스포머의 입력과 출력 입니다. 이전 포스팅(https://jkim83.tistory.com/508)에서 트랜스포머의 훈련과 예측 단계를 설명하면서 어떤 입력이 들어오면 어떤 출력이 나오는지 살펴보았습니다. 이번 포스팅은 입력값으로 어떤 형식의 값이 들어오며, 출력은 어떤 형태로 되는지 좀 더 상세하게 알아보겠습니다.
트랜스포머의 입력과 출력 (Transformer Input and Output)
트랜스포머의 입력은 인풋 임베딩(Input Embedding)과 포지셔널 인코딩(Positional Encoding)으로 구성되어 있으며, 해당 과정을 거쳐 인코더의 입력으로 들어갑니다.
- 인풋 임베딩 (Input Embedding)
- 입력 시퀀스를 고정된 크기의 벡터로 변환
- 해당 벡터는 단어의 의미적인 정보를 담고 있음
- 포지셔널 인코딩 (Positional Encoding)
- 단어의 위치 정보를 입력에 추가
- 각 위치에 대해 고유하며, 시퀀스 내 단어의 순서를 나타냄
트랜스포머의 출력은 선형 레이어(Linear Layer)와 소프트맥스 레이어(Softmax Layer)로 구성되며 디코더에서 생성된 벡터가 각 과정을 거쳐 가장 확률이 높은 단어가 선택되어 출력됩니다.
- 선형 레이어 (Linear Layer)
- 디코더로부터 나온 벡터를 모델의 어휘 사전에 있는 각 단어에 대한 점수로 변환하는 역할
- 각 단어에 대한 벡터를 모델이 알고 있는 전체 어휘의 크기에 해당하는 로짓 벡터로 매핑
- 소프트맥스 레이어 (Softmax Layer)
- 선형 레이어에서 나온 로짓 벡터를 받아, 각 원소(단어 점수)를 확률로 변환
- 로짓스 벡터의 모든 값을 확률 분포로 변환 후 가장 높은 확률을 가진 단어를 다음 단어로 선택
트랜스포머의 입력 (Input)
트랜스포머는 입력으로 문장 전체를 받습니다.
해당 문장을 임베딩 과정(Input Embedding)을 거쳐서 고정된 크기의 벡터로 변환합니다.
그 후 각 단어의 순서 정보를 포함하는 포지셔널 인코딩(Positional Encoding) 과정을 거쳐 입력 문장과 위치 정보가 함께 트랜스포머 인코더의 입력값으로 들어갑니다.
이 그림은 트랜스포머 모델에서 단어 임베딩에 포지셔널 인코딩을 추가하는 과정을 보여줍니다.
여기서는 프랑스어 문장 "Je suis étudiant" (영어로 "I am a student")이 입력으로 사용되었습니다. 각 단어는 먼저 임베딩 과정을 거쳐 고정된 크기의 벡터로 변환됩니다. 여기서 x1은 je, x2는 suis, x3는 etudiant를 나타냅니다.
그 다음 각 단어의 순서 정보를 포함하기 위해서 각 단어 임베딩에 포지셔널 인코딩을 더합니다. 각 포지셔널 인코딩 벡터는 해당 단어의 위치에 따라 다르며, 단어의 상대적 또는 절대적 위치를 모델에 제공합니다.
이렇게 단어의 의미적인 표현과 순서 정보가 결합된 임베딩이 트랜스포머 모델의 입력으로 사용됩니다.
트랜스포머 모델은 의미와 순서가 결합된 이 임베딩을 이용하여 문장의 문맥을 이해하고, 어텐션 메커니즘을 통해 각 단어 간의 관계를 파악합니다.
트랜스포머 출력 (Output)
트랜스포머 출력은 모델이 알고 있는 어휘 집합 크기에 해당하는 차원의 벡터의 확률 분포값 입니다.
트랜스포머의 출력은 선형 레이어 (Linear Layer)와 소프트맥스 레이어 (Softmax Layer)의 두 단계로 구성되어 있습니다.
선형 레이어는 간단한 완전 연결 신경망으로, 디코더 스택에 의해 생성된 벡터를 훨씬 더 큰 로짓스(logits) 벡터로 투영합니다.
우리 모델이 학습 데이터셋을 통해 배운 10,000개의 고유한 영어 단어(모델의 "출력 어휘")를 알고 있다고 가정해 봅시다. 이것은 로짓스 벡터를 10,000개 셀로 만듭니다—각 셀은 고유한 단어의 점수에 해당합니다. 이것이 선형 레이어를 통과한 모델 출력을 해석하는 방법입니다.
소프트맥스 레이어는 그 점수들을 확률로 변환합니다(모두 양수이며 합계가 1.0이 됩니다). 가장 높은 확률을 가진 셀이 선택되고, 그와 연관된 단어가 이 시간 단계에서의 출력 시퀀스로 생성됩니다.
트랜스포머의 디코더는 각 시간 단계에서 입력 시퀀스에 기반한 벡터를 출력하고, 이 벡터는 선형 레이어를 거쳐 모델이 알고 있는 모든 단어에 대한 점수를 갖는 큰 벡터로 변환됩니다. 그 다음에 소프트맥스 레이어는 이 점수들을 확률로 바꿔서, 가장 높은 확률을 가진 단어를 선택합니다. 이 선택된 단어가 모델이 해당 시간 단계에서 예측한 다음 단어로서, 번역된 문장의 일부가 됩니다.
이러한 메커니즘을 통해 모델은 전체 시퀀스를 하나씩, 단계적으로 생성해 나가면서 최종 출력 시퀀스를 생성합니다.
이상 트랜스포머의 입력과 출력에 대해서 알아보았습니다. 다음 포스팅에서는 트랜스포머의 메인 알고리즘인 셀프 어텐션에 대해서 알아보겠습니다.
트랜스포머
2. 트랜스포머 구조 (Transformer High-level Architecture)
3. 트랜스포머 구조 상세 (Transformer Detailed Architecture)
4. 트랜스포머 훈련과 예측 단계 (Transformer Learning and Inference Step)
5. 트랜스포머 입력과 출력 (Transformer Input and Output)
6. 어텐션, 셀프 어텐션, 멀티 헤드 어텐션 개요 (Transformer Attention, Self Attention, Multi-head Attention)
7. 셀프 어텐션 상세 동작 과정 (Transformer Self Attention Detailed Process)
8. 멀티 헤드 어텐션 상세 동작 과정 (Transformer Multi-head Attention Detailed Process)
BERT
Comment