[5์ฅ] ์ค์ฐจ์ญ์ ํ๋ฒ – ์ ๊ฒฝ๋ง ํ์ต์ ํต์ฌ ๋ชฉ์ฐจ
์ค์ฐจ์ญ์ ํ๋ ์ ํ์ํ๊ฐ?
- ๊ฒฝ์ฌํ๊ฐ๋ฒ๊ณผ ๊ธฐ์ธ๊ธฐ ๊ณ์ฐ์ ์ด๋ ค์
- ์ญ์ ํ๋ก ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ
- ๊ณ์ฐ ๊ทธ๋ํ์ ์ฐ์๋ฒ์น
- ๊ณ์ฐ ๊ทธ๋ํ๋? (๋ง์ /๊ณฑ์ ๋ ธ๋๋ก ์ชผ๊ฐ๊ธฐ)
- ์์ ํ vs ์ญ์ ํ
- ์ฐ์๋ฒ์น์ผ๋ก ๊ตญ์ ๋ฏธ๋ถ ๊ณฑํ๊ธฐ
- ์ญ์ ํ์ ์๋ฆฌ
- ์ถ๋ ฅ์ธต์์ ์์
- ๊ฐ ๊ณ์ธต์ ๊ตญ์ ๋ฏธ๋ถ → ์ด์ ๊ณ์ธต์ผ๋ก ์ ๋ฌ
- ๋ชจ๋ ๊ฐ์ค์น·ํธํฅ์ ๊ธฐ์ธ๊ธฐ ๊ณ์ฐ
- ์ฃผ์ ๊ณ์ธต๋ณ ์ญ์ ํ
- ReLU / Sigmoid: ํ์ฑํ ๊ณ์ธต
- Affine: ์์ ์ฐ๊ฒฐ์ธต (๊ฐ์ค์น, ํธํฅ, ์ ๋ ฅ์ ๊ธฐ์ธ๊ธฐ)
- SoftmaxWithLoss: ์ถ๋ ฅ์ธต + ์์ค (y - t / N๋ก ๋จ์ํ)
- ์ญ์ ํ ์ ์ฒด ํ๋ฆ
- SoftmaxWithLoss → Affine → ํ์ฑํ → ์ด์ ๊ณ์ธต ์ ๋ฌ
- ๊ธฐ์ธ๊ธฐ ์์ฑ ํ ๊ฒฝ์ฌํ๊ฐ๋ฒ์ผ๋ก ๊ฐ์ค์น ๊ฐฑ์
- ๊ตฌํ ๊ด์ ์์ ํต์ฌ
- ๊ณ์ธต ๋จ์ ๊ตฌํ: forward/backward
- TwoLayerNet ์กฐ๋ฆฝ: ๊ณ์ธต ์ฐ๊ฒฐ + ๊ธฐ์ธ๊ธฐ ๊ณ์ฐ
- ํ์ต ๋ฃจํ: ๋ฏธ๋๋ฐฐ์น → ์์ ํ → ์ญ์ ํ → ํ๋ผ๋ฏธํฐ ๊ฐฑ์
- ์ ๊ฒฝ๋ง ํ์ต ์ ์ฒด ๊ทธ๋ฆผ ์์ฝ + ํต์ฌ ์์ฝ
- ์ฐ์๋ฒ์น์ผ๋ก ๊ตญ์ ๋ฏธ๋ถ ๊ณฑํ๊ธฐ
- ๊ณ์ธต๋ณ ์ฑ ์ ๋ถ๋ฆฌ
- SoftmaxWithLoss์ ๋จ์ํ๋ ์ญ์ ํ
- Affine, ReLU, Sigmoid์ ํ๋ ฌ ์ฐ์ฐ ๊ธฐ๋ฐ ๊ธฐ์ธ๊ธฐ ๊ณ์ฐ
์ค์ฐจ์ญ์ ํ์ ์ ํ์ํ ๊น?
- 4์ฅ์์ ๋ณธ ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ∂L/∂W (๊ฐ์ค์น์ ๋ํ ์์ค์ ๋ฏธ๋ถ)์ด ํ์ํ๋ค.
- ํ์ง๋ง ์ ๊ฒฝ๋ง์ ๋ค์ธต ๊ตฌ์กฐ → ์ง์ ๋ฏธ๋ถํ๋ ค๋ฉด ๋๋ฌด ๋ณต์กํ๋ค. (์์น ๋ฏธ๋ถ์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆผ)
- ์ญ์ ํ(Backpropagation):
- ์ฐ์๋ฒ์น(Chain Rule)์ ์ด์ฉํด ์ถ๋ ฅ์ธต์์ ์ ๋ ฅ์ธต์ผ๋ก ๋ฏธ๋ถ์ ํจ์จ์ ์ผ๋ก ์ ๋ฌ
- ๊ฐ ๊ณ์ธต๋ณ ๋ฏธ๋ถ(๊ตญ์์ ๋ฏธ๋ถ)์ ๊ณฑํด ์ ์ฒด ๋ฏธ๋ถ์ ๊ณ์ฐ
1. ๊ณ์ฐ ๊ทธ๋ํ์ ์ฐ์๋ฒ์น
๊ณ์ฐ ๊ทธ๋ํ๋?
- ๋ณต์กํ ์ฐ์ฐ์ ๋ง์ /๊ณฑ์ ๋ ธ๋๋ก ์ชผ๊ฐ ํํ
- ์์ ํ: ์ ๋ ฅ → ์ถ๋ ฅ (๊ณ์ฐ ๊ฒฐ๊ณผ ๊ตฌํ๊ธฐ)
- ์ญ์ ํ: ์ถ๋ ฅ → ์ ๋ ฅ (๊ธฐ์ธ๊ธฐ ์ ํ)
์ฐ์๋ฒ์น (Chain Rule)
- ์ฌ๋ฌ ํจ์๊ฐ ํฉ์ฑ๋ ๊ฒฝ์ฐ ๋ฏธ๋ถ์ ๊ตญ์์ ๋ฏธ๋ถ์ ๊ณฑํด์ ๊ณ์ฐ:

