안성원 선임연구원

2015년 11월 9일 (현지시간 8일) 구글이 텐서플로우(TensorFlow)를 공개했다. 텐서플로우는 인공지능 신경망 연구를 위해서 구글에서 개발한 오픈소스 라이브러리이다. 구글을 비롯한 IT 업계들은 현재 인공지능의 한 분야인 기계학습(Machine Learning: 머신러닝)에 대부분 초점을 맞추고 있다.

먼저 기계학습이 무엇이며, 각 산업분야에서 개발중인 현황을 살펴보도록 하자.

기계학습이란 기계 또는 컴퓨터가 스스로 데이터를 분류하고, 패턴을 학습하여 어떤 일의 정확성을 높이거나 미래의 일을 예측하는 기술과 방법론을 말한다. 기계학습은 기존의 정교한 규칙에 의한 기계의 동작이 아니라, 엄청난 양의 데이터에서 기계가 스스로 배우면서 규칙을 만들어가며 문제를 해결하는 형태를 띤다. 대표적으로는 생물학의 신경망을 모방한 통계적 학습 알고리즘인 인공신경망(Artificial Neural Network)이 있다.

현재의 기계학습은 기존의 인공신경망을 발전시켜서 여러 계층의 단계를 가지고 훨씬 더 복잡한 문제를 해결할 수 있는 딥러닝(Deep Learning)으로 발전되었다. 딥러닝은 다량의 데이터 속에서 핵심적인 내용 및 기능을 요약 추출 하는 기계학습의 집합으로 정의된다. 쉽게 말해 컴퓨터가 사람처럼 생각하고 학습 할 수 있는 보다 진보된 인공지능 기술이다.

인공지능에 대한 뜨거운 관심은 이미 세계적으로 산업 전 분야에 걸쳐 나타나고 있다. 상당한 수준의 인공지능을 갖춘 IBM의 왓슨(Watson)은 퀴즈대회에서 우승하고, 요리책을 출간하며, 의료플랫폼으로까지 진화하고 있다. 벤츠, BMW, 볼보를 비롯한 수많은 글로벌 자동차 업체들과 글로벌 IT업체(구글, 애플 등)들은 인공지능을 갖춘 자율주행 자동차의 개발과 상용화를 진행중이며, 이를 실현하기 위한 각종 법안을 만들고 규제를 풀어가고 있다. 페이스북, 아마존, 마이크로소프트 등은 인공지능 디지털 비서를, 미국의 국방고등연구계획국(DARPA)은 무인 항공기를, 인텔과 바이두 등은 헬스케어 및 웨어러블에 인공지능을 탑재하는 등 수많은 기업들이 각자의 분야에서 인공지능을 연구개발 중에 있다. 이처럼 인공지능은 점점 모든 분야에 필연적으로 융합되면서 우리 일상으로 다가오고 있다.

첫 번째 배경은 바로 ‘BigData 시대의 도래’이다. 앞서 살펴본 다양한 경우처럼 엄청난 양으로 쏟아져 나올 데이터를 분석하고 학습하고 각각의 상황에 최적화된 결과를 도출해 낼 수 있도록 하기 위해서는 깊이 있는 기계학습, 즉 딥러닝이 필요하다.

두 번째 배경으로는 하드웨어의 발전에 있다. 기존 인공신경망 모델은 많은 계산이 필요하기 때문에 고성능 하드웨어가 필요했다. 또한 국지적인 데이터에만 과도하게 학습되는 과적합(overfitted)1) 문제를 가지고 있었다. 하지만 컴퓨터 하드웨어의 성능이 비약적으로 향상되면서 인공신경망 모델의 단점은 많이 완화 되었다. 최근에는 GPU를 이용한 병렬연산을 통해서 상대적으로 값싼 상용컴퓨터상에서도 딥러닝 연산이 가능한 수준에 이르기도 했다.2) 따라서 기존 기계학습의 낮은 성능과 활용하기 힘들었던 문제가 해결되었다.

이러한 상황에서 구글은 기계학습을 위한 라이브러리인 텐서플로우를 오픈소스로 공개했다.

