본문 바로가기
인공지능/생성형 AI

[생성형 AI] Jay Alammar, NLP in Korean 블로그 글 정리(트랜스포머 모델)

by 클레어몬트 2025. 4. 14.

https://claremont.tistory.com/entry/%EC%83%9D%EC%84%B1%ED%98%95-AI-Transformer-%EA%B5%AC%EC%A1%B0

 

[생성형 AI] Transformer 구조

https://claremont.tistory.com/entry/LLM-LLM-%EB%B0%B0%EA%B2%BD-%EB%B0%8F-%EA%B5%AC%EC%A1%B0-%EC%9D%B4%ED%95%B4 [생성형 AI] 자연어 처리(NLP, Natural Language Processing) 개념ㅁ자연어 처리(NLP, Natural Language Processing): 컴퓨터가

claremont.tistory.com

기초 개념을 먼저 공부하고 오자!

 

 

 

https://jalammar.github.io/illustrated-transformer

 

The Illustrated Transformer

Discussions: Hacker News (65 points, 4 comments), Reddit r/MachineLearning (29 points, 3 comments) Translations: Arabic, Chinese (Simplified) 1, Chinese (Simplified) 2, French 1, French 2, Italian, Japanese, Korean, Persian, Russian, Spanish 1, Spanish 2,

jalammar.github.io

 

Jay Alammar 블로그의 트랜스포머 모델에 관한 정말 정말 정말 좋은 글이다

박병선교수님 말에 의하면, 진짜 웬만한 웰-노운 논문보다도 더 좋은 글이라 한다

그리고 아래는 이 블로그 글을 한국어로 번역한 NLP in Korean님의 블로그 글이다

 

https://nlpinkorean.github.io/illustrated-transformer

 

The Illustrated Transformer

저번 글에서 다뤘던 attention seq2seq 모델에 이어, attention 을 활용한 또 다른 모델인 Transformer 모델에 대해 얘기해보려 합니다. 2017 NIPS에서 Google이 소개했던 Transformer는 NLP 학계에서 정말 큰 주목을

nlpinkorean.github.io

 

 

오늘은 이 명품 글들에 대해 나만의 방식으로 정리해보려 한다..!

총 16개의 갈래가 나올 수 있었다 ㄷ ㄷ

 

 


 

1. Transformer 모델 개요 및 배경

  • 기존 방식의 한계: CNN과 RNN 기반 seq2seq 모델은 순차적 계산의 한계로 병렬 처리에 제약이 있었음
  • Transformer 도입: Google이 2017년 NIPS에서 발표한 그 유명한 “Attention is All You Need” 논문에서 소개. attention 기반이지만 RNN이나 CNN 없이도 동작함

 

2. Transformer의 전체 구조

  • Transformer는 크게 EncoderDecoder로 구성됨. 각 파트는 여러 개의 블록으로 쌓아 올림 (논문에서는 6개)

[Encoder 구조]

각 encoder는 동일한 구조를 가지며, self-attention layer와 feed-forward neural network로 구성됨

 

[Decoder 구조]

encoder 구조와 유사하지만, 중간에 encoder-decoder attention 층이 추가됨

 

 

3. Self-Attention 개념

  • 문장 내 단어 간의 의미적 관계를 파악하여 각 단어를 더 잘 인코딩하기 위한 메커니즘
  • 예시 문장:→ “그것”이 “동물”을 지칭한다는 의미적 연결을 self-attention이 학습
  • “그 동물은 길을 건너지 않았다. 왜냐하면 그것은 너무 피곤했기 때문이다.”

 

4. Self-Attention 계산 절차

① Query, Key, Value 벡터 생성: 각 단어 임베딩에 대해 3개의 다른 weight 행렬을 곱하여 Q, K, V 벡터 생성 (크기 64)

유사도 계산: Query와 모든 Key 간의 dot product → 각 단어 간 연관도 점수 계산

스케일링: 계산된 점수를 √d_k(=8)로 나눔 → 안정적인 gradient 제공

Softmax 적용: 점수를 확률로 변환 → 모든 값의 합이 1

Weighted sum 계산: 각 Value 벡터에 softmax 값 곱해 합산 → 최종 attention 결과

출력 벡터: 이 벡터는 다음 층(feed-forward layer)으로 전달됨

 

 

5. 행렬 연산으로 보는 Self-Attention

  • 입력 단어들의 임베딩을 하나의 행렬 X로 만든 후, 학습 가능한 가중치 행렬 W_Q, W_K, W_V를 곱해 각각 Q, K, V를 얻음
  • 행렬 형태에서는 모든 단어에 대한 attention 계산을 병렬로 빠르게 수행 가능

 

6. Multi-Head Attention

단일 attention만 사용하면 제한된 표현력

 

(여러 개의 head를 사용하여 서로 다른 부분에 집중 가능)

  • Head 1: “그 동물”에 집중
  • Head 2: “피곤”에 집중

각각의 head는 독립적인 Q, K, V 행렬을 가짐

각 head의 결과를 이어 붙이고, 또 다른 W₀를 곱해 최종 attention 결과로 만듦

 

 

7.  Positional Encoding — 단어 순서 정보 보완

Transformer는 구조상 단어 간 순서를 고려하지 않음. 이를 보완하기 위해 각 단어 임베딩에 Positional Encoding을 더함

이 positional vector는 sine, cosine 함수 기반 패턴으로 만들어짐 e.g. 임베딩 차원이 512라면, 0255는 sine, 256511은 cosine 사용

 

"이로써 모델은 단어 위치와 간격 정보도 인식 가능"

 

 

