본 게시글은 학부 강의 'AI 데이터 표현과 모델링'을 기반으로 이해하고 학습한 내용을 정리하였습니다.

2007년에 영화관에서 첫 옵티머스 프라임을 마주한 날이 떠오른군요.
지금 봐도 이질감없는 그의 변신 장면과 그 그래픽 기술력은 아직도 볼 때마다 감탄합니다.
그 변신을 직접 본 작중 메간 폭스와 샤이아 라보프의 눈, 사고 싶습니다.
가히 충격적이었죠. 그리고 이번에 얘기할 그 '트랜스포머'도 AI 분야에서 이 정도의 파장이 아니지 않을까 싶어요.
Transformer
Transformer는 지금 이 시대의 증기기관이자 내연기관입니다.
현재 사용하고 있는 ChatGPT, Claude, Gemini 등 모든 AI 엔진의 가장 밑바닥 Transformer가 깔려 있습니다. 물론 Transformer만 있는 것이 아니라, 그 위에 쌓아놓은 시스템들이 굉장히 많지만, 이 아키텍쳐가 기본 중의 기본이에요. Transformer를 변형시키거나, 발전시키거나, 일부만 활용하거나, 뜯어다 쓰거나 해서 만들어놓은 것들이 현재 돌아다니고 있는 것들입니다.
2017년에 나온 이후 약 10년간 여러 번 도전을 받았지만, 아직까지도 이 아키텍쳐만한 것이 없어요. 앞으로 5년 정도는 더 유효할 것으로 전망하고 있습니다. 효율성 측면에서도 도전받는 부분은 있으나, 성능적인 측면에서는 여전히 최고입니다.
Computing & Representation Recap

Input → Computing Algorithm → Output
세상에 있는 어떤 것들을 뜯어내서 컴퓨터 안에 집어넣는 것 = 인식(Recognition) = Representation
- 빨간색 선 (Input → Computing): Representation Learning이 담당
- 파란색 선 (Computing → Output): 의사결정 결과를 세상에 내놓는 과정
- 과거 70여 년간 이 빨간색·파란색 선의 주체는 개발자(프로그래머)였음 — 객체 지향 프로그래밍으로 설계 후 C++, Java 등으로 구현
- 현재는 이 과정이 점점 기계(AI)로 대체되어 가고 있음: 주식 자동매매, 로봇 기사 작성, 블로그 자동 생성, 코딩 자동화 등 → end-to-end로 사람의 역할을 기계가 수행
Data to Information Process
| 구분 | Human Insight Driven | Data & Task Driven |
| 방식 | Algorithm based Feature Extraction | Neural Network based Feature Calculation |
| 특징 | 사람이 직접 Insight를 가지고 Feature를 설계 | 데이터에 기반하여 기계가 스스로 Representation을 학습 |
여기서 이야기할 내용은 Data & Task Driven 방식에 집중하려고 합니다.
기계가 어떤 대상의 표현(Representation)을 학습하는 방식은 크게 두 갈래로 나누어 볼 수 있어요.
하나는 Data Driven 방식이고, 다른 하나는 Task Driven 방식입니다.
Data Driven 방식은 말 그대로 데이터 자체가 학습의 출발점이 되는 접근이에요. 사과나 사다리처럼 특정 대상에 해당하는 데이터를 방대한 규모로 모아 기계에 제공하면, 기계는 그 데이터로부터 해당 대상의 표현 방식을 스스로 추출해 냅니다. 즉, "이것이 사과다", "이것이 사다리다" 라는 풍부한 예시가 곧 학습의 재료가 되는 셈이죠.
반면 Task Driven 방식에서는 학습의 출발점이 데이터가 아니라 과제(task) 그 자체. 미리 정제되어 모아진 데이터셋이 존재하지 않더라도, 어떤 환경 안에서 특정한 목적을 달성하기 위해 노력하다 보면 기계는 그 과정에서 필요한 표현을 스스로 발견하지 않을 수 없게 됩니다. 다시 말해, 풀어야 할 문제와 그것이 놓인 환경만 제공해 주는 것만으로도, 그 문제 해결에 필요한 내적 표현이 자연스럽게 형성되도록 유도하는 방식이라 할 수 있어요.
이러한 Task Driven 방식의 대표적인 사례가 바로 AlphaGo. AlphaGo 내부에는 Value Network라 불리는 신경망이 존재하는데, 이 네트워크는 바둑판의 상태를 마치 위에서 내려다본 한 장의 이미지처럼 처리하여, 현재 국면에서 흑과 백 중 어느 쪽이 유리한지를 점수의 형태로 평가합니다. 예컨대 어떤 국면을 두고 "이 판은 백 30점, 흑 70점"과 같이 가치를 매기는 식입니다.
이러한 능력은 본래 인간 최고수들에게서 관찰되는 것. 이세돌과 같은 초일류 기사들은 바둑판을 마주한 지 단 몇 초 만에 흑이 유리한지 백이 유리한지를 직관적으로 판단해 냅니다. AlphaGo가 학습한 것은 바로 이러한 순간적인 형세 판단 능력이라 할 수 있죠.
주목할 점은, AlphaGo가 이러한 평가 능력을 얻기까지 누구도 "이 바둑판은 몇 점짜리 국면이다", "이 상황은 좋은 상황이다 혹은 나쁜 상황이다"와 같은 정답을 직접 알려준 적이 없다는 사실. AlphaGo는 과거의 수많은 기보와 기계끼리 두어 본 수천만 판의 자가 대국(self-play)을 거치면서, 오직 승부라는 과제를 수행하는 과정 속에서 스스로 형세를 평가하는 표현을 획득했습니다. 즉, 학습에 주어진 것은 데이터셋의 정답이 아니라 바둑이라는 환경과 "이기라"는 목적뿐이었으며, 이로부터 가치 판단의 표현이 자생적으로 형성된 겁니다.
이 사례는 Task Driven 방식의 본질을 잘 보여 주고 있어요. 풍부한 라벨링된 데이터가 없더라도, 적절한 과제와 환경만 갖추어진다면 기계는 그 과제를 풀어 나가는 과정 자체에서 의미 있는 표현을 학습할 수 있다는 것입니다.
Representation Learning의 정의
Represent any things to number formatted data
세상에 존재하는 어떤 것이든 숫자(number) 형태의 데이터로 변환하는 것
Multiple Item Data
세상의 대부분 데이터는 multiple-item 형태로 존재합니다. 핵심 과제는 이 여러 개의 데이터(벡터들)를 하나의 유의미한 숫자(벡터)로 합성(synthesize)하는 것이죠.

