Condividi tramite


손에 잡히는 머신러닝(Machine Learning)

지난 1월30일 서강대에서 있었던 머신러닝 레볼루션 행사에서 발표하였던 "손에 잡히는 Machine Learning" 발표 내용을 정리 해 보았습니다.

동영상 링크 : https://channel9.msdn.com/Events/Channel9-Korea/dev-fundamental/MLR01
슬라이드 링크 : https://doc.co/HoFkxL

작년부터 시작된 머신러닝에 대한 열기가 2016년이 되면서 더 한층 뜨거워 진것 같습니다. 오늘은 머신러닝에 대하여 기술적으로 깊이 있는 내용을 살펴보기보다는 마이크로소프트가 머신러닝이라는 분야에서 어떠한 일들을 해오고 있고, 어떻게 이러한 기술을 활용하고 있는지 그리고 플랫폼 회사로서 마이크로소프트가 일선 학계나 연구소, 기업, 일반 개발자분들에게 어떤 가치를 전하고 있는지에 대해서 알아보고자 합니다. 먼저 크게는 인공지능 분야, 작게는 머신러닝 혹은 딥러닝이라는 분야가 어떻게 활용되고 있는지에 대해서 간략히 알아보고자 합니다. 작년에 일반인들 사이에 꽤나 흥미롭게 이야기 되던 사이트가 몇가지 있었습니다.

첫번째가 https://how-old.net 이라는 사이트입니다. 이 사이트를 방문해 보시면 Bing 검색을 이용하거나 혹은 사용자가 직접 찍은 사진을 통해서 나이를 확인할 수 있습니다. 두번째 사이트는 https://twinsornet.net 이라는 사이트인데요. 인물 사진 두장을 선택해서 올리면, 두 인물이 얼마나 닮았는지를 알려줍니다. 저도 흥미롭게 제 사진과 강동원을 자신있게 비교했습니다만 비교적 낮은 점수가 나오더군요. 이 같은 사이트들은 그 이면에서 마이크로소프트의 클라우드 서비스를 기반으로 하는 머신러닝 기술을 이용하여 이미지에 대한 학습을 수행하고, 서비스를 제공하고 있습니다. 그외에도 마이크로소프트는 다양한 제품에 머신러닝 기술을 적용하고 있습니다. 특별히 Bing의 이미지 검색은 단순 키워드로 이미지를 검색하는 것이 아니라 이미지를 분석하여 이미지를 키워드로 맵핑하는 작업을 사전에 수행하고 그 결과를 기반으로 이미지를 검색합니다. 또한 사용자가 검색한 이미지와 가장 유사한 이미지를 추가적으로 확인할 수 있는 기능을 가지고 있기도 합니다. 예를 들어 https://bing.com/images 에서 ‘마돈나’를 검색한 후, 검색 결과 중 하나를 선택하고, 스페이스바를 누르면 앞서 선택한 이미지와 분위기나 배치가 유사한 이미지를 추가로 보여줍니다.

이는 Bing의 이미지 검색이 단순 키워드 검색이 아니라 이미지에 대한 분석 결과를 기반으로 검색을 수행함을 알 수 있는 단적인 예라고 할 수 있습니다. 물론 여기서 사용된 기술도 바로 머신러닝입니다. 그외에도 최근에 Preview로 공개한 Skype Translator의 경우 Skype의 영상 통화 기능에 실시간 번역/통역 기능을 포함시킨 제품인데요. https://www.youtube.com/watch?v=mWTySUGXR2k 를 통해서 그 활용 예를 동영상으로 살펴보실 수 있습니다.

Skype Translator의 경우 Backend에서 음성 인식, 문장 보정, 번역, 텍스트 음성 변환 등의 다양한 머신러닝 기술들이 결합되어 준실시간으로 번역과 통역을 제공합니다. 마이크로소프트가 이처럼 다양한 제품에 머신러닝을 도입한 것은 사실 최근의 일이 아닙니다.

이미 25년 전에 마이크로소프트는 인공지능 연구소를 구성하였으며, 1997년 핫메일 서비스의 스팸 메일 필터를 만드는 과정에서 머신러닝 기술을 도입하였습니다. Bing, Kinect, Skype, Azure Machine Learning, 윈도우10의 Cortana에 이르기까지 다양한 제품에 머신러닝 기술을 적용할 수 있었던 것은 20여년간 머신러닝 분야에 꾸준한 투자를 이어왔기 때문에 가능한 것이었습니다.

