๐ ๋ชฉ์ฐจ
1์ฅ: Introduction to Deep Learning
2์ฅ: Neural Networks Basics
3์ฅ: Shallow neural networks
4์ฅ: Deep Neural Networks
Shallow neural network๋ ๋ณดํต input layer์ hidden layer, output layer๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋ง ๊ทธ๋๋ก ๊น์ง(deep)์์ ์์(shallow) ์ธ๊ณต์ ๊ฒฝ๋ง์ ์๋ฏธํ๋ค.
์ด๋ฒ ์ฃผ์ฐจ์์๋ 3๊ฐ์ ์์ ์ธต์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ neural network์์ ์ธต๊ณผ ์ธต, ๊ทธ๋ฆฌ๊ณ ๋ ธ๋์ ๋ ธ๋๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ๋์ด ํ์ต๋๋ ๊ณผ์ ์ ๋ํด์ ์ง์ ๋ค๋ฃจ๊ฒ ๋๋ฉฐ ๊ฐ ๋ ธ๋์์ ์ ์ฉ๋ activation function์ ๋ํด์๋ ์ดํด๋ณธ๋ค.
์์, 2์ฃผ์ฐจ ๊ฐ์์๋ Neural Networks Basics์์๋ Logistic regression์ ๋ํด์ ์์ธํ๊ฒ ๋ค๋ฃจ์ด ๋ดค์
Logistic regression์ด ๊ณ์ฐ๋๋ ๊ณผ์ ์ ๊ฐ๊ฐ์ ๋ ธ๋์์ ์ ์ฉ๋๋ ๊ณผ์ ์ผ๋ก, ๋ ธ๋์์ ๊ณ์ฐ๋๋ ๊ณผ์ ์ ์ค์ฒฉ์ด neural network์ ๊ณ์ฐ ๊ทธ๋ํ๊ฐ ์งํ๋๋ ๊ณผ์ ์
๋ณธ๊ฒฉ์ ์ผ๋ก neural network์ ๊ณ์ฐ ๊ณผ์ ์ ์์๋ณด๊ธฐ ์ ์ ์์ธํ ํ๊ธฐ๋ฒ์ ํด๋น ๊ฐ์์์ deep-learning-notation ์ ๊ณตํด์ค
neural network์ ๋ช ์นญ ๋ฐ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์
๊ฐ์ฅ ์ข์ธก์ x1, x2, x3๋ก ์ด๋ฃจ์ด์ ธ ์๋ ๋ถ๋ถ์ neural network์ ์ ๋ ฅ๊ฐ์ผ๋ก Input layer๋ผ๊ณ ํจ
๊ฐ์ ์ฐ์ธก์ ํ๋์ ๋ ธ๋๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋ถ๋ถ์ Output layer๋ก, ๊ฒฐ๊ณผ์ธ y๊ฐ์ ์์ฑํ๋ ์ญํ ์ ํจ
์ค์์ ์์นํด ์๋ ๋ถ๋ถ์ Hidden layer๋ผ๊ณ ํ๋ฉฐ, ์ง๋ํ์ต ๊ณผ์ ์ค, ์ ๋ ฅ๊ฐ๊ณผ ์ถ๋ ฅ๊ฐ์ด ๋ช ์์ ์ผ๋ก ์กด์ฌํ๋ ์ํฉ๊ณผ ์ ๋ ฅ๊ฐ์ผ๋ก ์ถ๋ ฅ๊ฐ์ ํ์ตํ๋ ๊ณผ์ ์์ ๊ฐ๋ค์ด ๋ช ์์ ์ผ๋ก ๋ณด์ด์ง ์๋ ์ธต(hidden)์ ์๋ฏธํจ
neural network์ ๊ตฌ์กฐ์ ๋ํ ์๋ก์ด ํ๊ธฐ๋ฒ์ ๋ค์๊ณผ ๊ฐ์
๋ณดํต input layer๋ฅผ ์ ์ธํ ๋๋จธ์ง layer๋ฅผ ๋ฐํ์ผ๋ก ์ ๊ฒฝ๋ง์ ์ ์ํ๋ฉฐ, ๋ค์๊ฐ์ ๊ฒฝ์ฐ๋ 2-layer nerual network์
๊ฐ ๋ ธ๋์ ์ธต์์๋ logistic regression์ ๊ณ์ฐ ๊ณผ์ ์ด ์ ์ฉ๋๋๋ฐ, parameter์ธ w, b์ ์ฐจ์์ด hidden layer์ ๋ ธ๋์ ์์ ์ํด ๊ฒฐ์ ๋จ
์ฒซ๋ฒ์งธ layer์์ w, b๋ ๊ฐ๊ฐ (4, 3), (4, 1)์ ์ฐจ์์ ๊ฐ์ง๊ณ ์๊ณ , ๋๋ฒ์งธ layer์์ w, b๋ (1, 4), (1, 1)์ ์ฐจ์์ ๊ฐ์ง๊ณ ์์
์ด๋ ๋ฐ์ดํฐ x(i) ํ๋์ ๋ํ ๊ณ์ฐ ๊ทธ๋ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ผ๋ก ๋ฐ์ดํฐ๊ฐ hidden layer์ ๋ ธ๋๋ฅผ ๊ฑฐ์ณ ๊ฒฐ๊ณผ๊ฐ์ด ์ฐ์ถ๋๋ ค๋ฉด ์์ ๊ฐ์ ๊ณผ์ ์ด ๋ ธ๋๋ณ๋ก ๋ฐ๋ณต ๋ฐ ์ค์ฒฉ๋๋ค๊ณ ํ ์ ์์
hidden layer์ ๋ชจ๋ ๋ ธ๋๋ค์์ logistic regression์ ๊ณ์ฐ ๊ณผ์ ์ ์ ์ฉํ๊ฒ ๋๋ฉด ๊ฐ ๋ ธ๋๋ณ๋ก z๊ฐ์ ๊ฐ์ง๊ณ , ๋ชจ๋ z๊ฐ์ activation function์ ์ ์ฉํ๊ฒ ๋๋ฉด 4๊ฐ์ a๊ฐ ์ฒซ๋ฒ์งธ hidden layer์ ๊ฒฐ๊ณผ๋ก ๋์ค๊ฒ ๋จ
ํ์ง๋ง ์์ ๊ฐ์ ํ๋์ ๋ฐ์ดํฐ์ ๋ํ ๋ชจ๋ ๋ ธ๋๋ค์ ๋ํ ๊ณ์ฐ ๊ณผ์ ์ 4์ค์ ์ฝ๋๋ก ๊ฐ๋จํ๊ฒ ์ค์ผ ์ ์์
์์ ์ดํด๋ณธ ๊ณ์ฐ ๊ณผ์ ์ ์ฌ์ ํ x(i), ํ๋์ ๋ฐ์ดํฐ์ ํด๋นํจ์ผ๋ก ์๋ง์ ๋ฐ์ดํฐ์ ๊ณ์ฐ ๊ณผ์ ์ ๋ฒกํฐํ๋ฅผ ํตํด ๋ณด๋ค ๋น ๋ฅด๊ฒ ์ ์ฉํ ์ ์์
m๊ฐ์ ์ ๋ ฅ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ๋, x(1) ๋ถํฐ x(m)๊น์ง iteration์ ํตํด ๊ฐ ๋ฐ์ดํฐ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ์ ๊ตฌํ ์ ์์
ํ์ง๋ง ๋ฒกํฐํ๋ฅผ ํ๊ฒ ๋๋ฉด ํ๋ฒ์ ๊ณ์ฐ์ด ๊ฐ๋ฅํจ์ผ๋ก ํจ์ฌ ๋น ๋ฅด๊ฒ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ ์ ์์, ์ด ๋ ์ฐจ์์ ์ ๋ง์ถฐ์ฃผ๋ ๊ฒ์ด ์ค์ํจ
๋ฐ์ดํฐ๊ฐ ํ์ต๋๋ ๊ณผ์ ์ธ ๊ณ์ฐ ๊ทธ๋ํ๋ฅผ ๋ณด๊ฒ๋๋ฉด layer์ ๊ฒฐ๊ณผ์ธ z์ activation function์ ์ ์ฉํ a๋ฅผ ๋ณผ ์ ์์
๋ค์ํ ์ข ๋ฅ์ activation function์ด ์กด์ฌํ๋ฉฐ ๊ฐ ํจ์๋ง๋ค ๋ค๋ฅธ ํน์ง์ ๊ฐ์ง๊ณ ์์
sigmoid: {0 <= a <= 1}, z๊ฐ์ด ๋๋ฌด ์๊ฑฐ๋ ํฌ๊ฒ ๋๋ฉด, ๊ธฐ์ธ๊ธฐ(slope)๊ฐ 0์ ๊ฐ๊น์์ง์ผ๋ก gradient descent๊ฐ ๋งค์ฐ ์ฒ์ฒํ ์งํ๋์ด ์ฑ๋ฅ์ด ์ข์ง ์์, output layer์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ํจ์์
tanh: {-1 <= a <= 1}, ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ sigmoid๋ณด๋ค ์ข์ ์ฑ๋ฅ์ ๋ณด์ด๋ฉฐ ๊ฐ์ ๋ฒ์๊ฐ -1๊ณผ +1 ์ฌ์ด์ ์์นํ๊ฒ ๋๋ฉด์, ๋ฐ์ดํฐ ํ๊ท ๊ฐ์ด 0์ ๊ฐ๊น๊ฒ ์ ์ง๋์ด ๋ค์ ์ธต์์์ ํ์ต์ด ๋ณด๋ค ์์ํจ
Relu: max(0, z), z๊ฐ 0๋ณด๋ค ํด ๋, ๋ณธ๋์ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ฐ์ง๋ ํน์ง์ผ๋ก ๋น ๋ฅด๊ฒ gradient descent๋ก ํ์ตํด ๋๊ฐ ์ ์๊ธฐ์, ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํจ์์
Leaky Relu: Relu๊ฐ 0์ ๊ฐ์ ๊ฐ์ง ๋, ์ฑ๋ฅ์ด ์ ํ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ฐ์ ํ ํจ์์
activation function์ด ์ค์ํ ์ด์ ๋, ๊ธฐ์ธ๊ธฐ(slope)๋ฅผ ํตํด global optimum์ ์ฐพ์๊ฐ๋ gradient descent๊ฐ ๋ฐ๋ณต๋๋ ๊ณผ์ ์์, ๊ธฐ์ธ๊ธฐ๋ฅผ ๋ฐํํด์ฃผ๋ activation function์ ์ข ๋ฅ์ ๋ฐ๋ผ, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ํน์ง์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด์๋ ๋ค์ํ ์ ๊ทผ์ด ํ์ํจ
๊ทธ๋ ๋ค๋ฉด ๋น์ ํ์ activation function์ ๊ฐ ์ธต๋ง๋ค ์ ์ฉํ๋ ์ด์ ๋ ๋ฐ๋ก input layer์์ output layer๋ก ํ์ตํ๋ ๊ณผ์ ์์ ๋น์ ํ์ ํน์ง์ ๋ฝ์๋ด๊ธฐ ์ํด์์
nerual network์ ํ์ต์ ์ํด์ backpropagation์ ์ ์ฉํ๊ธฐ ์ํด์๋ activation function์ derivative๋ฅผ ๊ตฌํด์ผํจ
๊ฐ activation function์ ๊ทธ๋ํ์์ ํน์ ์ง์ ์์์ slope๊ฐ activation function์ derivative๋ผ๊ณ ์ดํดํ ์ ์์
sigmoid: gโ(z) = a(1 - a) ์ด๋ฉฐ, 0๊ณผ 1์ ๊ฐ๊น์์ง์๋ก ๊ธฐ์ธ๊ธฐ๊ฐ์ด ์์์ง์ ์ ์ ์์
tanh: gโ(z) = 1 - a^2 ์ด๋ฉฐ, -1๊ณผ 1์ ๊ฐ๊น์์ง์๋ก ๊ธฐ์ธ๊ธฐ๊ฐ์ด ์์์ง์ ์ ์ ์์
Relu: gโ(z) = 0 if z < 0, 1 if z >= 0 ์ด๋ฉฐ, leaky relu์ผ ๋๋ 0์ด ์๋ 0.01์ ๋ฐํํด์ค
์ด์ 2-layer neural network์ gradient descent๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์ ์ฉ๋๋ฉด์ parameter w์ b๊ฐ ์ ๋ฐ์ดํธ๋๋ ๊ณผ์ ์ ๋ํด์ ์์๋ณผ ์ ์์
- forward propagation
Z1 = np.dot(W1, X) + b1 A1 = np.tanh(Z1) Z2 = np.dot(W2, A1) + b2 A2 = sigmoid(Z2)
- backpropagation
dZ2 = A2 - Y dW2 = np.dot(dZ2, A1.T) / m db2 = np.sum(dZ2, axis = 1, keepdims = True) / m dZ1 = np.multiply(np.dot(W2.T, dZ2), 1 - np.power(A1, 2)) dW1 = np.dot(dZ1, X.T) / m db1 = np.sum(dZ1, axis = 1, keepdims = True) / m
neural network๋ฅผ ์ค๊ณํ ๋, ์ ์ ํ parameter๋ฅผ ์ฐพ๊ธฐ ์ํ ๋ฐ๋ณต์ ์ธ ๊ณผ์ ์ ๊ฑฐ์น๋๋ฐ, ์ด๊ธฐ parameter๋ฅผ ์์๋ก ์ค์ ํ๋ ๊ฒ์ด ๊ต์ฅํ ์ค์ํจ
neural network์์ ์ด๊ธฐ weight๋ฅผ 0์ผ๋ก ์ค์ ํ๊ฒ ๋๋ฉด ํ layer์ ๋ชจ๋ ๋ ธ๋์์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก update๊ฐ ์งํ๋์ด ์๋ฏธ์๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋จ
์ด๋ ๊ฒ ๋ชจ๋ ๋ ธ๋์์ ๊ฐ์ ์ฐ์ฐ์ ์ํํ๊ฒ ๋์ด ๋๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ ๊ฒ์ '๋์นญ(symmetry)'์ด๋ผ๊ณ ํ๋๋ฐ, weight๋ฅผ ๋๋ค์ผ๋ก ์ค์ ํจ์ผ๋ก์จ symmetry breaking ํ ์ ์๊ฒ ๋จ
์ด ๋, ๋๋ค์ผ๋ก ์ค์ ํ๋ weight ๊ฐ์ด ๋งค์ฐ ํฌ๊ฒ ๋๋ฉด ๊ธฐ์ธ๊ธฐ๊ฐ 0์ผ๋ก ์์ค๋์ด ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ํต์ ๋งค์ฐ ์์ ๊ฐ์ผ๋ก ์ค์ ํด์ค