우리가 살고 있는 세상은 3차원 공간(x, y, z)에 시간축이 더해진 구성으로 되어 있습니다. 인간이 생성하는 모든 데이터는 기본적으로 Sequencial Data일 수밖에 없어요.
내가 움직이는 동선, 먹었던 음식.... 모두 순서를 갖고 있습니다.
여러 개의 벡터(Vector 1, Vector 2, Vector 3...) 를 어떻게 하나로 Merge / Summarization / Abstraction해서 하나의 유의미한 숫자를 얻어낼 것이냐가 핵심 이슈에요.
Sequencial Data과 Multiple Item Data의 구분
이 두 용어를 혼용하되, 조금 다른 뉘앙스가 있습니다.
| Sequential Data | 순서(Order)가 중요한 데이터. e.g. 자연어 문장, 시계열 데이터 |
| Multiple Item Data | 순서가 필수가 아닌 경우도 포함하는 상위 개념. 데이터 자체들이 뭉쳐져 있는 형태가 더 중요한 경우도 있음 |
Multiple Item Data의 예시를 잠깐 볼까요?
유전자 데이터(DNA)

- AGCT 4개 문자의 반복. Sequence of Character.
- 알파벳이 4개뿐이지만 어마어마하게 긴 서열
시계열 데이터(Time Series Data)

- 옐로우스톤 국립공원의 연간 온도 변화
- 따뜻해졌다가 내려갔다가 하는 주기성(periodicity)
- 이런 주기성을 알고 있어야 머신러닝이 좋은 의사결정을 내릴 수 있습니다.
- ECG(심전도): 호흡 주기와 심장 박동을 전기 신호로 잡아내는 데이터.
- 호흡이 고른지, 수면 중인지, 심장이 있는지 판단.
GPS 데이터

- 스마트폰에 내장된 GPS로 실시간 수집 가능
- lon, lat, alt, time 형태의 레코드 데이터.
- 하루종일 수집하면 수 기가바이트
- 시간 축상에 존재하는 위치 정보의 시퀀스
음성 데이터(Speech Data)
- 시간에 따라 변하는 파형 데이터
텍스트 데이터(Text Data)
- 단어들의 시퀀스
- 언어의 경우 순서가 중요
이미지 데이터 / ViT(Vision Transformer) 미리보기
- 과거에는 이미지 전용 엔진(e.g. CNN)으로 처리
- ViT(Vision Transformer) - 이미지를 패치(Patch) 단위로 분할
- e.g. 16 * 16 패치로 쪼개면 256개의 패치가 생긴다.
- 각 패치를 순서대로 나열하면 Sequence of Patches. 마치 문장이 Sequence of Words인 것과 동일
- 따라서 자연어 처리 기술(특히 Transformer)을 이미지 처리에 그대로 적용 가능
- 실제로 성능도 매우 좋다는 것이 입증됨

이것이 비단 자연어 처리뿐만 아니라 음성 인식, 컴퓨터 비전 등 모두에 해당하는 공통 과제입니다.
Sequence to Sequence Learning

- Input $X$: $x_1, x_2, x_3, ... , x_N$ N개의 입력 시퀀스
- Output $Y$: $y_1, y_2, y_3, ... , y_4$ M개의 출력 시퀀스
- 시퀀스를 입력받아 시퀀스를 출력하는 학습 프레임워크
- 이것은 특정 엔진을 가정하지 않는 프레임워크이고 중간에 어떤 엔진이 오든 상관없다.
e.g.

