목록으로

트랜스포머와 임베딩 — 단어를 세포 유형 공간에 매핑하기

토큰·임베딩·위치 인코딩·잔차 연결·LayerNorm의 목적과 원리. scRNA-seq UMAP 공간의 세포 유형 배치 유비로 임베딩 공간의 기하학을 이해합니다.

입문
|
22
|
검증 완료 (2026-07)
진행률0/15 (0%)

트랜스포머와 임베딩 — 단어를 세포 유형 공간에 매핑하기

이 토픽을 마치면

편 #2~4에서 우리는 신경망이라는 다이얼 3,362만 개 기계와 그 훈련 방법을 살펴봤습니다. 이 편에서는 이 기계를 언어에 맞게 재조립한 아키텍처인 트랜스포머(Transformer)의 뼈대를 배웁니다. 핵심 부품 다섯 개 — 토큰화·임베딩·위치 인코딩·잔차 연결(residual connection)·레이어 정규화(layer normalization) — 를 순서대로 다룹니다.

핵심 작동 원리인 어텐션(attention) 은 편 #6에서 별도로 다룹니다. 여기서는 어텐션이 들어갈 자리를 표시만 하고, 나머지 뼈대에 집중합니다.


이미지와 다른, 언어의 골칫거리 세 가지

편 #2에서 우리는 병리 슬라이드(이미지)에 대한 신경망을 봤습니다. 이미지는 신경망 입장에서 다루기 편한 데이터입니다. 픽셀 값이 이미 실수이고, 이미지에는 자연스러운 2차원 격자 구조가 있고, 이웃 관계가 명확합니다.

언어는 근본적으로 다릅니다. 세 가지 골칫거리가 있습니다.

첫째, 이산적입니다. "고양이"라는 단어는 실수 값이 아니라 하나의 이산 기호입니다. 신경망이 다루려면 이걸 수치로 표현해야 합니다. 그런데 "고양이 = 0.42, 강아지 = 0.51" 식으로 임의의 실수를 배정하면, "고양이가 강아지의 82%"라는 무의미한 관계가 만들어집니다.

둘째, 순서가 의미를 좌우합니다. "개가 사람을 물었다"와 "사람이 개를 물었다"는 완전히 다른 뉴스입니다. 어절 순서를 바꿔서 의미가 반전됩니다. 이미지는 어느 정도까지는 회전·이동에 강건하지만, 언어는 순서 하나 바꿔도 의미가 통째로 무너집니다.

셋째, 문맥에 따라 의미가 바뀝니다. 편 #1에서 이야기했듯이 "간"이라는 어절 하나가 "간(肝)", "짠맛의 강도", "-이 갔다"처럼 여러 뜻을 가집니다. 앞뒤 맥락을 봐야 어느 뜻인지 결정됩니다.

