<๊ฐ•์˜ ๋“ฃ๊ณ  ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๋‚ด์šฉ๋“ค>

 

1/

 

deep learning์ด๋ผ๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ x๋ผ๋Š” input์ด ์ฃผ์–ด์ง€๋ฉด y๋ฅผ ๋‚ด๋ฑ‰์„ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ดํ•ดํ•˜์˜€๋‹ค.

๊ทธ๋ฆฌ๊ณ  NN์˜ ๊ฐ ๋‰ด๋Ÿฐ๋“ค์€ ์ฃผ๋ชฉํ•˜๋Š” ๋ถ€๋ถ„์ด ๋‹ค ๋‹ค๋ฅด๋‹ค.

 

 

2/

 

์ด๋Ÿฌํ•œ ์ธ๊ณต์ง€๋Šฅ์€ ๋งค์šฐ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ ์˜ˆ๋กœ๋Š” ์ด๋ฏธ์ง€ ์ธ์‹, ์˜ค๋””์˜ค ์ธ์‹, ๊ธฐ๊ณ„ ๋ฒˆ์—ญ ๋“ฑ์ด ์žˆ๋‹ค.

์ด๋ฏธ์ง€์—์„œ๋Š” ์ฃผ๋กœ CNN์„,

์˜ค๋””์˜ค/์ž์—ฐ์–ด๋Š” ์‹œ๊ฐ„์  ํ๋ฆ„์„ ์ž˜ ๋ฐ˜์˜ํ•˜๋Š” RNN์„,

์ž์œจ์ฃผํ–‰๊ณผ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” hybrid neural network๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

3/

 

์™œ ์ด์ œ์„œ์•ผ ๋”ฅ๋Ÿฌ๋‹์ด ๋œจ๋Š” ๊ฒƒ์ธ๊ฐ€?

๋จผ์ € ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์กŒ๊ณ ,  ํฐ ๋ชจ๋ธ์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด ๊ตฌ์ถ•๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

  • ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ ๊ฐ€๋Šฅ์„ฑ์˜ ์ฆ๊ฐ€
    • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์ฆ๊ฐ€ํ•œ๋‹ค.
    • ํ•˜์ง€๋งŒ ๊ณ ์ „์ ์ธ ML ๋ชจ๋ธ (SVM, logistic, regression, ..)์€ ์ผ์ • ์ˆ˜์ค€์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ™•๋ณด๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๋Š˜๋ ค๋„ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ๋ฐ˜๋ฉด,  NN๋Š” ๋ฐ์ดํ„ฐ ์–‘์ด ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ NN๋Š” ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ ๊ฐ€๋Šฅ์„ฑ์„ ์ž˜ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ธ์ด๊ธฐ์— ์ตœ๊ทผ ๋” ์ธ๊ธฐ๋ฅผ ์–ป๊ณ ์žˆ๋‹ค.
  • ํฐ ๋ชจ๋ธ์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ
    • ๋ฌผ๋ก  GPU์™€ ๊ฐ™์ด ๋น ๋ฅธ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•˜๋Š” ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ํŽธ๋ฆฌํ•ด์ง„ ๊ฒƒ๋„ NN ์ธ๊ธฐ์— ๊ธฐ์—ฌํ•˜์˜€๋‹ค.

 

 

4 /

 

deep learning๊ณผ ๊ด€๋ จ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋น ๋ฅธ ๊ฐœ์„ ์ด ๋”ฅ๋Ÿฌ๋‹์˜ ๋ฐœ์ „์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฐ”๊ฐ€ ํฌ๋‹ค.

๊ทธ ์˜ˆ๋กœ relu๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ธฐ์กด sigmoid์— ๋น„ํ•ด relu๋Š” gradient๊ฐ€ ์ž‘์•„์งˆ ํ™•๋ฅ ์ด ์ ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์ง•์€ ํ•™์Šต ์ˆ˜๋ ด ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•ด์ฃผ์—ˆ๋‹ค.  

์ด๋กœ ์ธํ•ด code - experiment ๋ผ๋Š” ์ˆœํ™˜์ ์ธ ๊ณผ์ •์„ ์—ฌ๋Ÿฌ์ฐจ๋ก€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

5 /

 

๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šตํ•˜๋Š” ๋ฐฉ๋ฒ•

  • 1) vectorization
    • ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šตํ•  ๋•Œ ์—ฌ๋Ÿฌ๊ฐœ์˜ for๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ–‰๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ for๋ฌธ ์—†์•ค๋‹ค.
    • ๋˜๋„๋ก ์ฝ”๋“œ ์„ค๊ณ„ ์‹œ for๋ฌธ์„ ์ง€์–‘ํ•˜๋„๋ก ํ•œ๋‹ค. ํ–‰๋ ฌ์— ์ต์ˆ™ํ•ด์ง€์ž!
  • 2) forward / backward propagation
    • cost๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด forward ์ˆ˜ํ–‰
    • cost์— ๋Œ€ํ•œ parameter์˜ ๋ฏธ๋ถ„๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด backward ์ˆ˜ํ–‰ (๋ฏธ๋ถ„๊ฐ’์„ ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค!)

 

 

