- Published on
๐STUDY ๋ฐ๋ฐ๋ฅ๋ถํฐ ์์ํ๋ ๋ฅ๋ฌ๋ | 1๊ถ
์ฌ์ค ๋ํ์ ๋ ์ ๊ทน์ ์ผ๋ก ์ฝ์์ด์ผํ๋๋ฐ ๋ด ๊ฒ์ผ๋ฆ์ผ๋ก ๋ ๋ค์ ์ทจ์
์ค๋น๋ก ๋์๊ฐ์ ์๋ก์ด ๋ง์์ผ๋ก ์ฝ๊ฒ๋ ๊ฑฐ ๊ฐ๋ค. ์ด ํฌ์คํธ๋ ๋ฉด์ ๋๋น ๊ฒธ ์ฝ๊ฒ ๋ ์ฑ
์ ๋ด ๋ฐฉ์ ์์ฃผ๋ก ์ ๋ฆฌํ ํฌ์คํธ๋ค. ๋ฐ๋ผ์ ๋์๊ฐ ์์ ํ๋ฅ ์ด ๊ต์ฅํ ๋์์ ๊ธํ ์ฌ๋์ฉ์ ์ํ ์นํธ์ํธ.. ์ ๋๋ผ๊ณ ๋ณด๋ฉด ๋๊ฒ ๋ค.
๊ฐ์ธ์ ์ผ๋ก ์ฌ๋ฐ๊ฒ ์ฝ์์ผ๋ฉฐ, ํ๋ถ์๋ค์ด ์ฝ์๋งํ ์ฑ
์ผ๋ก ๊ฐ๋ ฅ ์ถ์ฒํ๊ณ ์ถ๋ค.
1. ํผ์ ํธ๋ก
ํ๋์ ๋ด๋ฐ์ผ๋ก ์
๋ ฅ ์ ํธ โก ์ถ๋ ฅ ์ ํธ ๊ตฌ์กฐ๋ฅผ ์ง๋
์
๋ ฅ ์ ํธ()์์ ์ถ๋ ฅ ์ ํธ() ์ฌ์ด ๊ฐ์ค์น๊ฐ ๊ณฑํด์ง
ํนํ XOR ๊ฒ์ดํธ(๋ฒ ํ์ ๋
ผ๋ฆฌํฉ, ์ฆ, ์๊ธฐ์ธ์๋ ๋ชจ๋ ๊ฑฐ๋ถ)๋ ์ ํํจ์๋ก ํํ์ด ๋ถ๊ฐ๋ฅํ ๋น์ ํํจ์์ ํํ์ด๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ multi-layer perceptron์ด ๊ฐ๋
์ด ๋ํ๋ฌ๋ค.
XOR ๊ฒ์ดํธ๋ ๋จ์ผ ํผ์ ํธ๋ก ์ด ์๋, NAND, OR โก AND๋ก ์ด์ด์ง๋ ๋ค์ค์ธต์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
2. ์ ๊ฒฝ๋ง
ํผ์ ํธ๋ก ์ด ํ๋์ ๋จ์๋ผ๋ฉด ์ ๊ฒฝ๋ง์ ํผ์ ํธ๋ก (๋ด๋ฐ, ๋ ธ๋)๋ค๋ก ์ฐ๊ฒฐ๋ ํ๋์ ์งํฉ์ฒด๋ผ๊ณ ๋ณผ ์ ์๋ค. ๊ตฌ์กฐ๋ ๋ณดํต ์ ๋ ฅ์ธต โก ์๋์ธต ์ถ๋ ฅ์ถฉ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
ํผ์ ํธ๋ก ์
- ๊ฐ์ค์น(weight)
- ํธํฅ(bias): ๋ด๋ฐ์ด ์ผ๋ง๋ ์ฝ๊ฒ ํ์ฑํ๋๋ ์ง ์ ์ด
์ด๋ฌํ ์ ๋ ฅ๊ฐ * ๊ฐ์ค์น + ํธํฅ์ผ๋ก ์ป์ ์ถ๋ ฅ๊ฐ์ ํ์ฑํ ํจ์๋ก ํต๊ณผํ๊ฒ ๋๋ค. ๊ฒฐ๊ตญ์๋ ์ ๊ฒฝ๋ง ํ์ต์ ๊ฐ์ค์น์ ํธํฅ์ด ์ด๋ป๊ฒ ๋ณํํ๊ณ ํ์ตํ๋์ง๊ฐ ํฌ์ธํธ!
ํ์ฑํ ํจ์
ํ์ฑํ ํจ์๋ ์ ๋ ฅ ์ ํธ๋ฅผ ํ์ฑํํ๋ ๋ฐ ์์๊ฐ ์๋ค.
- ์๊ณ๊ฐ์ผ๋ก ๋๋์ด์ง๋ ๊ณ๋จ ํจ์ for ํผ์ ํธ๋ก
- ์ ํ ํจ์์ธ sigmoid ํจ์: for ์ ๊ฒฝ๋ง
- ์ถ๋ ฅ์ธต์์ ํ๋ฅ ์ ๋ํ๋ด๋ softmax:
โ ๋ ๋จ์กฐ ์ฆ๊ฐ ํจ์๋ก overflow์ ์ํ์ด ์๋ค. ๋ฐ๋ผ์ ์ค์ง์ ์ธ ์ฝ๋ฉ์์๋ delta๋ฅผ ๋ํด์ ๊ณ์ฐํ๋ค.
def softmax(a):
c = np.max(a) # for numerical stability
exp_a = np.exp(a - c)
sum_exp_a = np.sum(exp_a)
y = exp_a / sum_exp_a
return y
๋ฐฐ์น
์ ๋ ฅ ๋ฐ์ดํฐ์ ๋ฌถ์. ๋ฐฐ์น ํฌ๊ธฐ๋งํผ ์ด๋ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ํ๋ จํ๋ค.
3. ์ ๊ฒฝ๋ง ํ์ต
์ ๊ฒฝ๋ง ํ์ต์ ๋ฐ์ดํฐ ์ฃผ๋ ํ์ต์ด๋ค.
๋ฐ์ดํฐ ์ฃผ๋ ํ์ต
๊ธฐ๊ณ ํ์ต: ๋ฐ์ดํฐ์์ ํจํด(feature)์ ์ฐพ๊ณ ๋ต์ ์ฐพ๋๊ณผ์ , ์ด ๋ ์ฌ๋์ ๊ฐ์ ์ ์ต์ํํ๋ ๋ฐฉํฅ์ผ๋ก ๋์ด๊ฐ๋ฉด ๋ฅ๋ฌ๋(end-to-end ML)์ผ๋ก ์ด์ด์ง
๋ฐ์ดํฐ๋ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋์ด์ ํ๋ จํ๋ค.
- train data
- test data: for ๋ฒ์ฉ๋ฅ๋ ฅ ํ๊ฐ. ์ง๋์น๊ฒ ์ต์ ํ, ์ฆ ์ค๋ฒํผํ ์ ์ง์ํ๊ธฐ ์ํจ.
์์ค ํจ์
ํ๋์ ์งํ ๊ธฐ์ค์ผ๋ก ์ต์ ์ ๊ฐ์ค์น ๋งค๊ฐ๋ณ์๋ฅผ ํ์
- ํ๋์ ์งํ = ์ผ๋ง๋ ์ ๋ต์์ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๋๊ฐ? โก ์ ํ๋๋ฅผ ๋์ด๋ ๊ฒ์ด ๋ชฉํ
์์ค ํจ์๋ ๋ฏธ๋ถ(=๊ธฐ์ธ๊ธฐ)์ ์ด์ฉํด์ ๊ฐฑ์ ์ ํ๋ค. ์ด ๋ ์์คํจ์๋ ๊ฐ์ค์น ๋งค๊ฐ ๋ณ์์ ๋ํ ์์คํจ์ ์ด๋ค.
- ์ค์ฐจ์ ๊ณฑํฉ: โก , n as batch size, i as classification num
- cross entropy error: : ์ค์ ฏ๊ฐ์ ํ๋ฅ ๋ถํฌ์ ์์ธก๊ฐ์ ํ๋ฅ ๋ถํฌ ์ฐจ์ด๋ฅผ ๊ณ์ฐํจ
class SimpleNet:
def __init__(self):
self.W = np.random.randn(2, 3)
def predict(self, x):
return np.dot(x, self.W)
def loss(self, x, t):
y = self.predict(x)
return cross_entropy_error(softmax(y), t)
def f(W):
return net.loss(x, t)
dW = numerical_gradient(f, net.W)
๐ค ์ ์งํ๊ฐ ์ ํ๋๊ฐ ์๋ ์์ค ํจ์์ผ๊น? ๊ทธ๋ฅ ๋ต์ ๊ฐ๊น์ฐ๋ฉด 100 ์ด๋ฐ์์ผ๋ก ์ค์ ํ๋ฉด ์๋ ๊น?
์ ํ๋๋ก ์งํ๋ฅผ ์ผ๊ฒ ๋๋ฉด ๋๋ถ๋ถ์ ์ฅ์์์ 0์ด ๋์ด๋ฒ๋ฆผ. ์ฆ ๋ฏธ์ธํ ์ฐจ์ด์๋ ๋ฐ์์ด ์์ผ๋ฉฐ, ์ค๋ น ์๋๋ผ๋ ๋ถ์ฐ์์ ์ธ ๊ฐ(=๊ธฐ์ธ๊ธฐ๊ฐ 0)์ผ๋ก ๋ฐ๋์ด์ ํ์ต์ผ๋ก ์ด์ด์ง์ง ์์.
๊ธฐ์ธ๊ธฐ
์ ๊ฒฝ๋ง ํ์ต์์์ ๊ธฐ์ธ๊ธฐ๊ฐ ํฅํ๋ ๋ฐฉํฅ = ๊ฐ์ค์น ๋งค๊ฐ๋ณ์์ ๋ํ ์์ค ํจ์์ ์ถ๋ ฅ๊ฐ์ ์ค์ด๋ ๋ฐฉํฅ
- Stochastic Gradient Descent: ๊ทน์๊ฐ์ ์ฐพ์ โ local optima as saddle point โก , alpha as learning rate, J as gradient
ํ์ต ์๊ณ ๋ฆฌ์ฆ
- ๋ฏธ๋ ๋ฐฐ์น๋ก ๋ฐ์ดํฐ ๊ฐฏ์๋ฅผ ์ผ๋ถ๋ฅผ ๊ทผ์ฌ์น๋ก ํ์ตํ๋ค.(๐ค์ ์ฒด ๋ฐ์ดํฐ์ ๋ํ ์์คํจ์ ๊ณ์ฐ์ ๋ฐฉ๋ํ๋ฏ๋ก)
- ๊ธฐ์ธ๊ธฐ ์ฐ์ถ: ๊ฐ์ค์น์ ๋ํ ๋งค๊ฐ๋ณ์์ ์์ค ํจ์ ํฌ๊ธฐ๊ฐ ์๊ฒ ๋ฐฉํฅ์ ์ ์
- ๋งค๊ฐ๋ณ์ ๊ฐฑ์
4. ์ค์ฐจ์ญ์ ํ๋ฒ(backpropagation)
์์ ํ(forward propagation): ์์คํจ์ ๊ตฌํ๋ ๊ณผ์ ๊น์ง forward propagation, affine transform(ํ๋ ฌ์ ๊ณฑ๊ณผ ํธํฅ์ ํฉ)์ ๋ฐ๋ฅธ๋ค.
์ฐ์๋ฒ์น(chain rule): ๊ตญ์์ ๊ณ์ฐ(๊ณ์ฐ ๊ทธ๋ํ ์ node ํ๋์ ๊ณ์ฐ) ๋ฐ ๋ฏธ๋ถ์ ์ฐ์๋ฒ์น์ ๋ฐ๋ฆ
์ฐ์๋ฒ์น์ ํฉ์ฑํจ์๋ฅผ ๊ตฌ์ฑํ๋ ํจ์ ๋ฏธ๋ถ์ ๊ณฑ์ผ๋ก ํํ ๋ ์ ์๋ค. ์ด๋ก์จ ๋ฏธ๋ถ๊ฐ์ ํจ์จ์ ์ผ๋ก ๊ตฌํ ์ ์์.
5. ํ์ต ๊ด๋ จ ๊ธฐ์ ๋ค
๋ชฉํ: ์ ํ์ '๊ณ ๋ฅธ' ํ์ฐ์ ์ํจ
๋งค๊ฐ๋ณ์ ๊ฐฑ์
์ต์ ํ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ฐพ๋ ๊ฒ โก optimizer
- SGD: ๋ฌธ์ ์ ๋ฐ๋ผ ๋นํจ์จ์ ์ด๋ค. ๋น๋ฑ๋ฐฉ์ฑ(๋ฐฉํฅ์ ๋ฐ๋ผ ๊ธฐ์ธ๊ธฐ๊ฐ ๋ฌ๋ผ์ง)์์ ๋นํจ์จ์
- ๋ชจ๋ฉํ : ๋ฌผ๋ฆฌ๋์ ์ด์ฉ โก ๊ฒฝ๋ก ํ์์ ์์ด์ ์ง๊ทธ์ฌ๊ทธ๋ฅผ ๋ ๊ทธ๋ฆฌ๊ณ ํจ์จ์ .
- AdaGrad: learning rate decay โก ๊ฐ ๋งค๊ฐ๋ณ์์ ๋ง๊ฒ ํ์ต๋ฅ ์กฐ์ , ๋ฏธ๊ฐ๋ณ์์ ์์ง์์ด ๋ง์ ์๋ก(grad^2), ํ์ต๋ฃฐ์ ๋ฎ์ถค
- Adam = momentum + Adagrad: ํธํฅ๋ ๋ณด์ ์ด ๋๋ ์ด์ ์ ๊ฐ์ง๊ณ ์์.
๊ฐ์ค์น ์ด๊น๊ฐ ์ค์
- weight decay: ํ์ต๊ณผ์ ์์ ๊ฐ์ค์น์ ๋ํ ์ ๊ทํ ํจ๊ณผ๋ฅผ ์ฃผ์ด ํฐ ๊ฐ์ค์น์ ๋ํด์ ํจ๋ํฐ๋ฅผ ๋ถ๊ณผํจ์ผ๋ก์จ ์ค๋ฒํผํ ์ ๋ฐฉ์งํ๋ค.
๐ค ๊ฐ์ค์น๋ฅผ ๋ณดํต 0์ผ๋ก ์ค์ ํน์ ๋์ผํ ๊ฐ์ผ๋ก ์ค์ ํ๋ฉด?
๋ชจ๋ ๋ด๋ฐ์ด ๊ฐ์ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ ํ์ต์ด ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์, ๋๋ฌธ์ ๋ณดํต์ ์ด๊น๊ฐ์ randomํ๊ฒ ์ ์ ํ ๋ถํฌ์ ๋ฐ๋ผ ๋ถ์ฌํ๋ค.
์๋์ธต ํ์ฑํ๊ฐ ๋ถํฌ๋ฅผ ํ์ธํ๋ฉด ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์ ๋ก 0, 1๋ก ์ถ๋ ฅ๊ฐ๋ค์ด ์น์ฐ์ณ ์๋ ๊ฒ์ ํ์ธํ ์ ์์. ๊ฐ์ค์น์ ๋ํ ํ์คํธ์ฐจ๊ฐ ๋ฎ์ ์๋ก ํํ๋ ฅ์ด ์ ํ์ด ๋์ด ๋ค์ํ๊ฒ ํ์ฐ์ด ๋ชป๋๋ ๋ฌธ์ ๋ฅผ ์ง๋.
- xavier ์ด๊น๊ฐ: ์ด์ ๋ ธ๋๊ฐ n๊ฐ์ผ ๋ ์ธ ํ์คํธ์ฐจ ๋ถํฌ ์ฌ์ฉ sigmoidํจ์์ ๊ฐ์ด ํ์ฑํํจ์๊ฐ ์ ํ์ธ ๊ฒ์ ์ ์ ๋ก ํจ.
- He ์ด๊น๊ฐ: ์ด์ ๋ ธ๋๊ฐ n๊ฐ์ผ ๋ ์ธ ํ์คํธ์ฐจ ๋ถํฌ ์ฌ์ฉ, ReLU
๋ฐฐ์น ์ ๊ทํ
ํ์ฐ์ ๊ฐ์ ํ๋ ์ญํ .
- ํ์ต ์๋ ๊ฐ์
- ์ด๊น๊ฐ ์์กด โฌ
- ์ค๋ฒํผํ โฌ, dropout ํ์์ฑ โฌ
๋ฏธ๋๋ฐฐ์น ๋จ์๋ก ์ถ๋ ฅ๊ฐ ์ ๊ทํ
๊ณ์ธต๋ง๋ค ์ ๊ทํ๋ ๋ฐ์ดํฐ์ ๊ณ ์ ํ ํ๋์ ์ด๋ ๋ณํ์ ์ํ:
๋ฐ๋ฅธ ํ์ต์ ์ํด
์ค๋ฒํผํ ์ ๊ณผ์ ํฉ์ผ๋ก ๊ฐ์ค์น ๋งค๊ฐ๋ณ์๊ฐ ์ง๋์น๊ฒ ๋ง๊ฑฐ๋ ํ๋ จ ๋ฐ์ดํฐ์ ๋ถ์กฑ์ ๋ค ์ ์๋ค.
- ๊ฐ์ค์น ๊ฐ์(weight decay): L2 norm์ ๋ฐ๋ฅธ๋ค
- Dropout: ๋ด๋ฐ์ ์์๋ก ์ญ์ ํ๋ฉด์ ํ์ต, ์ํ ๋๋ ์ญ์ ์ํ ๋น์จ์ ๊ณฑํ๋ค.
์ ์ ํ ํ์ดํผํ๋ผ๋ฏธํฐ ์ฐพ๊ธฐ
ํ์ดํผํ๋ผ๋ฏธํฐ์ ๋ํ ์ฑ๋ฅ ํ๊ฐ๋ validation data๋ก ๊ฒ์ฆํ๋ค. ์ํ ๋ฐ์ดํฐ๋ ์ฌ์ฉํ์ง ์๋๋ค(์ค๋ฒํผํ ๋ฐ์)
ํด๋น ์ฑ ์์ ์ ์ํ๋ ํ๋ผ๋ฏธํฐ๋ ์๋์ ๊ฐ์.
- learning rate
- weight decay
๋ค์ ์ ๋ฆฌํ๋ฉด
- train data: ๊ฐ์ค์น ๋งค๊ฐ๋ณ์ ํ์ต
- test data: ๋ฒ์ฉ๋ฅ๋ ฅ ํ๊ฐ
- validation data: ํ์ดํผํ๋ผ๋ฏธํฐ ์ฑ๋ฅ ํ๊ฐ
ํ์ดํผํ๋ผ๋ฏธํฐ ์ต์ ํ ๊ณผ์ ์ ์๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด์ ์ค์ฌ๋๊ฐ๋ค.
- ๋ฒ์๋ฅผ ๋๋ต์ ์ผ๋ก log scale๋ก ์ค์ ํจ
- ํ์ดํผํ๋ผ๋ฏธํฐ๋ฅผ ๋ฌด์์๋ก ์ถ์ถ
- ๊ฒ์ฆ ๋ฐ์ดํฐ๋ก ํ๊ฐ
6. Convolutional Neural Network
์ด์ ์ ๊ฒฝ๋ง์ ๊ตฌ์กฐ๋ฅผ Fully Connected(์ดํ FC)๋ผ๊ณ ์ ์ํ ์ ์๋ค.
CNN์ ์ฌ๊ธฐ์ ๋ค๋ฅธ ์ ์ ๋ ๊ฐ์ง ๊ณ์ธต์ด ์ถ๊ฐ๋๋ค.
- Convolution layer
- Pooling layer
Convolution layer
๊ธฐ์กด ๊ณ์ธต๋ค์ ๋ฐ์ดํฐ์ ํ์์ ๋ฌด์๋๋ค๋ ๋จ์ ์ ์ง๋๊ณ ์์์. ๋ฐ๋ฉด CNN์ ์ ์งํจ.
- feature map: convolution layer์์์ ๋ฐ์ดํฐ
- ์ปค๋ = ํํฐ = ๊ฐ์ค์น
- fused multiply-add: ๋จ์ผ ๊ณฑ์ ๋์ฐ
- padding: ์ ๋ ฅ ๋ฐ์ดํฐ ์ฃผ๋ณ์ 0์ผ๋ก ์ฑ์
- stride: ํํฐ ์ น์ฉ ์์น์ ๊ฐ๊ฒฉ
- ํฉ์ฑ ๊ณฑ ์ฐ์ฐ์ ํด์: ์ฑ๋์ ํฌํจํ 3์ฐจ์ ๋ธ๋ก๊ณผ ํ๊ฐ ์ฑ๋์ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ผ๋ฉด, n๊ฐ์ 3์ฐจ์ ๋ธ๋ก์ n๊ฐ์ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด ๋ธ๋ค.
- ๋ฐฐ์น ์ฒ๋ฆฌ: (Channel, Weight, Height) * N
Pooling layer
์์ญ์ ํ๋์ ์์ ํ๋๋ก ์ง์ฝํ๋ค.
- average pooling
- max pooling
ํ์ตํด์ผํ ๋งค๊ฐ๋ณ์๊ฐ ์๋ค๋ ๊ฒ์ด ํน์ง(ํํฐ๊ฐ ์์). ์ฑ๋๋ง๋ค ๋ ๋ฆฝ์ ์ฐ์ฐ์ ํ๋ฏ๋ก ์ฑ๋ ์์ ๋ณํ๊ฐ ์๋ค. ๋ํ ์ ๋ ฅ ๋ณํ์ ์ํฅ์ด ์๋, ๊ฐ๊ฑดํ ๊ณ์ธต์ด๋ค.
ํด๋น CNN์ feature map๋ค์ im2col
๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ ๊ฐํด์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ํ๋ค. ๋์ ๋ฐ๋ผ ๋ชจ์์ ์ ์ ํ๊ฒ ์ฑํํ๋ฉด ๋๋ค.
Terminology
- one-hot-encoding: ํด๋น๋๋ class๊ฐ 1์ด๊ณ ๋๋จธ์ง๋ 0์ผ๋ก ํํ
- end-to-end: ์ฌ๋ ๊ฐ์ ์์ด ์ฒ์๋ถํฐ ๋๊น์ง
- hyperparameter: ์ฌ๋์ด ์ง์ ์ค์ ํ๋ ๋ณ์(์ฌ๋์ ๊ฐ์ )
- Authors
- Name
- Amelia Young
- GitHub
- @ameliacode