2016년 9월 14일 수요일

어느새 성큼 다가와 버린 Artificial intelligence (AI)

   Software Engineer로서 2016년을 강타한 굵직 굵진한 여러가지 사건이 있었지만, 개인적으로는 가장 극적이면서도 사람들에게 가장 큰 전율(혹은 공포)를 준 사건은 바로 Google의 AlphaGo가 이세돌 9단을 4:1로 꺾어 버린 사건이 아닌가 싶다.

   이 사건으로 인하여, Google은 10억원 안밖의 돈으로 AI 분야의 선두주자라는 명성을 전세계를 상대로 확실히 각인시켰으며, 조훈현, 이창호 9단등의 전성기가 지나며 침체되었던 바둑계도 새로운 관심이 생기기 시작했으며, 지금은 약간 조용해 지긴 했지만 ,무엇보다도 전 국민이 알파고라는 인공 지능에 대해 아무런 설명없이도 이해하게 되었다는 것이다.

   도대체 알파고라는 인공지능은 무엇일까? 여러가지 방향으로 설명할 수 있겠지만, 가장 간단히 설명하자면 Machine Learning 이라는 기법을 통해 컴퓨터가 스스로 학습을 진행할 수 있게 된 것이다. 아이가 새롭게 바둑을 배워가면서, 경험과 직관을 축적하는 것처럼 컴퓨터에서도 Machine Learning이라는 기법을 통해, 컴퓨터 자가 학습을 통해 세계 최강의 이세돌 9단을 꺾을 수 있도록 만들어 주는 것이다.

   물론 세계 최강을 꺾는 다는 것이 쉬운 일이 아니다. 이세돌을 이기기 위해 Google에서 일하는 수십명의 생산성 높은 소프트웨어 엔지니어들이 Machine Learning기법을 알파고에 집적 시켰으며 (여기까지는 기존 Software 산업에서 해왔던 것이다), 빅데이터라는 기법을 동원하여 지금까지 몇백년간 사람들이 해왔던 바둑기보를 저장해 두어 알파고 학습에 동원 시켰으며 (알파고는 지금까지 각종 대회에서 초보자부터 내노라하는 유명기사가 치룬 기보를 모두 빅데이터로 가지고 학습해왔다, 참고로 사람은 바둑을 5~6판 정도 해보면 바둑의 룰을 대충 이해하면서 플레이를 시작할 수 있지만, 컴퓨터는 몇백만 기보를 읽어보는 수준의 엄청난 Data를 필요로 한다.), 그리고 결정적으로 Cloud computing이라는 기법을 이용해서 엄청난 성능의 컴퓨터를 Parallel하게 묶어서 학습을 통해 생긴 정보를 통해 결정을 내리도록 한다.

 AlphaGo = Machine Learning 기술 + BigData 기술 + Cloud Computing 

   예전에 유행했던 Machine Learning이 인터넷을 통해 Digital 정보를 충분히 축적했고, 축적된 Big Data를 parallel 하게 조작할 수 있는 Clouding 컴퓨팅 기법이 유행하면서, 바야흐로 알파고와 같은 충분한 학습을 받은 AI가 출현된 것이다.

   이렇게 이야기 하니까 너무 어렵게 느껴질 수 있지만, 결국은 Machine Learning은 인터넷을 통해 축적된 디지털 정보를 쪽집게 학습지 삼아, 클라우딩이라는 기법을 통해 서로 연결된 기계들이, 학원에서 자율학습 하듯이, 인간의 학습 방법과 비슷한 학습을 시작했다는 것이고, 구글은 바둑을 그 첫번째 마케팅 포인트 삼아 그 첫번째 목적을 달성한 것이다. 그리고 인류 역사상으로 보자면, 인공지능의 큰 첫발을 내딛었다고 할 수 있다.

   자! 그렇다면 이 Machine Learning 이라는 인공지능기법이 어느 정도나 우리 가까이 와 있는 것일까? 우리가 창조경제라는 구호 아래 얼마나 열심히 야근해 가며 하드웨어에 집중하면서, 충전 중 발화 가능한 모바일 폰을 개발하는 동안, 아래 Reference 사례등을 통해, Software 선진국들이 얼마나 쉽게 Artificial Intelligent를 적용할 수 있게 개발해 냈는지 이야기 해 보고자 한다.

   아래 이야기는 일본의 한 농부 이야기이다. 물론 그냥 농부는 아니고, Embedded 장비를 만들던 IT 기업에서 퇴직한 전직 엔지니어이다.( 한국에서는 닭집창업이 가장 많다고... 쿨럭!!) 이분이 오이농사를 지으시는데, 오이를 크기와 모양에 따라 분류하는 작업이 시간과 인건비가 많이 소모되는 작업이라고 이를 해결하기 위해 고민하시던 중, 알파고의 승전보를 들으셨다고 한다.


Japanese Farmers who are using Koike's cucumber sorting machine (Google)


   이 때 이 분이 생각하신 것이, 인건비가 싼 중국 아줌마나 정부 추천 열정페이 청년인턴을 구하신 게 아니라, 알파고와 같은 Machine Learning 을 오이 분류 작업에 투입하신 거다. 현재 이 일본 농부 아저씨가 가지고 있는 인공지능 오이 분류기는 아래 사잔에서와 같이 오이의 길이, 지름, 그리고 자라난 모양 형태에 따라 9가지 종류로 구분시킨다.
(^^ 일본은 특히 인건비가 비싸니 이런 혁신이 절실한 듯 하다.)


Training data from cucumber sorting machine. (Google)



   물론 이 분이 전부 만드신 건 아니고 Google 에서 제공한 TensorFlow라는 오픈소스 라이브러리를 이용하여, 오이의 분류 작업을 학습시켰다. 물론 오이의 사진을 찍고, 이를 TensorFlow를 통해 Google Cloud machine가 판단하도록 만드는 부분은 Raspberry Pi 3를 통해 직접 만드셨다. 오호, 물개박수!

실제로 동작되는 부분은 아래의 비디오를 참조해 보시기 바란다.





   뭐 어찌 되었던 일본의 농부가 직접 생산혁신에 사용할 수 있을 정도로, Machine Learning은 우리 주위에 이미 가까이 다가와 있다. 크게 어렵지 않다. Google뿐 아니라 소프트웨어적으로 선진업체에서는 이미 자신이 구축한 Machine Learning Platform을 Open source로 공개하며, 시장을 주도적으로 선도하고자 한다. 일본 농부가 사용한 Machine Learning Platform은 TensorFlow이다. Document와 Sample 몇 개를 따라하면서 쉽게 Cucumber Sorting Machine 을 구축하였다고 한다. Introduction을 살펴 보면 Python API와 비슷한 형태로 이루어져 있으며, 첫 페이지 부터 빨간 약과 파란 약을 선택하라고 한다.... (Matrix가 여럿 망친....ㅎㅎ)

   이런 걸 보니 어느새 다시 Machine Learning 이 많이 나와 있는 MOOC를 뒤적이게 된다....흠....


Reference

  1. Quartz
    http://qz.com/771921/the-ultimate-promise-of-artificial-intelligence-lies-in-sorting-cucumbers/?imm_mid=0e7ab8&cmp=em-data-na-na-newsltr_ai_20160912
  1. TensorFlow
    https://www.tensorflow.org/
    https://research.googleblog.com/2015/11/tensorflow-googles-latest-machine_9.html
  1. Google Cloud Platform
    https://cloud.google.com/blog/big-data/2016/08/how-a-japanese-cucumber-farmer-is-using-deep-learning-and-tensorflow