본문 바로가기

기계학습/neural network

Hadoop MapReduce를 이용하여 신경망 학습이 가능할까?

 아파치 프로젝트로 진행중인 Mahout라는 프로젝트가 있는데, 이것은 Hadoop MapReduce를 통하여 Machine Learning을 하기 위한 프레임워크다. 하지만 Hadoop만큼이나 인기리에 진행되고 있지는 않는것 같다.

 어쨌거나, 클릭로그 정보를 이용하여 문서와 입력된 키워드와의 관계를 neural network를 통하여 학습하고, 검색시에 랭킹에 반영하는 것을 실험해보고 있다. 자세한 내용은 집단지성 프로그래밍 (원서: Programming Collective Intelligence) 4장을 참고.

 가장 힘든 부분은 feedforward 단계와 backpropagate 단계에서 node의 weight값과 link 의 weight값을 global하게 사용한다는 점에 있는데, 이를 분산환경에서 어떻게 구현할 것인지가 쉬운 과제는 아닌 것 같다. 관련 위키페이지를 보면 현재 open 상태이긴 하지만, 다른  분류알고리즘과 같이 진행중이지는 않는 것 같다.
 
 직접 구현하기에는 쉽지 않을 것 같고, 일단 기다려봐야하나... -_-;; Neural Network의 경우 incremental 하게 학습이 가능하니 하루에 저장되는 로그를 처리할 수 있는 정도의 성능이 나오는 프로그램이라면, 굳이 MapReduce를 쓰지 않고도 가능할 것 처럼 보인다. 단, 시간이 갈 수록 Hidden Node의 갯수가 늘어날테니 shrink할 수 있는 기법에 대한 것도 고민해 보아야 할 것 같다.