ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

์ถœ์ฒ˜ : ๊ธฐ๊ณ„ํ•™์Šต(Machine Learning, ๋จธ์‹ ๋Ÿฌ๋‹)์€ ์ฆ๊ฒ๋‹ค! Part 3

 

๊ธฐ๊ณ„ ํ•™์Šต(Machine Learning, ๋จธ์‹  ๋Ÿฌ๋‹)์€ ์ฆ๊ฒ๋‹ค! Part 3

๋”ฅ๋Ÿฌ๋‹(Deep Learning)๊ณผ ์ปจ๋ณผ๋ฃจ์…˜ ์‹ ๊ฒฝ๋ง(Convolutional Neural Network ๋˜๋Š” CNN)

medium.com

๋”ฅ๋Ÿฌ๋‹(Deep Learning)์— ๊ด€ํ•œ ์˜๋ฏธ๋Š”?

์ด๋ฒˆ์—๋Š” ๋”ฅ๋Ÿฌ๋‹์„ ์‚ฌ์šฉํ•ด ์‚ฌ์ง„ ์†์—์„œ ๊ฐ์ฒด๋ฅผ ์ธ์‹ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด„

- Google Photos์—์„œ ์‚ฌ์ง„ ์†์— ํฌํ•จ๋œ ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์›ํ•˜๋Š” ์‚ฌ์ง„์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ•

 

Google์—์„œ๋Š” ์‚ฌ์ง„์— ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์•„๋„ ์›ํ•˜๋Š” ์‚ฌ์ง„์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Œ

 

- ์ด ์›นํˆฐ์€ 3์‚ด์งœ๋ฆฌ ์•„์ด๋Š” ์ƒˆ์˜ ์‚ฌ์ง„์„ ์‰ฝ๊ฒŒ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์–ด๋„, 50๋…„ ์ด์ƒ ์ตœ๊ณ ์˜ ์ปดํ“จํ„ฐ ๊ณผํ•™์ž๋“ค์€ ์ปดํ“จํ„ฐ๋กœ ๊ฐ์ฒด๋ฅผ ์ธ์‹ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ–ˆ์œผ๋‚˜ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์คŒ

 

- ์ง€๋‚œ ๋ช‡ ๋…„ ์‚ฌ์ด, ์šฐ๋ฆฌ๋Š” ๋”ฅ ์ปจ๋ณผ๋ฃจ์…˜ ์‹ ๊ฒฝ๋ง(deep convolutional neural networks)์„ ์‚ฌ์šฉํ•ด ๊ฐ์ฒด ์ธ์‹์— ๋Œ€ํ•œ ์ ‘๊ทผ๋ฐฉ๋ฒ•์„ ๋ฐœ๊ฒฌ

 

์‹ฌํ”Œํ•˜๊ฒŒ ์‹œ์ž‘

์ƒˆ์˜ ์‚ฌ์ง„์„ ์ธ์‹ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ธฐ ์ „, ์†์œผ๋กœ ์“ด ์ˆซ์ž "8"๊ณผ ๊ฐ™์€ ์ข€ ๋” ์‹ฌํ”Œํ•œ ๊ฒƒ์„ ์ธ์‹ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

Part 2์—์„œ๋Š” ๋‹จ์ˆœํ•œ ๋‰ด๋ จ์„ ๋งŽ์ด ์—ฐ๊ฒฐํ•จ์œผ๋กœ์จ ์‹ ๊ฒฝ๋ง์ด ์–ด๋–ป๊ฒŒ ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ๋ฐฐ์›€

- ๋˜ํ•œ Machine Learning์ด๋ผ๋Š” ์•„์ด๋””์–ด๋Š” ๋™์ผํ•œ ์ผ๋ฐ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋กœ ์žฌ์‚ฌ์šฉํ•ด ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ

- ํ•„๊ธฐ์ฒด๋ฅผ ์ธ์‹ํ•˜๊ธฐ ์œ„ํ•ด ์œ„์˜ ์‹ ๊ฒฝ๋ง์„ ์ˆ˜์ •ํ•ด '8'๋งŒ์„ ์ธ์‹ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ

 

- Machine Learning์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ, ๊ทธ๊ฒƒ๋„ ์•„์ฃผ ๋งŽ์ด ์žˆ์„ ๋•Œ ์ž˜ ๋™์ž‘. ๊ทธ๋ ‡๊ธฐ์— ์†์œผ๋กœ ์“ฐ์—ฌ์ง„ ํ•„๊ธฐ์ฒด '8'์ด ์ •๋ง ๋งŽ์ด ํ•„์š”

- ๋‹คํ–‰ํžˆ ์—ฐ๊ตฌ์ž๋“ค์ด ์ด์™€ ๊ฐ™์€ ๋ชฉ์ ์„ ์œ„ํ•ด ํ•„๊ธฐ์ฒด ์ˆซ์ž์˜ MNIST ๋ฐ์ดํ„ฐ ์„ธํŠธ (MNIST data set of handwritten numbers)๋ฅผ ๋งŒ๋“ค์—ˆ์Œ. MNIST๋Š” ํ•˜๋‚˜ ๋‹น 18x18 ํ”ฝ์…€ ํฌ๊ธฐ์˜ ์ด๋ฏธ์ง€๋กœ 60,000๊ฐœ์˜ ํ•„๊ธฐ์ฒด ์ˆซ์ž ์ด๋ฏธ์ง€๋“ค์„ ์ œ๊ณต

MNIST ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ์žˆ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ 8 ์ด๋ฏธ์ง€

 

์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ชจ๋“  ๊ฒƒ์€ ๊ทธ์ € ์ˆซ์ž์ผ ๋ฟ์ž…๋‹ˆ๋‹ค

์šฐ๋ฆฌ์˜ neural์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ... ์–ด๋–ป๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ๊ณต๊ธ‰ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

→ neural์€ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ, ์ปดํ“จํ„ฐ์—์„œ ์ด๋ฏธ์ง€๋Š” ๊ฐ๊ฐ์˜ ํ”ฝ์…€์ด ์–ผ๋งˆ๋‚˜ ์–ด๋‘์šด์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž ๊ทธ๋ฆฌ๋“œ

 