마이크로소프트는 사용자들을 위한 최고의 제품을 만드는 것에 더하여 항상 개발자들이 활용할 수 있는 최고의 플랫폼을 제공하는 회사였습니다. 사티아 나델라 CEO 부임이후에 이러한 점을 좀 더 명확하게 이야기하고 있음을 알 수 있습니다. https://www.microsoft.com/about 사이트를 방문해 보시면 마이크로소프트의 전략을 “모바일와 클라우드가 우선인 세상에서 최고의 플랫폼과 생산성을 향상시키는 제품을 개발하는 것”이라고 선언하고 있음을 확인하실 수 있습니다. 즉, 기술을 연구하고 개발함에 있어 단순히 최상의 제품을 만드는 것에 그치지 않고 개발 생태계에 최상의 플랫폼으로 제공함으로써, 다른 산업과의 상생을 목표로 하고 있다는 것입니다. 이런 취지에 기반하여 마이크로소프트는 머신러닝과 관련하여 다양한 라이브러리와 플랫폼들을 공개하고 있습니다. 처음으로 알아볼 분야는 프로젝트 옥스포드(https://www.projectoxford.ai) 입니다. 사실 일선 개발자들의 경우에는 머신러닝이 중요하고 이를 활용한 다양한 가능성이 존재함을 알고 있지만, 머신러닝 그 자체에 투자를 하는 것은 어려울 수 있습니다. 또한 머신러닝이 어떤 분야에서 어떻게 활용될지에 대해서도 가늠하지 못하는 경우도 있으리라 생각합니다. 프로젝트 옥스포드는 머신러닝을 이용한 다양한 용례를 소개하고 REST 기반의 API를 이용하여 그 기능을 즉각적으로 사용할 수 있도록 도와주는 사이트입니다.

사이트를 방문해 보시면 매우 다양한 용례들을 살펴보실 수 있는데요, 크게 3가지 범주로 나누어서 살펴 볼 수 있습니다. 먼저 Vision과 관련한 부분입니다. Computer Vision API를 이용하면 사진을 분석하여 그 사진의 분위기나 사진이 찍혀진 위치에 대한 대략적인 분석 결과 등을 확인할 수 있습니다. 멋진 해안의 모습을 찍으면, 사진을 찍은 위치가 해안이고 맑은 하늘이 포함되어 있으며, 전체 분위기가 광할하다는 등의 정보를 얻을 수 있습니다. Face API와 Emotion API 등은 사진에서 사람을 찾거나, 그 사람의 눈, 코, 입의 위치 등등을 세부적으로 분석하고, 나이를 추정할 수 있습니다. 또한 즐겁거나 슬픈 표정이라는 등의 감정 상태를 확인할 수 있기도 합니다. Video API를 활용하면, 떨림이 심한 영상을 보정하여 안정적인 영상으로 바꾸어줄 수도 있고, Video 상에서 동작을 감지하거나, 사람의 얼굴을 지속적으로 Tracking 할 수도 있습니다. 그외 음성을 인식하거나 텍스트를 읽어주거나 혹은 미리 학습된 정보를 기반으로 화자를 찾아내는 등의 기능을 수행할 수도 있으며, 사용자의 언어를 인식하는 등의 광범위한 기능들을 제공합니다.

거의 대부분의 기능들을 사이트에서 바로 살펴보실 수 있도록 데모로 구성되어 있습니다. 좀 더 자세한 내용은 https://www.projectoxford.ai/demo 를 통해 확인하시기 바랍니다. Project Oxford API를 이용한 예제는 https://github.com/Microsoft/ProjectOxford-ClientSDK/ 에서 다운로드 받으실 수 있습니다. 아래는 프로젝트 옥스포드 API를 이용하여 안드로이드 앱을 개발한 예입니다.

최근 머신러닝이 시장에서 다시 각광받고 있는 이유는, 머신러닝에 활용될 수 있는 다양한 알고리즘의 개발, 데이터 폭증 시대의 정밀하고 광범위한 데이터, 클라우드 컴퓨팅으로 대표되는 컴퓨팅 리소스의 무한한 사용에 기인한다고 볼 수 있습니다. 이에 마이크로소프트는 데이터 취합, 데이터 저장, 데이터 분석, 결과 리포팅과 관련된 다양한 플랫폼들을 제공하여 개발자들이 좀더 손쉽게 데이터로부터 미래를 위한 통찰을 얻을 수 있도록 돕고 있습니다. 마이크로소프트 애저에는 이를 위해 ‘코타나 어넬리틱스 스위트(Cortana Analytics Suite)’라는 종합 선물 세트를 구성해 두었습니다. 개별 기능 등을 독립적으로 활용할 수도 있으며, 아래와 이를 선형적으로 배치하여 각각을 연결하여 사용할 수도 있습니다.

