본문 바로가기

Enginius/Machine Learning

Big Data

 Big Data라는 단어는 여러 분야에서 Hot한 주제이다. 20년 전의 PC의 메모리, 하드디스크의 용량과 최신 PC, 노트북 사양을 비교해보면 과거에 비해 데이터 용량이 비약적으로 늘어났다는 것을 알 수 있다. 특히 스마트폰과 페이스북, 트위터 같은 소셜 네트워크 서비스(SNS)의 등장으로 새로운 데이터가 생산, 유통, 보유량이 계속 증가하고 있다. 하지만 이러한 수많은 정보 중에서 가치있는 데이터는 소수에 불과하다. 따라서 대용량 데이터를 처리하고, 의미있는 데이터를 발굴하는 기술이 필요하다. 


 인터넷과 기술의 발달로 우리 주변에는 무한에 가까운 정보가 있고, 이 중에서 유용한 정보를 얻어내는 것을 Big Data처리 기술이라고 할 수 있을 것이다. 세계적인 컨설팅 기관인 McKinsey & Company가 2011년 5월에 발간한 보고서 'Big Data : The Next Frontier for Innovation, Competition, and Productivity'에서 "빅 데이터의 정의는 기존 데이터베이스 관리 도구의 데이터 수집, 저장, 관리, 분석하는 역량을 넘어서는 데이터셋 규모로, 그 정의는 주관적으며 앞으로도 계속 변화될 것이다. 또한 데이터량 기준에 대해 산업분야에 따라 상대적이며 현재 기준에서는 몇 십 테라바이트에서 수 페타바이트까지가 그 번위이다"라고 설명한다. 

 

 IT 시장 조사기관 Gartner는 2011년 1월에 발간한 보고서 'Big Data Analytics'에서 기존 데이터 처리와 빅 데이터 처리에 대해 다음과 같은 차이점을 설명했다. 

 1. 빠른 의사결정이 상대적으로 덜 요구된다. 

 2. 처리의 복잡도가 높다. 

 3. 처리할 데이터양이 방대하다. 

 4. 비정형 데이터의 비중이 높다. 

 5. 처리/분석의 유연성이 높다. 

 6. 동시처리량이 낮다. 


 이러한 목적을 달성하기 위해서 많은 분야에서 접근을 한다. 


 1. 먼저 가장 기본이 되는 수학, 통계 분야에서 접근을 할 수 있을 것이다. 

 2. 이름에서도 알 수 있듯이 Data mining 

- Text Mining

- Opinion Mining 

 3. 이름과는 약간 다르지만 Machine Learning 

- Social Network Analysis

