대용량 머신러닝 시스템개발의 교훈, by Google Research


제목: Lessons learned developing a practical large scale machine learning system
저자: Simon Tong, at Google Research
출처: Google Research Blog, http://googleresearch.blogspot.com
일시: April 06, 2010

요약
 구글 Google에서 SETI라는 대용량 데이터를 다루는 머신러닝 시스템을 개발하면서 얻은 교훈을 정리한 블로그 포스팅입니다. 일반적으로 학교에서 사용하는 데이터의 경우 feature수나 sample수가 제한되어있기 때문에, Neural network이나 SVM, Bayesian 등의 다양한 통계/머신러닝 기법을 사용하고, 주요 목적이 이들 시스템의 정확도를 높이는 것에 초점을 두고 있습니다. 그렇지만, 검색데이터 (색인된 문서, 사용자들이 입력하는 키워드 및 클릭하는 정보, 온라인 광고 경매 등)에서는 학계에서 사용하는 데이터의 수천, 수만배 이상의 대용량 데이터를 처리하기 때문에 0.x%의 정확도를 높이는 것이 현실적으로 큰 의미를 가지지 않습니다. 그런 측면에서 구글리서치에서 SETI를 통해서 얻은 교훈을 다음 세가지로 정리했습니다.
  • 대용량 데이터를 처리하는데 있어서, 정확도보다는 사용의 편의성 및 신뢰성 Reliability 보장 등이 더 중요한 경우가 많다.
  • 프로젝트를 시작하는 시점에는 특정/특화된 애플리케이션을 염두에 두고 시작하라. 그리고, 일반화는 나중에 생각해도 된다.
  • 때로는 복잡한 머신런닝을 사용하는 것보다 간단한 수리적 연산이 더 좋은 경우가 있다.

생각
 최근에 데이터 마이닝의 추세를 보면, 1. 데이터의 대용량화 2. 시계열 Time-series 데이터 3. 실시간 데이터 처리 등이 중요한 이슈입니다. 실제 산업계의 데이터는 학계에서 다루는 데이터에 비해서 상상이상의 스케일을 가지고 있습니다. 일례로, 하루 동안 한국에서 검색되는 쿼리회수가 2~3억건을 초과하는데, 이런 데이터를 제대로 분석/처리하는 것은 쉬운 문제가 아닙니다. 특히 이런 데이터들은 timestamp를 함께 가지는 경우가 많은 시계열 데이터이고, 또 이런 대용량 데이터를 실시간/거의실시간으로 처리해서 서비스를 제공해줘야하는 문제가 있습니다. 그렇기에, 복잡한 머신런닝 기법을 사용해서 조금더 정확한 결과를 제공해주는 것도 중요하지만, 정확도를 일부 포기하더라도 조금더 빠르게 결과를 제공해주고 또 쉽게 이해할 수 있는 시스템을 구현하는 것이 중요해집니다. 학계에서도, 이제까지의 (눈에 띄지도 않는) 정확도 개선의 노력에 더해서, 변화하는 데이터의 특성에 맞춘 현실적인 연구 및 저작에 신경을 더 쓰줬으면 좋겠습니다.