구글의 에릭 슈미트 회장은 “구글이 기계학습 시스템의 소스를 공개해 표준을 주도하겠다” 라고 밝히며 기계학습 시스템도 표준이 필요함을 역설한 바 있다. 구글은 기계학습 스타트업인 딥마인드(Deep Mind)사를 5억 달러에 인수하면서, 딥러닝에 기술개발에 투자해왔다. 구글 검색의 기본인 ‘페이지랭크(Page Rank)’ 알고리즘에도 기계학습을 사용한다. 이 밖에도 유튜브 추천 영상, 구글 스트리트뷰의 건물 주소인식, 구글 나우의 음성인식, 구글 플러스의 사진 태깅, 지메일 스팸걸러내기 등 구글이 서비스하는 각 요소에 딥러닝 기술이 적용되어 있다.

이번에 공개된 구글의 텐서플로우는 텐서(Tensor) + 데이터플로우(DataFlow)로 구성된 합성어 이다. 텐서는 수학의 다중선형함수를 말하며 모든 데이터를 수치화된 벡터값으로 표현한 다차원 배열을 의미한다. 데이터플로우는 하나의 작업을 수행하기 위하여 실행되는 각각의 세부작업들 사이에서 자료가 입출력 되는 것으로, 복수의 인공신경망 연산 작업이 병렬처리 됨을 의미한다.

텐서플로우의 특징은 다음과 같다.

  • 범용성과 속도 : 텐서플로우는 그래디언트(gradient)3)기반의 모든 기계학습 알고리즘과 함께 사용할 수 있어서 그 응용범위가 넓다. 속도를 위해서 C++로 작성되었고, 개발자는 기반 하드웨어에 대한 별도의 지식을 갖출 필요 없이 개발을 할 수 있다. 텐서플로우는 초창기 구글의 인공신경망 시스템인 디스트빌리프(DistBelief)보다 최대 5배나 빠른 속도로 신경망을 구축하고 학습할 수 있다.
  • 용이성과 확장성 : 텐서플로우는 좀 더 직관적인 언어인 파이썬 인터페이스를 지원하며 사용의 용이성 측면에서 강점을 갖는다. 현재 텐서플로우는 기본적으로 파이썬 2.7 버전 API를 지원하며, C/C++ 에 대한 지원도 제공한다. 파이썬 인터페이스를 통해 도구, 예제, 튜토리얼과 같은 독립형 라이브러리를 사용할 수 있고, 단일 API를 사용하여 다양한 디바이스(데스크탑, 서버, 모바일 등)에서 하나이상의 CPU 및 GPU 에게 연산을 수행시킬 수 있다. 또한 확장성도 뛰어나서 안드로이드, 애플 iOS, 맥 OS, 리눅스 등 다양한 도메인에 적용 할 수 있다.
  • 오픈소스 : 텐서플로우는 현재 모든 사람들에게 공개되어 있고, 아파치 2.0 라이센스4) 조건에서 누구나 사용가능하다. 현재 공개된 버전은 단일 머신에서만 동작할 수 있으나, 확장된 기능이 조만간 출시될 예정이다. 텐서플로우에 대한 소개와 튜토리얼, MNIST5)예제, API 라이브러리 등은 홈페이지6)에서 찾아볼 수 있다.

텐서플로우의 공개는 어떠한 의미를 가질까?

구글의 텐서플로우 공개는 사회공헌이란 차원도 있겠지만, 무엇보다 관련 개발자 및 커뮤니티를 비롯하여 여러 사람의 사용과 검증으로 비롯된 피드백으로 프로그램을 더 발전시키고, 구글의 텐서플로우를 잘 아는 인재확보에 더 큰 목적이 있다고 할 수 있겠다. 어쩌면, 구글이 딥러닝 시장을 선도하며, 글로벌 IT 업체로써 ‘기계학습=오픈소스’ 라는 선례를 남기며 자신감을 나타내었다고 볼 수 도 있다.

현대의 기계학습에서는 알고리즘 코드를 비밀로 유지하는 것이 이익을 가져다주지 못한다. 수많은 데이터를 학습해야 하고 클라우드에 배포되기도 해야 하는 환경에서는 알고리즘 자체 보다 이 알고리즘을 학습시키는 데 사용되는 BigData, 바로 현실 세계 속 데이터로의 연결이 가장 중요한 요소이다.

