"ML 기초 학습 (8/9) — 딥러닝 아키텍처 한 바퀴: CNN·RNN·Attention"
MLP 위에 무엇을 더 얹어 왔는가. 비전은 CNN, 시퀀스는 RNN/LSTM, 그리고 둘 다 결국 Attention과 트랜스포머로 수렴했다. 각 구조는 무엇을 절약했고, 무엇을 얻었는가로 이해하면 외울 게 적다. 이 편은 LeNet→AlexNet→ResNet→LSTM→Attention→Transformer로 이어지는 결정적 변곡점만 한 줄씩.
0. 학습 목표
- CNN의 convolution·pooling·weight sharing이 왜 이미지에 잘 맞는지 설명한다.
- LeNet → AlexNet → VGG → ResNet으로 깊이가 늘면서 무엇이 풀렸는지 안다.
- RNN의 BPTT와 그래디언트 소실·폭주 문제를 정확히 설명한다.
- LSTM의 게이트(forget, input, output) 식을 쓰고 직관을 설명한다.
- Attention의 query/key/value 식과 scaled dot-product를 쓴다.
- 트랜스포머가 RNN을 대체한 정확한 이유 (병렬성·장거리 의존성) 를 안다.
1. 핵심 요약
- CNN: weight sharing + local receptive field로 이미지의 공간적 국소성을 활용. LeNet(1998) → AlexNet(2012) → VGG(2014) → ResNet(2015).
- ResNet의 skip connection: \(y = F(x) + x\). 깊이 100+의 학습을 실질적으로 가능하게 했다.
- RNN: 순서 의존성을 hidden state로 운반. 단순 RNN은 그래디언트 소실로 긴 의존성 실패.
- LSTM (1997): 게이트 + 셀 상태로 장기 의존성 보존. 10여 년간 NLP 표준.
- Attention (Bahdanau 2014): "어디를 봐야 하는가"를 학습. \(\mathrm{softmax}(QK^\top / \sqrt{d_k})V\).
- Transformer (Vaswani 2017): RNN을 버리고 attention만 쓴다. 병렬성 + 장거리 의존성 동시 해결.
2. 직관 — 왜 새 구조가 필요했는가
2.1 MLP만으로 이미지·시퀀스를 다루기 어려운 이유
- 이미지: 224×224×3 = 150,528개 입력. MLP는 hidden 1024 한 단만 만들어도 1.5억 가중치. 공간적 위치 정보 무시.
- 시퀀스: 길이가 가변. MLP는 고정 입력 크기.
→ 구조적 가정 (inductive bias) 을 모델에 직접 박아 넣자: 이미지엔 공간 국소성, 시퀀스엔 시간 순서.
2.2 Inductive bias 카탈로그
| 데이터 | 가정 | 아키텍처 |
|---|---|---|
| 이미지 | 국소성 + 평행이동 불변 | CNN |
| 시계열 | 시간 순서 + 점진적 정보 누적 | RNN |
| 음성 | 시간 + 주파수 국소성 | CNN + RNN 결합, Conformer |
| 텍스트 | 토큰 간 임의 거리 의존 | Attention / Transformer |
| 그래프 | 노드 간 메시지 전달 | GNN |
3. 정의와 표기 — CNN 계열
3.1 Convolution 연산
2D convolution, 입력 \(X \in \mathbb{R}^{H \times W \times C}\), 커널 \(K \in \mathbb{R}^{k_h \times k_w \times C \times C'}\):
$$ Y_{i,j,c'} = \sum_{u=0}^{k_h - 1}\sum_{v=0}^{k_w - 1}\sum_{c=0}^{C-1} K_{u,v,c,c'} \cdot X_{i+u, j+v, c} $$
핵심 성질: - Weight sharing: 같은 \(K\)를 위치에 따라 반복 → 파라미터 수 절약. - Translation equivariance: 입력이 평행이동하면 출력도 같은 만큼 이동. - Local receptive field: 출력 한 픽셀은 입력의 \(k_h \times k_w\) 영역에만 의존.
3.2 Pooling
영역 내 max 또는 평균을 취해 해상도 축소. 위치 변동에 약간의 불변성.
3.3 ResNet의 residual block (He 2015)
$$ y = F(x; W) + x $$
\(F\)는 두세 개의 convolution + 활성. skip connection이 그래디언트 우회로를 만들어 깊은 네트워크가 학습 가능해진다. 같은 아이디어가 트랜스포머의 모든 sublayer에 똑같이 들어가 있다.
3.4 정통 CNN 계보 한 줄씩
| 모델 | 년 | 핵심 |
|---|---|---|
| LeNet-5 | 1998 | CNN의 원형 (LeCun) |
| AlexNet | 2012 | GPU·ReLU·Dropout으로 ImageNet 우승, 딥러닝 시대의 신호 |
| VGG | 2014 | 3×3 conv 단순 깊은 스택 |
| GoogLeNet/Inception | 2014 | 1×1 conv로 채널 축소, 멀티 스케일 |
| ResNet | 2015 | skip connection으로 100+ 깊이 |
| DenseNet | 2017 | 모든 단을 연결 |
| EfficientNet | 2019 | 깊이·너비·해상도 동시 스케일 |
| ConvNeXt | 2022 | ViT를 의식한 모던 CNN |
4. 정의와 표기 — RNN / LSTM
4.1 단순 RNN
$$ h_t = \tanh(W_x x_t + W_h h_{t-1} + b) $$
학습은 BPTT (Backpropagation Through Time): 시간 축으로 펼친 네트워크에 표준 backprop. 그래디언트가 \(W_h\)의 곱셈으로 \(t\) 단계 누적되므로 소실 또는 폭주.
4.2 LSTM (Hochreiter & Schmidhuber 1997)
게이트와 셀 상태로 장기 의존성 보존.
$$ \begin{aligned} f_t &= \sigma(W_f [h_{t-1}, x_t] + b_f) \quad \text{(forget gate)} \ i_t &= \sigma(W_i [h_{t-1}, x_t] + b_i) \quad \text{(input gate)} \ \tilde{c}_t &= \tanh(W_c [h_{t-1}, x_t] + b_c) \quad \text{(candidate)} \ c_t &= f_t \odot c_{t-1} + i_t \odot \tilde{c}_t \ o_t &= \sigma(W_o [h_{t-1}, x_t] + b_o) \quad \text{(output gate)} \ h_t &= o_t \odot \tanh(c_t) \end{aligned} $$
forget gate가 0~1로 과거 정보 보존 비율을 조절 → 그래디언트가 셀 상태를 따라 덧셈으로 흘러 소실이 완화.
GRU (Cho et al. 2014): LSTM의 단순화. 게이트 2개. 비슷한 성능에 파라미터 적음.
4.3 Bidirectional / Stacked
- 양방향 RNN: 순방향 + 역방향 hidden을 결합. 문맥의 양쪽을 모두 봄.
- Stacked RNN: 여러 단의 RNN을 쌓음.
5. 정의와 표기 — Attention / Transformer
5.1 Scaled Dot-Product Attention
쿼리 \(Q\), 키 \(K\), 값 \(V\)가 주어졌을 때:
$$ \mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\Big(\frac{Q K^\top}{\sqrt{d_k}}\Big) V $$
직관: 각 쿼리에 대해 키와의 유사도로 가중 평균된 값을 출력. 다른 위치 토큰을 임의 거리만큼 직접 참조.
\(\sqrt{d_k}\)로 나누는 이유: dot product의 분산이 \(d_k\)에 비례하므로 softmax가 한 점에 너무 집중하지 않게 정규화.
5.2 Multi-Head Attention
\(h\)개의 어텐션을 병렬로:
$$ \mathrm{head}_i = \mathrm{Attention}(QW_i^Q, KW_i^K, VW_i^V) $$
$$ \mathrm{MHA}(Q, K, V) = \mathrm{Concat}(\mathrm{head}_1, \dots, \mathrm{head}_h) W^O $$
각 head가 다른 표현 부공간을 학습한다.
5.3 Transformer Block (Vaswani 2017)
$$ \begin{aligned} y_1 &= \mathrm{LayerNorm}(x + \mathrm{MHA}(x)) \ y_2 &= \mathrm{LayerNorm}(y_1 + \mathrm{FFN}(y_1)) \end{aligned} $$
- MHA + 잔차 + LayerNorm
- FFN: 2층 MLP (보통 hidden = 4 × model dim), GELU
- 위치 정보: 절대 (Sinusoidal) 또는 상대 (RoPE, ALiBi)
이 블록을 \(N\)단 쌓는 것이 GPT·BERT·LLaMA의 본체.
5.4 왜 RNN을 대체했는가
| 측면 | RNN/LSTM | Transformer |
|---|---|---|
| 병렬성 | 시간 축 순차 (느림) | 토큰 병렬 처리 (빠름) |
| 장거리 의존 | 그래디언트 소실 | 직접 어텐션 (한 hop) |
| 표현력 | 게이트로 일부 | 멀티헤드로 풍부 |
| 메모리 | \(O(L)\) | \(O(L^2)\) (긴 시퀀스의 약점) |
GPU 시대에 병렬성이 결정적이었다. RNN은 시간 축으로 순차 의존이 있어 GPU 활용도가 낮다. Transformer는 전 토큰을 동시에 계산할 수 있다.
6. 다이어그램
ResBlock: Transformer block:
x -- conv -- relu -- conv ---+ x -- MHA --+
| + | +-- LN --+
+---------------------------+ +----------+ |
FFN -- LN -- y
skip connection이 둘 다에 있다는 점이 인상적이다.
7. 원리 워크스루 — CNN·RNN·Attention의 공유 토대
각 아키텍처를 코드로 보는 것보다 각각이 어떤 종류의 정보 흐름을 가정하는가의 시각이 훨씬 학습 가치 있다. CNN = 공간 국소성, RNN = 시간 순서, Attention = 임의 위치 간 직접 연결.
7.1 CNN — 공간 국소성과 가중치 공유 의 한 줄
nn.Conv2d(in_ch, out_ch, kernel_size=3, padding=1)
이 한 줄이 가정하는 것: - 공간 국소성: 한 픽셀의 의미는 주변 3×3 영역에 의존. 멀리 떨어진 픽셀은 직접 영향 없음. - 가중치 공유: 같은 필터를 이미지 전체에 적용. "고양이 귀"가 이미지 어디에 있든 같은 필터가 검출. - 평행이동 등가 (translation equivariance): 입력이 평행이동하면 출력도 같은 양만큼 이동.
파라미터 절감: 같은 표현력의 MLP 대비 10~100배 적음. 이게 CNN이 작은 데이터에서도 잘 학습되는 이유.
7.2 ResNet의 Skip Connection — 왜 한 줄이 100층을 가능하게 했나
return F.relu(out + x) # 한 줄이 모든 것을 바꿈
무엇을 보는가 한 블록의 출력에 입력을 그대로 더한다. 블록은 \(F(x) + x\) 형태.
왜 이게 깊이 한계를 풀었나 - 그래디언트가 블록을 건너뛰는 길을 항상 가진다. 깊은 망에서 \(\nabla F\)가 작아져도 \(+x\) 경로가 그대로 통과 — vanishing gradient의 정면 답. - 블록이 0을 학습하면 \(F(x) = 0 \Rightarrow\) 출력 \(= x\) — 항등 함수가 기본. 즉 추가 블록이 해를 망치지 않는다는 보장.
다음 단계로의 연결 이 시각이 트랜스포머의 residual + LayerNorm 구조로 직접 이어진다. 모든 트랜스포머 블록이 ResNet 패턴.
7.3 RNN의 본질 — 순환 이 만드는 시간 의존성
h_t = tanh(W_x @ x_t + W_h @ h_{t-1} + b)
무엇이 핵심인가 - 매 시간 단계 \(t\)에서 같은 가중치 \(W_x, W_h\)를 재사용 — 가중치 공유의 시간 버전. - 은닉 상태 \(h_{t-1}\)이 과거 정보를 압축해 다음 단계로 전달.
LSTM이 풀어 준 것 RNN은 backprop through time에서 \(W_h\)의 거듭제곱이 \(t\)에 대해 작용 → 길이 100 이상에서 그래디언트가 폭락 또는 폭주. LSTM (Hochreiter & Schmidhuber 1997)은 셀 상태 + 게이트 4개 로 정보 흐름을 명시적으로 제어 — 기억 게이트가 1에 가까우면 정보가 그대로 흐름.
한계 순차 계산이라 GPU 병렬화가 어렵다. 매우 긴 의존성 (1000+ token) 에서는 LSTM도 약함. 이 두 한계가 트랜스포머 등장의 직접 동기.
7.4 Attention — 모든 위치를 모든 위치에 직접 연결
$$ \mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\Big(\frac{Q K^{\top}}{\sqrt{d_k}}\Big) V $$
무엇이 본질인가 - \(Q K^{\top}\): 쿼리와 모든 키의 유사도. 한 토큰이 다른 모든 토큰과의 관련도를 계산. - softmax: 가중치 합 = 1. - \(\sqrt{d_k}\) 스케일링: 큰 차원에서 dot product가 폭주하지 않도록. - \(\cdot V\): 가중 평균으로 값(value)을 모음.
왜 RNN을 대체했나 - 병렬화: 모든 위치를 한 행렬 곱으로 계산. RNN의 순차 의존이 사라짐. - 장거리 의존성: 1번째 토큰과 1000번째 토큰이 직접 연결됨 (1 step). - 표현력: \(O(L^2)\) 비용으로 모든 쌍을 본다.
Multi-Head Attention 같은 입력을 여러 projection 으로 나눠 병렬 attention 후 합침. 다른 종류의 관계 (문법·의미·위치) 를 동시에 학습.
다음 단계로의 연결 LLM 핵심 학습 1편에서 트랜스포머 블록 (attention + FFN + residual + LayerNorm) 의 전체 구조를 자세히. 8편의 attention은 그 최소 단위다.
8. 한계와 실패 양상 — 아키텍처가 다음 진보를 부른다
8.1 CNN의 한계
왜 본질적 한계인가 - 전역 컨텍스트가 필요한 작업에 약함: kernel 크기 3×3을 깊이 쌓아 receptive field를 키우지만, 1000×1000 이미지 전체를 한 번에 보지 못함. - 절대 위치가 필요한 작업에 약함: 평행이동 등가성이 본질적 한계로 바뀜 (예: 텍스트 첫 줄 vs 끝줄 구분).
어떻게 진단하는가 이미지 분류는 잘되는데 전체 장면 이해(scene graph), OCR의 위치 정보, 의료 영상의 어느 위치인가가 약함.
다음 단계 - Vision Transformer (Dosovitskiy 2020) — attention으로 전역 컨텍스트. - CoAtNet (Dai 2021) — CNN + attention 하이브리드. - ConvNeXt (Liu 2022) — 디자인 패턴을 트랜스포머로부터 역수입.
8.2 RNN/LSTM의 한계
왜 본질적 한계인가 - 순차 계산: time step \(t\)는 \(t-1\)에 의존 → GPU 병렬화 불가능. - 그래디언트 흐름: 매우 긴 의존성(1000+ token)에서 LSTM도 약함. - 고정 크기 메모리: 은닉 상태가 시퀀스 길이와 무관하게 같은 크기 → 정보 압축의 병목.
어떻게 진단하는가 긴 문서·코드·시계열에서 후반부 성능이 떨어짐. 학습 시간이 시퀀스 길이에 선형으로 증가.
다음 단계 - Transformer (2017) — 순차 의존 제거, 모든 위치 동시 계산. - Mamba (Gu 2024) — 선택적 SSM으로 시간 선형 + 긴 컨텍스트 둘 다.
8.3 Transformer의 한계
왜 본질적 한계인가 - \(O(L^2)\) 비용: 컨텍스트 길이 \(L\)에 대해 메모리와 연산이 제곱. 100K 토큰 컨텍스트면 10^10번의 dot product. - 위치 정보 부재: attention 자체는 순서 불변 — 별도 위치 인코딩 필요 (Sinusoidal, RoPE, ALiBi). - 스케일링 법칙 의존성: 작은 데이터에서는 CNN/RNN보다 약함. Inductive bias가 약해 데이터로 전부 학습 해야 함.
어떻게 진단하는가 컨텍스트 길이 늘릴 때 메모리 OOM, 작은 데이터셋에서 generalization 부족.
다음 단계 - Linear Attention (Katharopoulos 2020) — \(O(L)\) 변형. - Flash Attention (Dao 2022) — 메모리 효율적 정확 attention. - Mamba / RWKV — SSM/RNN 회귀로 \(O(L)\). - Sliding Window Attention (Mistral) — 지역 attention.
8.4 모든 아키텍처에 공통
왜 본질적 한계인가 - 사전 학습 + 파인튜닝 패러다임의 지배: 처음부터 학습은 점점 드물어짐. 모델 선택보다 모델 출처가 더 결정적. - 데이터·연산의 우위: Sutton 2019 The Bitter Lesson — 어떤 구조보다 얼마나 많은 데이터로 얼마나 큰 계산을 할 수 있느냐가 결정적. - 해석 가능성: 깊은 모델은 모두 왜 그렇게 답했는지 답하기 어려움.
다음 단계 - 9편 PyTorch/TensorFlow + 로컬 LLM — 사전 학습 모델을 받아 쓰는 표준. - LLM 핵심 학습 시리즈 — 트랜스포머·attention의 더 자세한 구조.
한계가 알려주는 흐름
세 아키텍처의 한계가 정확히 다음 진보의 동기다: - CNN 전역 컨텍스트 한계 → ViT - RNN 순차 의존 → Transformer - Transformer \(O(L^2)\) → Mamba / Flash Attention / Linear Attention - 모두 → 사전 학습 + 파인튜닝의 지배 (9편)
9. 정리된 결론 — 보지 않고 답해 보라
이 글이 답한 핵심 질문 5개. 먼저 답을 가린 채로 한 줄로 답해 본 뒤 정답과 비교.
Q1. CNN이 같은 표현력의 MLP보다 파라미터가 10~100배 적은 이유는?
정답 가중치 공유 — 같은 3×3 커널을 이미지 전체에 적용. 위치마다 다른 가중치를 가지지 않는다. 왜 이 시각이 작은 데이터에서도 CNN이 학습 잘 되는 이유 (귀납 편향). 그러나 전역 컨텍스트가 약함 → ViT가 답. (본문 7.1, 8.1)
Q2. ResNet의 한 줄 out + x가 깊이 100층을 가능하게 한 메커니즘은?
정답 그래디언트가 블록을 건너뛰는 직통 경로를 항상 가진다. 깊은 망에서 \(\nabla F\)가 작아져도 \(+x\) 경로가 그대로 통과. 왜 Vanishing gradient의 정면 답. 블록이 0을 학습하면 항등 함수가 기본 → 추가 블록이 해를 망치지 않는 보장. 같은 패턴이 모든 트랜스포머 블록에서 재현. (본문 7.2)
Q3. RNN을 트랜스포머가 대체한 가장 결정적 이유는?
정답 병렬화. RNN은 \(h_t\)가 \(h_{t-1}\)에 의존해 순차 계산 강제 → GPU 활용 못함. Attention은 모든 위치를 한 행렬 곱으로 동시 계산. 왜 "Attention Is All You Need" (Vaswani 2017)의 핵심 통찰. + 장거리 의존성도 1 step에 연결. (본문 7.3, 7.4, 8.2)
Q4. 트랜스포머의 \(O(L^2)\) 비용을 풀기 위해 등장한 변형 3가지는?
정답 (a) Linear Attention — \(O(L)\) 근사. (b) Flash Attention — 메모리 효율적 정확 attention. (c) Mamba/RWKV — SSM/RNN 회귀로 \(O(L)\). 왜 100K 토큰 컨텍스트면 10^10 dot product → 메모리 OOM. 사용 사례별로 다른 변형 채택. Mistral은 sliding window attention. (본문 8.3)
Q5. Bitter Lesson (Sutton 2019) 시각으로 본 아키텍처 선택의 진실은?
정답 어떤 구조보다 얼마나 많은 데이터로 얼마나 큰 계산을 했느냐가 결정적. 사전 학습 + 파인튜닝이 표준이 되며 처음부터 학습 은 드물어짐. 왜 9편의 사전 학습 모델 활용이 표준 워크플로. 모델 출처 가 모델 선택 보다 더 결정적인 시대. (본문 8.4)
5개를 한 줄로 답할 수 있었다면 CNN·RNN·Attention의 공유 토대와 진화 흐름 이 자리잡은 것이다.
10. 추가 학습
1차 자료
- LeCun, Y. et al. Gradient-based learning applied to document recognition. Proc. IEEE 86(11), 2278–2324 (1998). — LeNet.
- Krizhevsky, A., Sutskever, I., Hinton, G. E. ImageNet Classification with Deep Convolutional Neural Networks. NeurIPS 2012. — AlexNet.
- Simonyan, K., Zisserman, A. Very Deep Convolutional Networks for Large-Scale Image Recognition. ICLR 2015. arXiv:1409.1556 — VGG.
- He, K., Zhang, X., Ren, S., Sun, J. Deep Residual Learning for Image Recognition. CVPR 2016. arXiv:1512.03385 — ResNet.
- Hochreiter, S., Schmidhuber, J. Long Short-Term Memory. Neural Computation 9(8), 1735–1780 (1997). — LSTM.
- Cho, K. et al. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation. EMNLP 2014. arXiv:1406.1078 — GRU.
- Bahdanau, D., Cho, K., Bengio, Y. Neural Machine Translation by Jointly Learning to Align and Translate. ICLR 2015. arXiv:1409.0473 — Attention.
- Vaswani, A. et al. Attention Is All You Need. NeurIPS 2017. arXiv:1706.03762 — Transformer.
공식 docs
- PyTorch Conv2d:
https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html - PyTorch LSTM:
https://pytorch.org/docs/stable/generated/torch.nn.LSTM.html - PyTorch MultiheadAttention:
https://pytorch.org/docs/stable/generated/torch.nn.MultiheadAttention.html - torchvision models:
https://pytorch.org/vision/stable/models.html
보조 자료
- Goodfellow, Bengio, Courville. Deep Learning. 9, 10, 12장.
- Dive into Deep Learning (d2l.ai): 무료 교과서.
다음 편(9/9)에서는 PyTorch vs TensorFlow, 그리고 로컬 LLM을 다룬다. 두 프레임워크의 철학·생태계를 비교하고, transformers·llama.cpp·MLX·Ollama가 어떻게 로컬에서 LLM을 돌리는 다리 역할을 하는지 정리한다. 이번 9편으로 시리즈는 마무리.
시리즈 전체 안내: 시리즈 목차
댓글
댓글 쓰기