์šฐ๋ฆฌ์˜ neural์— ์ด๋ฏธ์ง€๋ฅผ ๊ณต๊ธ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 18x18 ํ”ฝ์…€ ์ด๋ฏธ์ง€๋ฅผ 324๊ฐœ์˜ ์ˆซ์ž๋“ค์˜ ๋ฐฐ์—ด๋กœ ์ƒ๊ฐ

324๊ฐœ์˜ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด, ์šฐ๋ฆฌ์˜ ์‹ ๊ฒฝ๋ง์ด 324๊ฐœ์˜ ์ž…๋ ฅ ๋…ธ๋“œ๋ฅผ ๊ฐ–๋„๋ก ๋ณ€๊ฒฝ

neural์—๋Š” ๋‘๊ฐœ์˜ ์ถœ๋ ฅ์ด ์žˆ์Œ

1) ์ด๋ฏธ์ง€๊ฐ€ '8์ผ ๊ฐ€๋Šฅ์„ฑ

2) ์ด๋ฏธ์ง€๊ฐ€ '8'์ด ์•„๋‹ ๊ฐ€๋Šฅ์„ฑ

- ์ธ์‹ํ•˜๋ ค๋Š” ๊ฐœ๋ณ„ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ์ถœ๋ ฅ์„ ๊ฐ€์ง์œผ๋กœ์จ, ์šฐ๋ฆฌ๋Š” neural์„ ์ด์šฉํ•ด ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Œ

 

์ด์ œ ์šฐ๋ฆฌ์˜ neural์€ ํ›จ์”ฌ ์ปค์กŒ์œผ๋‚˜(3๊ฐœ ๋Œ€์‹  324๊ฐœ์˜ ์ž…๋ ฅ) ๋ชจ๋“  ์ตœ์‹  ์ปดํ“จํ„ฐ๋Š” ์ˆœ์‹๊ฐ„์— ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” neural์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

 

์ด์ œ neural์„ '8'๊ณผ '8'์ด ์•„๋‹Œ ์ด๋ฏธ์ง€๋กœ ํ›ˆ๋ จ์‹œ์ผœ์„œ ์ด๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š”๊ฒƒ์ด ๋‚จ์Œ

๋งŒ์•ฝ '8'์„ ์ œ๊ณตํ•  ๋•Œ ๊ทธ ์ด๋ฏธ์ง€๊ฐ€ '8'์ผ ํ™•๋ฅ ์€ 100%์ด๊ณ  '8'์ด ์•„๋‹ ํ™•๋ฅ ์€ 0%๊ฐ€ ๋˜์–ด์•ผ ํ•จ

 

ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ

ํ›ˆ๋ จ์ด ๋๋‚˜๋ฉด '8'์ด๋ผ๋Š” ๊ทธ๋ฆผ์„ ๊ฝค ๋†’์€ ์ •ํ™•๋„๋กœ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” neural์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ

 

ํŽธํ˜‘ํ•œ ์ƒ๊ฐ

- ํ”ฝ์…€์„ neural์— ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ด๋ฏธ์ง€ ์ธ์‹์„ ์ œ์ž‘ํ•˜๋Š”๋ฐ ์ •๋ง ํšจ๊ณผ์ 

Machine Learning์€ ๋งˆ์ˆ ์ธ๊ฐ€์š”?

→ ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

 

์ผ๋‹จ ์šฐ๋ฆฌ์˜ '8' ์ธ์‹๊ธฐ๊ฐ€ ๊ธ€์ž๊ฐ€ ์ด๋ฏธ์ง€ ์ค‘๊ฐ„์— ์žˆ๋Š” ๋‹จ์ˆœํ•œ ์ด๋ฏธ์ง€์—์„œ๋Š” ์ž˜ ์ž‘๋™

 

ํ•˜์ง€๋งŒ ๋ฌธ์ž๊ฐ€ ์ด๋ฏธ์ง€์˜ ์ค‘์‹ฌ์— ์™„๋ฒฝํ•˜๊ฒŒ ๋งž์ง€ ์•Š์œผ๋ฉด ์ „ํ˜€ ๋™์ž‘ํ•˜์ง€ ์•Š์Œ

 

๊ทธ ์ด์œ ๋Š” ์šฐ๋ฆฌ neural์ด '8'์ด ์™„๋ฒฝํ•˜๊ฒŒ ์ค‘์‹ฌ์— ์žˆ๋Š” ํŒจํ„ด๋งŒ์„ ๋ฐฐ์› ๊ธฐ ๋•Œ๋ฌธ... '8'์ด ์ค‘์‹ฌ์—์„œ ๋ฒ—์–ด๋‚œ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์ „ํ˜€ ์•Œ ์ˆ˜ ์—†์Œ. ๋‹จ์ง€ ํ•˜๋‚˜์˜ ํŒจํ„ด๋งŒ ์•Œ๊ณ  ์žˆ์Œ

 

์ด๋Ÿฐ ๊ฒƒ์€ ํ˜„์‹ค์„ธ๊ณ„์—์„œ ๋ฌด์“ธ๋ชจ. ํ˜„์‹ค์„ธ๊ณ„์˜ ๋ฌธ์ œ๋Š” ๊ฒฐ์ฝ” ๋ช…ํ™•ํ•˜๊ณ  ๋‹จ์ˆœํ•˜์ง€ ์•Š์Œ. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” '8'์ด ์™„๋ฒฝํ•˜๊ฒŒ ์ค‘์‹ฌ์— ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ neural์„ ๋™์ž‘์‹œํ‚ฌ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด์•ผ ํ•จ

 

๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…(Brute Force) ์•„์ด๋””์–ด #1 : ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ(Sliding Window)๋กœ ์ฐพ๊ธฐ

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ด๋ฏธ์ง€์˜ ์ค‘์•™์— ์œ„์น˜ํ•œ '8'์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ฌ

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฏธ์ง€๋ฅผ ์ž‘์€ ์„น์…˜์œผ๋กœ ๋‚˜๋ˆ„์–ด '8'์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ํ•œ๋ฒˆ์— ํ•œ ์„น์…˜์”ฉ ๋ชจ๋‘ ์Šค์บ”ํ•˜๋Š” ๋ฐฉ๋ฒ•์€?

→ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ(sliding window)๋ผ๊ณ  ํ•จ

- ๋˜ํ•œ ์ด๊ฒƒ์€ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…(brute force) ์†”๋ฃจ์…˜