트랜스포머는 이 세 문제를 각각 다음 부품으로 해결합니다.

  • 이산성 → 토큰화 + 임베딩
  • 순서 → 위치 인코딩
  • 문맥 의존성 → 어텐션 (편 #6)

이 편에서는 앞의 두 문제를 먼저 다룹니다.


토큰화 — 언어를 이산 단위로 쪼개기

신경망에 언어를 넣기 전에 먼저 "단위"를 정해야 합니다. 이걸 토큰화(tokenization) 라 합니다.

단순한 방법부터.

옵션 A: 단어 단위. "고양이는 물고기를 좋아합니다"를 [고양이는, 물고기를, 좋아합니다]로 쪼갬. 문제: 언어의 어휘는 수십만~수백만 개. 게다가 새 단어(신조어·전문 용어·오타)가 계속 등장. 훈련에 없던 단어를 만나면 처리 불가.

옵션 B: 문자 단위. [고, 양, 이, 는, 물, 고, 기, 를, ...] 로 쪼갬. 어휘는 작지만(한국어 상용 한자 포함 수만 개), 문자 하나에 의미가 거의 없어서 시퀀스가 아주 길어짐. 계산 비용 폭발.

옵션 C: 서브워드 단위 — 현대 표준. 자주 등장하는 부분 어절은 하나의 토큰으로, 드문 것은 더 잘게. "고양이는"이 자주 나오면 하나의 토큰, "메타표현주의는"이 드물면 [메타, 표현, 주의, 는] 등으로.

옵션 C를 자동으로 학습하는 알고리즘이 BPE (Byte Pair Encoding) 또는 SentencePiece. 실무에서 대부분의 LLM이 이 계열을 씁니다. 어휘 크기는 대개 3만~15만.

바이오 유비. 게놈 서열을 분석할 때도 비슷한 문제. 단일 뉴클레오티드(A, T, G, C) 단위로 다루면 시퀀스가 너무 길고, 유전자 단위로 다루면 새로운 유전자를 처리 못 함. 실무에서는 k-mer (예: 6~8 nucleotide 조각)라는 서브 시퀀스 단위를 씁니다. 이게 토큰화의 옵션 C와 완전히 같은 발상. 실제로 최근 게놈 언어 모델(예: Nucleotide Transformer)이 정확히 k-mer 토큰화를 씁니다.

토큰화 결과는 정수 ID의 시퀀스입니다.

text
"고양이는 물고기를 좋아합니다"
   ↓ 토큰화
[고양이는, 물고기를, 좋아, 합니다]
   ↓ 어휘표 조회
[8422, 15903, 421, 892]

이제 이 정수 시퀀스를 신경망이 다룰 수 있는 실수 벡터로 바꿔야 합니다. 이것이 임베딩.


임베딩 — 세포 유형 공간을 만들자

임베딩(embedding) 은 이산 토큰을 고차원 실수 벡터에 매핑하는 것. 각 토큰마다 학습된 벡터 하나를 가집니다.

수학적으로는 매우 단순. V개 토큰이 있는 어휘, 임베딩 차원 d(예: 4096)라 하면, 크기 V × d의 임베딩 행렬 E가 있습니다. 토큰 ID i의 임베딩은 그 행 E[i].

python
V = 100000 # 어휘 크기
d = 4096 # 임베딩 차원
embedding = torch.nn.Embedding(V, d)
token_ids = torch.tensor([8422, 15903, 421, 892])
vectors = embedding(token_ids) # shape: (4, 4096)

이 임베딩 행렬은 훈련 시작 시 무작위로 초기화되고, 신경망 훈련 과정에서 역전파로 함께 학습됩니다. 훈련이 끝나면 이 4096차원 공간에 각 토큰이 특정 위치를 잡고 앉아 있습니다.

이 공간의 기하학이 놀랍습니다. 훈련이 잘 된 임베딩 공간에서 의미적으로 유사한 토큰은 서로 가까이 놓입니다. 그리고 의미적 관계가 벡터 산술로 재현됩니다.

바이오 유비 — scRNA-seq의 UMAP 공간. 여러분이 단일 세포 RNA 시퀀싱을 해본 적이 있다면, 세포마다 수만 개 유전자의 발현 프로파일이 나옵니다. 이걸 그대로 그리는 건 불가능하지만, UMAP·t-SNE·PCA로 2~50차원 임베딩 공간에 매핑하면 세포들이 그 공간에서 흥미로운 배치를 이룹니다.

  • 같은 세포 유형(예: CD8+ T cell)은 서로 가까이 모여 있음
  • 발생 경로 상 근접한 세포는 연속적 궤적을 이룸
  • 세포 유형 간 방향 벡터가 생물학적 의미를 가짐 — 예를 들어 "naïve T cell → effector T cell" 방향과 "naïve B cell → plasma cell" 방향이 유사

LLM의 토큰 임베딩 공간이 정확히 이 구조입니다. 세포 유형 대신 어절이 배치되고, 유전자 발현 축 대신 어절의 의미적 축(구체성·성별·긍부정 등)이 임베딩 공간의 방향으로 나타납니다.

임베딩 공간의 놀라운 벡터 산술 예시 (실제 word2vec/GloVe/LLM 임베딩에서 재현됨):

text
vec("여왕") - vec("여자") + vec("남자") ≈ vec("왕")

"여왕"에서 "여성"이라는 성분을 빼고 "남성" 성분을 더하면 대략 "왕"의 벡터가 나옵니다. 이것은 임베딩 공간이 성별이라는 축을 학습한 결과. 이런 벡터 산술이 학습된 것이지 프로그래밍된 게 아니라는 점이 중요합니다. 신경망이 훈련 데이터에서 이런 관계를 스스로 발견합니다.

바이오 대응. scRNA-seq 임베딩 공간에서 유사한 벡터 산술이 관찰됩니다.

text
vec("helper T cell") - vec("CD4+") + vec("CD8+") ≈ vec("cytotoxic T cell")

T cell 임베딩 공간에서 CD4/CD8 마커 발현이 하나의 축을 이루고, 이 축을 따라 이동하면 세포 유형이 helper에서 cytotoxic로 바뀝니다. 신경망 임베딩과 생물학 임베딩이 개념적으로 같은 구조를 가지는 이유가 여기에 있습니다 — 둘 다 훈련 데이터의 통계적 관계를 저차원 유클리드 공간의 기하학으로 압축한 것.


순서 문제 — 위치 인코딩

임베딩까지 하면 어절이 벡터가 되었습니다. 하지만 골칫거리 둘째가 남아 있습니다. 어절의 순서.

트랜스포머는 (편 #6에서 자세히 볼 이유로) 입력 시퀀스를 순서 없는 집합처럼 처리합니다. 즉 "개가 사람을 물었다"와 "사람이 개를 물었다"에 대해 같은 결과를 낼 것 같은 위험이 있습니다.

이걸 방지하기 위해 어절의 임베딩에 위치 정보를 명시적으로 더합니다. 이것이 위치 인코딩(positional encoding).

가장 단순한 방법: 각 위치마다 학습된 벡터를 하나씩 두고 임베딩에 더함.

python
pos_embedding = torch.nn.Embedding(max_length, d)
positions = torch.arange(len(token_ids))
final = token_embed(token_ids) + pos_embedding(positions)

이걸 학습된 위치 임베딩(learned positional embedding) 이라 합니다. 원 GPT-2에서 이 방식을 씀.

원 트랜스포머 논문(2017)은 다른 방식을 씀 — 정현파 위치 인코딩(sinusoidal positional encoding). 각 위치 p와 각 차원 i에 대해:

text
PE(p, 2i)   = sin(p / 10000^(2i/d))
PE(p, 2i+1) = cos(p / 10000^(2i/d))

파라미터 없이 결정적으로 계산되는 파형. 위치 pp+k 사이의 관계가 삼각함수 항등식으로 표현 가능해서 모델이 상대 위치를 학습하기 쉬움.

바이오 유비 — circadian rhythm phase. 세포 생리학에서 하루 24시간 주기 동안의 시점을 표현할 때 sin(2πt/24), cos(2πt/24) 조합을 자주 씁니다. 정오와 자정을 벡터 공간에서 정반대 방향으로 배치하고, 오전과 오후를 연속적으로 이동시키는 자연스러운 방법. 트랜스포머의 sinusoidal PE가 정확히 이 원리. 다른 주기(하루·1시간·1분)를 조합하면 더 정밀한 시각 표현이 가능한데, PE의 다양한 주기 (10000^(2i/d)가 차원마다 다름)가 이 다중 주기 표현을 자동 구현.

현대 표준 — RoPE와 ALiBi. 2020년 이후 등장한 새로운 방식들이 실무 표준이 되었습니다.

  • RoPE (Rotary Position Embedding) — 임베딩 벡터를 위치에 따라 특정 각도만큼 회전시킴. 상대 위치가 벡터 각도 차이로 자연스럽게 표현됨. LLaMA·GPT-NeoX·Qwen 등 현대 LLM 대부분이 채택. 상대 위치를 편미분 가능하게 다루는 우아함.
  • ALiBi (Attention with Linear Biases) — 어텐션 스코어에 위치 거리에 비례하는 페널티를 부여. 훈련 시 본 것보다 긴 문맥에도 어느 정도 일반화되는 장점.

두 방식 모두 훈련 시 본 문맥 길이 이상으로 확장할 수 있다는 장점 때문에 원 sinusoidal PE보다 실무에서 널리 씀. GPT-3/4·LLaMA 등 대형 모델의 문맥 창(context window) 확장 (2K → 8K → 32K → 128K)이 이 계열 위치 인코딩 덕입니다.


트랜스포머 블록의 뼈대

토큰 임베딩과 위치 인코딩까지 마치면 각 어절이 위치 정보가 담긴 벡터가 됩니다. 이 벡터들이 이제 트랜스포머 블록(Transformer block) 이라는 층 구조를 여러 번 통과합니다.

트랜스포머 블록의 뼈대 (Pre-LN 구조, 현대 표준):

text
입력 x
   ↓
LayerNorm
   ↓
Multi-head Attention   ←── (편 #6에서 자세히)
   ↓
+ x                    ←── Residual connection
   ↓
LayerNorm
   ↓
FeedForward Network (FFN)
   ↓
+ (이전 결과)          ←── Residual connection
   ↓
출력

이 블록이 GPT-2에서는 12개, GPT-3에서는 96개, 최신 대형 모델에서는 100+개 쌓입니다. 층이 깊어질수록 더 복잡한 패턴을 잡을 수 있지만, 훈련 안정성이 어려워집니다. 그 안정성을 확보하는 게 잔차 연결레이어 정규화입니다.


잔차 연결 — 층을 뛰어넘는 지름길

잔차 연결(residual connection) 또는 skip connection은 층의 출력에 입력을 그대로 더하는 것.

text
출력 = F(입력) + 입력

F는 층의 실제 변환(어텐션·FFN 등).

이게 왜 중요한가. 편 #4에서 이야기한 사라지는 기울기 문제를 해결하기 위해서입니다.

역전파 시에 층 100개를 통과하는 기울기가 각 층에서 국소 미분이 곱해지면서 지수적으로 감쇠합니다. 100번 곱하면 대부분의 층에서 첫 층까지 기울기가 사실상 0이 되어 훈련이 안 됩니다.

잔차 연결은 이 문제를 우아하게 해결합니다.

text
∂출력/∂입력 = ∂F/∂입력 + 1  ←── "+ 입력" 덕에 항상 1이 남는다

이 "+1" 덕에 기울기가 층을 통과해도 최소한 원본이 그대로 흐릅니다. 100층을 쌓아도 기울기가 첫 층까지 전달됨.

원 트랜스포머 논문의 대성공, 그리고 이보다 앞선 ResNet(2015)의 대성공이 모두 이 아이디어 덕입니다. 오늘날 100+층 신경망이 훈련 가능한 결정적 이유.

바이오 비유 — 세포 항상성. 세포가 외부 자극을 받아도 즉시 완전히 변하지 않고, 기존 상태를 어느 정도 유지하면서 서서히 조정하는 항상성 시스템을 가지고 있습니다. 이때 유지되는 baseline이 신경망의 "+ 입력"과 개념이 같습니다. 세포가 매 자극마다 상태를 완전히 초기화하고 다시 시작한다면 안정성이 없어질 것입니다. 세포 신호 시스템에서도 강한 신호가 baseline을 유지한 채 그 위에 얹혀 흐릅니다. 트랜스포머의 잔차 흐름과 개념 정합.

트랜스포머에서는 층 하나가 어텐션이나 FFN이라는 "변화"를 만들고, 그 변화가 잔차에 더해집니다. 이걸 잔차 흐름(residual stream) 관점에서 보면, 임베딩이 첫 층부터 마지막 층까지 하나의 흐름을 이루면서 각 층이 그 흐름에 정보를 조금씩 더해 나가는 것으로 이해할 수 있습니다. 이 관점이 최근 해석 가능성(mechanistic interpretability) 연구의 핵심 프레임입니다.


레이어 정규화 — 활성값의 분포를 잡아주기

레이어 정규화(Layer Normalization, LayerNorm) 는 층의 활성값 분포를 매 스텝마다 표준화하는 연산.

각 벡터에 대해:

text
정규화된_벡터 = (벡터 - 평균) / 표준편차

그 다음 학습된 스케일 γ와 이동 β를 곱하고 더함:

text
결과 = γ ⊙ 정규화된_벡터 + β

왜 필요한가. 여러 층을 통과하면서 활성값의 분포가 예측 불가능하게 이동·확장됩니다. 어떤 층에서는 활성값이 커지고, 다른 층에서는 작아짐. 이 불안정성이 훈련을 어렵게 함.

LayerNorm이 매 층 활성값의 평균 0·분산 1로 재조정해서 훈련을 안정화합니다. γβ로 필요하면 다시 스케일·이동할 수 있는 여지를 줌.

바이오 비유 — 세포 내 pH·이온 항상성. 세포는 외부 자극이 있어도 세포질 pH를 7.2 부근, 나트륨 농도 12mM, 칼륨 농도 140mM 등 좁은 범위 내에 유지합니다. 이 항상성이 없으면 각 신호 경로가 예상 밖 상태에서 작동해서 세포 기능이 무너집니다. LayerNorm이 신경망 층에서 하는 일이 이와 개념 정합. 각 층이 예상되는 활성값 범위에서 작동하도록 상수 조건을 보장.

Pre-LN vs Post-LN.

  • Post-LN (원 논문): Output = LayerNorm(F(x) + x). 잔차 후에 정규화.
  • Pre-LN (현대 표준): Output = F(LayerNorm(x)) + x. 층 앞에 정규화.

Pre-LN이 훨씬 훈련이 안정적이라는 것이 밝혀졌고, 오늘날 대부분의 LLM이 Pre-LN을 씁니다. GPT-2·GPT-3·LLaMA·Qwen·Claude 등 대부분.

RMSNorm. LayerNorm의 변형. 평균 빼는 것을 생략하고 RMS(root mean square)로만 정규화. 계산이 살짝 빠르고 성능이 유사해서 LLaMA 이후 사실상 표준.

text
RMSNorm(x) = γ ⊙ x / sqrt(mean(x^2) + ε)

전체 그림 — 트랜스포머 아키텍처

지금까지의 부품을 한 데 조립하면 트랜스포머의 전체 그림이 됩니다.

text
토큰 ID 시퀀스 [8422, 15903, 421, 892]
   ↓
토큰 임베딩 (V × d 행렬 조회)
   ↓
+ 위치 인코딩 (또는 RoPE 회전)
   ↓
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Transformer Block 1
  LayerNorm → Multi-head Attention → + Residual
  LayerNorm → FFN → + Residual
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Transformer Block 2
  ... (같은 구조)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Transformer Block 96 (GPT-3의 경우)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   ↓
최종 LayerNorm
   ↓
언어 모델링 헤드 (d × V 행렬)
   ↓
어휘 크기 V의 확률 분포 (다음 토큰 예측)

각 트랜스포머 블록이 이 편에서 다룬 부품들 — 정규화·어텐션·FFN·잔차 — 의 조합. 어텐션이 무엇인지가 편 #6의 주제. 여기서는 "각 토큰이 다른 토큰의 정보를 문맥에 맞춰 흡수하는 부품" 정도로 이해하고 넘어갑시다.

규모 감. 오늘날의 대형 LLM에서 각 블록의 파라미터 대부분은 사실 FFN 이 차지합니다. 어텐션 파라미터는 상대적으로 작음. 예를 들어 GPT-3의 각 블록에서 어텐션 파라미터 ~50M, FFN 파라미터 ~200M. 즉 어텐션은 정보 이동 부품이고 FFN은 정보 저장·처리 부품. 최근 연구에 따르면 LLM의 "지식"이 상당 부분 FFN 파라미터에 저장되어 있다는 증거가 있습니다.


바이오 응용 시나리오

시나리오 1 — ESM 단백질 언어 모델

편 #4에서 언급한 ESM(Evolutionary Scale Modeling)은 정확히 이 편에서 다룬 트랜스포머 아키텍처. 차이점.

  • 토큰: 단어가 아니라 아미노산 20종
  • 임베딩: 각 아미노산이 학습된 벡터. 훈련이 잘 되면 이 벡터가 아미노산의 물리화학적 성질(소수성·전하·크기)을 재현
  • 위치 인코딩: 서열 상의 위치. 2차 구조·3차 접힘 예측에 핵심
  • 어텐션: 서열 상 멀리 떨어진 아미노산 간의 상호작용(예: 이황화 결합·소수성 코어·활성 부위) 학습

훈련이 끝난 ESM 임베딩 공간에서 유사한 기능의 단백질이 모여 있고, 서열 상 접촉하는 아미노산 쌍이 어텐션에서 자연스럽게 강조됩니다. 이 어텐션 지도가 AlphaFold의 훈련에 사용됩니다.

시나리오 2 — Enformer 유전체 시퀀스 모델

DeepMind의 Enformer는 유전체 시퀀스(A/T/G/C)를 입력으로 받아 세포 유형별 유전자 발현을 예측하는 트랜스포머.

  • 토큰: DNA 염기 (또는 k-mer)
  • 위치 인코딩: 유전체 상 위치. 프로모터·인핸서·CTCF 결합 부위 등 지역적 특징 학습에 필요
  • 긴 문맥: 인핸서가 유전자에서 수백 kb 떨어져 있을 수 있음. Enformer의 문맥 창이 100kb+
  • 잔차 흐름: 매우 깊은 네트워크(수십 블록)에서 기울기 흐름 유지에 필수

시나리오 3 — ChemBERTa 화학 구조 모델

분자 구조를 SMILES라는 문자열로 표현하고 이걸 트랜스포머에 넣는 모델. 훈련이 끝나면 임베딩 공간에서 유사한 화학적 성질의 분자가 모입니다. 약물 발굴에서 후보 분자 검색·유사 분자 생성에 활용.


핵심 정리

  • 언어의 세 골칫거리(이산성·순서·문맥)를 토큰화+임베딩·위치 인코딩·어텐션이 각각 해결.
  • 임베딩은 이산 토큰을 고차원 실수 공간에 매핑. 훈련이 잘 되면 유사한 토큰이 가까이 놓이고 의미 관계가 벡터 산술로 표현됨. scRNA-seq UMAP 공간과 같은 원리.
  • 위치 인코딩은 어절 순서를 신경망에 알림. sinusoidal·learned·RoPE·ALiBi 등. 현대 표준은 RoPE.
  • 트랜스포머 블록은 어텐션 + FFN + 잔차 + LayerNorm의 조합.
  • 잔차 연결은 사라지는 기울기 문제를 해결해 100+층 훈련을 가능케 함. 세포 항상성과 개념 정합.
  • 레이어 정규화는 활성값 분포를 안정화해 훈련 수렴을 돕는다. Pre-LN·RMSNorm이 현대 표준.
  • 대형 LLM 파라미터의 대부분은 FFN이 차지하며, 지식 저장의 상당 부분이 여기 있다는 증거.

다음 개념

  • 편 #6 attention-mechanism — 트랜스포머의 심장. 어절이 서로 정보를 주고받는 원리.
  • 편 #7 prompt-engineering — 훈련된 트랜스포머를 어떻게 잘 활용하는가.
  • 편 #12 pytorch-basics — 이 편의 부품들을 코드로 구현.

📐 부록 — 전문가를 위한 수학 공식

난이도: 매우 어려움 (Very Hard) 대상: 대학원 수준의 선형대수·확률·최적화 이론을 아는 독자

A.1 임베딩 층의 수학

어휘 크기 V, 임베딩 차원 d.

임베딩 행렬: E ∈ ℝ^{V × d}

토큰 ID i → 임베딩 벡터: e_i = E[i, :] (i번째 행)

학습: E는 훈련 파라미터. 역전파로 각 행이 개별 업데이트됨.

공유 임베딩 (weight tying): 언어 모델링 헤드(마지막 층 d → V)의 가중치가 E^T와 공유되는 경우가 많음. 파라미터 절약 + 훈련 안정성 개선.

A.2 Sinusoidal 위치 인코딩

원 트랜스포머 논문 (Vaswani et al., 2017):

text
PE(p, 2i)   = sin(p / 10000^(2i/d))
PE(p, 2i+1) = cos(p / 10000^(2i/d))

핵심 성질: 위치 p+k의 PE는 위치 p의 PE의 선형 함수로 표현 가능:

text
PE(p+k) = M_k · PE(p)

M_kk에만 의존하는 회전 행렬. 이 성질로 모델이 상대 위치를 학습하기 쉬움.

주파수 스펙트럼: 차원 i가 커질수록 파형의 주기가 길어짐 (10000^(2i/d)). 낮은 차원은 짧은 거리, 높은 차원은 긴 거리 표현.

A.3 RoPE (Rotary Position Embedding)

각 위치 p에서 임베딩 벡터를 2차원 쌍씩 잡아 특정 각도만큼 회전.

임베딩 벡터 x ∈ ℝ^dd/2개의 2D 쌍 (x_{2i}, x_{2i+1})로 나눔.

각 쌍을 위치 의존 각도 θ_{p,i} = p · 10000^{-2i/d} 만큼 회전:

text
[x'_{2i}  ]   [cos(θ_{p,i})  -sin(θ_{p,i})]   [x_{2i}  ]
[x'_{2i+1}] = [sin(θ_{p,i})   cos(θ_{p,i})] · [x_{2i+1}]

핵심 성질: 두 벡터의 내적이 위치 차이 p - q에만 의존:

text
⟨RoPE(x, p), RoPE(y, q)⟩ = f(x, y, p-q)

이 성질이 어텐션 스코어에서 상대 위치 정보를 자연스럽게 표현. 편 #6 어텐션에서 이어짐.

A.4 ALiBi (Attention with Linear Biases)

위치 인코딩을 임베딩에 더하는 대신, 어텐션 스코어에 위치 거리 페널티를 더함.

Q, K 어텐션 스코어 계산 후:

text
score(i, j) = ⟨q_i, k_j⟩ / sqrt(d) - m · |i - j|

m은 각 어텐션 헤드마다 다른 슬로프(예: 2^(-8/h), h = 헤드 수).

장점: 훈련 시 본 문맥 길이보다 긴 문맥에도 어느 정도 일반화. 계산 비용 없음.

A.5 LayerNorm 수식

벡터 x ∈ ℝ^d에 대해:

text
μ = (1/d) Σ_i x_i                    (평균)
σ^2 = (1/d) Σ_i (x_i - μ)^2          (분산)
x̂_i = (x_i - μ) / sqrt(σ^2 + ε)      (정규화)
y_i = γ_i · x̂_i + β_i                 (스케일·이동)

γ, β ∈ ℝ^d는 학습 파라미터. ε ≈ 1e-5는 수치 안정성.

중요: 배치가 아니라 각 벡터별로 정규화. BatchNorm과의 차이. BatchNorm은 배치 크기 의존성이 있어 시퀀스 모델에 부적합.

A.6 RMSNorm 수식

LayerNorm에서 평균 빼는 부분 생략:

text
y_i = γ_i · x_i / sqrt((1/d) Σ_j x_j^2 + ε)

파라미터 수 절반 (β 없음), 계산 살짝 빠름. LLaMA·Mistral·Qwen 등 채택.

A.7 잔차 연결의 편미분

블록 y = F(x) + x.

text
∂y/∂x = ∂F/∂x + I

I는 항등 행렬. 항상 1의 성분이 남는다는 것이 사라지는 기울기 대응의 핵심.

여러 블록 통과:

text
y = F_L(F_{L-1}(...F_1(x)...)) + skip 경로

역전파 시 skip 경로가 곱셈이 아니라 덧셈이라서 기울기가 지수 감쇠하지 않음.

A.8 Pre-LN vs Post-LN

Post-LN (원 논문):

text
y = LayerNorm(F(x) + x)

Pre-LN (현대 표준):

text
y = F(LayerNorm(x)) + x

Pre-LN 장점:

  • 잔차 흐름이 정규화를 통과하지 않아 항상 원본 스케일 유지
  • 워밍업 없이도 훈련이 안정적
  • 매우 깊은 네트워크(100+층) 훈련 가능

Pre-LN 단점:

  • 성능이 약간 떨어질 수 있다는 보고. 최근 DeepNet 등 하이브리드 접근도 등장.

A.9 FFN (Feed-Forward Network) 수식

트랜스포머 블록 안의 FFN. 대개 2층 MLP:

text
FFN(x) = W_2 · σ(W_1 · x + b_1) + b_2

W_1 ∈ ℝ^{4d × d}, W_2 ∈ ℝ^{d × 4d} (중간 차원이 4배). GPT 계열의 관례.

σ는 활성 함수. GPT-2까지 GELU, 최근 대형 모델은 SwiGLU:

text
SwiGLU(x) = (W_2 · x) ⊙ Sigmoid(W_1 · x) · V · x

두 개 게이트 곱하는 구조. LLaMA·PaLM·Qwen 등 채택.

A.10 파라미터 수 대략 계산

임베딩 차원 d, 층 수 L, 어휘 크기 V:

  • 임베딩: V · d (weight tying 시 하나로)
  • 각 블록의 어텐션: 4 · d^2 (Q, K, V, Out 각 d × d)
  • 각 블록의 FFN: 8 · d^2 (d → 4d → d)
  • 각 블록의 LayerNorm: 4d (거의 무시 가능)

블록당 총: ~12 · d^2

전체 파라미터 (임베딩 제외): ~12 · L · d^2

GPT-3 175B: L = 96, d = 12288. 12 · 96 · 12288^2 ≈ 174B. 이름 그대로.

훈련 시 옵티마이저 상태(Adam은 파라미터당 2배 메모리)와 활성값 저장까지 고려하면 실제 GPU 메모리는 파라미터 크기의 8~16배 정도.


참고 자료

본 편의 콘텐츠·시나리오·비유·수치는 모두 BioPlayground 자체 개발이며, 아래는 개념 학습에 도움이 되는 외부 참고 자료입니다.

  • 원 트랜스포머 논문: Vaswani et al., "Attention Is All You Need" (NeurIPS 2017)
  • RoPE 원 논문: Su et al., "RoFormer: Enhanced Transformer with Rotary Position Embedding" (2021)
  • ALiBi 원 논문: Press et al., "Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation" (ICLR 2022)
  • Pre-LN 분석: Xiong et al., "On Layer Normalization in the Transformer Architecture" (ICML 2020)
  • RMSNorm 원 논문: Zhang & Sennrich, "Root Mean Square Layer Normalization" (NeurIPS 2019)
  • 잔차 연결 원 논문: He et al., "Deep Residual Learning for Image Recognition" (CVPR 2016)
  • 워드 임베딩 원류: Mikolov et al., "Efficient Estimation of Word Representations in Vector Space" (word2vec, 2013)
  • 잔차 흐름 해석: Elhage et al., "A Mathematical Framework for Transformer Circuits" (Anthropic 2021)
  • 딥러닝 시각화 교육: 3Blue1Brown "Deep Learning" Ch 5·6 (YouTube) — 페다고지 참고
  • BPE 원 논문: Sennrich et al., "Neural Machine Translation of Rare Words with Subword Units" (ACL 2016)
  • Enformer 논문: Avsec et al., "Effective gene expression prediction from sequence by integrating long-range interactions" (Nature Methods 2021)

이 편은 트랜스포머의 뼈대를 조립한 편입니다. 편 #6에서 그 심장인 어텐션이 어떻게 작동하는지 파헤칩니다.

💬 질문과 댓글

0개의 댓글

로그인 없이 작성할 수 있습니다. 비로그인 댓글은 작성 후 직접 수정·삭제할 수 없습니다.

0/2000

로딩 중...