๐ ๋ชฉ์ฐจ
1. ๋ธํ ๋ฃฐ์ด๋?
1-1. ์ ์์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
๋ธํ ๋ฃฐ(Delta Rule)์ 1960๋ ๋์ ๊ฐ๋ฐ๋ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ํํ์ ์ ๊ฒฝ๋ง ํ์ต ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ ๋๋ค. ์ถ๋ ฅ๊ฐ๊ณผ ์ค์ ๊ฐ์ ์ฐจ์ด(์ค์ฐจ)๋ฅผ ๊ณ์ฐํ ํ, ์ด ์ค์ฐจ๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ์ค์น๋ฅผ ์กฐ๊ธ์ฉ ์์ ํ๋ฉด์ ํ์ต์ ์งํํ๋ ๋ฐฉ์์ ๋๋ค. ์ด ๋ฐฉ์์ ํ์ฌ๊น์ง๋ ๋ฅ๋ฌ๋์์ ์ฌ์ฉํ๋ ์ค์ฐจ ์ญ์ ํ(backpropagation) ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ฐ์ด ๋๋ ์ค์ํ ์๋ฆฌ์ ๋๋ค.
1-2. ํผ์ ํธ๋ก ํ์ต์์์ ๋ธํ ๋ฃฐ
์ด๊ธฐ ์ธ๊ณต์ ๊ฒฝ๋ง ๋ชจ๋ธ์ธ ํผ์ ํธ๋ก ์ ๊ฐ์ค์น๋ฅผ ์์๋ก ์ด๊ธฐํํ ํ ํ์ต ๋ฐ์ดํฐ๋ฅผ ํตํด ๊ฐ์ค์น๋ฅผ ์ ๋ฐ์ดํธํด ๋๊ฐ์ผ ํฉ๋๋ค. ์ด๋ ๋ธํ ๋ฃฐ์ ํผ์ ํธ๋ก ์ด ์ค์ฐจ๋ฅผ ์ต์ํํ๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ค์น๋ฅผ ์กฐ์ ํ ์ ์๋๋ก ๋์ต๋๋ค. ํ์ต์ ํตํด ์์ธก์ด ์ ์ ๋ ์ ๋ต์ ๊ฐ๊น์์ง๊ฒ ๋ง๋๋ ๊ฒ์ด ๋ธํ ๋ฃฐ์ ํต์ฌ ์ญํ ์ ๋๋ค.
2. ๋ธํ ๋ฃฐ์ ์์๊ณผ ์๋ฆฌ
2-1. ์์์ผ๋ก ์ดํด๋ณด๊ธฐ
๋ธํ ๋ฃฐ์ ์์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
Δw = η * (t - y) * x
- Δw: ๊ฐ์ค์น์ ๋ณํ๋
- η (eta): ํ์ต๋ฅ
- t: ์ ๋ต(target value)
- y: ํ์ฌ ๋ชจ๋ธ์ ์ถ๋ ฅ๊ฐ
- x: ์ ๋ ฅ ๊ฐ
์ถ๋ ฅ๊ฐ์ด ์ ๋ต๋ณด๋ค ์๊ฑฐ๋ ํฌ๋ฉด, ๊ทธ ์ฐจ์ด๋งํผ ๊ฐ์ค์น๋ฅผ ์กฐ์ ํ์ฌ ์์ธก์ ์์ ํ๊ฒ ๋ฉ๋๋ค.
2-2. ๊ฒฝ์ฌํ๊ฐ๋ฒ๊ณผ์ ์ฐ๊ฒฐ
๋ธํ ๋ฃฐ์ ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ํ ํํ๋ก ๋ณผ ์ ์์ต๋๋ค. ์ค์ ๋ก ์์ค ํจ์(Loss Function)๋ฅผ ๋ฏธ๋ถํ์ฌ ๊ธฐ์ธ๊ธฐ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ค์น๋ฅผ ์ด๋์ํค๋ ๋ฐฉ์๊ณผ ๋์ผํ๋ฉฐ, ์ด๋ฌํ ์ฐ์ฐ์ด ๋ฅ๋ฌ๋์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ค์ฐจ ์ญ์ ํ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ์ด๊ฐ ๋ฉ๋๋ค.
3. ๋ธํ ๋ฃฐ์ ์๋ ๋ฐฉ์
3-1. ๋จ๊ณ๋ณ ํ์ต ํ๋ฆ
- ์
๋ ฅ๊ฐ
x
๋ฅผ ์ ๊ฒฝ๋ง์ ์ ๋ฌ - ์ถ๋ ฅ๊ฐ
y
๊ณ์ฐ - ์ ๋ต
t
์ ๋น๊ตํ์ฌ ์ค์ฐจ ๊ณ์ฐ - ์ค์ฐจ๋ฅผ ์ด์ฉํด
Δw
๊ณ์ฐ - ๊ฐ์ค์น ์
๋ฐ์ดํธ:
w = w + Δw
3-2. ํ์ต๋ฅ ์ ์ญํ
ํ์ต๋ฅ η
๋ ๋ธํ ๋ฃฐ์ ์ค์ํ ํ์ดํผํ๋ผ๋ฏธํฐ์
๋๋ค. ๊ฐ์ด ๋๋ฌด ํฌ๋ฉด ์๋ ด์ด ๋ถ์์ ํด์ง๊ณ , ๋๋ฌด ์์ผ๋ฉด ํ์ต์ด ๋งค์ฐ ๋๋ ค์ง๋๋ค. ์ผ๋ฐ์ ์ผ๋ก 0.01 ~ 0.1 ์ฌ์ด์ ๊ฐ์ ์คํ์ ์ผ๋ก ์กฐ์ ํฉ๋๋ค.
4. ์ค์ ์์์ ์ฝ๋ ๊ตฌํ
4-1. ๊ฐ๋จํ ํ์ด์ฌ ๊ตฌํ
# ๋ธํ ๋ฃฐ์ ์ ์ฉํ ํผ์
ํธ๋ก ์์ (์ด์ง ๋ถ๋ฅ)
import numpy as np
# ์
๋ ฅ ๋ฐ์ดํฐ (AND ์ฐ์ฐ)
X = np.array([[0,0],[0,1],[1,0],[1,1]])
y = np.array([0, 0, 0, 1])
w = np.random.rand(2)
b = 0.0
lr = 0.1
for epoch in range(100):
for i in range(len(X)):
z = np.dot(X[i], w) + b
pred = 1 if z >= 0.5 else 0
error = y[i] - pred
w += lr * error * X[i]
b += lr * error
4-2. ํ์ต ๊ฒฐ๊ณผ ๋ถ์
ํ์ต์ด ๋ฐ๋ณต๋๋ฉด ์ ์ ์ค์ฐจ๊ฐ ์ค์ด๋ค๊ณ , ์ต์ข ์ ์ผ๋ก๋ 0 ๋๋ 1์ ์ ํํ ๊ฐ๊น์ด ์์ธก์ ํ๊ฒ ๋ฉ๋๋ค. ๊ฐ๋จํ ํผ์ ํธ๋ก ์์๋ ๋ธํ ๋ฃฐ๋ง์ผ๋ก๋ ์ถฉ๋ถํ ํ์ต์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ ๋ณต์กํ ๊ตฌ์กฐ์์๋ ๊ทธ ์๋ฆฌ๋ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
5. ๋ง๋ฌด๋ฆฌ ์์ฝ
๋ธํ ๋ฃฐ์ ๋จ์ํ์ง๋ง ๊ฐ๋ ฅํ ํ์ต ์๋ฆฌ์ ๋๋ค. ํผ์ ํธ๋ก ์์ ์์๋ ์ด ์๊ณ ๋ฆฌ์ฆ์, ์ดํ ๋ฐ์ ๋ ์ ๊ฒฝ๋ง ํ์ต์ ๊ธฐ์ด๊ฐ ๋์์ผ๋ฉฐ, ์ค์ฐจ ์ญ์ ํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ์ฅ๋์์ต๋๋ค. ๋จธ์ ๋ฌ๋๊ณผ ๋ฅ๋ฌ๋์ ์ฒ์ ๋ฐฐ์ฐ๋ ์ฌ๋์ด๋ผ๋ฉด ๋ธํ ๋ฃฐ์ ๊ฐ๋ ๊ณผ ์์์ ์ ํํ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด ์๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ ํ์ตํ๊ณ ๊ตฌํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ธฐ์ด๋ฅผ ํํํ ๋ค์ง๊ณ ์ถ์ ๋ถ์ด๋ผ๋ฉด, ์ง๊ธ ์ด ๋ธํ ๋ฃฐ๋ถํฐ ๊ผญ ์ก๊ณ ๊ฐ์ธ์!