ํฐ์คํ ๋ฆฌ ๋ทฐ
Machine Learning์ ์ฆ๊ฒ๋ค! Part 3
๊ตฌ๋์ 2021. 9. 9. 17:15์ถ์ฒ : ๊ธฐ๊ณํ์ต(Machine Learning, ๋จธ์ ๋ฌ๋)์ ์ฆ๊ฒ๋ค! Part 3
๊ธฐ๊ณ ํ์ต(Machine Learning, ๋จธ์ ๋ฌ๋)์ ์ฆ๊ฒ๋ค! Part 3
๋ฅ๋ฌ๋(Deep Learning)๊ณผ ์ปจ๋ณผ๋ฃจ์ ์ ๊ฒฝ๋ง(Convolutional Neural Network ๋๋ CNN)
medium.com

๋ฅ๋ฌ๋(Deep Learning)์ ๊ดํ ์๋ฏธ๋?
์ด๋ฒ์๋ ๋ฅ๋ฌ๋์ ์ฌ์ฉํด ์ฌ์ง ์์์ ๊ฐ์ฒด๋ฅผ ์ธ์ํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฒ์ ๋ํด ์์๋ด
- Google Photos์์ ์ฌ์ง ์์ ํฌํจ๋ ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํ๋ ์ฌ์ง์ ๊ฒ์ํ ์ ์๋ ๋ฒ
- ์ด ์นํฐ์ 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๊ฐ์ ํ๊ธฐ์ฒด ์ซ์ ์ด๋ฏธ์ง๋ค์ ์ ๊ณต
์๊ฐํด๋ณด๋ฉด ๋ชจ๋ ๊ฒ์ ๊ทธ์ ์ซ์์ผ ๋ฟ์ ๋๋ค
์ฐ๋ฆฌ์ 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'์ธ์ง ํ์ธํ๊ธฐ ์ํด ํ๋์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ฒฝ๋ง์ ์ ๊ณต
์ฌ๊ธฐ์๋ ๋๊ฐ์ ์์ ์ ํ ๊ฒ์. ๋ค๋ง ๊ฐ ๊ฐ๋ณ ์ด๋ฏธ์ง ํ์ผ์ ๋ํด ์ด ์์ ์ ์ํํ ๊ฒ
ํ์ง๋ง ํ ๊ฐ์ง ์ค์ํ ๋ณํ๊ฐ ์์ : ์ฐ๋ฆฌ๋ ๋์ผํ ์๋ณธ ์ด๋ฏธ์ง์ ๋ชจ๋ ๋จ์ผ ํ์ผ์ ๋ํด ๋์ผํ ์ ๊ฒฝ๋ง ๊ฐ์ค์น(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 |
- machine learning
- ๋ฐฑ์ค
- C++
- GIT
- ํ๋ก๊ทธ๋๋ฐ
- Baekjoon
- ๋ค์คํ๋ก์ธ์ค
- SpringBoot
- ๋ฆฌ๋ ์ค
- 9086๋ฒ
- ์ค๋ฅ
- SWiFT
- react-scripts
- ํ์ผ ์ ์ถ๋ ฅ
- error
- bitnami
- react
- ์ค์น
- Apache
- ๋จธ์ ๋ฌ๋
- Annotation
- ๋ฒํผ
- Programming
- Linux
- ๊ธฐ๊ณํ์ต
- PHP
- MySQL
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก์ธ์ค
- C
- Total
- Today
- Yesterday