๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
1๏ธโƒฃ AI•DS/๐Ÿ“’ Deep learning

[์ธ๊ณต์ง€๋Šฅ] MLP

by isdawell 2022. 4. 21.
728x90

๐Ÿ“Œ ๊ต๋‚ด '์ธ๊ณต์ง€๋Šฅ' ์ˆ˜์—…์„ ํ†ตํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

 

์š”์•ฝ 

 

โ‘  multiple layer ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  

 

- XOR ๋ฌธ์ œ 

- feature extraction and classification 

 

โ‘ก Multi-layer perceptron 

 

- gradient descent 

- backpropagation algorithm 

 

 


 

 

1๏ธโƒฃ  MLP 


 

โ‘  MLP๋ž€ 

 

๐Ÿ‘€ Perceptron vs Multi layer Perceptron

 

  • Perceptron : ๋‰ด๋Ÿฐ์ด ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ 

a perceptron

 

  • MLP (multi-layer perceptron) : ๋‰ด๋Ÿฐ(ํผ์…‰ํŠธ๋ก )์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ์ธต์„ ์ด๋ฃฌ๋‹ค. 
    • layer : ๋‰ด๋Ÿฐ๊ณผ ๋‰ด๋Ÿฐ ์‚ฌ์ด์˜ ์‹œ๋ƒ…์Šค ์ธต์„ ์ง€์นญํ•จ 

 

 

๐Ÿค” ๋‰ด๋Ÿฐ์ด ์—ด๊ฑฐ๋œ ๋ถ€๋ถ„์„ layer ๋ผ๊ณ  ์นญํ•˜๋ฉฐ hidden layer ๋ผ๊ณ  ์„ค๋ช…ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋‚˜, ์ˆ˜์—…์—์„  ์‹œ๋ƒ…์Šค ์—ฐ๊ฒฐ๋ถ€๋ถ„์„ layer ๋กœ ์ง€์นญํ•จ 

 

 

 

 

โ‘ก MLP

 

๐Ÿ‘€ input layer 

 

 

โญ weight matrix W ์ฐจ์› : (output) x (input) 

 

 

๐Ÿ‘€ Output layer 

 

 

 

 

๐Ÿ‘€ MLP

 

 

 

 

โ‘ข XOR ๋ฌธ์ œ 

 

๐Ÿ‘€ XOR ๋ฌธ์ œ

 

  • ๋“ค์–ด์˜ค๋Š” input ์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ์—๋งŒ output ์„ 1๋กœ ๋„์ถœํ•˜๋Š” ๋ฌธ์ œ 

 

 

๐Ÿ‘€ ๋‹จ์ผ ํผ์…‰ํŠธ๋ก ์„ ๊ฐ€์ง€๊ณ  XOR ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์—†๋‹ค. 

 

  • AND ๋ฌธ์ œ๋Š” ๋‹จ์ผํผ์…‰ํŠธ๋ก ์„ ๊ฐ€์ง€๊ณ  ํ’€ ์ˆ˜ ์žˆ๋‹ค. 

AND ๋ฌธ์ œ

 

๋‹จ์ผ ํผ์…‰ํŠธ๋ก 

 

 

์ง์„ ์„ ์•„๋ฌด๋ฆฌ ๊ทธ์–ด๋ดค์ž ํ’€ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ ๐Ÿ‘‰ Linearly not Separable

 

 

  • ๋‰ด๋Ÿฐ์ด ํ•˜๋Š” ์—ญํ• ์€ input ์— ๋Œ€ํ•ด ๊ตฌ๋ถ„์„ ์ง“๋Š” ์ดˆํ‰๋ฉด (hyperplane) ์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์œผ๋กœ, ์„ ์€ ๊ฐ€์ค‘์น˜ w์™€ ํŽธ์ฐจ b์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค. ์„ ์„ ๊ธฐ์ค€์œผ๋กœ 0 ๋˜๋Š” 1์˜ output ์„ ์ƒ์„ฑํ•ด๋‚ธ๋‹ค. (classification) 

 

  • input ์ด ์œ„์™€๊ฐ™์ด (x1, x2) 2๊ฐœ๊ฐ€ ์•„๋‹Œ (x1, x2, x3) ์ด๋ ‡๊ฒŒ 3๊ฐœ๋ฉด 3์ฐจ์› ๊ณต๊ฐ„์—์„œ 2์ฐจ์› ํ‰๋ฉด์„ ๊ทธ๋ฆฐ๋‹ค. 

 