- Cluster Analysis

 4. Big Data의 가장 대표적인 Image를 처리하는 Computer Vision


 사실 이렇게 많은 분야에서 접근을 하지만 결국 그 내부에 들어가보면 overlap되는 부분이 매우 많다. 


 나는 이중에서도 Machine Learning이란 학문에서 바라본 Big Data를 살펴보겠다. 


 먼저 Big Data 기술(?)이 활용될 수 있는 분야는 무엇이 있을까? 


 1. Image/Video Processing: 영상은 Big Data의 가장 대표적인 예라고 할 수 있다. 구글과 유투브 등의 인터넷에는 수많은 사진과 동영상이 올라와 있다. 또한 우리 주변의 surveillance camera에선 바로 이 순간에도 수많은 영상이 저장되고 있다. 하지만 영상과 같은 High-Dimension의 정보를 처리하는 것은 쉬운 일이 아니다. 새삼 사람의 눈이 대단해지는 순간이다. 이러한 정보를 처리할 수 있을 것이다. 


 2. Natural Language Processing: 최근 애플의 시리를 필두로, 핸드폰에서 음성 인식 서비스가 퍼지고 있다. 이러한 음성 인식 역시 엄청난 Database를 바탕으로하는 Big Data의 한 예이다. 음성 인식의 경우 실시간으로 처리를 해야하고, 사람마다 다른 억양과 잡음을 처리해야하기 때문에 실제 사용이 가능할 정도로 구현하는 것은 매우 어려운 일이다. 글자 역시 마찬가지이다. 글에는 문맥이라는 것이 있기 때문에 단어를 표면적으로 번역한 문장은 이해하기 힘들다.


 3. 단백질 효소나 게놈 지도, DNA: 이러한 분야 역시 매우 많은 정보를 바탕으로 유의미한 정보를 뽑아내려고 한다. 한 사람의 DNA 정보는 약 1Gbyte라고 알려져 있다. DNA에서 유의미한 정보를 얻어내기 위해서는 상관관계를 추정해야하는데, 한 표본의 data가 1G에 달하니 쉽지 않은 일이 된다. 이 역시 Big Data 기술을 이용해서 문제를 해결하고자 한다. 


 

 *Machine Learning in Big Data Technology

 기계 학습이라 번역되는 Machine Learning은 그 이름과는 달리(?) Big Data처리와 밀접한 연구를 한다. Machine Learning은 크게 네 가지 카테고리로 나뉠 수 있다. (이건 Stanford의 Andrew NG교수의 강의에서 어렴풋이 봤던 것 같다?)

 1. Supervised Learning

 2. Unsupervised Learning 

 3. Reinforcement Learning

 4. others

 

 Supervised Learning의 경우 특정 data와 이 data가 어디에 속하는지를 알려주고 학습을 시키는 알고리즘이다. 이에 속하는 알고리즘에는 ANN(Back Propagation), Bayesian network, Decision Trees, KNN, SVM, Random Forest, Boosting, Regression, HMM, LDA 등이 있다. 

 

 Unsupervised Learning은 data만 무작위로 주고서는 알아서 분류를 하는 것이다(분류 혹은 sparse representation). 여기에 속하는 알고리즘으로는, ANN, Deep Learning, EM algorithm, K-means algorithm, HTM 등이 있다.


 Reinforcement Learning에는 TD(temporal difference) learning, Q-learning 등이 있다. 


 Gaussian Process는 어디에? 흠.. 


 이렇듯 Machine Learning은 기본적으로 기존에 있는 어떤 정보들을 바탕으로 학습을 하고, 이를 기반으로 새로운 정보가 들어왔을 때 이를 분류하는 일을 하게된다. 


 인터넷의 발달로 우리는 수많은, 거의 무제한의 정보를 손쉽게 얻을 수 있다. 이러한 정보를 바탕으로 학습을 하기 위해서는 unsupervised learning 이 필요하다. 이는 인간이 학습을 하는 과정과 거의 비슷하게 된다. 하지만 unsupervised learning의 경우 여러 제약이 많다. 먼저 알고리즘이 알아서 학습을 하고, 분류를 해야하기 때문에 parameter tuning이 어렵거나, 성능이 떨어지는 경향이 있다. 내가 생각하기에 가장 큰 문제 중하는 alignment이다. 이 alignment는 여러 가지 의미로 해석될 수 있겠으나 비슷한 틀로 정보를 줘야 학습이 가능하다는 제약, 으로 받아드리면 될 것 같다.


 인간이 어떤 대상을 학습한다고 할 때, 우리는 책, 티비, 글 등 수많은 것을 통해서 배울 수 있지만, 아직까지의 알고리즘은 정형화된 틀을 통해서만 학습이 가능하다. 이렇기 때문에 학습이 가능하도록 data를 모으는 것 자체가 매우 어렵다. 


 또한 컴퓨터의 성능이 비약적으로 빨라졌다고 하지만 아직까지 인간의 영상처리 속도를 따라갈 수 있는 것이 현실이다. 즉 다시 말해서 영상이라는 대용량 정보 처리를 위한 알고리즘이 아직 부족하다고도 볼 수 있다.