Movie Frame Labeling
- 비디오 프레임 시퀀스(위 사진과 같은 야구 타석 장면의 연속 프레임 같은)
- Scene Label 시퀀스(Swing → Swing → Hit → Bat_Broken)
- 각 프레임에 대응하는 장면 레이블을 출력하는 S2S 문제
엔진의 역사를 잠깐 살펴보죠
| 고대 - 근대 초 | 동물의 힘(말) |
| 중세 | 풍력, 수력(풍차, 물레방아) |
| 19세기 | 증기기관 |
| 20세기 | 내연기관 |
| 21세기 | 전기 / 친환경 엔진 |
이와 마찬가지로 AI 시대의 S2S 엔진도 세대별로 변화했습니다.
| 시기 | 엔진 | 구성 |
| 2014 | RNN | Encoder: RNN, Decoder: RNN |
| 2014 - 2017 | RNN + Attention | Encoder: Attention으로 교체, Decoder: 여전히 RNN |
| 2017 - | Transformer(Attention only) | Encoder: Attention, Decoder: Attention |
| 2019 - 현재 | Decoder-only Transformer | 인코더 없이 Decoder만으로 전체 S2S를 처리(GPT 패러다임) |
현재 사용 중인 ChatGPT, Gemini, Claude는 인코더가 없는 Decoder-only 방식(4세대 엔진)
Recurrent Neural Network(RNN)
시퀀스를 모델링하려는 최초의 시도
가장 단순한 접근으로 Multi-Layer Perceptron(MLP)을 같은 파라미터로 여러 번 적용한 겁니다.
하지만 문제접이 있죠.
같은 단어 "사과"가 4번 나오면 같은 파라미터가 4번 적용되므로 output 4개가 완전히 동일(identical)하게 나옵니다. 위치(순서)에 따른 차이를 반영하지 못한다는 거죠.

Hidden State들 사이에 순환 연결(Recurrent Connection)을 추가하면, 정보가 시간 축을 따라 흘러갈 수 있습니다.
정말 강물처럼 흘러간다고 생각하면 좀 직관적일꺼에요.
강원도에서 빨간색 잉크를 부으면 한강을 따라 쭉 흘러가겠죠. 서울쯤에서 파란색잉크를 뿌려놓았다면 그 파란색 잉크도 합류를 하게됩니다. 그럼 인천 앞바다에서는 보라색 잉크가 나오겠죠.
즉, 모든 정보가 흘러가면서 마지막 시점에 모이게 됩니다.
마지막 Hidden State만 떼어내면 모든 시퀀스를 요약한 벡터가 나온다는 겁니다. Sequence Embedding이 완성되는거죠.
$$ V_s → V $$
여러 벡터를 하나의 벡터로
Memory(기억)의 모델링

위 Figure에 있는 빨간색 선 하나를 긋는 순간, 기억을 모델링할 수 있게 됩니다.
기억의 정의가 뭐죠?
단순화해서 얘기해 보면 나의 오늘의 결정에 영향을 미치는 과거의 모든 것.
RNN에서 의사결정은 현 시점의 input과 과거 시점의 의사결정 정보(Hidden State)가 함께 반영됩니다.
과거의 의사결정 결곽가 다음 턴의 이유(reason)이 되죠. 왼발을 내밀었기 때문에 다음 턴에 오른발을 내미는 겁니다.
이런 순환 구조 때문에 Recurrent Neural Network(순환 신경망)이라 불러요.
파라미터 재활용
RNN의 효율성을 보여줍니다.

RNN의 핵심 파라미터는 크게 2 종류에요.
- $W$: $Input(X)$ → Hidden State($H$) 방향의 파라미터
- $U$: $Hidden State(H)$ → 다음 Hidden State($H$) 방향의 파라미터(순환 연결)
이 파라미터들을 매 타임스텝마다 재활용합니다.
따라서 파라미터 2개로 N개의 스텝을 모두 대응가능하죠. 문장이 2단어든 10단어든 1000단어가 되어도 같은 파라미터로 처리합니다.
매우 낮은 비용(cost)으로 긴 시퀀스도 처리가 가능한 구조에요.
Feed Foward Network vs RNN

Feed Foward Network
$x_1$ → Hidden → $y_1$
단일 입력, 단일 출력

