2편 LLM의 중추, 트랜스포머 아키텍처
1. 트랜스포머 아키텍처란?
트랜스포머(Transformer)는 2017년 구글이 발표한 "Attention Is All You Need" 논문에서 소개된 딥러닝 모델로, 자연어 처리(NLP) 분야에서 획기적인 변화를 가져왔다. 기존의 순차적 처리 방식(RNN, LSTM)과 달리 병렬 연산이 가능하여 학습 속도가 빠르고 성능이 뛰어나다.
트랜스포머의 핵심 개념은 어텐션 메커니즘(Attention Mechanism)이며, 특히 셀프 어텐션(Self-Attention)과 멀티 헤드 어텐션(Multi-Head Attention)을 활용하여 문맥을 효과적으로 파악한다. 또한, 기본적으로 인코더-디코더(Encoder-Decoder) 구조를 가지며, 이후 BERT, GPT 등의 다양한 변형 모델이 개발되었다.

2. 텍스트 데이터를 숫자로 변환하는 과정: 임베딩(Embedding)
트랜스포머가 학습을 수행하려면 입력 데이터를 수치화된 벡터로 변환해야 한다. 이를 임베딩(Embedding)이라고 하며, 다음과 같은 단계를 거친다.
2.1. 토크나이제이션(Tokenization)
자연어 문장은 단어 또는 서브워드(부분 단어) 단위로 나누어 처리된다. 대표적인 토크나이저에는 WordPiece, Byte Pair Encoding(BPE), SentencePiece 등이 있다.
- 예제:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
text = "Hello, how are you?"
tokens = tokenizer(text, return_tensors="pt")
print(tokens)
2.2. 임베딩 벡터 변환
토큰화된 단어들은 임베딩 레이어(Embedding Layer)를 통해 고정된 차원의 숫자 벡터로 변환된다.
2.3. 포지셔널 인코딩(Positional Encoding)
트랜스포머 모델은 단어의 순서를 직접 인식하지 못하므로, 이를 보완하기 위해 포지셔널 인코딩(Positional Encoding)이 추가된다. 이는 단어의 위치 정보를 포함하는 벡터를 생성하여 입력 데이터에 더한다.
- 포지셔널 인코딩 공식:

3. 어텐션 메커니즘 이해하기
어텐션은 모델이 입력 데이터에서 중요한 부분을 선택적으로 강조하는 방법이다. 트랜스포머의 핵심 요소인 셀프 어텐션(Self-Attention)은 문장 내 각 단어가 다른 단어와의 관계를 학습하는 과정이다.
3.1. 스케일드 닷 프로덕트 어텐션(Scaled Dot-Product Attention)
셀프 어텐션은 다음의 수식을 따른다.
- 입력 문장을 Query(Q), Key(K), Value(V) 벡터로 변환.
- Query와 Key의 내적(dot product)을 수행하여 연관도 계산.
- Softmax를 사용하여 가중치 정규화.
- Value 벡터와 가중치를 곱해 최종 출력을 생성.

코드 예제 (어텐션 연산)
import torch
import torch.nn.functional as F
# Query, Key, Value 벡터 생성
Q = torch.rand(1, 3) # 1개의 단어, 3차원 벡터
K = torch.rand(3, 3) # 3개의 단어, 3차원 벡터
V = torch.rand(3, 3)
# 어텐션 점수 계산
dot_product = torch.matmul(Q, K.T) # Q와 K의 내적 계산
attention_weights = F.softmax(dot_product / (3 ** 0.5), dim=-1) # 정규화
# 최종 출력 값 계산
output = torch.matmul(attention_weights, V)
print(output)
4. 정규화와 피드 포워드 네트워크 (FFN)
트랜스포머는 Layer Normalization(레이어 정규화)를 사용하여 학습을 안정화하고, 각 인코더/디코더 블록 내에서 피드 포워드 네트워크(Feed Forward Neural Network, FFN)를 통해 비선형 변환을 수행한다.
코드 예제 (FFN 구현)
import torch.nn as nn
class FeedForwardNN(nn.Module):
def __init__(self, dim, hidden_dim):
super().__init__()
self.fc1 = nn.Linear(dim, hidden_dim)
self.fc2 = nn.Linear(hidden_dim, dim)
self.relu = nn.ReLU()
def forward(self, x):
return self.fc2(self.relu(self.fc1(x)))
5. 트랜스포머 기반 대표 모델
트랜스포머를 기반으로 한 대표적인 모델들은 다음과 같다.

- BERT(Bidirectional Encoder Representations from Transformers)
- 인코더 기반 모델
- 문장의 전후 관계를 양방향으로 학습
- 마스킹된 단어 예측 (MLM, Masked Language Model)
- GPT(Generative Pre-trained Transformer)
- 디코더 기반 모델
- 이전 단어를 참고하여 다음 단어를 생성 (Causal LM)
- 텍스트 생성에 강점
- T5(Text-to-Text Transfer Transformer)
- 모든 NLP 작업을 "텍스트 입력 -> 텍스트 출력" 방식으로 처리
- 번역, 요약, 질의응답 등 다목적 활용 가능
6. 주요 사전 학습 기법
트랜스포머 모델들은 다양한 사전 학습 기법을 사용하여 성능을 높인다.
- MLM (Masked Language Model): 일부 단어를 가리고 예측 (BERT)
- Causal LM: 이전 단어만 참고하여 다음 단어를 예측 (GPT)
- Seq2Seq: 입력과 출력을 쌍으로 학습하여 번역, 요약에 활용 (T5)
- Fine-tuning: 사전 학습된 모델을 특정 작업에 맞춰 미세 조정
7. 마무리
트랜스포머 아키텍처는 NLP의 판도를 바꾼 혁신적인 기술이다. 핵심 원리인 어텐션과 피드 포워드 네트워크를 이해하고, 다양한 모델(BERT, GPT, T5 등)을 활용한 실전 프로젝트를 진행하는 것이 중요하다.
'LLM(Open AI)' 카테고리의 다른 글
LLM의 기초 뼈대 세우기 (5) | 2025.04.01 |
---|---|
[Python/AI] Hugging Face 감정 분석 웹 애플리케이션 코드 분석 - 2편 (4) | 2024.11.17 |
[Python/AI] Hugging Face와 Streamlit으로 구현하는 감정 분석 웹 애플리케이션 -1편 코드 (2) | 2024.11.16 |
Hugging Face 회원가입, 토큰 발급, APIKEY 발급 방법, 개발 환경 설정 (22) | 2024.11.15 |
NLP와 Hugging Face 란 어원 등 사용법 (17) | 2024.11.14 |