6 /

 

๊ฐ•์˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ–‰๋ฒกํ„ฐ์˜ ๋‚˜์—ด์ด ์•„๋‹ˆ๋ผ, ์—ด๋ฒกํ„ฐ์˜ ๋‚˜์—ด๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

๋˜ํ•œ weight matrix๋ฅผ ์—ด๋ฒกํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ํ–‰๋ฒกํ„ฐ๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

 

 

7 /

 

๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€์—์„œ (y_hat-y)^2๋ฅผ loss๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , -y_i*log(p_i)-(1-y_i)*log(1-p_i)๋ฅผ loss๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€์—์„œ (y_hat-y)^2๋Š” non-convex๋ผ์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ local minima๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๋”ฐ๋ผ์„œ global minima๋ฅผ ์ฐพ์ง€ ๋ชป ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— convex function์ธ cross-entropy loss๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

8 /

 

loss = ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์˜ค์ฐจ ์ •๋ณด

cost = ์ „์ฒด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์˜ค์ฐจ ์ •๋ณด = loss์˜ ํ‰๊ท 

 

 

9 /

 

parameter๋Š” gradient descent algorithm์— ์˜ํ•ด ๊ฐฑ์‹ ๋œ๋‹ค.

๊ธฐ์šธ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๊ฐ€ํŒŒ๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค. (=cost๊ฐ€ ์ค„์–ด๋“œ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ weight update)

 

 

10 /

 

derivative๋Š” ๊ธฐ์šธ๊ธฐ์ด๊ณ , ํ•จ์ˆ˜์˜ ์œ„์น˜์— ๋”ฐ๋ผ derivative(๊ธฐ์šธ๊ธฐ)๋Š” ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

(x๊ฐ€ ์กฐ๊ธˆ ๋ณ€ํ–ˆ์„ ๋•Œ f(x)๋Š” x๊ฐ€ ์กฐ๊ธˆ ๋ณ€ํ•œ ๊ฒƒ ๋Œ€๋น„ ์–ผ๋งˆ๋‚˜ ๋ณ€ํ•  ์ง€!)

ํ•จ์ˆ˜์˜ derivative๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ๊ตฌ๊ธ€๋งํ•˜์ž. ์ด๊ฒƒ ๋•Œ๋ฌธ์— ๊ฒ๋จน์ง€ ๋ง์ž!

 

 

11 /

 

backpropagation์—์„œ๋Š” chain rule์„ ์‚ฌ์šฉํ•œ๋‹ค.

j = f(v), v=g(a)์˜ ๊ด€๊ณ„์— ์กด์žฌํ•œ๋‹ค๋ฉด

a๊ฐ€ ์•„์ฃผ ์กฐ๊ธˆ ๋ณ€ํ–ˆ์„ ๋•Œ j๊ฐ€ ๋ณ€ํ•˜๋Š” ์ •๋„๋Š”

= a๊ฐ€ ์กฐ๊ธˆ ๋ณ€ํ–ˆ์„ ๋•Œ v๊ฐ€ ๋ณ€ํ•˜๋Š” ์ •๋„*v๊ฐ€ (a์˜ ๋ณ€ํ™”๋กœ ์ธํ•ด) ์กฐ๊ธˆ ๋ณ€ํ–ˆ์„ ๋•Œ j๊ฐ€ ๋ณ€ํ•˜๋Š” ์ •๋„ (์ •ํ™•ํ•œ ํ‘œํ˜„์€ ์•„๋‹ˆ๋‹ค)

 

 

12 /

 

์ตœ์ ํ™”ํ•˜๊ณ  ์‹ถ์€ ํ•จ์ˆ˜์— ๋Œ€ํ•ด forward / backward ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ•™์Šต์ด ์ง„ํ–‰๋œ๋‹ค.

 

 

13 /

vectorize๋ฅผ ์ด์šฉํ•˜๋ฉด for-loop์—์„œ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.

๋‚ด์žฅ๋œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋ณ‘๋ ฌํ™” ์ˆ˜ํ–‰ํ•ด์ค€๋‹ค. for-loop ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž!

 

 

14 /

rank1์˜ np.array๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž. 

์˜๋„ํ•˜์ง€ ์•Š์€ ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

 

+ Recent posts