- ์ผ๋ถ€ ์ œํ•œ๋œ ๊ฒฝ์šฐ์—๋Š” ์ž˜ ๋™์ž‘ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋งค์šฐ ๋น„ํšจ์œจ์ . ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ๊ณ„์†ํ•ด์„œ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ

 

๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…(Brute Force) ์•„์ด๋””์–ด # 2 : ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ์™€ ๋”ฅ ์‹ ๊ฒฝ๋ง(Deep Neural Net)

์ด๋ฏธ์ง€ ์•ˆ์— ์—ฌ๋Ÿฌ ํฌ๊ธฐ์˜ ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ๋Š” '8'์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋กœ ํ›ˆ๋ จ์‹œํ‚ค๋Š” ๊ฒƒ์€ ์–ด๋–จ๊นŒ?

 

- ์ด๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•  ํ•„์š” ์—†์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด ์ด๋ฏธ์ง€๋‚ด์˜ ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ๋Š” '8' ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋จ

 

- ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ›ˆ๋ จ ์ด๋ฏธ์ง€์˜ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ๋งŒ๋“ค์–ด ํ•ฉ์„ฑ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ(Synthetic Training Data)๋ฅผ ๋งŒ๋“ฌ

- ์ด๋Ÿฌํ•œ ํ…Œํฌ๋‹‰์„ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌดํ•œ์ • ๊ณต๊ธ‰ ๊ฐ€๋Šฅ

- ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๋‹น์—ฐํžˆ neural์ด ํ•ด๊ฒฐํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์ง. ํ•˜์ง€๋งŒ ๋„คํŠธ์›Œํฌ๋ฅผ ๋” ํฌ๊ฒŒ ๋งŒ๋“ค์–ด ๋” ๋ณต์žกํ•œ ํŒจํ„ด์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋„๋ก ํ•จ์œผ๋กœ์จ ์ด๋ฅผ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ์Œ

 

- ์‹ ๊ฒฝ๋ง์„ ํฌ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ๋‹จ์ง€ ๋…ธ๋“œ์˜ ๋ ˆ์ด์–ด๋ฅผ ์ค‘์ฒฉํ•˜๋ฉด ๋จ

 

- ์ „ํ†ต์ ์ธ ์‹ ๊ฒฝ๋ง(traditional neural network)๋ณด๋‹ค ๋” ๋งŽ์€ ๊ณ„์ธต(layers)์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ "๋”ฅ ์‹ ๊ฒฝ๋ง(deep neural network)"์ด๋ผ๊ณ  ๋ถ€๋ฆ„

 

- ์ด ์•„์ด๋””์–ด๋Š” 1960๋…„๋Œ€ ๋ง๋ถ€ํ„ฐ ์žˆ์—ˆ์ง€๋งŒ ์ตœ๊ทผ๊นŒ์ง€๋„ ์ด๋Ÿฌํ•œ ๋Œ€๊ทœ๋ชจ neural์„ ํ›ˆ๋ จํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๋А๋ ธ์Œ

- ๊ทธ๋ฆฌ๋‚˜ ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ ํ”„๋กœ์„ธ์„œ ๋Œ€์‹ ์— (๋งคํŠธ๋ฆญ์Šค ๊ณฑ์…ˆ์„ ์ •๋ง ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ) 3D ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ฒŒ ๋˜๋ฉด์„œ ๋Œ€๊ทœ๋ชจ neural์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ‘์ž๊ธฐ ์‹ค์šฉ์ ์ด ๋˜์—ˆ์Œ

- ์‹ค์ œ๋กœ ์˜ค๋ฒ„์›Œ์น˜๋ฅผ ํ”Œ๋ ˆ์ดํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์™„์ „ํ•˜๊ฒŒ ๋™์ผํ•œ NVIDIA GeForce GTX 1080 ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด neural์„ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ํ›ˆ๋ จ์‹œํ‚ค๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ

 

- ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์†”๋ฃจ์…˜์ด ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹˜

 

- ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ผ๊ณ  ๋ณด๊ณ  ๊ทธ๋ฆผ์˜ ์œ„์ชฝ์— ์žˆ๋Š” '8'์„ ์ธ์‹ํ•˜๋„๋ก neural์„ ํ›ˆ๋ จ์‹œํ‚ค๋Š” ๊ฒƒ๊ณผ ์•„๋ž˜์ชฝ์— ์žˆ๋Š” '8'์„ ๋ณ„๋„๋กœ ์ธ์‹ํ•˜๋„๋ก ํ›ˆ๋ จ์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ง์ด ๋˜์ง€ ์•Š์Œ

- '8'์ด ์–ด๋А ์œ„์น˜์— ์žˆ๋”๋ผ๋„ ์ถ”๊ฐ€์ ์ธ ํ›ˆ๋ จ ์—†์ด ๊ฐ™์€ ๊ฒƒ์ด๋ผ๊ณ  ์ธ์‹ํ•  ๋งŒํผ ํ˜„๋ช…ํ•œ neural์„ ๋งŒ๋“ค ๋ฐฉ๋ฒ•์€..?

 

๊ทธ ํ•ด๊ฒฐ์ฑ…์ด ๋ฐ”๋กœ ์ปจ๋ณผ๋ฃจ์…˜(Convolution) ์ž…๋‹ˆ๋‹ค

์ธ๊ฐ„์ธ ์šฐ๋ฆฌ๋Š” ์‚ฌ์ง„์— ๊ณ„์ธต ๊ตฌ์กฐ ๋˜๋Š” ๊ฐœ๋… ๊ตฌ์กฐ(hierarchy or conceptual structure)์ด ์žˆ์Œ์„ ์ง๊ด€์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ์Œ

์›์ž‘์ž์˜ ์•„๋“œ๋‹˜ ์‚ฌ์ง„.. ๊ท€์—ฝ๋‹ค

์ธ๊ฐ„์œผ๋กœ์„œ ์šฐ๋ฆฌ๋Š” ์ด ๊ทธ๋ฆผ์—์„œ ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ์ฆ‰์‹œ ์ธ์‹

  • ๋•…์€ ์ž”๋””์™€ ์ฝ˜ํฌ๋ฆฌํŠธ๋กœ ๋ฎํ˜€ ์žˆ์Œ
  • ํ•œ ์•„์ด๊ฐ€ ์žˆ์Œ
  • ์ด ์•„์ด๋Š” bouncy horse์— ์•‰์•„ ์žˆ์Œ
  • bouncy horse๋Š” ์ž”๋”” ์œ„์— ์žˆ์Œ

- ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€, ์šฐ๋ฆฌ๋Š” ์•„์ด๊ฐ€ ์–ด๋–ค ๋ฉด(surface) ์œ„์— ์žˆ๋”๋ผ๋„ ์•„์ด๋ผ๋Š” ๊ฐœ๋…์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์Œ. ์šฐ๋ฆฌ๋Š” ์•„์ด๊ฐ€ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๋ฉด(surface)์— ๋Œ€ํ•ด์„œ ์•„์ด๋ผ๋Š” ๊ฐœ๋…์˜ ์ธ์‹์„ ๋‹ค์‹œ ๋ฐฐ์šธ ํ•„์š”๋Š” ์—†์Œ

*surface : ๊ณ„์ธต ๊ตฌ์กฐ์˜ ํ•˜๋‚˜์˜ ๊ณ„์ธต ๋˜๋Š” ๋ ˆ์ด์–ด ์˜๋ฏธ

 

๊ทธ๋Ÿฌ๋‚˜ ๋‹น์žฅ ์šฐ๋ฆฌ์˜ neural์€ ์ด๋Ÿฐ ์ผ์„ ํ•  ์ˆ˜ ์—†์Œ

- ํ˜„์žฌ๋Š” ์ด๋ฏธ์ง€์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ์žˆ๋Š” '8'์„ ์„œ๋กœ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฒƒ์ด๋ผ ์ธ์‹, ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์œ„์น˜์—์„œ ๊ฐ ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์„ ๋ชจ๋‘ ๋‹ค์‹œ ํ•™์Šตํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋œป

 

- ์šฐ๋ฆฌ๋Š” '8'์ด ๊ทธ๋ฆผ์—์„œ ์–ด๋””์— ๋‚˜ํƒ€๋‚˜๋”๋ผ๋„ '8'์ด๋ผ๋Š” ์ด๋™ ๋ถˆ๋ณ€์„ฑ(translation invariance)์„ ์šฐ๋ฆฌ์˜ ์‹ ๊ฒฝ๋ง์ด ์ดํ•ดํ•˜๋„๋ก ํ•ด์•ผ ํ•จ

 

- ์ปจ๋ณผ๋ฃจ์…˜(Convolution)์ด๋ผ ๋ถ€๋ฅด๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ

- ์ปจ๋ณผ๋ฃจ์…˜์€ ์ปดํ“จํ„ฐ ๊ณผํ•™๊ณผ ์ƒ๋ฌผํ•™์—์„œ ๋ถ€๋ถ„์ ์œผ๋กœ ์˜๊ฐ์„ ๋ฐ›์€ ์•„์ด๋””์–ด

 

์ปจ๋ณผ๋ฃจ์…˜(Convolution)์˜ ๋™์ž‘ ๋ฐฉ์‹

์šฐ๋ฆฌ์˜ ์‹ ๊ฒฝ๋ง์— ์ „์ฒด ์ด๋ฏธ์ง€๋ฅผ ํ•œ ๊ฐœ์˜ ๊ทธ๋ฆฌ๋“œ๋กœ์จ ์ „์ฒด ์ด๋ฏธ์ง€๋ฅผ ๊ณต๊ธ‰ํ•˜๋Š” ๋Œ€์‹ ์—, ๊ฐ์ฒด๋Š” ๊ทธ๋ฆผ์˜ ์–ด๋””์—์„œ ๋‚˜ํƒ€๋‚˜๋”๋ผ๋„ ๋™์ผํ•œ ๊ฒƒ์ด๋ผ๋Š” ์•„์ด๋””์–ด๋ฅผ ํ™œ์šฉํ•ด์„œ ํ›จ์”ฌ ๋” ๋˜‘๋˜‘ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๊ฒƒ

 

 

Step 1: ์ด๋ฏธ์ง€๋ฅผ ์ค‘์ฒฉ๋œ ์ด๋ฏธ์ง€ ํƒ€์ผ๋“ค๋กœ ๋‚˜๋ˆ„๊ธฐ

์•ž์„  ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๊ฒ€์ƒ‰๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ, ์›๋ณธ ์ด๋ฏธ์ง€ ์ „์ฒด์— ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋ฅผ ์ ์šฉํ•ด์„œ ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณ„๋„์˜ ์ž‘์€ ๊ทธ๋ฆผ ํƒ€์ผ๋กœ ์ €์žฅ

 

์ด๋ ‡๊ฒŒ ํ•ด์„œ, ์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ ๋™์ผํ•œ ํฌ๊ธฐ์˜ ์ž‘์€ ์ด๋ฏธ์ง€ ํƒ€์ผ 77๊ฐœ๋กœ ๋ณ€ํ™˜

 

Step 2: ๊ฐ ์ด๋ฏธ์ง€ ํƒ€์ผ์„ ์ž‘์€ ์‹ ๊ฒฝ๋ง์— ์ œ๊ณต(feed)ํ•˜๊ธฐ

์•ž์„œ ์šฐ๋ฆฌ๋Š” '8'์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋ฅผ ์‹ ๊ฒฝ๋ง์— ์ œ๊ณต

์—ฌ๊ธฐ์„œ๋„ ๋˜‘๊ฐ™์€ ์ž‘์—…์„ ํ•  ๊ฒƒ์ž„. ๋‹ค๋งŒ ๊ฐ ๊ฐœ๋ณ„ ์ด๋ฏธ์ง€ ํƒ€์ผ์— ๋Œ€ํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ

ํ•œ๋ฒˆ์— ํ•œ๊ฐœ์˜ ํƒ€์ผ์— ๋Œ€ํ•ด 77๋ฒˆ ๋ฐ˜๋ณต

ํ•˜์ง€๋งŒ ํ•œ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋ณ€ํ™”๊ฐ€ ์žˆ์Œ : ์šฐ๋ฆฌ๋Š” ๋™์ผํ•œ ์›๋ณธ ์ด๋ฏธ์ง€์˜ ๋ชจ๋“  ๋‹จ์ผ ํƒ€์ผ์— ๋Œ€ํ•ด ๋™์ผํ•œ ์‹ ๊ฒฝ๋ง ๊ฐ€์ค‘์น˜(same neural network weights)๋ฅผ ์œ ์ง€ํ•  ๊ฒƒ

