ํ๋ ์์ํฌ(Framework)๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋ ๋ฑ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํ๋๋ก ๋ฌถ์ด ๋์ ์ผ์ข
์ ํจํค์ง๋ฅผ ๋งํฉ๋๋ค.
์์์ ์๊ฐํ ๋จธ์ ๋ฌ๋, ๋ฅ๋ฌ๋์ด ๋ณต์กํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ๊ตํ ์์
์ ์ํํ ์ ์๋ค๋ฉด, ๋ฅ๋ฌ๋ ์์คํ
์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋ฐ์ดํฐ ๊ณผํ์ ๋ฐ ์ํํธ์จ์ด ์์ง๋์ด๋ค ์๊ฒ ํฐ ๊ณผ์ ์
๋๋ค. ๋คํํ๋ ๋ฅ๋ฌ๋ ์๋ฃจ์
์ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ๋ง์ ์คํ์์ค ํ๋ ์์ํฌ๊ฐ ๊ณต๊ฐ๋์ด ์์ต๋๋ค. ํ์ฌ ์๊ฐ๋ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ๋ค์ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ชฉ์ ์ผ๋ก ์ ์๋์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ๊ณ ์ ํ ๊ธฐ๋ฅ๊ณผ ํน์ฑ์ ์ ๊ณตํฉ๋๋ค. ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ๋ค์ ๋ํ ๊ฐ๋จํ ์๊ฐ๋ฅผ ํด ๋ด
๋๋ค.
1) ํ ์ํ๋ก(TensorFlow)
๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ฅ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ธ ํ ์ํ๋ก์ฐ[TensorFlow]๋ ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ์ผ๋ฉฐ 2015๋ ์คํ์์ค๋ก ๊ณต๊ฐ๋์ต๋๋ค. 2์ธ๋ ๋จธ์ ๋ฌ๋ ์์คํ ์ผ๋ก๋ ๋ถ๋ฆฌ๋ ํ ์ํ๋ก์ฐ๋ ํ์ด์ฌ[Python] ๊ธฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ๋ฌ CPU ๋ฐ GPU์ ๋ชจ๋ ํ๋ซํผ, ๋ฐ์คํฌํฑ ๋ฐ ๋ชจ๋ฐ์ผ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ C++ ๊ณผ R ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ธ์ด๋ ์ง์ํ๋ฉฐ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ์ง์ ์์ฑํ๊ฑฐ๋ ์ผ๋ผ์ค(keras)์ ๊ฐ์ ๋ํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ์์ฑํ ์ ์์ต๋๋ค. ์ง๊ธ ํ ์ํ๋ก๋ ๋ ์์ ์ธ ์ํ๊ณ๋ฅผ ๊ฐ์ถ ์ ๋๋ก ๋ฐ์ ํ์ต๋๋ค. ํ ์ํ๋ก ์ ๋ฌธ ๋ธ๋ก๊ฑฐ๋ ๋์ค๊ณ , ํ ์ํ๋ก๋ฅผ ํ ๋ง๋ก ํ ์ฌ์ฉ์ ์ปค๋ฎคํฐ๋ค๋ ์๊ฒจ๋ฌ๋ค. ๋ฐ๋ผ์ ์์๋ ๋ง๊ณ ํํ ๋ฆฌ์ผ๋ ํ๋ถํฉ๋๋ค. ํ ์ํ๋ก ์ฌ์ดํธ(https://www.tensorflow.org/\)์๋ง ๋ค์ด๊ฐ๋ ์ถฉ๋ถํ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค.
2) ์ผ๋ผ์ค(Keras)
์ผ๋ผ์ค(Keras)๋ ํ์ด์ฌ์ผ๋ก ์์ฑ๋ ์คํ ์์ค ์ ๊ฒฝ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ํ ์ํ๋ก๋ ๋งค์ฐ ํ๋ฅญํ ๋ฅ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด์ง๋ง ์ด๋ฅผ ์ง์ ์ฌ์ฉํ์ฌ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ๋ง๋๋๋ฐ ๊ธฐ์ด ๋ ๋ฒจ๋ถํฐ ์์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋๋ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ผ๋ผ์ค๋ ํจ์จ์ ์ธ ์ ๊ฒฝ๋ง ๊ตฌ์ถ์ ์ํ ๋จ์ํ๋ ์ธํฐํ์ด์ค๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. ์ผ๋ผ์ค๋ ๋ฅ๋ฌ๋ ๋น์ ๋ฌธ๊ฐ๋ผ๋ ๊ฐ์ ๋ถ์ผ์์ ์์ฝ๊ฒ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ๊ฐ๋ฐํ๊ณ ํ์ฉํ ์ ์๋๋ก ์ง๊ด์ ์ธ API๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค. โ์ผ๋ผ์ค๋ ์ฌ์ฉ์๋ค์ด ์ด๋ป๊ฒ ํ๋ฉด ์ฝ๋ฉ์ ๋ ์ฝ๊ฒ ํ ์ ์์๊น?โ ์ ๊ธฐ๋ฐํ์ฌ ๋ง๋ค์ด์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ค์ ๋ก ์ผ๋ผ์ค์์๋ ๋ค์ํ ๋ด๋ด ๋คํธ์ํฌ ๋ชจ๋ธ์ ๋ฏธ๋ฆฌ ์ง์ํด์ฃผ๊ณ ์์ผ๋ฏ๋ก, ๊ทธ๋ฅ ๋ธ๋ก์ ์กฐ๋ฆฝํ๋ฏ์ด ๋คํธ์ํฌ๋ฅผ ๋ง๋ค๋ฉด ๋๋ ์์ด๋ผ, ์ ๋ฐ์ ์ธ ๋คํธ์ํฌ ๊ตฌ์กฐ๋ฅผ ์๊ฐํ๊ณ ์์ฑํ๋ค๋ฉด ๋น ๋ฅธ ์๊ฐ ๋ด์ ์ฝ๋ฉ์ ํ ์ ์๋ ์์ฒญ๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋ด๋ถ์ ์ผ๋ก๋ ํ ์ํ๋ก์ฐ(TensorFlow), ํฐ์๋ ธ(Theano), CNTK ๋ฑ์ ๋ฅ๋ฌ๋ ์ ์ฉ ์์ง์ด ๊ตฌ๋๋์ง๋ง ์ผ๋ผ์ค ์ฌ์ฉ์๋ ๋ณต์กํ ๋ด๋ถ ์์ง์ ์ ํ์๊ฐ ์์ต๋๋ค. ์ง๊ด์ ์ธ API๋ก ๋จธ์ ๋ฌ๋์ ํ์ ํ์ต ๋ชจ๋ธ(๋ค์ธตํผ์ ํธ๋ก ๋ชจ๋ธ, ์ปจ๋ณผ๋ฃจ์ ์ ๊ฒฝ๋ง ๋ชจ๋ธ, ์ํ ์ ๊ฒฝ๋ง ๋ชจ๋ธ ๋๋ ์ด๋ฅผ ์กฐํฉํ ๋ชจ๋ธ)์ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์์ผ๋ฉฐ, ๋ค์ค ์ ๋ ฅ ๋๋ ๋ค์ค ์ถ๋ ฅ ๋ฑ ๋ค์ํ ๊ตฌ์ฑ์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ฌด ์ผ๋ผ์ค์๋ง ์์กดํ๋ค ๋ณด๋ฉด ํ ์ํ๋ก๋ฅผ ์์ ํ๊ฒ ์ตํ์ง ๋ชปํ๊ฒ ๋๋ค๋ ๋จ์ ๋ ์กด์ฌํฉ๋๋ค. ์ผ๋ผ์ค ๊ณต์ ์ฌ์ดํธ(https://keras.io/\)์์ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ ํ ์ ์์ต๋๋ค. ์ผ๋ผ์ค๋ ํ์ด์ฌ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋์์ผ๋ฉฐ ๋งค์ฐ ๊ฐ๋ณ๊ณ ๋ฐฐ์ฐ๊ธฐ ์ฝ์ต๋๋ค.
3) ํ ์๋ ธ(Theano)
'์ต์ด์ ๋ฅ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ' ์ค ํ๋์ธ ํ ์๋ ธ๋ ํ์ด์ฌ ๊ธฐ๋ฐ์ด๋ฉฐ CPU ๋ฐ GPU์ ์์น๊ณ์ฐ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ํ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋๋ก ๋ค์ฐจ์ ๋ฐฐ์ด๊ณผ ๊ด๊ณ๊ฐ ์๋ ์ํ์ ํํ์ ์ ์ํ๊ณ , ์ต์ ํ ํ๋ฉฐ, ํ๊ฐํ๋๋ก ํด์ค๋๋ค. ์คํ์์ค ํ๋ก์ ํธ๋ก ์บ๋๋ค ๋ชฌํธ๋ฆฌ์ผ๋ํ์ ๋จธ์ ๋ฌ๋ ์ฐ๊ตฌ ๊ทธ๋ฃน ์ค ํ๋๊ฐ ์ ์ผ ๋จผ์ ๊ฐ๋ฐํ์ต๋๋ค. ๊ณต์ ์ฌ์ดํธ(https://pypi.org/project/Theano/\#history\)์ ๋ค์ด๊ฐ๋ฉด ๋ค์ด๋ก๋๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
ํ ์ํ๋ก์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ ์๋ ธ๋ ์ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ์ง์ ๋ง๋ค๊ฑฐ๋ ๊ทธ ์์ ๋๋ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ํ์ฅ ํ์ต ํ๋ ์์ํฌ์ ๋ฌ๋ฆฌ ํ์ฅ์ฑ์ด ๋ฐ์ด๋์ง ์์ผ๋ฉฐ ๋ค์ค GPU์ง์์ด ๋ถ์กฑํฉ๋๋ค.
4) ํ์ดํ ์น(Pytorch)
ํ ์น(Torch)๋ Lua๊ธฐ๋ฐ์ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ๋ก์ ํ์ด์ค๋ถ/ํธ์ํฐ/๊ตฌ๊ธ ๊ณผ ๊ฐ์ ํ์ฌ๋ค์ด ์ฌ์ฉํ๊ณ ๊ฐ๋ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. GPU ์ฒ๋ฆฌ๋ฅผ ์ํด C/C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ CUDA(NVIDIA์ GPU๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ ์น๋ Lua ์คํฌ๋ฆฝํธ ์ธํฐํ์ด์ค ๋๋ฌธ์ ์ฒ์ ๋ฅ๋ฌ๋์ ์์ํ๋ ์ฌ๋๋ค์๊ฒ ์ธ๊ธฐ๊ฐ ๋ง์ง๋ ์์์ต๋๋ค. ํ์ง๋ง ์ต๊ทผ ํ์ดํ ์น(PyTorch)๋ผ๊ณ ๋ถ๋ฆฌ๋ Torch์ ํ์ด์ฌ ๊ตฌํ์ ์ธ๊ธฐ๋ฅผ ์ป์๊ณ ๋น ๋ฅธ ์ฑํ์ ์ป๊ณ ์์ต๋๋ค. ํ์ดํ ์น๋ ํ ์น(Torch)๋ผ๋ ๋จธ์ ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐํ์ ๋๊ณ ๋ง๋ค์ด์ง ํ์ด์ ์ฉ ์คํ์์ค ๋จธ์ ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ํ์ด์ค๋ถ์ AI ์ฐ๊ตฌ ํ์ด ๊ฐ๋ฐํ ๊ฒ์์๋ถํฐ ์ถ๋ฐํ์ต๋๋ค. ํ์ดํ ์น ๊ณต์ ์น์ฌ์ดํธ(https://pytorch.org/\)์ ์ํ๋ฉด ํ์ดํ ์น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ โ๋น ๋ฅด๊ณ ์ ์ฐํ ์คํ์ ํ๊ฒ ํด์ฃผ๋ ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌโ์ ๋๋ค. ์ฌ์ธต ์ ๊ฒฝ๋ง(deep neural network)๊ณผ ๊ฐ๋ ฅํ GPU ๊ฐ์์ ๊ฐ์ง ํ ์ ์ปดํจํ (tensor computing)์ด ํฌํจ๋ ํ์ด์ ํจํค์ง ํํ๋ก ์ ๊ณต๋ฉ๋๋ค.
5) ์ํ์น(Apache) MXNet
์ํ์น MXNet์ ์คํ์์ค ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌ๋ก, ์ํ์น ์ํํธ์จ์ด ์ฌ๋จ(Apache Software Foundation)์์ ๊ฐ๋ฐ ์ค์ ์์ต๋๋ค. Apache MXNet์ ๋น ๋ฅด๊ณ ํ์ฅ ๊ฐ๋ฅํ ๊ต์ก ๋ฐ ์ถ๋ก ํ๋ ์์ํฌ๋ก์ ๋จธ์ ๋ฌ๋์ ์ํด ์ฌ์ฉ์ด ์ฝ๊ณ ๊ฐ๋จํ API๊ฐ ์ ๊ณต๋ฉ๋๋๋ค.
์ด ํ๋ ์์ํฌ๊ฐ ์ฃผ๋ชฉ์ ๋ฐ๋ ์ด์ ๋ AWS(Amazon Web Service)๊ฐ ์ํ์น MXNet์ ๋ฅ๋ฌ๋ ์์ง์ผ๋ก ์ ํํ๊ธฐ ๋๋ฌธ์ ๋๋ค. MxNet์ ํ์ฅ์ฑ์ด ์ข๊ณ ๋ค์ค GPU์ ์ปดํจํฐ๋ก ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ค์ ์ ๋๋ค. ๊ธฐ์ ์ฉ์ผ๋ก๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ด๊ฒ์ ์๋ง์กด์ด MxNet์ ๋ฅ๋ฌ๋์ ์ํ ์ฐธ์กฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉํ ์ด์ ์ค ํ๋์ด๊ธฐ๋ ํฉ๋๋ค. ์๋ง์กด์ MXNet ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํด ํ๋ ์์ํฌ ๊ฐ๋ฐ์ ์ ๊ทน ์ฐธ์ฌํ์ผ๋ฉฐ, ์๋นํ ํฌ์๋ฅผ ๊ฐํํ์ต๋๋ค.
6) CNTK
CNTK๋ผ๋ ์ฝ์ด๋ก ์๋ ค์ ธ ์๋ Microsoft Computational Network Toolkit์ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ๊ต์กํ๊ธฐ ์ํ ์คํ์์ค ๋ฅ๋ฌ๋ ๋๊ตฌ์ ๋๋ค. CNTK๋ MS ๋ฆฌ์์น ํ์ด ๋ง๋ ๊ธฐ์ ์ ๋๋ค. MS๋ ๋ฒ์ญ ๊ธฐ์ , ์์ฑ์ธ์, ์ด๋ฏธ์ง ์์ ๋ฑ๊ณผ ๊ด๋ จํ ํธ๋ ์ด๋์ ํ ๋ CNTK๋ฅผ ์ง์ ์ด์ฉํ๋ค๊ณ ์ค๋ช ํ์ต๋๋ค. MS ๋ฆฌ์์น ํ์ CNTK๋ฅผ 2015๋ 4์์ ์ฒ์ ๊ณต๊ฐํ๊ณ ์ฝ๋๋ ์์ฒด ์ฝ๋ ์ ์ฅ์ โ์ฝ๋ํ๋ ์คโ์ ์ฌ๋ ธ์ต๋๋ค. ์์ผ๋ก CNTK ๊ด๋ฆฌ๋ ๊นํ๋ธ ํ๋ก์ ํธ ์์์ ํ ์์ ์ ๋๋ค. MS๋ โ๊นํ๋ธ๋ก ์์ค์ฝ๋๋ฅผ ์ฎ๊ฒจ์ ๋ ํญ๋์ ๊ฐ๋ฐ์์๊ฒ CNTK๋ฅผ ์ ๊ณตํ ๊ฒโ์ด๋ผ๊ณ ์ค๋ช ํ์ต๋๋ค. ๊ทธ๋งํผ CNTK ์ํ๊ณ๋ฅผ ๋ํ๊ณ ์ถ๋ค๋ ์๋ฏธ์ ๋๋ค. ๋์ ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ์ ๋ฐํํ๋๋ก ์ค๊ณ๋์๊ณ ์ฌ๋ฌ ์์คํ ์์ ์คํ ๋ ๋ Theno ๋ฐ ํ ์ํ๋ก์ฐ์ ๊ฐ์ ๋ค๋ฅธ ํดํท๊ณผ ๋น๊ตํ ๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค.