์ธ๊ณต์ง€๋Šฅ ์ •๋ฆฌ [๋ณธ๋ก 8] :: ์ธ๊ณต์‹ ๊ฒฝ๋ง ์„ค๊ณ„ ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ ์ •๋ฆฌ!
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/AI 2020. 2. 29. 19:20

์ธ๊ณต์‹ ๊ฒฝ๋ง ์„ค๊ณ„ ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ Network topology ๋„คํŠธ์›Œํฌ์˜ ๋ชจ์–‘ (feed forward, feed backward) Activation function ์ถœ๋ ฅ์˜ ํ˜•ํƒœ Objectives ๋ถ„๋ฅ˜? ํšŒ๊ท€? Loss function, Error๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ Optimizers weight update Generalization Overfitting ๋ฐฉ์ง€ 2. activation function ์ถœ๋ ฅ์˜ ํ˜•ํƒœ ๊ฒฐ์ • 1. one-hot vector ์—ฌ๋Ÿฌ ๊ฐ’ ์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ์ถœ๋ ฅ ex_ ์ˆซ์ž ์‹๋ณ„ 2. softmax function ํ•ด๋‹น ์ถœ๋ ฅ์ด ๋‚˜์˜ฌ ํ™•๋ฅ ๋กœ ํ‘œํ˜„ 3. objective function ๊ธฐํƒ€ ๋ชฉ์ ํ•จ์ˆ˜ Mean absolute error / mae Mean absolute percentag..

์ธ๊ณต์ง€๋Šฅ ์ •๋ฆฌ [๋ณธ๋ก 7] :: ๊นŠ์–ด์ง„ ์ธ๊ณต์‹ ๊ฒฝ๋ง์˜ ๋ฌธ์ œ์ ?
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/AI 2020. 2. 29. 19:07