- ๋‹ค์‹œ ๋งํ•ด์„œ, ๋ชจ๋“  ์ด๋ฏธ์ง€ ํƒ€์ผ์„ ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰

- ์–ด๋–ค ํƒ€์ผ์— ๋ฌด์—‡์ธ๊ฐ€ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์ด ๋‚˜ํƒ€๋‚˜๋ฉด, ๊ทธ ํƒ€์ผ์„ ํฅ๋ฏธ์žˆ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ‘œ์‹œํ•  ๊ฒƒ

 

Step 3: ๊ฐ ํƒ€์ผ์— ๋Œ€ํ•œ ๊ฒฐ๊ฐ€๋ฅผ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ธฐ

์›๋ณธ ํƒ€์ผ์˜ ๋ฐฐ์—ด ํ˜•ํƒœ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ์‹ถ์ง€๋Š” ์•Š์Œ. ๋”ฐ๋ผ์„œ ๊ฐ ํƒ€์ผ์„ ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์›๋ณธ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ๋™์ผํ•œ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๊ทธ๋ฆฌ๋“œ์— ์ €์žฅ

๋‹ค์‹œ ๋งํ•ด์„œ, ํ•˜๋‚˜์˜ ํฐ ์ด๋ฏธ์ง€๋กœ ์‹œ์ž‘ํ•ด์„œ ์›๋ž˜ ์ด๋ฏธ์ง€์˜ ์–ด๋А ๋ถ€๋ถ„์ด ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด์ง€๋ฅผ ๊ธฐ๋กํ•œ ์กฐ๊ธˆ ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์ง„ ๋ฐฐ์—ด์„ ์–ป๊ฒŒ ๋จ

 

Step 4: ์‹œ๋ฃŒ ์ฑ„์ทจํ•˜๊ธฐ

Step 3์˜ ์›๋ณธ ์ด๋ฏธ์ง€์˜ ์–ด๋А ๋ถ€๋ถ„์ด ํฅ๋ฏธ๋กœ์šด์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฐ์—ด์„ ์–ป์€ ๊ฒƒ. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฐฐ์—ด๋„ ์—ฌ์ „ํžˆ ๋„ˆ๋ฌด ํผ

- ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ๋งฅ์Šค-ํ’€๋ง(max pooling)์ด๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ์‹œ๋ฃŒ ์ฑ„์ทจ

 

์šฐ๋ฆฌ๋Š” ๊ฒฐ๊ณผ ๋ฐฐ์—ด์„ 2x2 ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ๊ฐ์—์„œ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋งŒ์„ ์ทจํ•ฉ

 

- ๊ฐ 2x2 ์‚ฌ๊ฐํ˜• ๊ฒฉ์ž(square grid)๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” 4๊ฐœ์˜ ์ž…๋ ฅ ํƒ€์ผ์—์„œ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์„ ์ฐพ์œผ๋ฉด, ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ๋„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ

- ์ด๋ฅผ ํ†ตํ•ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ

 

๋งˆ์ง€๋ง‰ Step: ์˜ˆ์ธกํ•˜๊ธฐ

์ง€๊ธˆ๊นŒ์ง€ ์ปค๋‹ค๋ž€ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์ƒ๋‹นํžˆ ์ž‘์€ ๋ฐฐ์—ด๋กœ ์ค„์ž„

 

- ์ด ๋ฐฐ์—ด์€ ๊ฒฐ๊ตญ ์ˆซ์ž๋“ค์˜ ์ง‘ํ•ฉ์ผ ๋ฟ. ๋”ฐ๋ผ์„œ ์ด์ œ ์šฐ๋ฆฌ๋Š” ์ด ์ž‘์€ ๋ฐฐ์—ด์„ ๋‹ค๋ฅธ ์‹ ๊ฒฝ๋ง์— ์ œ๊ณตํ•  ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ

- ์ตœ์ข…์‹ ๊ฒฝ๋ง์ด ์ด๋ฏธ์ง€๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ๋˜๋Š” ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•ด์ค„ ๊ฒƒ. ์•ž์„  ์ปจ๋ณผ๋ฃจ์…˜ ๋‹จ๊ณ„(Step)๋“ค๊ณผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ์™„์ „ํžˆ ์—ฐ๊ฒฐ๋œ ๋ง(fully connected network)๋ผ ๋ถ€๋ฅด๊ฒ ์Œ!

 

์ •๋ฆฌํ•˜์ž๋ฉด, ์‹œ์ž‘์—์„œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ „์ฒด 5๋‹จ๊ณ„์˜ ๊ฒฝ๋กœ(popeline)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Œ

 

๋” ๋งŽ์€ ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ

์šฐ๋ฆฌ์˜ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๊ฒฝ๋กœ(popeline)๋Š” ๋‹ค์Œ๊ณ  ๊ฐ™์€ ์ผ๋ จ์˜ ๋‹จ๊ณ„๋“ค๋กœ ์ด๋ฃจ์–ด์ง: ์ปจ๋ณผ๋ฃจ์…˜(convolution) ๋งฅ์Šค-ํ’€๋ง(max-pooling), ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰ ์™„์ „ํžˆ ์—ฐ๊ฒฐ๋œ ๋ง(fully-connected network)

 

- ํ˜„์‹ค ์„ธ๊ณ„์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ๋Š” ์ด๋Ÿฌํ•œ ๋‹จ๊ณ„๋ฅผ ์›ํ•˜๋Š”๋งŒํผ ๋งŽ์ด ์กฐํ•ฉํ•˜๊ณ  ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ์Œ!

- 2๊ฐœ, 3๊ฐœ ๋˜๋Š” ์‹ฌ์ง€์–ด 10๊ฐœ์˜ ์ปจ๋ณผ๋ฃจ์…˜ ๋ ˆ์ด์–ด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ

- ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋А ๋‹จ๊ณ„์—์„œ๋‚˜ max-pooling์„ ์‹คํ–‰ํ•˜๋ฉด ๋จ

 

- ๊ธฐ๋ณธ ์•„์ด๋””์–ด๋Š” ํฐ ์ด๋ฏธ์ง€๋กœ ์‹œ์ž‘ํ•ด์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๋‹จ๊ณ„์ ์œผ๋กœ ๋ฐ˜๋ณตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•ด ๊ฐ€๋Š” ๊ฒƒ