8. Residual Connection & Layer Normalization

- 각 encoder/decoder block 안에는 잔차 연결(residual connection)이 존재

- 입력을 그대로 다음 계층에 더해주며, 그 후 Layer Normalization 적용

- 학습 안정성과 성능 향상에 기여!

 

 

9. Decoder의 구성과 특징

decoder는 encoder와 구조가 유사하지만 중요한 차이점이 있다

 

Masked Self-Attention

현재 위치보다 뒤에 있는 단어는 보지 못하게 mask 처리

예측 시 미래 정보가 섞이지 않게 방지

 

Encoder-Decoder Attention

decoder의 각 위치는 encoder의 출력 전체를 참조할 수 있음

key와 value는 encoder에서, query는 decoder 내부에서 생성됨

 

Positional Encoding 

또한 decoder에도 추가됨

 

 

10. Linear + Softmax Layer

  • 최종 decoder 출력을 Linear Layer에 통과시켜 output vocabulary 크기의 벡터로 변환
  • 이어서 softmax를 통해 각 단어별 확률 분포로 만듦
  • 가장 높은 확률의 단어가 현재 시점에서의 예측 결과

 

11. 학습 과정과 Loss 계산

학습은 cross-entropy loss를 기반으로 이루어짐

예를 들어, “merci” → “thanks”라는 번역을 학습하는 경우 모델의 출력 확률과 정답인 one-hot 벡터 간 차이를 줄이는 방향으로 파라미터를 업데이트

 

학습 전에는 파라미터가 랜덤이기 때문에 출력이 엉망이지만 반복 학습을 통해 점점 더 정답에 가까운 확률 분포를 예측하게 됨!

 

 

12. Beam Search(디코딩 전략)

단순히 확률이 가장 높은 단어만 고르는 greedy decoding 외에도 다양한 방식 존재

(우리가 아는 그 그리디 알고리즘 맞다)

 

beam search는 복수의 후보 단어 시퀀스를 유지하며 더 좋은 결과를 탐색

- beam size: 유지할 후보 수

- top beams: 미래 스텝까지 고려하는 깊이

e.g. beam size 2이면 두 개의 후보를 계속 따라가며 최종 결과 결정

 

 

13.  Transformer 전체 흐름 요약

① 입력 임베딩 + Positional Encoding

입력 문장의 각 단어는 embedding되고 positional encoding이 더해짐

 

② Encoder Stack

self-attention → feed-forward layer 순으로 처리되며, 여러 encoder 블록을 거침

 

③ Decoder Stack

이전에 출력한 단어들로부터 시작해 self-attention, encoder-decoder attention, feed-forward layer 순으로 처리

+

다음 단어를 예측함

 

④ Linear → Softmax

decoder의 마지막 출력 벡터를 단어 확률 분포로 변환하여 최종 예측값 생성

 

 

14. 학습 예시

  • 예시 문장: “je suis étudiant” → “i am a student”
  • 각 단어에 대한 예측 분포를 학습
  • 정답과 예측 결과를 비교하여 cross-entropy loss 계산
  • 이 과정을 반복하면서 weight들을 업데이트~

 

15. 구현 & 실습 리소스

  • Tensor2Tensor: Google에서 제공하는 Transformer 구현 패키지 (TensorFlow 기반)
  • Harvard NLP PyTorch 구현: 논문 주석과 함께 Transformer 동작 원리를 코드로 설명
  • 인터랙티브 시각화 노트북: self-attention 동작을 직접 눈으로 확인 가능

 

16. 후속 연구들

Transformer가 소개된 이후, 알다싶이 이를 확장하거나 개선한 연구들이 활발히 진행되고 있다 :)

  • Image Transformer: 이미지를 위한 self-attention 구조
  • BERT, GPT: 사전학습(pretraining)을 활용한 Transformer 기반 모델
  • Relative Position Representations: 위치 인코딩 개선을 위한 시도
  • Adafactor: Transformer 학습을 위한 메모리 효율적인 옵티마이저
  • Fast Decoding: 디코딩 속도를 개선한 연구

 

 

 

 

 

"어텐션 이즈 올 유 니드"

Transformer는 정말 놀라운 발명이지만, 처음 보면 너무 복잡하게 느껴졌었다

특히 self-attention에서 Q, K, V를 구해서 내적하고 softmax까지 가는 과정은 수식만 보면 감이 안 왔는데

벡터 차원에서 하나하나 따라가보고, 마지막에 행렬 연산으로 정리되는 흐름을 이해하니 갑자기 시야가 트이는 느낌이었다

 

개인적으로 가장 인상 깊었던 건 multi-head attention 부분이었다

동시에 여러 방향에서 정보를 본다는 아이디어가 단순하면서도 강력하다는 걸 느꼈고, 자연어라는 모호하고 다양한 맥락을 가진 데이터를 이렇게 다룬다는 게 참 흥미로웠다

 

이제는 Transformer를 기반으로 한 모델들이 NLP의 표준이 된 만큼, 이 글을 계기로 기초부터 정리하고 싶었고, 한 번 더 내 방식으로 풀어보면서 많이 정리된 것 같다. Jay Alammar와 NLP in Korean 글이 아니었다면 이렇게 쉽게 그림과 함께 이해하긴 힘들었을 것 같다..

 

 

 

 

 

 

참고 및 출처:  블로그, NLP in Korean 블로그

https://jalammar.github.io/illustrated-transformer

https://nlpinkorean.github.io/illustrated-transformer

 

Shout out to Jay Alammar

 

#SK, #SKALA, #SKALA1기