๊นŠ์–ด์ง„ ์ธ๊ณต์‹ ๊ฒฝ๋ง์˜ ๋ฌธ์ œ์  Generalization : training์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ data์— ๋Œ€ํ•œ ์„ฑ๋Šฅ Data set Training set training์— ์‚ฌ์šฉํ•˜๋Š” data set Validation set ์ฃผ์–ด์ง„ data set ์ค‘ ๋นผ๋†“์•˜๋‹ค๊ฐ€ ์„ฑ๋Šฅ์„ ๊ฒ€์ฆํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” data set Test set ์ฃผ์–ด์ง€์ง€ ์•Š์•˜๋˜ ์ ‘ํ•œ ์  ์—†๋Š” data set ํ•™์Šต์ด training set์œผ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•™์Šต์„ ๋ฐ˜๋ณตํ•  ์ˆ˜๋ก training set์— ๋Œ€ํ•œ ์ •ํ™•๋„๋Š” ๋†’์•„์ง€๊ณ  ์˜ค๋ฅ˜์œจ์€ ๋‚ฎ์•„์ง„๋‹ค. ํ•˜์ง€๋งŒ validation set์— ๋Œ€ํ•œ ์˜ค๋ฅ˜์œจ์€ ๋‚ฎ์•„์ง€๋‹ค๊ฐ€ ๋†’์•„์ง€๋Š” ํ˜„์ƒ์„ ๋„๋Š”๋ฐ, ์ด๋Š” ํ•™์Šต์ด ๋„ˆ๋ฌด training set์—๋งŒ ์ ํ•ฉํ•˜๊ฒŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅผ training set์— overfitting(..

์ธ๊ณต์ง€๋Šฅ ์ •๋ฆฌ [๋ณธ๋ก 6] :: deep neural network์—์„œ์˜ backpropagation
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/AI 2020. 2. 10. 20:14

deep neural network์—์„œ์˜ backpropagation backpropagation ์›๋ž˜ backpropagation(์—ญ์ „ํŒŒ)๋Š” ํ•™์Šต ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ perceptron์—์„œ loss function์˜ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋œปํ•˜์ง€๋งŒ, ๋„“์€ ์˜๋ฏธ์—์„œ๋Š” ๊ธฐ์šธ๊ธฐ๋ฅผ ์ด์šฉํ•œ ํ•™์Šต ๋ฐฉ์‹์œผ๋กœ ์“ฐ์ธ๋‹ค. ์ฐธ๊ณ  : https://en.wikipedia.org/wiki/Backpropagation delta rule https://en.wikipedia.org/wiki/Delta_rule delta rule์˜ ์ •์˜์™€ ์ฆ๋ช… delta rule์€ backpropagation ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค. delta rule์€ ์™œ multi-layer์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š”๊ฐ€... ๋ณธ๋ก 5์—์„œ์™€ ๊ฐ™์ด ์ฒ˜์Œ์—๋Š” ์‹ ๊ฒฝ๋งํ•™์Šต์—์„œ d..

์ธ๊ณต์ง€๋Šฅ ์ •๋ฆฌ [๋ถ€๋ก] :: theta๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/AI 2020. 2. 10. 19:57

theta๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  ์œ„์˜ ๊ทธ๋ฆผ์€ theta๊ฐ€ ์—†์„ ๋•Œ์˜ ์—ฐ์‚ฐ์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋‹ค. ์ด ๋•Œ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๊ฐ€ sigmoid๋ผ๋ฉด ์ž…๋ ฅ์ด (0,0)์ผ ๋•Œ ์ถœ๋ ฅ์ด ๋‹ค๋ฅธ ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ์„๊นŒ? theta๊ฐ€ ์—†๋‹ค๋ฉด net์€ ์ž…๋ ฅ์ด (0,0)์ผ ๋•Œ ํ•ญ์ƒ 0์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ถœ๋ ฅ์€ sigmoid ํ•จ์ˆ˜๋ฅผ ๊ฑฐ์ณ ํ•ญ์ƒ 1/2 ์ด ๋‚˜์˜จ๋‹ค. (0,0)์˜ ์ž…๋ ฅ์—์„œ ๋‹ค๋ฅธ ์ถœ๋ ฅ์ด ๋‚˜์˜ค๊ฒŒ ํ•˜๋ ค๋ฉด sigmoid ํ•จ์ˆ˜๋ฅผ output์ถ•(y์ถ•) ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค. ์ด ์—ญํ• ์„ ์œ„ํ•ด์„œ theta๋Š” ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค! net = x1*w1 + x2*x2 + theta , O = f(net) = f(theta) ์ด๋ฏ€๋กœ theta ๋งŒํผ ๊ทธ๋ž˜ํ”„๋ฅผ net์ถ•์œผ๋กœ ์ด๋™ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์™ผ์ชฝ ๊ธฐ์กด์˜ sigmoid ํ•จ์ˆ˜์—์„œ (0..

์ธ๊ณต์ง€๋Šฅ ์ •๋ฆฌ [๋ณธ๋ก 5] :: ์‹ ๊ฒฝ๋ง์˜ ์›๋ฆฌ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/AI 2020. 2. 9. 00:04

์‹ ๊ฒฝ๋ง์˜ ์›๋ฆฌ ์ด์ œ multi-layer perceptron์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์ง€๋งŒ, ์ •ํ™•ํžˆ ๊ตฌ๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์•Œ์•„์•ผํ•  ๊ฒƒ์ด ์žˆ๋‹ค. ์ฃผ์–ด์ง„ input์„ ๊ฐ€์ง€๊ณ  ๊ณ„์‚ฐ์„ ํ•ด์„œ output์„ ๋‚ผ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, output ๊ฐ’์ด ์ฃผ์–ด์ง„ ์ •๋‹ต๊ณผ ๋‹ค๋ฅผ ๋•Œ ํ•™์Šตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์•„์ง ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•™์Šต์ด๋ž€ w๊ฐ’์„ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. w๊ฐ’์„ ์กฐ์ •ํ•˜๋Š” ํ•™์Šต์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋žœ๋ค, ์กฐ๊ธˆ์”ฉ ์˜ฎ๊ฒจ๋ณด๊ธฐ ์˜ ๋ฐฉ์‹๋ณด๋‹ค๋Š” ๋ฏธ๋ถ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. w์— ๋Œ€ํ•œ Error์˜ ๋ฏธ๋ถ„๊ฐ’์„ ๊ตฌํ•œ ํ›„ ๋ฐ˜๋Œ€์ชฝ์œผ๋กœ ์ผ์ •์น˜๋งŒํผ ์›€์ง์—ฌ์•ผ ํ•˜๋ฏ€๋กœ Error๋ฅผ w์˜ ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ณ , ์กฐ์ •๋˜๋Š” w์˜ ๊ฐ’์„ ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค. ๊ฒฐ๊ตญ error๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด w๊ฐ’์„ ์กฐ์ •ํ•˜๋Š” ๊ณผ์ •์— error์— ๋Œ€ํ•œ w์˜ ๋ฏธ๋ถ„๊ฐ’์ด ํ•„์š”..

์ธ๊ณต์ง€๋Šฅ ์ •๋ฆฌ [๋ถ€๋ก] :: Restricted Boltzmann Machine (RBM)
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/AI 2020. 2. 8. 23:45

Restricted Boltzmann machine (RBM) ๊ตฌ์„ฑ ๋‘๊ฐœ์˜ ์ธต(๊ฐ€์‹œ์ธต, ์€๋‹‰์ธต)์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๋‹จ์ผ ์‹ ๊ฒฝ๋ง ์‹ฌ์ธต ์‹ ๋ขฐ ์‹ ๊ฒฝ๋ง์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋กœ ์“ฐ์ž„ ๊ฐ ์ธต์˜ ๋…ธ๋“œ๋Š” ๋‹ค๋ฅธ ์ธต์˜ ๋…ธ๋“œ์™€ ๋ชจ๋‘ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๊ณ , ๊ฐ™์€ ์ธต์˜ ๋…ธ๋“œ๋ผ๋ฆฌ๋Š” ์—ฐ๊ฒฐx ์‹์œผ๋กœ ๊ณ„์‚ฐํ•˜๋ฉด ๋ชจ๋“  ์ž…๋ ฅ๋…ธ๋“œ๋ฅผ ์ด์šฉํ•œ ์‹์ด ์€๋‹‰์ธต ๋…ธ๋“œ์˜ ๊ฐ’์ด ๋จ ๋Œ€์นญ ์ด๋ถ„ ๊ทธ๋ž˜ํ”„ ๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ ๋น„์ง€๋„ํ•™์Šต ํ•™์Šต ์ค‘ backward sweep ์‹œ forward sweep ํ–ˆ์„ ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ธต๊ฐ„ ๋ชจ๋“  ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด์„œ ๊ฐ’์ด ๊ฑด๋„ˆ๊ฐ„๋‹ค. ์ฆ‰, ๊ฐ€์‹œ์ธต์˜ ๊ฐ’์€ ์€๋‹‰์ธต์˜ ๋ชจ๋“  ๊ฐ’์„ ๊ฐ€์ค‘์น˜๋ฅผ ๊ณฑํ•ด์„œ ๋”ํ•œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์˜ค์ฐจ๋Š” ์žฌ๊ตฌ์„ฑํ•œ ๊ฐ’๊ณผ ์ž…๋ ฅ๊ฐ’์˜ ์ฐจ์ด์ด๋‹ค. forward sweep w๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์ž…๋ ฅ v์— ๋Œ€ํ•œ ์€๋‹‰์ธต h์˜ ์กฐ๊ฑด๋ถ€ ํ™•๋ฅ  backward sw..

์ธ๊ณต์ง€๋Šฅ ์ •๋ฆฌ [๋ณธ๋ก 4] :: ๋”ฅ๋Ÿฌ๋‹์˜ ์‹œ์ž‘
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/AI 2020. 2. 1. 00:50

๋”ฅ๋Ÿฌ๋‹์˜ ์‹œ์ž‘ ์ด๋Ÿฌํ•œ multi-layer ์˜ forward-propagation ๊ณผ์ •์„ ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ณด๋ฉด, h1 = f(x11*w11+x12*w21) net = h1*w13+h2*w23 = f(x11*w11+x12*w21)*w13+f(x11*w12+x12*w22)*w23 ์—ฌ๊ธฐ์„œ f ์ฆ‰, activation fuction์ด linearํ•œ function์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๊ทธ๋ ‡๋‹ค๋ฉด f(x) = ax์˜ ํ˜•ํƒœ์ด๋ฏ€๋กœ, net = x11*a(w11*w13+w12*w23)+x12*a(w21*w13+w22*w23) ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ net์€ ๊ฐ€์žฅ ์ฒ˜์Œ์— ์ฃผ์–ด์ง„ input layer์—๋‹ค๊ฐ€ ์ƒ์ˆ˜๋ฅผ ๊ณฑํ•œ ๊ผด์ด๋ฏ€๋กœ one-layer๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์—ฌ๋Ÿฌ ๊ฐœ์˜ layer๋ฅผ ๊ฑฐ์ณค์Œ์—๋„ ์‰ฌ์šด ๋ฌธ์ œ๋กœ ..

์ธ๊ณต์ง€๋Šฅ ์ •๋ฆฌ [๋ณธ๋ก 3] :: ํ•™์Šต (feat. weight์˜ ์กฐ์ •)
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/AI 2020. 1. 31. 16:24

weight์˜ ๋ณ€ํ™” 1. ๋žœ๋ค ์‹ค์Šต one-layer perceptron weight๋ฅผ ๋žœ๋ค์œผ๋กœ ํ•™์Šตํ•˜๋Š” ํผ์…‰ํŠธ๋ก  ๋งŒ๋“ค๊ธฐ input, weight ๊ฐฏ์ˆ˜๋Š” ์ž…๋ ฅ๋ฐ›๊ธฐ output์€ 1๊ฐœ๋กœ ๊ณ ์ • /* 2020-01-28 W.HE one-layer perceptron */ #include #include #include main() { /* variable set */ int input_num; float* input; float* w; float output = 0; float answer = 3; int try_num = 0; /* input input_num */ printf("enter number of inputs\n"); scanf_s("%d", &input_num); /* memory allocat..