- ๋” ๋งŽ์€ ์ปจ๋ณผ๋ฃจ์…˜ ๋‹จ๊ณ„๋ฅผ ๊ฐ€์ ธ๊ฐˆ์ˆ˜๋ก, ๋‹น์‹ ์˜ ์‹ ๊ฒฝ๋ง์€ ํ•™์Šต์„ ํ†ตํ•ด ๋”์šฑ ๋ณต์žกํ•œ ํ˜•์ƒ์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์Œ

 

- ex) ์ฒซ ๋ฒˆ์งธ ์ปจ๋ณผ๋ฃจ์…˜ ๋‹จ๊ณ„์—์„œ๋Š” ๋‚ ์นด๋กœ์šด ๋ชจ์„œ๋ฆฌ๋ฅผ ์ธ์‹ํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๊ณ , ๋‘ ๋ฒˆ์งธ ์ปจ๋ณผ๋ฃจ์…˜ ๋‹จ๊ณ„์—์„œ๋Š” ์ด ๋‚ ์นด๋กœ์šด ๋ชจ์„œ๋ฆฌ์— ๋Œ€ํ•œ ์ง€์‹์„ ์‚ฌ์šฉํ•ด์„œ ๋ถ€๋ฆฌ๋ฅผ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์„ธ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ๋Š” ๋ถ€๋ฆฌ์— ๋Œ€ํ•œ ์ง€์‹ ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ์ „์ฒด ์ƒˆ๋ฅผ ์ธ์‹ํ•  ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ

 

๋”ฅ ์ปจ๋ณผ๋ฃจ์…˜ ๋ง

- ์œ„ ๊ทธ๋ฆผ์€ 224x224 ํ”ฝ์…€ ์ด๋ฏธ์ง€์—์„œ ์‹œ์ž‘ํ•ด์„œ ์ปจ๋ณผ๋ฃจ์…˜๊ณผ ๋งฅ์Šค ํ’€๋ง์„ ๋‘๋ฒˆ ์ ์šฉํ•œ ๋‹ค์Œ ์ปจ๋ณผ๋ฃจ์…˜์„ ์ถ”๊ฐ€๋กœ 3๋ฒˆ ๋” ์ ์šฉ, ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๋งฅ์Šค ํ’€๋ง์„ ์ ์šฉํ•œ ๋‹ค์Œ ๋‘ ๋ฒˆ์˜ ์™„์ „ํžˆ ์—ฐ๊ฒฐ๋œ ๋ง์˜ ๋‹จ๊ณ„(layers)๋ฅผ ์ ์šฉ

- ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ์ด๋ฏธ์ง€๊ฐ€ 1000๊ฐœ์˜ ๋ฒ”์ฃผ ์ค‘ ํ•˜๋‚˜๋กœ ๋ถ„๋ฅ˜๋˜๋Š” ๊ฒƒ

 

์ •ํ™•ํ•œ ์‹ ๊ฒฝ๋ง ๊ตฌ์ถ•ํ•˜๊ธฐ

๊ทธ๋Ÿฐ๋ฐ ์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜๊ธฐ(image classifier)๊ฐ€ ์ž˜ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์–ด๋–ค ๋‹จ๊ณ„๋“ค์„ ๊ฒฐํ•ฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์„๊นŒ์š”?

→ ๋งŽ์€ ์‹คํ—˜๊ณผ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋‹ต์„ ์–ป์„ ์ˆ˜ ์žˆ์Œ. ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์ ์˜ ๊ตฌ์กฐ์™€ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ฐพ๊ธฐ๊นŒ์ง€ ์–ด์ฉŒ๋ฉด 100๊ฐœ์˜ ์‹ ๊ฒฝ๋ง์„ ํ›ˆ๋ จ์‹œ์ผœ์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Œ. Machine Learning์—๋Š” ๋งŽ์€ ์‹œํ–‰ ์ฐฉ์˜ค๊ฐ€ ๋’ค๋”ฐ๋ฆ„

 

์ƒˆ ๋ถ„๋ฅ˜๊ธฐ ๋งŒ๋“ค๊ธฐ

์ด์ œ ์šฐ๋ฆฌ๋Š” ์‚ฌ์ง„์ด ์ƒˆ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ

 

ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”. ๋ฌด๋ฃŒ CIFAR10 ๋ฐ์ดํ„ฐ ์„ธํŠธ์—๋Š” 6,000์žฅ์˜ ์ƒˆ ์‚ฌ์ง„๊ณผ 52,000์žฅ์˜ ์ƒˆ๊ฐ€ ์•„๋‹Œ ์‚ฌ์ง„์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ. ๊ทธ๋Ÿฌ๋‚˜ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด 12,000์žฅ์˜ ์ƒˆ ์‚ฌ์ง„์ด ์žˆ๋Š” Caltech-UCSD Birds-200-2011 ๋ฐ์ดํ„ฐ ์„ธํŠธ๋„ ์ถ”๊ฐ€ํ•  ๊ฒƒ

 

ํ•ฉ์นœ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ์žˆ๋Š” ์ƒˆ๋“ค ์‚ฌ์ง„ ์ค‘ ์ผ๋ถ€:

 

52,000์žฅ์˜ ์ƒˆ๊ฐ€ ์•„๋‹Œ ์‚ฌ์ง„ ์ค‘ ์ผ๋ถ€:

 

์ด ๋ฐ์ดํ„ฐ ์„ธํŠธ๋Š” ์šฐ๋ฆฌ์˜ ๋ชฉ์ ์— ๋งž๊ฒŒ ์ž˜ ๋™์ž‘ํ•˜๊ฒ ์ง€๋งŒ, 72,000๊ฐœ์˜ ์ €ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€๋Š” ํ˜„์‹ค ์„ธ๊ณ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์—ฌ์ „ํžˆ ์ž‘์€ ๋ฐ์ดํ„ฐ. Google ์ˆ˜์ค€์˜ ์„ฑ๋Šฅ์„ ์›ํ•œ๋‹ค๋ฉด ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๊ณ ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€๊ฐ€ ํ•„์š”. Machine Learning์—์„œ ๋” ๋‚˜์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•˜๋Š” ๊ฒƒ์ด ์–ธ์ œ๋‚˜ ๋” ์ค‘์š”. ์ด๋Š” ํ˜„์žฌ Google์ด ๋ฌด์ œํ•œ ์‚ฌ์ง„ ์ €์žฅ ์šฉ๋Ÿ‰์„ ์ œ๊ณตํ•˜๋Š” ์ด์œ 

 