RNN
$x_1, x_2, x_3, x_4$ → 시간 축을 따라 Hidden State가 연결 → $y_1, y_2, y_3, y_4$
Vanishing & Eploding
Gradient Descent 과정 중 기울기가 소실되거나 폭발하는 경우가 있습니다.
머신러닝의 기본 원리(파라미터 업데이트)
- Objective / Loss Function 정의: 예측값과 정답 간의 오차를 측정(e.g. MSE)
- Loss를 줄이는 방향으로 파라미터를 업데이트
- 업데이트 공식: $θ_new = θ_old + α × ∂L/∂θ$ $α$는 Learning Rate
- 편미분(Gradient)을 통해 파라미터를 어느 방향으로 얼마나 바꿀지 결정
Chain Rule과 Backpropagation
네트워크가 깊어지면 최종 Loss에 대한 특정 파라미터의 미분값을 직접 구하기 어렵습니다.
Chain Rule을 이용해서중간 단계를 거쳐서 곱해 나가면 되죠.
$$\frac{df}{dt} = \frac{\partial f}{\partial x}\frac{dx}{dt} + \frac{\partial f}{\partial y}\frac{dy}{dt}
$$
말단 사원(A)이 회사 매출(L)에 미치는 영향을 알고싶다면?
사장(D)이 매출에 미치는 영향 * 부장(C)이 사장에게 미치는 영향 * 팀장(B)이 부장에게 미치는 영향 * 내(A)가 팀장에게 미치는 영향을 곱하면 됩니다.
Vanishing Gradient 문제
- RNN에서 Chain Rule을 적용하면 수많은 곱하기를 통과해야 함
- 문장이 길어질수록 (턴이 400, 500이 되면) 곱하기를 그만큼 더 통과해야 함
- 중간에 하나라도 0에 가까운 값이 나오면 → 전체 gradient가 0으로 수렴 → 학습 불가
- 회사 비유: 내가 아무리 열심히 일해도, 팀장과 부장 사이의 기여도가 0이면 나의 회사 기여도도 0
- 결과: 문장이 길어지면 길어질수록 앞쪽 단어의 정보가 뒤쪽까지 전달되지 못함 → 성능 하락
Exploding Gradient 문제
- Vanishing의 반대: 큰 gradient가 누적되어 가중치가 폭발적으로 커지는 현상
- 네트워크가 불안정해지고 학습이 제대로 이루어지지 않음
Vanishing Gradient는 비단 RNN 뿐만 아니라 모든 Deep Neural Network에서 존재하는 고질적 문제이지만, RNN은 입력 시퀀스 길이에 직접적으로 비례하여 이 문제가 심화되기 때문에 특히 심각합니다.
Long Short-Term Memory
LSTM
RNN의 Vanishing Gradient 문제를 해결하기 위해 등장한 발전된 구조

Gate Mechanism
LSTM의 핵심 아이디어 입니다.
하나의 셀에서 다음 셀로 넘어가는 경로에 3개의 Gate(문)을 설치하는 겁니다.
| Gate | 역할 | 동작 |
| Input Gate | 새로운 입력 정보를 얼마나 받아들일지 결정 | 1: open 0:close |
| Output Gate | 현재 셀의 정보를 얼마나 출력할지 결정 | 1: open 0:close |
| Forget Gate | 이전 정보를 얼마나 유지/리셋할지 결정 | 1: keep 0: reset |
Gate의 작동 방식
- 각 Gate는 데이터를 들여다보고 element-wise로 0 또는 1(연속값)을 생성
- 이 값을 원래 데이터에 element-wise 곱셈하여 필터링
- e.g. Hidden State가 [0, 1, 2, 3]이고 Gate 출력이 [0, 1, 0, 0]이면 → [0, 1, 0, 0] (2번, 3번 정보 차단)
- Gate 자체도 데이터를 통해 학습됨 (Loss Function이 더 잘 떨어지는 방향으로 어떤 데이터가 통과되어야 하는지를 학습)
- 따라서 LSTM은 기본 RNN보다 파라미터가 훨씬 많아지지만 성능은 훨씬 좋아짐
LSTM의 효과
추가 파라미터(Gate 용)을 학습하되, 그 파라미터를 이용하여 문장이 아무리 길어지더라도 꼭 필욯나 정보는 끝까지 살아서 흘러갈 수 있도록 해줍니다.
데이터가 충분히 많아야 Gate를 제대로 학습할 수 있어요.
RNN의 응용


- Foward RNN: 데이터 순서대로 Hidden State 연결
- Backward RNN: Hidden State를 역방향으로 연결

Bidirectional RNN
Foward RNN과 Backward RNN을 동시에 적용한 후, 결과를 Concatenation
e.g. Foward 출력이 [1, 2, 3], Backward 출력이 [4, 5, 6]이라면 이를 Concatencation해서 [1,2,3,4,5,6] 6차원이 됩니다.
양방향 정보를 모두 반영하기 때문에 성능이 더 좋지만, 계산 비용은 증가하죠.
입출력 차원에서 $Vs$가 $(2*V')s$가 됩니다.

Stacking RNN
- RNN 레이어를 여러 층으로 쌓는 구조
- PyTorch에서는 층수를 파라미터로 넣으면 자동 구현됨
- 거의 잘 사용하지 않지만 구조적 가능성으로 알아두자
RNN의 Input / Output 형태
| 문제 유형 | 설명 | 표기 |
| N to N | 입력 N개 → 출력 N개 (각 스텝마다 출력) | $Vs → V's, Len(Vs) = Len(V's)$ |
| N to 1(Summarization) | 입력 N개 → 마지막 Hidden State 1개로 요약 | $Vs → 1$ |
| N to M (Encoder-Decoder) | 인코더 RNN으로 N개를 요약 → 디코더 RNN으로 M개 생성 | Encoder + Decoder 구조 |

