헷깔리는 연결고리
머신러닝에 관한 글을 꼭 써보고 싶었다.
난 전문가는 아니지만 궁금해서 찾아봤던 사실들.. 그리고 내 나름 정리가 된 사실들을 적어서 공유하려 한다.
구글의 알파고 때문에 머신러닝이 화두가 되면서 이와 더불어 여러 용어들, 개념들, 기술들이 쏟아져 나왔다.
그 중 많이 들리는 이야기가 딥러닝, 뉴럴 네트워크 그리고 GPU에 관한 이야기이다.
머신러닝! 다 아는 개념 이겠지만 다시한번 짚고 넘어가면 한글로 하면 기계학습이란 말이다.
그렇다! 기계를 학습시켜서 인간에게 유용한 방향으로 써먹겠다는 것이다.
그럼 기계를 어떻게 학습 시킬 것이냐..
그 여러가지 방법 중 하나가 바로 뉴럴 네트워크를 이용한 방법이다.
뉴럴 네트워크 (a.k.a 딥러닝) 이라고도 불리는 이 방법이 뜨거운 감자가 된 이유는 바로 알파고를 학습시키는데 이 방법을 이용했기 때문이다.
학습시킨다는 것을 다른 말로하면 이렇게 표현할 수 있을 것 같다.
특정 input에 대한 output 결과를 예측하는 것.
문제를 푸는 고전적인 방법은 "공식을 찾는 것" 이었다.
수학적으로 표현하면 y=f(x) 라고 했을 때 f(x)에 대한 정확한 식! 을
근데 "뉴럴 네트워크"라는 방법은 특이하다. 사람의 신경망을 모방하여 문제를 푸는 방법이다.
신경망과 유사하게 구성해놓고, input 데이터에 대한 output 데이터를 예측하는 것이다.
(참고로, 뉴럴 네트워크에도 식이 등장하지 않는 것은 아니다. 각 신경망 단계를 거칠때 어떤 조건을 기준으로 임계치를 넘고 넘지않고 결정하는 식이 포함된다.)
즉, 뉴럴 네트워크는 이 답이 나오는 과정을 명료하게 보여주는 공식을 찾는것이 아니라 왜그런지는 잘 모르는데 (-_-??) 답이 나오는 방식이다.
사실 이 뉴럴네트워크를 이용하자는 방법은 오래전에 나온 방법이다. 하지만 제대로 동작하지 않아서 그동안 못 써먹었을 뿐이지..
제대로 동작하지 않았고, 제대로 동작할 수 없었던 이유는 알고리즘 자체에 대한 보정이 좀 더 필요했고 두번째로는 그때 옛날 당시로는 컴퓨터 성능이 별로 안좋아서 이것을 풀 수가 없었다.
이를 해결하는 수학적 방법이 등장하였고, 동시에 컴퓨터 성능도 엄청 좋아지면서 이제는 이 방법이 엄청 쓸만해졌다!
그렇다면 딥 러닝이란 무엇인가? 딥 러닝은 신경망을 구성하여 문제를 해결하는 방법들, 알고리즘들을 총칭하는 말이다. 대표적으로 DNN, CNN 등이 있다. DNN을 살펴보면 Deep Neural Network의 약자이다. Deep 이란 말이 붙은 이유는 단계를 거칠수록 Neural Network이 여러단계로 깊어지기 때문이다.
딥러닝, 뉴럴 네트워크를 이용하여 문제를 풀려면 컴퓨터 연산 작업이 많이 필요하다. GPU성능이 좋은 컴퓨터가 뉴럴 네트워크 문제를 더 빠르게 풀수가 있다. 그래서 딥 러닝과 함께 GPU 성능이 좋은 컴퓨터 이야기가 언급이 되는 것이고 -> 그래서 NVDIA가 돈을 많이 벌고 주식이 뛰었다.
(내가 이걸 미리 알았다면... 알파고 대국할때 주식을 샀을 것이다. 엉엉)
참고로 CPU와 GPU차이를 아주 간단하게 설명하면, CPU는 엄청 어려운 문제를 엄청똑똑한애 한명이 푸는 것이고, GPU는 적당한 문제를 적당히 똑똑한애 여러명이 해결하는 방식(?) 이라고 생각하면 되겠다.
(저에게 더 깊게는 묻지 마시길.. 저도 여기까지 밖에 몰라유..)
그래서 여기까지 머신러닝과 딥러닝, 그리고 GPU 와 얽힌 이야기들을 해보았다.
일단 자고, 못다한 이야기들은 다음편에 가서 또 해야겠다.
졸리다.