1. Backpropagation์ด๋?
์ ๊ฒฝ๋ง ํ์ต์์ ์ค์ํ ๊ฒ์ ๊ฐ์ค์น์ ํธํฅ์ ์ผ๋ง๋, ์ด๋ป๊ฒ ๋ฐ๊ฟ์ง ์ ํ๋ ๊ฒ์ด๋ค.
Backpropagation(์ญ์ ํ)์ ์ถ๋ ฅ์์ ๊ณ์ฐ๋ ์ค์ฐจ๋ฅผ ๊ฑฐ๊พธ๋ก ์ ํํ๋ฉด์, ๊ฐ ๊ฐ์ค์น๊ฐ ์ค์ฐจ์ ์ผ๋ง๋ ๊ธฐ์ฌํ๋์ง๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๐ ์ฝ๊ฒ ๋งํ๋ฉด, ์ํ์ ๋ณด๊ณ ํ๋ฆฐ ๋ฌธ์ ๋ฅผ ์ ํ๋ ธ๋์ง ์์ธ์ ํ ๋จ๊ณ์ฉ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉฐ ์ฐพ๋ ๊ณผ์ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
2. ์ ํ์ํ๊ฐ?
- ์ ๊ฒฝ๋ง์ ์ฌ๋ฌ ์ธต(layer)์ผ๋ก ์ด๋ฃจ์ด์ง ๋ณต์กํ ํจ์๋ค.
- ๋จ์ํ "ํ๋ ธ๋ค"๋ ์ฌ์ค๋ง ์๊ณ ๋ ์ด๋๋ฅผ ๊ณ ์ณ์ผ ํ ์ง ์ ์ ์๋ค.
- Backpropagation์ **๊ฐ ์ธต์ ๊ธฐ์ฌ๋(๊ธฐ์ธ๊ธฐ)**๋ฅผ ์๋ ค์ฃผ๋ฏ๋ก, ๊ฐ์ค์น๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์กฐ์ ํ ์ ์๋ค.
3. ๋์ ๊ณผ์
-
์์ ํ(Forward Propagation)
- ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋คํธ์ํฌ์ ๋ฃ์ด ์์ธก๊ฐ์ ๋ง๋ ๋ค.
- ์: โ๊ณ ์์ด ์ฌ์ง โ [๊ฐ:0.1, ๊ณ ์์ด:0.8, ํ ๋ผ:0.1]โ
-
์์ค ๊ณ์ฐ
- ์์ธก๊ฐ๊ณผ ์ค์ ์ ๋ต์ ๋น๊ตํด ์ค์ฐจ๋ฅผ ๊ตฌํ๋ค.
- ์: ์ ๋ต์ โ๊ณ ์์ด(1)โ์ธ๋ฐ, ๋ชจ๋ธ์ 0.8๋ง ๋ง์ท๋ค๋ฉด ์์ค์ด ์กฐ๊ธ ์๋ค.
-
์ญ์ ํ(Backward Propagation)
- ์ด ์ค์ฐจ๋ฅผ ์ถ๋ ฅ์ธต๋ถํฐ ์
๋ ฅ์ธต๊น์ง ๊ฑฐ๊พธ๋ก ์ ํํ๋ค.
- ๊ฐ ์ธต์ ๊ฐ์ค์น๊ฐ ์ค์ฐจ์ ์ผ๋ง๋ ์ํฅ์ ์คฌ๋์ง ๊ณ์ฐํ๋ค.
-
๊ฐ์ค์น ์
๋ฐ์ดํธ
- ๊ณ์ฐ๋ ๊ธฐ์ธ๊ธฐ๋ฅผ ๋ฐํ์ผ๋ก, ๊ฒฝ์ฌ ํ๊ฐ๋ฒ ๊ฐ์ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ฐ์ค์น๋ฅผ ์กฐ๊ธ์ฉ ์กฐ์ ํ๋ค.
4. ์ง๊ด์ ๋น์
- ์ ๊ฒฝ๋ง์ โ์ฌ๋ฌ ๋ช
์ด ํจ๊ป ํธ๋ ํ ํ๋ก์ ํธโ๋ผ๊ณ ํด๋ณด์.
- ์ต์ข
๊ฒฐ๊ณผ(์์ค)๋ ์ ์๋ก ๋์จ๋ค.
- ์ญ์ ํ๋ โ๋๊ฐ ์ ์ ๊น์ธ ๋ฐ ์ผ๋ง๋ ์ฑ
์์ด ์๋์งโ ๊ฑฐ๊พธ๋ก ๋ฐ์ ธ๋ณด๋ ๊ณผ์ ์ด๋ค.
- ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ ํ์์ด(๊ฐ์ค์น) ์กฐ๊ธ์ฉ ๊ณต๋ถ ๋ฐฉํฅ(์
๋ฐ์ดํธ)์ ๋ฐ๊พผ๋ค.
5. PyTorch ๊ฐ๋จ ์์
import torch
import torch.nn as nn
model = nn.Sequential(
nn.Linear(4, 5),
nn.ReLU(),
nn.Linear(5, 3)
)
x = torch.randn(2, 4)
y = torch.tensor([1, 2])
criterion = nn.CrossEntropyLoss()
out = model(x)
loss = criterion(out, y)
loss.backward()
loss.backward() ํ ์ค์ด ๋ฐ๋ก Backpropagation์ด๋ค.
ํ๋ ์์ํฌ๊ฐ ์๋์ผ๋ก ๊ฐ ๊ฐ์ค์น๊ฐ ๋ฐ์ ์ฑ
์(๊ธฐ์ธ๊ธฐ)์ ๊ณ์ฐํด์ค๋ค.
6. ํต์ฌ ์์ฝ
- Backpropagation์ ์ถ๋ ฅ ์ค์ฐจ๋ฅผ ๊ฑฐ๊พธ๋ก ์ ๋ฌํ๋ฉฐ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตฌํ๋ ๊ณผ์ ์ด๋ค.
- ์ด ๊ธฐ์ธ๊ธฐ๋ฅผ ์ด์ฉํด ๊ฐ์ค์น๋ฅผ ์
๋ฐ์ดํธํ๋ฉด ๋ชจ๋ธ์ ์ ์ ๋ ์ ํํด์ง๋ค.
- ํ๋ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ(PyTorch, TensorFlow)๋ ์ด๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๋ฏ๋ก, ์๋ฆฌ๋ฅผ ์๊ณ ์์ผ๋ฉด ๋๋ฒ๊น
๊ณผ ์ดํด์ ํฐ ๋์์ด ๋๋ค.