N to M 문제 해결 방법
- 인코더 RNN에 N개의 데이터를 넣어 마지막 Hidden State(요약 벡터)를 얻는다.
- 이 요약 벡터를 복사하여 디코더 RNN의 각 스텝 입력으로 사용한다.
- 디코더 RNN이 M개의 출력을 순차적으로 생성
RNN의 구조적 한계
이 한계가 Transformer가 등장한 배경이 됩니다.

Long-term Dependency 문제
A단어와 가까운 B 단어의 관계는 모델링 가능하나, A 단어와 멀리 떨어진 G 단어의 관계는 모델링이 어렵습니다.
문장이 길어질수록 정보 손실이 심화됩니다. 곱하기를 통과하면서 사라지죠.
LSTM, GRU로 어느 정도 완화했지만 근본적 해결은 아닙니다.
Temporal Encoding의 구조적 제약
Outpur 1을 계산할 때 Foward 방향 기준 Data 2, Data 3은 아직 처리되지 않았으므로 반영 불가능합니다.
과거의 모든 의사결정이 끝나기를 기다려야 합니다.
병렬화 불가능(Scalability 문제)
Data 3를 처리하려면 Data 2까지의 처리가 반드시 완료되어야 합니다.
뒤에 서버가 백만 대, 천만 대가 있어도 모두 놀고 있어야 합니다. GPU와 병렬 컴퓨팅의 장점을 활용할 수가 없죠.
Scalability의 중요성
Scalability(규모)는 AI 분야를 관통하는 핵심 키워드입니다.
- 간단한 아키텍처를 어마어마하게 사이즈를 키우면, 과거에는 불가능했던 능력들이 스스로 창발(Emergent)됩니다.
- 의도하지 않은 능력이 나타났고, 이것이 ChatGPT 등의 비결입니다.
- 기술 자체는 지금 설명하는 것과 OpenAI.가 쓰는 것이 동일합니다. 규모가 다를 뿐이죠.
- 규모를 키우려면 현대 컴퓨터의 핵심 장점인 병렬 처리를 철저히 활용해야 합니다.
현대 컴퓨터의 핵심 장점은 계속 언급했듯이 병렬화 입니다.
CPU
코어 개수(16코어, 24코어 etc.) + L2 캐시 크기. 여러 작업을 동시에 처리합니다.
GPU
벡터 기반 연산을 전문적으로 병렬 처리하는 하드웨어입니다. 딥러닝에 최적이죠.
RNN은 이러한 병렬화의 장점을 전혀 활용하지 못하는 구조에요. Transformer가 이 문제를 해결합니다.
Transformer

Transformer가 해결한 다섯 가지 핵심 테스크
논문에는 나와있지 않습니다. 약 10년간 Transformer를 사용하고 개선한 경험을 바탕으로 정리해보자면, Transformer 논문은 다섯 가지 질문을 매우 효율적으로 잘 풀어낸 논문이에요.
- How to Encode Multiple Items? 여러 항목을 어떻게 효과적으로 인코딩할 것인가
- How to Encode Long-term Dependency? 장거리 의존성을 어떻게 인코딩할 것인가
- How to Encode Sequencial Information? 순서 정보를 어떻게 인코딩할 것인가
- How to Encode Fast? 어떻게 빠르게(병렬적으로) 인코딩할 것인가
- How to make simple architecture for Encoder and Decoder? 어떻게 단순한 인코더 디코더 구조를 만들 것인가

2017년 Google에서 발표한 AI 역사상 가장 유명한 논문일꺼에요.
제목이 저렇게 개성틱한 이유가 있습니다.
당시 RNN + Attention 조합이 주류였는데, RNN을 완전히 걷어내고 Attention만으로 S2S Learning을 구현하겠다는 선언이죠.
그 당시 기술 흐름은 RNN+Attention, CNN+Attention, 등 Attention을 둘러싸서 여러 조합을 시도하던 시대였어요.
하지만 이 논문은
다 필요없다. Attention만 있으면 돼.
위 논문 일부에서 빨간 밑줄로 그어놓은 문장이 논문의 핵심이겠네요.
We propose a new simple network architecture, the Transformer, based solely on attention mechanisms.
Google과 Transformer
규모의 경제 관점
구글의 특성과 Transformer의 설계 철학이 있습니다.
구글은 하나의 알고리즘을 만들 때 10억 명, 20억 명 대상으로 설계합니다. 아무래도 세계 최고의 검색엔진을 다루던 회사니까요. 성능 1-2점 차이보다 10억 명에게 작동하는 시스템이 더 중요했습니다. 그런 이유로 심플한 아키텍처를 지향했어요.
Transformer도 아키텍쳐가 매우 간단합니다. 토이 사이즈의 Transformer를 만들 때 쓰는 코드와 교실만큼 큰 Transformer를 만들 때 쓰는 코드가 동일합니다. 커맨드라인에서 숫자 몇 개만 변경한게 다에요.
인코더와 디코더의 구조가 거의 동일한 블록의 반복으로 이루어집니다. 이는 코드 수정 없이 규모를 키우거나 줄일 수 있게 하죠.
Attention Mechanism
Attention의 기본 원리부터 알아봅시다.

Multiple Item을 인코딩하는 해법으로서의 Attention
여러 개의 벡터(예: $x₁, x₂, x₃$)를 하나의 벡터로 압축해야 하는 상황에서 Attention은 다음과 같은 방식으로 동작합니다.
먼저, 각 입력 벡터를 그대로 사용하지 않고 일정한 변형(transform)을 거쳐 $x₁', x₂', x₃'$로 바꿉니다. 이때 변형 방법은 사람이 직접 설계하는 것이 아니라, 모델이 학습 과정에서 데이터를 통해 스스로 익히게 됩니다. 즉, 어떤 정보를 강조하거나 어떤 차원을 어떻게 재배치할지를 기계가 학습된 파라미터로 결정하죠.
변형이 끝난 벡터들에는 각각의 중요도(importance)에 해당하는 가중치가 부여됩니다. 모든 벡터를 동등하게 취급하는 것이 아니
라, 현재 맥락에서 더 의미 있는 벡터에는 더 큰 가중치가, 덜 중요한 벡터에는 더 작은 가중치가 할당되는 것. 그리고 가중치가 곱해진 벡터들을 element-wise sum, 즉 같은 위치의 성분끼리 더하는 방식으로 병합합니다. 이 과정을 통해 N개의 벡터로 이루어진 집합 $Vs$는 동일한 차원을 갖는 하나의 벡터 $V4로 압축됩니다.
이를 구체적으로 살펴보면, 원래 벡터 [0, 1, 2]는 변형을 거쳐 [2, 4, 7]이 되고, 또 다른 벡터 [7, 4, 2]는 [4, 5, 2]로 변형됩니다. 이렇게 변형된 벡터들을 element-wise sum 하면 첫 번째 성분은 2+4=6, 두 번째는 4+5=9, 세 번째는 7+2=9가 되어 결과적으로 [6, 9, 9]라는 하나의 벡터가 만들어집니다. 처음에 여러 개였던 벡터들이 변형과 가중합 과정을 통해 동일한 shape의 단일 벡터로 통합되는 것이죠.
요약하자면, Attention은 "학습된 변형 + 중요도 기반 가중합"이라는 두 단계를 통해, 가변 개수의 입력을 고정된 형태의 단일 표
현으로 인코딩하는 메커니즘이라 할 수 있습니다.
Multi-Head Attention

기본 Attention을 도서관을 빗대어 보면
- Query(질문): 사용자가 궁금한 것
- 사서: 질문을 받고 관련된 책을 받아줌
- Value(책들): 사서가 제공한 여러 권의 책
- 이 책들을 하나로 병합한 것이 Attention의 결과
Multi-Head Attention
여러 도서관을 방문하는 것과 같습니다.
- 도서관 A(Head 1)에서 찾은 책들 → 병합 벡터 B₁
- 도서관 B(Head 2)에서 찾은 책들 → 병합 벡터 B₂
- 도서관 C(Head 3)에서 찾은 책들 → 병합 벡터 B₃
- 도서관 D(Head 4)에서 찾은 책들 → 병합 벡터 B₄
- B₁, B₂, B₃, B₄를 Concatenation(물리적 결합) → 최종 Blended Vector(Xs)

각 Head는 서로 다른 Q(Query), K(Key), V(Value) 파라미터를 가지기 때문에 같은 데이터를 다양한 관점(Multiple View Points)에서 바라볼 수 있어요.

Multi-Head Attention이 Transformer 성공의 핵심 요소가 된 이유가 있습니다.
Single-Head Attention vs LSTM
성능이 거의 비슷해요. 어떤 것은 LSTM이 더 좋을 때도 있어요.
단순 테크크에서 Loss 커브를 그리면 두 방식이 엇비슷하게 떨어집니다.
Attention이 LSTM보다 정말 좋은 건가 의심이 들정도죠.
Multi-Head Attention(Head: 8개, 12개)
성능이 급격하게 향상됩니다. RNN과 비교도 안될 정도의 효율성이에요.
Multi-Head가 Transformer 성공의 결정적 요소가 됩니다.
Attention에서 사용되는 기타 기법들이 있는데 일단 용어만 알아둡시다.
Transformer 원본 논문에서 제안된 다양한 테크닉들이 있지만 상세한 건 나중에.
- Scaled Dot-Product: Attention 점수 계산 시 차원의 제곱근으로 나누어 안정화
- Normalization: 학습 안정화를 위한 정규화
- Residual Connection: 입력을 출력에 더해주어 gradient 흐름 개선
- Positional Embedding: 순서 정보를 인코딩하는 기법 (RNN 없이도 순서를 반영)
Transformer Architecture