- → ์ด ์๋ฆฌ๋ก ์ธต์ธต์ด ์ญ์ผ๋ก ๋ฏธ๋ถ์ ์ ๋ฌ
2. ์ญ์ ํ์ ์๋ฆฌ
- ์ถ๋ ฅ์ธต์์ ์์ค์ ๊ธฐ์ธ๊ธฐ ∂L/∂y ๋ฅผ ์์์ ์ผ๋ก
- ๊ฐ ๊ณ์ธต์ ์์ ์ ์ ๋ ฅ/์ถ๋ ฅ ๊ด๊ณ๋ฅผ ๋ฏธ๋ถ(๊ตญ์ ๋ฏธ๋ถ)
- ๊ธฐ์ธ๊ธฐ ์ ๋ฌ: ์ด์ ๊ณ์ธต์ผ๋ก ๊ณฑํด ์ ํ
- ์ต์ข ์ ์ผ๋ก ๋ชจ๋ ๊ฐ์ค์น·ํธํฅ์ ๋ํ ๋ฏธ๋ถ ๊ณ์ฐ
3. ์ฃผ์ ๊ณ์ธต๋ณ ์ญ์ ํ
(1) ํ์ฑํ ํจ์ ๊ณ์ธต
ReLU

- ์์ ํ: 0 ์ดํ → 0, ๊ทธ ์ด์ → ๊ทธ๋๋ก.
- ์ญ์ ํ: ์ ๋ ฅ์ด 0 ์ดํ์ด๋ฉด ๊ธฐ์ธ๊ธฐ 0, ๊ทธ ์ด์์ด๋ฉด ๊ทธ๋๋ก ํต๊ณผ.
Sigmoid

- ์ญ์ ํ:

(2) Affine ๊ณ์ธต (์์ ์ฐ๊ฒฐ์ธต)

