트랜스포머 아키텍처는 딥러닝의 혁신적인 변화를 이끌었다.
다양한 트랜스포머 기반 기술은 언어 모델, 번역, 컴퓨터 비전 등 여러 분야에서 폭넓게 활용되고 있다.
트랜스포머는 순서에 무관한 구조이기 때문에 순서 정보를 반영하기 위해 Positional Encoding을 사용한다.
주로 사인 및 코사인 함수를 기반으로 한다.
import numpy as np
def positional_encoding(seq_len, d_model):
pos = np.arange(seq_len)[:, np.newaxis]
i = np.arange(d_model)[np.newaxis, :]
angle_rates = 1 / np.power(10000, (2 * (i // 2)) / np.float32(d_model))
pos_encoding = pos * angle_rates
pos_encoding[:, 0::2] = np.sin(pos_encoding[:, 0::2])
pos_encoding[:, 1::2] = np.cos(pos_encoding[:, 1::2])
return pos_encoding
Multi-Head Attention은 서로 다른 부분에 동시에 집중할 수 있도록 설계되었다.
이 기술은 트랜스포머의 핵심으로, 모델이 다양한 패턴을 학습하도록 돕는다.
from tensorflow.keras.layers import MultiHeadAttention
layer = MultiHeadAttention(num_heads=8, key_dim=64)
정규화 레이어를 주의 메커니즘 전 (Pre-Norm) 또는 후 (Post-Norm)에 배치하는 방식에 따라 학습 안정성이 달라진다.
# Pre-Norm의 예시
def pre_norm(x, attention_layer, norm_layer):
x = norm_layer(x)
return attention_layer(x)
# Post-Norm의 예시
def post_norm(x, attention_layer, norm_layer):
x = attention_layer(x)
return norm_layer(x)
Gradient Checkpointing은 메모리 사용량을 줄이는 기법으로, 계산량을 늘려 메모리와의 트레이드오프를 이룬다.
대규모 모델에서 메모리 부족 문제를 해결할 수 있다.
import torch
from torch.utils.checkpoint import checkpoint
def model_forward(*inputs):
# 모델의 포워드 패스 정의
pass
output = checkpoint(model_forward, *inputs)
LoRA는 대규모 모델의 파라미터를 효율적으로 미세조정할 수 있는 기술이다.
추가 파라미터의 수를 줄여 경량화하면서도 높은 성능을 유지한다.
# LoRA 레이어의 예시
class LoRALayer(tf.keras.layers.Layer):
def __init__(self, rank):
super().__init__()
self.rank = rank
def call(self, inputs):
# Low-Rank 계산
pass
트랜스포머 기반 기술은 딥러닝의 핵심 기법으로 자리 잡았다.
문제에 적합한 기술을 선택하여 모델의 성능을 극대화하고, 학습 과정을 효율화해보자.