์ƒˆ ๋ถ„๋ฅ˜๊ธฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด TFLearn์„ ์‚ฌ์šฉ

- TFlearn์€ ๋‹จ์ˆœํ™” ๋œ API๋ฅผ ์ œ๊ณตํ•˜๋Š” Google์˜ TransorFlow ๋”ฅ๋Ÿฌ๋‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ž˜ํผ(wrapper)

- ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ์‹ ๊ฒฝ๋ง ๊ณ„์ธต์„ ์ •์˜ํ•˜๋Š”๋ฐ ๋‹จ ๋ช‡ ์ค„์˜ ์ฝ”๋“œ๋งŒ ์ž‘์„ฑํ•˜๋ฉด ๋˜๋Š” ์ˆ˜์ค€์œผ๋กœ ์ปจ๋ณผ๋ฃจ์…˜ ์‹ ๊ฒฝ๋ง์„ ์œ„ํ•œ ๋„คํŠธ์›Œํฌ ์ž‘์„ฑ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ

 

์‹ ๊ฒฝ๋ง์„ ์ •์˜ํ•˜๊ณ  ํ›ˆ๋ จ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ:

# -*- coding: utf-8 -*-

"""
Based on the tflearn example located here:
https://github.com/tflearn/tflearn/blob/master/examples/images/convnet_cifar10.py
"""
from __future__ import division, print_function, absolute_import

# Import tflearn and some helpers
import tflearn
from tflearn.data_utils import shuffle
from tflearn.layers.core import input_data, dropout, fully_connected
from tflearn.layers.conv import conv_2d, max_pool_2d
from tflearn.layers.estimator import regression
from tflearn.data_preprocessing import ImagePreprocessing
from tflearn.data_augmentation import ImageAugmentation
import pickle

# Load the data set
X, Y, X_test, Y_test = pickle.load(open("full_dataset.pkl", "rb"))

# Shuffle the data
X, Y = shuffle(X, Y)

# Make sure the data is normalized
img_prep = ImagePreprocessing()
img_prep.add_featurewise_zero_center()
img_prep.add_featurewise_stdnorm()

# Create extra synthetic training data by flipping, rotating and blurring the
# images on our data set.
img_aug = ImageAugmentation()
img_aug.add_random_flip_leftright()
img_aug.add_random_rotation(max_angle=25.)
img_aug.add_random_blur(sigma_max=3.)

# Define our network architecture:

# Input is a 32x32 image with 3 color channels (red, green and blue)
network = input_data(shape=[None, 32, 32, 3],
                     data_preprocessing=img_prep,
                     data_augmentation=img_aug)

# Step 1: Convolution
network = conv_2d(network, 32, 3, activation='relu')

# Step 2: Max pooling
network = max_pool_2d(network, 2)

# Step 3: Convolution again
network = conv_2d(network, 64, 3, activation='relu')

# Step 4: Convolution yet again
network = conv_2d(network, 64, 3, activation='relu')

# Step 5: Max pooling again
network = max_pool_2d(network, 2)

# Step 6: Fully-connected 512 node neural network
network = fully_connected(network, 512, activation='relu')

# Step 7: Dropout - throw away some data randomly during training to prevent over-fitting
network = dropout(network, 0.5)

# Step 8: Fully-connected neural network with two outputs (0=isn't a bird, 1=is a bird) to make the final prediction
network = fully_connected(network, 2, activation='softmax')

# Tell tflearn how we want to train the network
network = regression(network, optimizer='adam',
                     loss='categorical_crossentropy',
                     learning_rate=0.001)

# Wrap the network in a model object
model = tflearn.DNN(network, tensorboard_verbose=0, checkpoint_path='bird-classifier.tfl.ckpt')

# Train it! We'll do 100 training passes and monitor it as it goes.
model.fit(X, Y, n_epoch=100, shuffle=True, validation_set=(X_test, Y_test),
          show_metric=True, batch_size=96,
          snapshot_epoch=True,
          run_id='bird-classifier')

# Save model when training is complete to a file
model.save("bird-classifier.tfl")
print("Network trained and saved as bird-classifier.tfl!")

- Nvidia GeForce GTX 980 Ti ๋˜๋Š” ๊ทธ ์ƒ์œ„ ์ œํ’ˆ๊ณผ ๊ฐ™์ด ์ถฉ๋ถ„ํ•œ RAM์„ ๊ฐ–์ถ˜ ์ข‹์€ ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๋กœ ํ›ˆ๋ จ์‹œํ‚ค๋ฉด, 1์‹œ๊ฐ„ ์ด๋‚ด์— ํ›ˆ๋ จ์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์Œ

 

- ํ›ˆ๋ จ์„ ์‹œํ‚ฌ์ˆ˜๋ก ์ •ํ™•๋„๋Š” ๋†’์•„์ง. ์ฒซ ๋ฒˆ์งธ ํ›ˆ๋ จ ํ›„์— 75.4%์˜ ์ •ํ™•๋„๋ฅผ ์–ป์—ˆ์Œ

- ๋‹จ 10ํšŒ ํ›ˆ๋ จํ•œ ํ›„ ์ด๋ฏธ 91.7%๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ

- 50ํšŒ ์ •๋„ ์ง€๋‚˜๋ฉด 95.5%์˜ ์ •ํ™•๋„์— ์ด๋ฅด๋ €๊ณ , ์ถ”๊ฐ€ ํ›ˆ๋ จ์„ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉˆ์ถค

 

- ์ด์ œ ์šฐ๋ฆฌ์˜ ํ”„๋กœ๊ทธ๋žจ์€ ์ด๋ฏธ์ง€์—์„œ ์ƒˆ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Œ!

 

Neural ํ…Œ์ŠคํŠธํ•˜๊ธฐ

์ด์ œ ์šฐ๋ฆฌ๋Š” ํ›ˆ๋ จ๋œ neural์„ ๋งŒ๋“ค์—ˆ๊ณ  ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ! ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ์ƒˆ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ์˜ˆใ…กใ„ฑํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ ํ™•์ธ

 

- ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ neural์ด ์–ผ๋งˆ๋‚˜ ํšจ๊ณผ์ ์ธ์ง€๋ฅผ ์‹ค์ œ๋กœ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„์ฃผ ๋งŽ์€ ์ด๋ฏธ์ง€๋กœ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•จ

- ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด 15,000๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋งŒ๋“ฌ, ์šฐ๋ฆฌ์˜ neural์— ์ด 15,000๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋‹ˆ, 95% ์ˆ˜์ค€์œผ๋กœ ์ •ํ™•ํ•œ ๋Œ€๋‹ต ์˜ˆ์ธก

 

์ •ํ™•๋„ 95%๋Š” ์–ผ๋งˆ๋‚˜ ์ •ํ™•ํ•œ ๊ฒƒ์ผ๊นŒ?

- ์šฐ๋ฆฌ์˜ neural์€ 95% ์ •ํ™•ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ ๊ทธ๋Ÿฐ๋ฐ 95%๋ผ๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ ๋ณผ ์ˆ˜๋„ ์žˆ์Œ

 

๋งŒ์•ฝ  ํ›ˆ๋ จ ์ด๋ฏธ์ง€์˜ 5%๊ฐ€ ์ƒˆ์ด๊ณ  ๋‚˜๋จธ์ง€ 95%๊ฐ€ ์ƒˆ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

- ๋งค๋ฒˆ "์ƒˆ๊ฐ€ ์•„๋‹ˆ๋‹ค"๋ผ๊ณ  ์ถ”์ธกํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋‹ค๋ฉด ์ด๊ฒƒ์€ 95% ์ •ํ™•ํ•œ ๊ฒƒ์ด ๋จ

- ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ 100% ์“ธ๋ชจ X

 

- ํ‰๊ท ์ ์ธ ์ •ํ™•๋„๋ณด๋‹ค ์ˆซ์ž๋ฅผ ์ข€ ๋” ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค ๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Œ. 

- ๋ถ„๋ฅ˜ ์‹œ์Šคํ…œ์ด ์‹ค์ œ๋กœ ์–ผ๋งˆ๋‚˜ ์ข‹์€์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์šฐ๋ฆฌ๋Š” ์‹คํŒจํ•œ ์‹œ๊ฐ„์˜ ๋น„์œจ์ด ์•„๋‹ˆ๋ผ ์–ด๋–ป๊ฒŒ ์‹คํŒจํ–ˆ๋Š”์ง€๋ฅผ ๋ฉด๋ฐ€ํžˆ ์กฐ์‚ฌํ•ด์•ผ ํ•จ

 

์šฐ๋ฆฌ์˜ ์˜ˆ์ธก์„ "๋งž๋‹ค"์™€ "ํ‹€๋ฆฌ๋‹ค"๋กœ ์ƒ๊ฐํ•˜๋Š” ๋Œ€์‹ , ๋‹ค์Œ์˜ ๋„ค ๊ฐ€์ง€ ๋ฒ”์ฃผ๋กœ ๋‚˜๋ˆ„์–ด ๋ด„

1) True Positives : ์šฐ๋ฆฌ์˜ neural์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹๋ณ„ํ•œ ์ƒˆ๋“ค ์‚ฌ์ง„

 

2) True Negatives : "์ƒˆ๊ฐ€ ์•„๋‹ˆ๋‹ค"๋ผ๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹๋ณ„ํ•œ ์ด๋ฏธ์ง€๋“ค

 

3) False Positives : ์ƒˆ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ์‹ค์ œ ์ƒˆ๊ฐ€ ์•„๋‹Œ ์ด๋ฏธ์ง€๋“ค

 

4) False Negatives : ์ •ํ™•ํ•˜๊ฒŒ ์ƒˆ๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•œ ์ด๋ฏธ์ง€๋“ค

 

15,000๊ฐœ ์ด๋ฏธ์ง€์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ, ์šฐ๋ฆฌ์˜ ์˜ˆ์ธก์ด ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฅ˜๋˜๋Š”์ง€ ์•Œ์•„๋ด„

์™œ ๊ฒฐ๊ณผ๋ฅผ ์ด๋Ÿฐ ์‹์œผ๋กœ ์„ธ๋ถ„ํ™”ํ•ด์•ผ ํ• ๊นŒ?

→ ๋ชจ๋“  ์‹ค์ˆ˜๊ฐ€ ๊ฐ™์€ ์›์ธ์œผ๋กœ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ

 

- ex) MRI ์ด๋ฏธ์ง€๋กœ๋ถ€ํ„ฐ ์•”์„ ์ฐพ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ–ˆ๋‹ค๊ณ  ์ƒ์ƒ, ์šฐ๋ฆฌ๊ฐ€ ์•”์„ ์ฐพ์•„๋‚ธ ๊ฒฝ์šฐ์— false negatives๋ณด๋‹ค false positives๊ฐ€ ๋” ๋‚˜์Œ

 

ํ‰๊ท ์ ์ธ ์ •ํ™•๋„๋ฅผ ๋ณด๋Š” ๋Œ€์‹  Precision๊ณผ Recall ๊ณ„์‚ฐ

- ์œ„ ๊ฒฐ๊ณผ๋Š” ์šฐ๋ฆฌ๊ฐ€ 97% ์ •ํ™•๋„๋กœ "์ƒˆ"๋ฅผ ์ถ”์ธกํ–ˆ์Œ์„ ๋ณด์—ฌ์คŒ

- ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ์—์„œ ์‹ค์ œ ์ƒˆ์˜ 90%๋งŒ ๋ฐœ๊ฒฌํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค๋„ ์•Œ ์ˆ˜ ์žˆ์Œ, ๋ฐ”๊ฟ” ๋งํ•˜์ž๋ฉด ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ์ƒˆ๋ฅผ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ๋Š” ๊ฝค ํ™•์‹คํ•˜๊ฒŒ ๋งž์ถœ ์ˆ˜ ์žˆ์Œ

'๐Ÿ’ก THINKING > ๐Ÿฆพ Machine Learning' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Machine Learning์€ ์ฆ๊ฒ๋‹ค! Part 2  (0) 2021.09.07
Machine Learning์€ ์ฆ๊ฒ๋‹ค! Part 1  (0) 2021.09.02
Comments