- ์์ ํ: ์ ํ๋ณํ.
- ์ญ์ ํ:
- ์ ๋ ฅ ์ ๋ํ ๊ธฐ์ธ๊ธฐ: ∂L / ∂x = ∂L / ∂y * W(T)
- ๊ฐ์ค์น : ∂L / ∂W = x(T) * ∂L / ∂y
- ํธํฅ : ๊ธฐ์ธ๊ธฐ์ ํฉ
๋ฐฐ์น ์ฒ๋ฆฌ์ฉ Affine
- ์ ๋ ฅ X: (๋ฐฐ์น × ์ ๋ ฅ์ฐจ์), ๊ฐ์ค์น W: (์ ๋ ฅ์ฐจ์ × ์ถ๋ ฅ์ฐจ์)
- ์ญ์ ํ ์ ํ๋ ฌ๊ณฑ์ผ๋ก ํ ๋ฒ์ ๊ณ์ฐ
(3) Softmax + Loss ๊ณ์ธต (์ถ๋ ฅ ๊ณ์ธต)
Softmax

- ํ๋ฅ ๋ก ํด์ ๊ฐ๋ฅ
Softmax + Cross-Entropy

- ์ญ์ ํ: (์-ํซ ๋ ์ด๋ธ์ผ ๋) ๋ฐฐ์น์ฒ๋ฆฌ ๊ธฐ์ค

→ ์์ฃผ ๊ฐ๋จํ ๊ธฐ์ธ๊ธฐ ๊ฐ์ด ๋์จ๋ค(Softmax + Loss๋ฅผ ํฉ์น๋ฉด ๊ณ์ฐ ๋จ์ํ)
๋ฐฐ์น ์ฌ์ด์ฆ N ์ผ๋ก ๋๋ ์ฃผ์ด์ผ ๋ฐฐ์นํฌ๊ธฐ๊ฐ ๋ฌ๋ผ๋ gradient scale์ด ์ผ์ ํ๊ณ , ํ์ต๋ฅ ํ๋์ด ์ผ๊ด์ ์ผ ์ ์๋ค.
(๋๋์ง ์์ผ๋ฉด ๋ฐฐ์น ํฉ๊ณ์ ๋ํ ๊ธฐ์ธ๊ธฐ๊ฐ ๋์ด๋ฒ๋ฆฐ๋ค.)
4. ์ญ์ ํ์ ์ ์ฒด ํ๋ฆ
- ์ถ๋ ฅ์ธต: Softmax + Loss → ๊ธฐ์ธ๊ธฐ ๊ณ์ฐ (y - t)
- Affine ๊ณ์ธต: ๊ฐ์ค์น, ์ ๋ ฅ, ํธํฅ์ ๊ธฐ์ธ๊ธฐ ๊ณ์ฐ
- ํ์ฑํ ๊ณ์ธต: ReLU/Sigmoid ๋ฏธ๋ถ ์ ์ฉ
- ์ด์ ๊ณ์ธต์ผ๋ก ์ ๋ฌ
- ๋ชจ๋ ๊ฐ์ค์น์ ๋ํ ๊ธฐ์ธ๊ธฐ ์์ฑ → ๊ฒฝ์ฌํ๊ฐ๋ฒ์ผ๋ก ๊ฐฑ์
5. ์ฝ๋ ๊ตฌํ ์ ํต์ฌ ์ฌํญ
(1๋จ๊ณ) ๊ณ์ธต ๋จ์ ๊ตฌํ
๋ชฉํ: ๊ฐ ์ธต์ forward() / backward() ์ดํด & ๊ตฌํ
- Affine (์์ ์ฐ๊ฒฐ์ธต)
- ReLU / Sigmoid
- SoftmaxWithLoss (Softmax + CrossEntropy)
์ ์ผ ์ค์ํ ๋จ๊ณ๋ก, ๊ณ์ธต๋ณ ์ ์ถ๋ ฅ๊ณผ ๊ธฐ์ธ๊ธฐ ํ๋ฆ์ ๋จธ๋ฆฟ์์ ๊ทธ๋ฆด ์ ์์ด์ผ ํจ
(2๋จ๊ณ) ์ ๊ฒฝ๋ง ์กฐ๋ฆฝ (TwoLayerNet)
๋ชฉํ: ์ฌ๋ฌ ๊ณ์ธต์ ๋ฆฌ์คํธ๋ก ๋ฌถ์ด์ ํ ๋คํธ์ํฌ๋ก ๋์์ํค๊ธฐ
- __init__()์์ Affine, ReLU, Affine, SoftmaxWithLoss ๊ณ์ธต ์์ฑ
- predict() = ์์ ํ (ํ์ต X)
- loss() = ์์ ํ + ์์ค๊ฐ
- gradient() = ์ญ์ ํ๋ก ๋ชจ๋ ๊ฐ์ค์น ๊ธฐ์ธ๊ธฐ ๊ตฌํ๊ธฐ
(3๋จ๊ณ) ํ์ต ๋ฃจํ (Training Loop)
๋ชฉํ: ํ์ต์ด ์ค์ ๋ก ๋์๊ฐ๋๋ก ๊ตฌ์ฑ.
- ๋ฏธ๋๋ฐฐ์น ๋ฝ๊ธฐ
- ์์ ํ → ์์ค ๊ณ์ฐ → ์ญ์ ํ → ๊ธฐ์ธ๊ธฐ ๊ณ์ฐ
- ๊ฒฝ์ฌํ๊ฐ๋ฒ(SGD)๋ก ๊ฐ์ค์น ๊ฐฑ์
- ๋ฐ๋ณต → ์์ค ๊ฐ์ & ์ ํ๋ ์์น ํ์ธ
# ์์ ํ
for layer in layers:
x = layer.forward(x)
# ์ญ์ ํ
grad = loss_layer.backward()
for layer in reversed(layers):
grad = layer.backward(grad)
# ๊ฐ์ค์น ๊ฐฑ์
for layer in layers:
if layer.has_params:
layer.W -= lr * layer.dW
layer.b -= lr * layer.db
์ ๊ฒฝ๋ง ํ์ต์ ์ ์ฒด ๊ทธ๋ฆผ

