트랜스포머는 인코더와 디코더 두 부분으로 구성되어 있으며, 각각 N개의 트랜스포머 블록(Transformer Block)으로 구성된다. 이 블록은 멀티 헤드 어텐션(Multi-Head Attention)과 순방향 신경망(Feed Forward)으로 이루어져있다.
이제 각각을 간단하게 살펴보자.
Multi-Head Attention
입력 시퀀스에서 쿼리(Query), 키(Key), rkqt(Value) 벡터를 정의하여 입력 시퀀스들의 관계를 셀프 어텐션(Self Attention)하는 벡터 표현 방법이다. 이 과정에서 쿼리와 각 키의 유사도를 계산하고, 해당 유사도를 가중치로 사용하여 값 벡터를 합산한다.
→ 해당 과정에서 생산된 어텐션 행렬은 각 단어의 임베딩 벡터를 대체하는 것이다.
# Q, K, V란?
Value = 어텐션 가중치(Query와 Key의 유사도)를 사용하여 계산 |
Feed Forward
앞서 산출된 임베딩 벡터를 더욱 고도화하기 위해 사용된다.
이 신경망은 여러 개의 선형 계층으로 구성되어 있으며, 순방향 신경망의 구조와 동일하게 입력 벡터에 가중치를 곱하고 편향을 더하며 활성화 함수를 적용한다. 이 과정에서 가중치들은 입력 시퀀스의 각 단어의 의미를 잘 파악할 수 있는 방식으로 갱신된다.
인코더와 디코더
- 트랜스포머는 입력 시퀀스 데이터를 소스(Source)와 타깃(Target) 데이터로 나누어 처리한다.
(예) 영 → 한 번역의 경우 : 참조하는 언어인 영어는 소스 데이터, 생성하는 언어인 한글은 타깃 데이터
인코더 소스 데이터를 위치 인코딩(Positional Encoding)된 입력 임베딩으로 표현하여 트랜스포머 블록의 출력 벡터를 생성한다. 이 출력 벡터는 입력 시퀀스 데이터의 관계를 잘 표현할 수 있게 구성된다.
Encoder | 소스 데이터를 위치 인코딩(Positional Encoding)된 입력 임베딩으로 표현하여 트랜스포머 블록의 출력 벡터를 생성한다. 이 출력 벡터는 입력 시퀀스 데이터의 관계를 잘 표현할 수 있게 구성된다. |
Decoder | 인코더와 유사하게 트랜스포머 블록으로 구성되어 있지만, 마스크 멀티 헤드 어텐션(Masked Multi-Head Attention)을 사용하여 타깃 시퀀스 데이터를 순차적으로 생성한다. 이 때 디코더의 입력 시퀀스들의 관계를 고도화하기 위해 인코더의 출력 벡터 정보를 참조한다. |
[Ref] 자연어 처리와 컴퓨터비전 심층학습(위키북스)
'AI > Deep Learning' 카테고리의 다른 글
[Transformer] C로 Transformer 구현하기 (0) | 2025.02.26 |
---|---|
Attention is All You Need(Transformer) Pytorch로 구현 (0) | 2025.01.14 |
[Transformer 정리] 03. Positional Encoding과 특수 토큰 (0) | 2025.01.13 |
[Transformer 정리] 01. 개요 (2) | 2024.12.26 |
[Deep Learning] Pre-training이란?(Transfer Learning, Fine tuning) (0) | 2024.08.22 |