โญ ํ•˜๋‚˜์˜ ๋‰ด๋Ÿฐ์€ n ์ฐจ์› ๊ณต๊ฐ„์—์„œ n-1 ์ฐจ์›์˜ ์ดˆํ‰๋ฉด์„ ๊ทธ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 

 

 

 

 

๐Ÿ‘€ ๋‹ค์ธต ํผ์…‰ํŠธ๋ก  MLP ๋กœ๋Š” XOR ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค! 

 

2 layer perceptron

 

 

  • ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ€์ค‘์น˜์™€ ํŽธ์ฐจ์˜ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ , ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ ReLU ๋กœ ๊ณ„์‚ฐํ•ด๋ณด์ž 

 

 

2-layer perceptron ์—ฐ์‚ฐ๊ณผ์ •์œผ๋กœ XOR ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

 

 

  • batch ํ˜•ํƒœ๋กœ input ์„ ํ‘œํ˜„ํ•ด๋ณด๊ธฐ 

 

 

 

โ‘ฃ ์ค‘์š”!

 

 

 

  • XOR ์€ linearly separable ํ•œ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋‹ค. 
  • ๋”ฐ๋ผ์„œ ๋ณธ๋ž˜ (x1,x2) ๊ณต๊ฐ„์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ค‘์น˜์™€์˜ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๊ณต๊ฐ„์— ์žˆ๋Š” ํŠน์ง• (y1,y2) ์„ ์ถ”์ถœํ•˜๊ณ  ์ถ”์ถœํ•œ ๊ณต๊ฐ„์œผ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฅ˜ ๋ฌธ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด XOR ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. 
  • Feature extraction & output classification  
  • ํ•˜๋‚˜์˜ ๋‰ด๋Ÿฐ์ด ํ•˜๋Š” ์—ญํ•  : ๋ถ„๋ฅ˜ํ•ด์ฃผ๋Š” ์„ ํ˜• ์ง์„ ์„ ๊ทธ๋ ค์ค€๋‹ค. 

 

 

 

 


 

2๏ธโƒฃ MLP training 


 

* ์œ„์—์„œ ์ •์˜ํ•œ W,b ์ดˆ๊ธฐ๊ฐ’์€ XOR ๋ฌธ์ œ๋ฅผ ํ•œ๋ฒˆ์— ์ž˜ ํ’€๊ธฐ์œ„ํ•ด์„œ ์ž„์˜๋กœ ์„ค์ •ํ•œ ๊ฐ’์ด์—ˆ๋‹ค.

* ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋ถ„๋ฅ˜๋ฅผ ์ž˜ ์ˆ˜ํ–‰ํ•ด๋‚ด๋Š” W,b ํ–‰๋ ฌ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ? 

 

 

โ‘  Gradient descent

 

๐Ÿ‘€ MLP ํ›ˆ๋ จ = ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•ด๋‚ผ ์ˆ˜ ์žˆ๋Š” W,b ํ–‰๋ ฌ์„ ์ฐพ๋Š” ๊ฒƒ 

 

  • Cost function ๐Ÿ‘‰ analytically ํ•˜๊ฒŒ (๋ฏธ๋ถ„) ์—ฐ์‚ฐํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ gradient descent ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

 

  • ๊ฐ€์ค‘์น˜์— ๋Œ€ํ•˜์—ฌ cost function ์„ ํŽธ๋ฏธ๋ถ„ํ•œ๋‹ค. 

 

 

 

 