ํต์ฌ ์์ฝ
- ์ฐ์๋ฒ์น: ๊ตญ์ ๋ฏธ๋ถ์ ๊ณฑํด ์ ์ฒด ๋ฏธ๋ถ ๊ณ์ฐ
- ๊ณ์ธต๋ณ ๋ถ๋ฆฌ: ๊ฐ ๊ณ์ธต์ด ์์ ์ ์์ ํ/์ญ์ ํ ์ฑ ์
- Softmax+CrossEntropy: ์ญ์ ํ๊ฐ ๊น๋ํ๊ฒ(y-t)๋ก ๋จ์ํ๋จ
- Affine ๊ณ์ธต: ๊ฐ์ค์น·์ ๋ ฅ·ํธํฅ์ ๋ํ ๋ฏธ๋ถ์ ํ๋ ฌ ์ฐ์ฐ์ผ๋ก ๊ณ์ฐ
- ReLU/Sigmoid: ํ์ฑํ ํจ์์ ๋ฐ๋ฅธ ๊ตญ์ ๋ฏธ๋ถ ์ ์ฉ
์ฆ, ์ค์ฐจ์ญ์ ํ๋ ์ฐ์๋ฒ์น์ ์ด์ฉํด ๊ณ์ธต๋ณ ๊ตญ์ ๋ฏธ๋ถ์ ๊ณฑํด ๊ธฐ์ธ๊ธฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ตฌํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๊ณ์ธต๋ณ ์ญ์ ํ ๋ฐฉ๋ฒ ๋ฐ ๊ฒฐ๊ณผ๋ ์๋ ๋ธ๋ก๊ทธ ์ฐธ๊ณ
https://sohyun119.tistory.com/133
'์ธ๊ณต์ง๋ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์ญ์ ํ ๊ณ์ฐ ๋ฐฉ๋ฒ ๋ฐ ์ฃผ์ ๊ณ์ธต๋ณ ์์ ํ & ์ญ์ ํ (0) | 2025.07.25 |
|---|---|
| 4. ์ ๊ฒฝ๋ง ํ์ต (0) | 2025.07.25 |
| 3. ์ ๊ฒฝ๋ง (0) | 2025.07.25 |
| 2. ํผ์ ํธ๋ก (0) | 2025.07.25 |
| ์ ๊ฒฝ๋ง ํ์ต์ ํ์ํ ํจ์๋ค (0) | 2025.07.24 |