- Published on
๐Deep Learning from Scratch - 02 ํผ์ ํธ๋ก
ํผ์ ํธ๋ก ์๊ณ ๋ฆฌ์ฆ(Perceptron Algorithm)
ํผ์ ํธ๋ก ์๊ณ ๋ฆฌ์ฆ์ด๋? 1957๋ ํ๋ํฌ ๋ก์ ๋ธ๋ผํธ(Frank Rosenblatt)์ ์ํด ๊ณ ์๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก์ ํ๋ ์ ๊ฒฝ๋ง(๋ฅ๋ฌ๋)์ ๊ธฐ์์ด ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
2.1 ํผ์ ํธ๋ก ์ด๋?
- ๋ค์์ ์ ํธ๋ฅผ ์ ๋ ฅ ๋ฐ์ ํ๋์ ์ ํธ๋ฅผ ์ถ๋ ฅ.
- ์ ํธ๋? ์ ๋ฅ๋ ๊ฐ๋ฌผ์ฒ๋ผ ํ๋ฆ์ด ์์.
- ํ๋ฆ์ ๊ดํ ์ ํธ๋ก 'ํ๋ฅธ๋ค/์ ํ๋ฅธ๋ค'๋ก ๊ตฌ๋ถ๋๋ ๋๊ฐ์ง '1/0'์ผ๋ก๋ง ๊ตฌ๋ถ.
- 1 = ์ ํธ๊ฐ ํ๋ฅธ๋ค. 0 = ์ ํธ๊ฐ ํ๋ฅด์ง ์๋๋ค๋ก ์ค์ .
2.1.2 ํผ์ ํธ๋ก ์์
๋ณต์์ ์ ๋ ฅ ์ ํธ์ ๊ฐ๊ฐ์ ๊ณ ์ ํ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌ. ๊ฐ์ค์น๋ ๊ฐ ์ ํธ๊ฐ ๊ฒฐ๊ณผ์ ์ฃผ๋ ์ํฅ๋ ฅ์ ์กฐ์ ํ๋ ์์๋ก ์์ฉ. "๊ฐ์ค์น๊ฐ ํด์๋ก ํด๋น ์ ํธ๊ฐ ๊ทธ๋งํผ ๋ ์ค์ํจ"
2.2 ๋จ์ํ ๋ ผ๋ฆฌ ํ๋ก
AND ๊ฒ์ดํธ ๊ตฌํ
0 | 0 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
์์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด ๋ค์ํ ๋งค๊ฐ๋ณ์ ์กฐํฉ ๊ฐ๋ฅ.
๋ชจ๋ AND ๊ฒ์ดํธ์ ์กฐ๊ฑด ๋ง์กฑ
NAND ๊ฒ์ดํธ ๊ตฌํ
0 | 0 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
๋ฟ๋ง ์๋๋ผ ๋์ฑ ๋ค์ํ ์กฐํฉ ๊ฐ๋ฅ.
2.3 ํผ์ ํธ๋ก ๊ตฌํํ๊ธฐ
def AND(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
AND(0, 0) # 0์ ์ถ๋ ฅ
AND(0, 1) # 0์ ์ถ๋ ฅ
AND(1, 0) # 0์ ์ถ๋ ฅ
AND(1, 1) # 1์ ์ถ๋ ฅ
2.3.2 ๊ฐ์ค์น์ ํธํฅ ๋์
์์ ๋์จ ํผ์ ํธ๋ก ์์์ ํ์ฅ์ ์ํด ์์
b = ํธํฅ(bias), w1 & w2 = ๊ฐ์ค์น(weight)
์๋ก ์์ฑํ ์์ ๋ฐํ์ผ๋ก ํด์ํ๋ฉด, ํผ์ ํธ๋ก ์ ์ ๋ ฅ ์ ํธ์ ๊ฐ์ค์น๋ฅผ ๊ณฑํ ๊ฐ๊ณผ ํธํฅ์ ํฉํ์ฌ, 0์ด ๋์ผ๋ฉด 1, ์๋๋ฉด 0์ ์ถ๋ ฅ.
import numpy as np
def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
tmp = np.sum(w*x) + b
if tmp <= 9:
return 0
else:
return 1
2.4 ํผ์ ํธ๋ก ์ ํ๊ณ
XOR ๊ฒ์ดํธ ๊ตฌํ์ ํจ์ ๊ทธ๋ฆผ์ ํตํด ๋ํ๋ผ ๋, ์ง์ ์ ์ด์ฉํด์ ๋ํ๋ด๊ธฐ์๋ ๋ถ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฌ๋, "๊ณก์ "์ ํ์ฉํ์ฌ ํํ๊ฐ๋ฅํ๋ค. ์ง์ ๋ง์ ์ด์ฉํ์ฌ ์์ญ์ ๋๋ ๊ฒ์ "์ ํ ์์ญ"์ด๋ผ ํ๊ณ , ๊ณก์ ์ ํ์ฉํ์ฌ ์์ญ์ ๋๋ ๊ฒ์ "๋น์ ํ ์์ญ"์ด๋ผ๊ณ ํ๋ค.
2.5 ๋ค์ธต ํผ์ ํธ๋ก
XOR ๊ฒ์ดํธ ๊ตฌํ์ "๋จ์ธต ํผ์ ํธ๋ก (single-layer perceptron)"์ผ๋ก๋ ๋ถ๊ฐ๋ฅํ๋ค. ํ์ฌ ๊น์ง ๋ฐฐ์ด ํผ์ ํธ๋ก ๋ค์ ๋ชจ๋ ๋จ์ธต ํผ์ ํธ๋ก ์ด๊ณ ์ด๋ค์ ๋ชจ๋ ์ ํ์์ญ์ด๋ค. ๋ฐ๋ผ์, ์์ ๊ตฌํํ ํผ์ ํธ๋ก ๋ ผ๋ฆฌ ๊ฒ์ดํธ๋ค์ ๊ฒฐํฉํ์ฌ "๋ค์ธต ํผ์ ํธ๋ก (multi-layer perceptron)"์ ๊ตฌํํ ์ ์๋ค.
2.6 ๋ง๋ฌด๋ฆฌ
๋ค์ธต ํผ์ ํธ๋ก ์ ์ด์ฉํ์ฌ "์ด๋ก ์" 2์ธต ํผ์ ํธ๋ก ์ผ๋ก ์ปดํจํฐ๋ฅผ ๋ง๋ค ์ ์๋ค. "๋น์ ํ์ธ ์๊ทธ๋ชจ์ด๋ ํจ์"๋ฅผ ํ์ฑํํจ์๋ก ์ด์ฉํ์ฌ ์์์ ํจ์๋ก ํํ ๊ฐ๋ฅ. ์์์ ๋ฐฐ์ด ํผ์ ํธ๋ก ํจ์๋ ์ ๊ฒฝ๋ง์ ๊ธฐ์ด๊ฐ ๋๋ค.
๋ฐฐ์ด ๋ด์ฉ ์์ฝ
- ํผ์ ํธ๋ก ์ ์ ์ถ๋ ฅ์ ๊ฐ์ถ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ ๋ ฅ์ ์ฃผ๋ฉด ์ ํด์ง ๊ท์น์ ๋ฐ๋ฅธ ๊ฐ์ ์ถ๋ ฅํ๋ค.
- ํผ์ ํธ๋ก ์ '๊ฐ์ค์น'์ 'ํธํฅ'์ ๋งค๊ฐ๋ณ์๋ก ์ค์ ํ๋ค.
- ํผ์ ํธ๋ก ์ AND, OR ๊ฒ์ดํธ๋ฑ์ ๋ ผ๋ฆฌ ํ๋ก๋ฅผ ํํํ ์ ์๋ค.
- XOR๊ฒ์ดํธ๋ ๋จ์ธต ํผ์ ํธ๋ก ์ผ๋ก๋ ํํํ ์ ์๋ค.
- 2์ธต ํผ์ ํธ๋ก ์ ์ด์ฉํ๋ฉด XOR ๊ฒ์ดํธ๋ฅผ ํํํ ์ ์๋ค.
- ๋จ์ธต ํผ์ ํธ๋ก ์ ์ง์ ํ ์์ญ๋ง ํํํ ์ ์๊ณ , ๋ค์ธต ํผ์ ํธ๋ก ์ ๋น์ ํ ์์ญ๋ ํํํ ์ ์๋ค.
- ๋ค์ธต ํผ์ ํธ๋ก ์ (์ด๋ก ์) ์ปดํจํฐ๋ฅผ ํํํ ์ ์๋ค.