인코더 블록 (왼쪽)
- Input Embedding + Positional Encoding (순서 정보 추가)
- Multi-Head Attention (주황색 블록) — 문장 전체를 관통하여 데이터를 섞어주는 과정
- Add & Norm (잔차 연결 + 정규화)
- Feed Forward Network (파란색 블록) — 고차원으로 확장 후 다시 축소
- Add & Norm
이 블록을 N× 반복 (Stacking)
디코더 블록 (오른쪽)
인코더와 거의 동일한 구조에요.
- 추가 요소: Masked Multi-Head Attention (미래 정보를 보지 못하도록 마스킹)
- 인코더의 마지막 Hidden State가 디코더로 전달됨 (Encoder→Decoder 연결)
최상단
Linear + Softmax
이는 Output Probabilities를 도출합니다.
Feed Forward Network의 역할이 왜 필요함?
- 고차원 확장: 입력 벡터를 곱하기 4배 차원으로 키웁니다. 10차원에서 40차원. 이런식으로.
- 괸례적으로 곱하기 4를 하는데 이는 최초로 논문에서 단지 설정한 것이고, 이후에 관례가 된거죠.
- 차원 축소: 다시 원래 차원으로 줄입니다. 40차원에서 10차원.
왜 이렇게 함?
Kernel Trick (SVM에서 배운 개념)
- 2차원에서 안 풀리는 문제를 3, 4, 5차원 고차원으로 올리면 풀 수 있는 문제가 있음
- 고차원에서 Hyperplane을 찾을 수 있음
- Feed Forward의 "키우기": 데이터를 고차원으로 올려서 문제 풀기 좋은 형태로 만드는 과정
Autoencoder (차원 축소 개념)
- Bottleneck 구조를 통해 강제로 차원을 줄이면 → 데이터의 핵심 정보만 남게 됨
- Dimension Reduction: 모든 데이터를 관통하는 핵심 정보만 담아내는 과정
- Feed Forward의 "줄이기": 고차원에서 문제를 풀어놓은 후 다시 핵심 정보만 필터링/추출하는 과정
Multi-Head Attention이 문장 전체를 관통하여 데이터를 섞어주고 Feed Forward Network가 고차원으로 보내 문제를 풀기 좋은 형태로 만든 뒤 다시 핵심 정보만 추려서 원래 차원으로 돌려보내는 것. 이것이 인코더 블록 하나의 역할입니다.
인코더 블록의 Stacking
- 인코더 블록 하나 = Multi-Head Attention + Feed Forward + Add & Norm
- 이 블록을 N개 쌓음 (논문에서 N×로 표기)
- 가장 작은 네트워크: 약 6층
- 현재 상용 LLM의 가장 작은 모델: 약 24층
- 아래층에서 좋은 답을 찾아내고 → 다음 층에서 이를 기반으로 더 나은 답을 찾고 → ... → 마지막 층에서는 가장 최적의 솔루션을 담고 있는 벡터가 생성됨
인코더에서 디코더로 정보 전달
- 인코더의 마지막 층에서 나오는 Hidden State가 디코더로 전달
- 디코더의 Multi-Head Attention 레이어에 입력으로 들어감
- 이를 통해 번역 등 S2S 태스크에서 인코더의 정보가 디코더에 반영
Transformer로 풀 수 있는 문제 유형
| 문제 유형 | 설명 | 해당 모델 |
| N to 1 | 입력 N개 → 하나의 분류/결정 (문장 분류 등) | BERT (Encoder-only) |
| N to N | 입력 N개 → 각 토큰별 분류 (NER 등) | BERT (Encoder-only) |
| N to M | 입력 N개 → 출력 M개 (번역, 요약 등) | T5 (Encoder-Decoder), GPT (Decoder-only) |
- BERT: Transformer의 인코더만 뜯어다 쓰는 모델 → N to 1, N to N에 특화
- T5: Encoder-to-Decoder 전체 구조 활용
- GPT: Decoder-only → 인코더 없이 디코더만으로 모든 문제를 풀어냄
Transformer에서 보통 가장 앞쪽(또는 뒤쪽)에 특숳나 더미 심볼 [CLS]를 넣어서, 이 위치의 마지막 Hidden State를 가져다가 N to 1 문제에 활용합니다. PyTorch 패키지에 이미 다 구현되어 있어요.
Pretraining + Fine-tuning 패턴
현대 머신러닝의 가장 기본적인(default) 패턴


왜 이 패턴이 강력함?
Small-Scale Tagged Data만으로 혼자 학습합니다. 최대 성능이 약 80점이었어요.
Large-Scale Raw Data로 Pretrained된 모델과 Small-Scale Tagged Data로 Fine-tuning하는데 이는 성능을 90점 이상 보여줍니다.
80점에서 90점. 성능 10점 향상은 게임 체인저 수준이에요. RPG게임만 봐도 레벨 1에서 10까지 올리는건 금방이지만 레벨 100에서 101은 어렵잖아요.
혼자서 이것저것 실험해봤자 80점 밖에 안나오는데, 구글의 BERT를 다운로드 받아서 1-2 epoch만 fine-tuning하면 바로 90점이 나왔습니다. 그 순간 더 이상 나만의 Neural Network는 의미가 없어진거에요.
Pretraining + Fine-tuning이 작동하기 위한 두 가지 전제 조건이 있습니다.
아키텍쳐의 통일
누군가가 공유해주는 파라미터를 쓴다 = 그 사람이 사용한 아키텍처를 똑같이 써야 함- 과거에는 나의 기분에 따라 CNN, RNN, 이것저것 바꿀 수 있었으나
- Pretrained 모델을 쓰는 순간 → 그 모델의 아키텍처로 고정
- Transformer로 아키텍처가 통일되면서 이 패턴이 가능해짐