프로젝트를 오픈소스화 하면 훨씬 더 많은 사용자가 그 프로젝트에 기여할 수 있게 된다. 데이터를 처리하는 데 사용되는 인공지능 알고리즘은 최대한 많은 사용자를 거칠 때 가장 큰 효과를 얻을 수 있다. 구글은 이번 공개를 통해 구글 내부적으로는 생각하지 못했던 사용 사례들이 일반 사용자들을 통해서 발견될 가능성을 높이면서, 더 나아가 관련 개발자 및 과학자 커뮤니티와도 협력할 수 있는 계기를 만들었다.

비슷한 의미에서, 또 다른 거대 글로벌 IT 업체인 마이크로소프트도 구글에 이어 지난 11월 13일(현지시간 12일)에 기계학습 툴킷인 DMTK (Distributed Machine Learning Toolkit)를 오픈소스 프로젝트 공유사이트 깃허브(GitHub)에 올리며 공개했다. DMTK는 서버-클라이언트 구조를 위한 C++ 기반의 SDK(Software Development Kit)이고, 한 번에 여러 노드상에서 모델을 훈련 할 수 있도록 한다. 마이크로소프트는 다른 인공지능 알고리즘도 조만간 공개할 계획을 가지고 있다.

이미 세계 최대의 전기자동차 제조사이자 선구자인 테슬라 모터스 또한 특허기술을 오픈소스로 개방한 바 있다. ‘공유를 통한 기술의 진보’, 그리고 ‘기술 외적으로도 더 큰 성장’이 우리나라 기업들에게도 필요하지 않을까? 물론 기술을 공개할 수 있는 환경 조성이 더 큰 해결 과제일 것이다. 인공지능이 세계적인 추세인 만큼 ICT 융합과 더불어 앞으로도 수많은 기술적·정책적 이슈가 산재되어 있을 것이다. 미비한 제도를 찾아 보완하고, 제약이 되는 규제를 찾아 완화하는 등, 기술이 발전 될 환경을 만들어주는 정부차원의 역할도 필요한 때이다.


1) 기계 학습 알고리즘이 훈련 데이터에만 너무 과도하게 학습되어 전체 집합에 적용되지 않고 훈련 데이터에만 존재하는 특징을 학습하는 현상으로 과적응 이라고도 한다. 대표적으로 잘 알려진 문제로는 local minima(maxima) 등이 있다. 해결방법은 최대한 많은 사례를 학습시켜 오류를 감소시켜야 한다.

2) 2012년 구글에서 약 2000개의 CPU와 16000개의 코어로 구성된 50억불 상당의 슈퍼컴퓨터인 ‘구글브레인’을 통해 3일간 수행했던 딥러닝 작업(고양이 사진 구분)을, 현재는 단 3대의 GPU 서버(Gpu core 18,432 개)-(대당 약 3만5천불)로 해결 가능해졌다.

3) 그래디언트는 ‘기울기’를 뜻하는데, 함수에서 벡터값의 가파른 정도를 나타낸다. 그래디언트 기반의 알고리즘은 인공지능에서 자주 사용되는 최적화 방법 중의 하나로, 어떤 함수의 극대점 또는 극소점을 찾기 위한 방법을 말하며 gradient ascent, gradient descent 가 있다. 이 기울기 계산에 기초한 함수로는 역전파(Back-propagation), Lind search, Quasi-Newton 등이 있다.

4) 아파치 라이센스(Apache License)는 아파치 소프트웨어 재단에서 자체적으로 만든 소프트웨어에 대한 저작권 규정이다. 누구나 해당 소프트웨어 파생된 프로그램을 제작할 수 있으며 저작권을 양도 및 전송할 수 있다. 단 재배포 시에는 반드시 아파치 소프트웨어 재단에서 개발된 것임을 명시해야한다.

5) 미국국립표준기술연구소(National Institute of Standards and Technology)가 제작한 이미지 클러스터링을 위한 수기작성(hand-written)된 숫자 이미지 database.

6) http://www.tensorflow.org/

키워드 월간SW중심사회 2015년 12월호