๐Ÿ‘€ ๋‹จ์ผ ํผ์…‰ํŠธ๋ก ์—์„œ์˜ gradient descent ์—ฐ์‚ฐ 

 

โญ error * derivative of act func * input โญ

 

 

๐Ÿ‘€ ๋‹ค์ธต ํผ์…‰ํŠธ๋ก ์—์„œ์˜ gradient descent ์—ฐ์‚ฐ 

 

  • i : input unit ์˜ ๊ฐœ์ˆ˜ , j : hidden unit ์˜ ๊ฐœ์ˆ˜, k : output unit ์˜ ๊ฐœ์ˆ˜ 

 

 

 

  • input gradient : ์ง์ „์— ๋ฐœ์ƒํ•œ error ์™€ weight ๋ฅผ ๊ณฑํ•œ๊ฐ’
  • weight gradient : error x input 

 

๐Ÿ‘ป ์ฐธ๊ณ  

 

  - bias ์— ๋Œ€ํ•œ ๋ฏธ๋ถ„๊ฐ’๋„ ๊ธฐ์–ตํ•˜๊ธฐ! 

  - ํ™œ์„ฑํ™”ํ•จ์ˆ˜ ๋ฏธ๋ถ„ ๊ณฑ์—์„œ ํ–‰๋ ฌ๊ณฑ ์—ฐ์‚ฐ๊ณผ element wise ๊ณฑ์…ˆ ์—ฐ์‚ฐ์„ ์ฃผ์˜ํ• ๊ฒƒ!

 

 

# error(2)
dA2 = np.multiply(dMSE(A2, T), self.second_layer_dactivation_func(Z2))
    
# weight gradient = error(2) * input 
dW2 = np.dot(A1.T, dA2)
 
# bias gradient 
dB2 = np.sum(dA2, axis=0, keepdims = True) ## error(2) ๋ฅผ ์—ด๋ฐฉํ–ฅ์œผ๋กœ ๋ง์…ˆ 

# error(1)
dA1 = np.multiply(np.dot(dA2, self.second_layer_weights.T), self.first_layer_dactivation_func(Z1))

# weight gradient = error(1) * input
dW1 = np.dot(X.T, dA1)

# bias gradient
dB1 = np.sum(dA1, axis=0, keepdims = True) ## error(2) ๋ฅผ ์—ด ๋ฐฉํ–ฅ์œผ๋กœ ๋ง์…ˆ

 

 

 

๐Ÿ‘€ MLP output ์ด 2๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ 

 

 

โญ summation ๊ณผ์ •์ด ์ถ”๊ฐ€๋จ!

 

 

 

 

โ‘ก Backpropagation 

 

๐Ÿ‘€ ์—ฐ์‚ฐ ๊ณผ์ • 

 

1. W, b ๋ฅผ ์ž‘์€ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” 
2. training set ์ „์ฒด์— ๋Œ€ํ•ด ์•„๋ž˜์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ (1 epoch ๊ธฐ์ค€)
    a. Forward Propagation : output ๊ฐ’๊ณผ error ๋ฅผ ๊ณ„์‚ฐ 
    b. Backpropagation : error ๋ฅผ ์—ญ์ „ํŒŒ ํ•œ๋‹ค. 
    c. W,b ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. 
3. ์‹ ๊ฒฝ๋ง์ด ์ž˜ ํ›ˆ๋ จ๋ ๋•Œ๊นŒ์ง€ 2๋ฒˆ์„ ๋ฐ˜๋ณตํ•œ๋‹ค. 

 

 

* example ๊ผญ ์†์œผ๋กœ ์ง์ ‘ ๊ณ„์‚ฐํ•ด๋ณด๊ธฐ 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

๋Œ“๊ธ€