생태계(Ecosystem) 통일
이로 인해 Hugging Face가 등장하죠.
같은 Transformer라 해도 Google은 TensorFlow로, 다른 연구자는 PyTorch로 구현한다면 호환성에 문제가 생기죠.
Hugging Face의 탄생
- 초기 비전: "세상이 Transformer로 통일될 것 같으니, 누가 어떤 언어/프레임워크로 만들든 상호 호환(interchangeable)하게 만드는 코드 베이스를 만들자"
- 초기 비즈니스 모델: TensorFlow용 BERT를 PyTorch용으로 변환하는 것
- 현재: 모델 호스팅, 서빙 서비스 등 종합 ML 플랫폼으로 성장
- 연구자 입장: 새로운 모델/엔진을 Hugging Face에 호환되도록 올려놓으면 → 수억 명이 사용 가능 → 빠르게 유명해짐
디자이너가 포토샵을 못쓴다는 건 말이 안되죠. ML 연구자에게 Hugging Face는 포토샵과 같은 기본 도구입니다.
실습에서도 아래와 같이 활용될 수 있어요.
공모전이나 텀 프로젝트를 할 때의 순서
- 풀려는 문제의 분야 파악 (비전, NLP 등)
- 해당 분야에서 이미 Pretrained된 모델이 있는지 Hugging Face에서 검색
- 나의 도메인 데이터로 Fine-tuning 수행
- 서비스/결과물 완성
Transformer의 범용적 응용 분야
Transformer 내부에는 언어에 대한 의존성이 전혀 없습니다. 음성, 비전, 자연어 처리 등 모든 분야에 범용적으로 적용 가능해요.
Natural Language Processing (NLP)
- Machine Translation (기계 번역)
- Sentiment Analysis (감성 분석)
- Text Summarization (요약)
- Question Answering (질의응답)
- Chatbot (챗봇)
Computer Vision
- Image Recognition: 이미지가 사과인지, 수박인지 분류 (N to 1 문제)
- Object Detection: 이미지 내 객체의 위치와 종류를 바운딩 박스로 표시 → 자율주행 등에 활용
- Image Generation: 텍스트 프롬프트로 이미지 생성 (Gemini, Midjourney 등)
Speech Recognition
- Transcription: 음성 → 텍스트 변환
- 대표적 오픈소스: OpenAI의 Whisper — 내부적으로 Transformer 기반 S2S Learning 사용
- Voice Assistants: 음성 기반 비서
기타 응용
- Music Generation: 음악 작곡
- Healthcare/BIO: 의료 진단, 신약 개발 (분자 구조 분석)
- Finance: 알고리즘 트레이딩, 사기 탐지
- Gaming: NPC 행동 지능화
- Autonomous Vehicles: 경로 계획, 실시간 의사결정
- Reinforcement Learning: 복잡한 환경에서의 의사결정
핵심 정리
- Transformer = 현 시대의 증기기관 — 모든 AI 시스템의 기반 아키텍처
- S2S Learning 엔진의 변천: RNN → RNN+Attention → Transformer(Attention only) → Decoder-only
- RNN의 한계: Long-term Dependency, 병렬화 불가, 구조적 제약
- Attention의 역할: Multiple Item을 중요도 기반으로 병합 (Vs → V)
- Multi-Head Attention: 다양한 관점에서 데이터를 바라보는 핵심 메커니즘 → Transformer 성공의 결정적 요소
- Feed Forward Network: 고차원으로 올려 문제를 풀고 → 다시 축소하여 핵심만 추출 (Kernel Trick + Autoencoder 개념)
- Pretraining + Fine-tuning: 현대 ML의 기본 패턴. 대규모 데이터로 사전학습된 모델을 소규모 도메인 데이터로 미세조정
- Hugging Face: Pretrained 모델 생태계의 중심 플랫폼
- Scalability: 간단한 아키텍처를 규모만 키워도 창발적(Emergent) 능력이 나타남
- Transformer는 언어에 종속되지 않음: NLP, Vision, Speech, Bio 등 모든 분야에 범용 적용 가능
'CS & AI > Welcome to AI' 카테고리의 다른 글
| 저 4차원을 넘어 / Matrix & Tensor (0) | 2026.05.05 |
|---|---|
| BERT와 GPT (0) | 2026.04.26 |
| 이제 우리는 매트릭스 세상을 만들 수 있을지도 (0) | 2026.04.25 |
| 우리도 딥러닝 만들 수 있어요 (0) | 2026.04.25 |
| 이제는 컴퓨터도 하는 자기주도학습 (0) | 2026.04.25 |
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!