๊ธฐ์กด ๋ถ์บ ๋ ๋
ธ์
์ ๊ฐ์ธ์ ์ผ๋ก ์ ๋ฆฌํ ๊ฒ์ ๊ณต๋ถํ ๊ฒธ ์์ฑํ ๊ธ์
๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ํด์ํด์ ์์ฑํฉ๋๋ค. (ํ๋ฆด ์ ์์. ์ ์ ์์ฒญ ์๋งใ
)
** ๊ฐ์์๋ฃ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค **
** ์์
์ ์ด์ฉ์ ๊ธ์งํฉ๋๋ค **
Today's Keyword
์ ๊ฒฝ๋ง, softmax, activation function, Backpropagation, chain Rule
๋น์ ํ๋ชจ๋ธ - ์ ๊ฒฝ๋ง neural network

์ ์ฒด ๋ฐ์ดํฐ X, x๋ฅผ ๋ค๋ฅธ ๊ณต๊ฐ์ผ๋ก ๋ณด๋ด์ฃผ๋ ๊ฐ์ค์น W์ ๊ณฑ์ผ๋ก ํํ + b(y์ ํธ)
์ด ๋ ์ถ๋ ฅ ๋ฒกํฐ์ ์ฐจ์์ d -> p

x to O๋ก ์ฐ๊ฒฐํ ๋ P๊ฐ์ ๋ชจ๋ธ.
softmax ํจ์

- ๋ชจ๋ธ์ ์ถ๋ ฅ์ ํ๋ฅ ๋ก ํด์ํ ์ ์๊ฒ
- ๋ถ๋ฅ ๋ฌธ์ ํ๋ ๋ชจ๋ธ X ์ํํธ๋งฅ์ค → ์์ธก
- softmax(o) = softmax(Wx +b)
- ํ์ตํ ๋ softmax O
- ์ถ๋ก ํ ๋ one-hot vector ์ฌ์ฉ( 1๋ก ์ถ๋ ฅํ๋ ์ฐ์ฐ. ๊ทธ๋์ softmax๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค)
def softmax(vec):
denumerator = np.exp(vec - np.max(vev, axis=-1, keepdims=True))
numerator = np.sum(denumerator, xis=-1, keepdims=True)
val = denumerator / numerator
return val
# [1, 2, 0] -> [0.24, 0.67, 0.09] ๋ค ๋ํ๋ฉด 1
import numpy as np
def one_hot(val, dim):
return [np.eye(dim)[_] for _ in val]
def one_hot_encoding(vec):
vec_dim = vec.shape[1]
vec_argmax = np.argmax(vec, axis=-1)
return one_hot(vec_argmax, vec_dim)
def softmax(vec):
denumerator = np.exp(vec - np.max(vec, axis=-1, keepdims=True))
numerator = np.sum(denumerator, axis=-1, keepdims=True)
val = denumerator / numerator
return val
# ํ
์คํธ
vec = np.array([[1, 2, 0], [-1, 0, 1], [-10, 0, 10]])
print(one_hot_encoding(vec))
print(one_hot_encoding(softmax(vec)))

์ ๊ฒฝ๋ง = ์ ํ๋ชจ๋ธ + ํ์ฑํํจ์ (activation function) (๋น์ ํํจ์ ๊ฐ๊ฐ์ ์ ์ฉํ๋..)
softmax๋ ์ถ๋ ฅ๋ฌผ ์ ์ฒด ๊ณ ๋ คํด์ ํ๋ค๋ฉด์, ํ์ฑํํจ์๋ ํด๋นํ๋ ์ฃผ์์๋ง ์ ์ฉ.
์ด๋ฐ์์ผ๋ก ๋ณํ์ํจ ๋ฒกํฐ → hidden vector
perceptron
Activation function
- ๋น์ ํ ํจ์ (nonlinear)
- ํ์ฑํจ์๋ฅผ ์ฐ์ง ์์ผ๋ฉด ๋ฅ๋ฌ๋์ ์ ํ๊ณผ ์ฐจ์ด๊ฐ ์์.
- sigmoid, tanh .. ๋ฅ๋ฌ๋์์ ReLU ๋ง์ด ์



- multi-layer perceptron (MLP) - ์ ๊ฒฝ๋ง ์ฌ๋ฌ์ธต

