일반적으로 많은 데이터를 학습 시킬때 메모리나 프로세서의 부족으로 학습에 많은 시간이 걸리는 고질적인 문제가 있다.
학습 데이터의 차원이 늘어날 때마다 필요한 메모리는 기하급수적으로 늘어나기 때문인데, 코드 레벨에서나 알고리즘 레벨에서 복잡도를 줄이는건 새로운 알고리즘을 창안하지 않는이상 거의 불가능 하다.(뭔 약간의 코드 핫스팟을 찾아서 최적화를 시켜주는건 가능하겠지만.) 그래서 분산처리를 사용해 시간(전체) 복잡도를 줄이고자 하는 논문이 스텐포드에서 나왔다.
learning을 할때 Map-Reduce개념을 사용하는 스텐포드 대학의 논문이고. 이 곳에서는 10가지의 러닝 모델에 대한 모델을 제시하고 있다.
요약부분만 읽어봤는데, 노드를 추가할때마다 선형적인 처리속도 증가가 되는걸로 나와있다.
일단 Machine Learning 부분을 분산처리 개념으로 이용해 구글에서 실무에 사용하는건 거의 기정 사실인거 같구.
그렇다면 과연 논문에서는 어떻게 구현을 했을까?
목록에 역시나 HMM(Hidden Makov Model)은 논문에 없군. 개념적으로 MapReduce에서 HMM을 쓰기에는 거의 불가능 하긴 하다. 왜냐면, 이전 스테이트의 확률 계산값이 현재에 영향을 미치는 그런 개념이기 때문에 분산처리가 힘든 부분이다. 각 스테이트가 독립적으로 계산이 가능한 다른 러닝 알고리즘들은 충분히 가능성의 여지가 있다. 바로 논문은 이런 부분으로 접근한게 아닐까 한다.
목차만 잠깐 보더라도 개별 확률과 Summation방법을 정의해 주는걸로 시작되는데, 이건 예전에 스팸을 MapReduce를 사용해서 분산처리를 하는 개념을 설명했던 포스트하고도 관련이 있는거 같다. 그때는 naive Bayes방법만 사용해서 디자인만 살짝 했었던 기억이 난다. 논문으로 써야 되는거 아닌가 하고 그당시 생각했었는데, 결국 이런 논문이 나오긴 하는군. 좀더 딥 드라이브 할껄 저 ~ ㅇ ~말 아쉽다. ^^;
요즘 inverse-chi square 방법을 써서 스팸을 분류하고 있는데, 일단 위와 같은 개별 확률만 구해지고 summation을 하는 식만 바꿔주면 나이브 베이지언 분류기에서 카이제곱 방법을 사용하는 분류기로 변환이 가능할것이다.
일단 이 작품은 요즘 고민하던 Machine Learning(스팸필터)과 2달전까지 재밋게 하던 Hadoop의 MapReduce가 절묘하게 결합된 논문이다. ㅎㅎ
이제 목차만 읽어본 상태에서 이렇게 흥분하고 있으니… 어서 빨리 정독해서 정확한 정리를 해봐야 겠다.
ps. 더그커팅 아저씨는 이걸 MapReduce cookbook for Machine Learning 이라고 정했네, 아주 작명센스하고는… ㅋ
ps. 갑자기 아이디어가 생각났는데, 너무 엄청나서 여기에 못쓰겠다. 혼자하기도 힘든 프로젝트고 … 쩝
Machine Learning과 MapReduce는 천생연분 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.