Cortana Analytics Suite는 데이터의 발생 위치, 데이터의 취합 방법, 데이터의 정형/비정형 여부, 실시간 분석 혹은 배치 분석 등의 특성에 따라 다양한 선택의 폭을 제공하고 있습니다. 이중 애저 머신러닝(Azure Machine Learning)에 대해서 좀 더 자세히 살펴볼까 합니다.

Azure Machine Learning은 https://azureml.com 을 통해서 바로 사용할 수 있으며, 웹 기반의 편집 도구를 이용하여, 머신 러닝에 필요한 데이터 취합, 클린징, 알고리즘 적용 등을 손쉽게 적용하여 예측 모델을 개발할 수 있습니다. 또한 기존에 R이나 Python 등으로 개발된 외부 모듈을 그대로 임포트 하여 사용할 수도 있습니다. 생성된 모델은 스코어 모델을 이용하여 평가하여 그 정밀도를 측정할 수도 있으며, 배치 학습뿐 아니라 실시간으로 지속적인 학습을 진행하도록 구성할 수도 있습니다. Azure Machine Learning이 여타의 머신러닝 솔루션과 차별화된 점은 예측 모델을 손쉽게 개발하는 것에 그치지 않고 손쉽게 외부 시스템과 연계할 수 있도록 REST 기반의 API를 생성할 수 있다는 점입니다. 이러한 과정은 모두 자동화 되어 있으며 생성된 API를 사용하는 예제를 C#/Python/R 등으로 확인할 수 있으며, 간단히 Excel을 이용하여 테스트를 해볼 수도 있습니다.

마지막으로 이렇게 개발된 예측 모델이나 데이터들은 애저 마켓 플레이스(https://azure.microsoft.com/ko-kr/marketplace/) 나 오피스 스토어(https://store.office.com/)를 통해서 판매 할 수도 있습니다. 클라우드 기반의 솔루션을 필요로 하기보다는 연구소나 기업 내에서 자체적으로 머신러닝 플랫폼을 이용하고 싶은 회사도 있을 것입니다. 마이크로소프트는 이를 위해서 최근에 2가지의 머신러닝 플랫폼을 오픈소스로 공개하였습니다.

DMTK(https://www.dmtk.io)는 머신러닝 클러스터를 구성할 수 있는 DMTK Framework와 마이크로소프트가 수년간 개발한 LightLDA와 Distributed Word Embedding 알고리즘을 포함하고 있습니다, 알고리즘은 계속 추가될 예정이라고 합니다. DMTK의 github repo.는 https://github.com/microsoft/dmtk 입니다.

그 외에도 뉴럴 네트워크를 이용한 딥러닝에 특화된 프레임워크도 오픈소스로 공개하였습니다. CNTK는 현재까지 공개된 머신러닝 프레임워크 중, 여러대의 머신에 설치된 GPU를 활용할 수 있는 유일한 프레임워크이며, 최근 공개된 Google의 TensorFlow에 비해 약 8배 가량 빠른 속도를 보인다고 합니다. CNTK에 대한 좀 더 자세한 내용은 https://cntk.ai 를 방문해 보시기 바랍니다.

맺으며, 지난 2015년 12월10일 ImageNet에서 주관하는 Large Scale Visual Recognition Challenge 2015(ILSVRC2015)에서는 아주 흥미로운 결과를 공개하였습니다. 수년간 이 행사를 통해서 컴퓨터의 사물 인식률이 지속적으로 개선됨을 확인할 수 있었으며, 2015년에는 인식률이 96%에 이른다는 것입니다.

그리고 이날 마이크로소프트 연구소 또한 “사진과 동영상에서 객체를 식별하는 기술의 발전으로 인식의 정확도는 인간의 수준과 비슷하거나 때로는 인간의 수준을 능가한다”고 밝혔습니다. 이렇게 자신있게 이야기 할 수 있었던 것은 ImageNet의 2015년 우승자가 바로 마이크로소프트였기 때문입니다.

감사합니다.

Comments

  • Anonymous
    March 13, 2016
    코타나 한국어 얼릉 지원됐으면 합니다!
    • Anonymous
      March 21, 2016
      저도 빠른 시일 내에 코타나가 한글을 지원하였으면 합니다만 좀 더 시간이 걸릴 것 같습니다.
  • Anonymous
    July 19, 2016
    안녕하세요.까막눈이라 무식한 질문 여쭙니다..1. CNTK가 TensorFlow보다 8배 정도 빠르다는 것이 잘 이해되지 않는데요.속도를 비교한 그림에서 CNTK가 TensorFlow보다 어떤 부분에서 8배가 빠른건지 잘 모르겠습니다.(초록색 막대기를 비교하신건지요? 2x4 GPU)2. 텐서플로우는 2x4 GPU를 설치할 수 없는것인지요?급히 필요하여 꼭 답변 부탁 드립니다!ㅠㅠ