- ์ด๋ก ์ ์ผ๋ก 2์ธต ์ ๊ฒฝ๋ง์ผ๋ก๋ ๋๊ธดํจ. (universal approximation theorem)
- BUT ๊น์์๋ก ๋ชฉ์ ํจ์๋ฅผ ๊ทผ์ฌํ๋๋ฐ ํ์ํ ๋ด๋ฐ(node)์ ์ซ์๊ฐ ๋นจ๋ฆฌ ์ค์ด๋ค์ด ํจ์จ์ ์ผ๋ก ํ์ต.
์ธต์ด ์์ผ๋ฉด ๋ด๋ฐ์ด ๋์ด๋ wideํ ์ ๊ฒฝ๋ง์ด ๋์ด์ผํจ.- ์ด๊ฒ ๋ญ์๋ฆฌ๋? (๋ด๊ฐ ํ๊ธฐํ ๊ฑธ ๋ค์ ๋ณด๋๊น ๋ญ์๋ฆฐ์ง ๋ชจ๋ฅด๊ฒ ์)
- ๊น์ ์ ๊ฒฝ๋ง -> ๋ ์ ์ ๋งค๊ฐ๋ณ์๋ก๋ ํํ. ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋จ์ ๋ฌธ์ ๋ก ๋ถํด.
- ์์ ์ ๊ฒฝ๋ง -> ๊ทธ๋งํผ ๋์ด์ผ๋จ (๋๋น), ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋ง์ ๋งค๊ฐ๋ณ์ ์จ์ผ๋จ.
- ์ผ๋ฐ์ ์ผ๋ก ๋คํธ์ํฌ๋ฅผ ๋ ๊น๊ฒ ๋ง๋๋ ๊ฒ์ด ๋๋น๋ฅผ ๋๋ฆฌ๋ ๊ฒ๋ณด๋ค ์ ํ๋ ๊ฐ์ ์ ๋ ํจ๊ณผ์ ์ด๋ค !
Backpropagation ์ญ์ ํ ์๊ณ ๋ฆฌ์ฆ
์ผ๋ก ๊ฐ ์ธต์ ์ฐ์ด๋ parameter๋ฅผ ํ์ต ์ํจ.
parameter
๊ฐ๊ฐ์ ๊ฐ์ค์น ํ๋ ฌ W(l)์ ๋ํด์ ์์คํจ์์ ๋ํ ๋ฏธ๋ถ์ ๊ณ์ฐ
๊ฐ ์ธต ํ๋ผ๋ฉํ์ ๊ทธ๋ ๋์ธํธ ๋ฒกํฐ๋ ์์ธต๋ถํฐ ์ญ์์ผ๋ก
- ํฉ์ฑํจ์ ๋ฏธ๋ถ๋ฒ์ธ chain-rule ๊ธฐ๋ฐ ์๋ ๋ฏธ๋ถ ์ฌ์ฉ
z๋ฅผ x๋ก ๋ฏธ๋ถํ๊ธฐ ์ํด ์ฌ์ฉํ๋ chain-rule ๊ฐ๋จํ ์์
- 2์ธต ์ ๊ฒฝ๋ง์ ์ญ์ ํ ์๊ณ ๋ฆฌ์ฆ ์์
๋นจ๊ฐ์์ด backward, ๋ฏธ๋ถ์ด ์ ๋ฌ๋๋
(์ค๋ฅธ์ชฝ๋ฐ์์ 4) ์์คํจ์๋ฅผ ์ถ๋ ฅ o์ ๋ํด ๋ฏธ๋ถ
(์ค๋ฅธ์ชฝ๋ฐ์์ 3) 4๋ฅผ h๋ก ๋ฏธ๋ถ.
(์ค๋ฅธ์ชฝ๋ฐ์์ 2) 3์ hidden value z ์ ๋ํด ๋ฏธ๋ถ.
(์ค๋ฅธ์ชฝ๋ฐ์์ 1) 2๋ฅผ w1์ ๋ํด ๋ฏธ๋ถ
์ด๋ ๊ฒ ๊ณ์ฐํ ๊ฐ๊ฐ์ ๊ฐ์ค์นํ๋ ฌ์ ๋ํ gradient vector๋ฅผ sgd๋ฅผ ์ด์ฉ, ๋ฐ์ดํฐ๋ฅผ mini-batch๋ก ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ ํ์ต, ์ฃผ์ด์ง ๋ชฉ์ ์น๋ฅผ ์ต์ํํ๋.
ํ์ต ์๋ฆฌ : backpropagation ์ญ์ ํ ์๊ณ ๋ฆฌ์ฆ

์ผ๋ก ๊ฐ ์ธต์ ์ฐ์ด๋ parameter๋ฅผ ํ์ต ์ํจ.
๊ฐ๊ฐ์ ๊ฐ์ค์น ํ๋ ฌ W(l)์ ๋ํด์ ์์คํจ์์ ๋ํ ๋ฏธ๋ถ์ ๊ณ์ฐ
๊ฐ ์ธต ํ๋ผ๋ฉํ์ ๊ทธ๋ ๋์ธํธ ๋ฒกํฐ๋ ์์ธต๋ถํฐ ์ญ์์ผ๋ก


์์ : 2์ธต ์ ๊ฒฝ๋ง ์ญ์ ํ ์๊ณ ๋ฆฌ์ฆ


→ ๋ฅ๋ฌ๋์ ํ์ต ์๋ฆฌ
→ ์ด๋ ต์ง๋ง ํ๋ฒ ๋ ์ฐพ์๋ณด๊ณ ์ง์ ์ฌ๋์ ํ๋ฉด์ ํ๋ฉด ์ดํดํ๊ธฐ ๋ ์ฝ๋ค
ํด์ฆ ์ค๋ต
๋ด๊ฐ ํ๋ ธ๋ ํด์ฆ ์ค๋ต...


'AI ๊ณต๋ถ ํญ์ํ์ > ๊ด๋ จ ์ด๋ก ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Math] Gradient Descent (๋งค์ด๋ฏธ๋ถ๋ง) (1) | 2025.01.08 |
|---|---|
| [Math] Gradient Descent (์ฐฉํ๋ฏธ๋ถ๋ง) (5) | 2024.12.16 |
| [Math] ํ๋ ฌ์ ์์๋ณด์ (3) | 2024.12.02 |
| [Math] ๋ฒกํฐ๋ฅผ ์์๋ณด์ (2) | 2024.11.22 |