반응형

출처: http://www.bloter.net/archives/254962



4월21일 저녁, 200여명 개발자가 구글 캠퍼스에 찾아왔습니다. 구글의 딥러닝 전문 연구팀인 브레인팀에 속해있는 마이크 슈스터 박사의 강연을 듣기 위해서인데요. 마이크 슈스터 박사는 2006년 구글의 음성인식 팀으로 입사해 지난 8년 동안 구글의 한국어와 일본어 음성인식 개발에 기여한 분입니다. 최근에는 머신러닝 오픈소스 라이브러리 ‘텐서플로우’ 기술을 이끌고 있죠. 마이크 슈스터 박사는 이날 행사에서 1시간 정도 머신러닝과 텐서플로우 기술에 대한 개론을 설명했습니다. 그 이후엔 30분간 청중과 자유롭게 질문과 답변을 주고받았습니다. 행사에서는 시간이 부족할 정도로 많은 질문이 쏟아져 나왔는데요. 아래는 텐서플로우와 머신러닝에 대해 관심이 많은 분들을 위한 요약 정보입니다.

Mike_Schuster_02

▲구글 브레인팀에 속해 있는 마이크 슈스터 박사가 구글캠퍼스에서 강연을 진행했다(사진:블로터)

1. 구글의 머신러닝 역사

머신러닝은 30년 전만 해도 몇몇 연구자만 관심 가졌던 기술이었습니다. 머신러닝 연구에 필요한 인프라도 덜 발달됐는데요. 그러다보니 처리할 수 있는 데이터도 적고, 데이터를 훈련시키는 데도 많은 시간이 필요했습니다. 하지만 최근엔 많은 기업 및 연구기관이 머신러닝이 투자하고 하드웨어 발전과 함께 머신러닝 연구 개발에 속도가 붙고 있죠.

구글 내부도 마찬가지입니다. 2011년만해도 구글에서는 아주 소수의 사람만 머신러닝 프로젝트에 투입됐습니다. 구글은 초창기 많은 데이터를 대규모 인프라에서 훈련시킬 수 있는 기술을 연구하기 위해 딥러닝 연구를 지원했다고 하는데요. 현재 구글은 ‘수많은 데이터로 많은 문제를 풀 수 있는 방법’을 주로 연구하면서 두고 머신러닝을 기술을 개발하고 있습니다. 2012년 구글에서 진행하는 딥러닝 프로젝트는 불과 100여개였지만 2015년에 그 숫자는 1200개로 늘어났습니다. 안드로이드, G메일, 음성인식, 번역 기술 등 다양하게 활용되고 있죠. 현재 텐서플로우 프로젝트에 투입된 인력만 해도 100명이 넘는다고 합니다.

Mike_Schuster_03_slide01

▲구글 내부에서 진행하고 있는 딥러닝 관련 프로젝트(사진 : 마이크 슈스터 구글 박사 발표자료)

재밌는 건 딥러닝 프로젝트에 관련된 팀원 중 70%는 미국이 아닌 다른 나라 출신이라고 합니다. 마이크 슈스터 박사는 구글에서 진행하는 머신러닝 프로젝트가 엄청난 반복과 노력에 의한 결과라고 소개하기도 했습니다. 그는 “구글에서 진행하는 머신러닝 프로젝트 상당수는 처음에는 아주 성능이 낮고 결과도 좋지 않았다”라며 “음성인식만 해도 처음에는 오류율이 80%였는데 계속 반복하고 끊임없이 노력하면서 원하는 결과를 얻었다”라고 설명했습니다.

2. 텐서플로우

구글의 딥러닝 프로젝트 중 최근 가장 주목받는 프로젝트는 텐서플로우입니다. 텐서플로우는 구글이 만든 2세대 머신러닝 시스템인데요. 이미지, 음성, 비디오 등 다양하고 많은 데이터를 처리할 수 있는 게 특징입니다. 모델을 훈련할 때는 주로 GPU를 이용한다고 하네요. 텐서플로우는 모바일, PC, 서버 등에서 이용할 수 있으며, 운영체제는 리눅스와 OS X을 지원하고 있습니다 핵심 기술은 C++로 작성됐고, 프론트엔드 부분은 파이썬으로 작성됐습니다.

Mike_Schuster_03_slide02

▲텐서플로우 아키텍처(사진 : 마이크 슈스터 구글 박사 발표자료)

Mike_Schuster_03_slide03

▲텐서플로우 지원 기술 (사진 : 마이크 슈스터 구글 박사 발표자료)

텐서플로우에 관심있는 분이면 구글이 공개한 공식 백서를 살펴보시면 됩니다. 마이크 슈스터 박사는 “사용자가 물어보는 질문의 대답 상당수가 공식 백서에 있다”라며 “튜토리얼, 예제, 자주 사용되는 모델 정보 등이 담겨 있다”라고 설명했습니다. 깃허브, 스택오버플로우, 메일링 리스트를 보면서 텐서플로우 소식을 더 자세히 접할 수도 있습니다.

3. 텐서플로우를 오픈소스 기술로 공개한 이유

텐서플로우는 2015년 11월 오픈소스 기술로 공개됐습니다. 구글이 공들여 만든 기술을 누구든 사용할 수 있게 허락한 셈인데요. 일반적으로 기업이 오픈소스로 기술을 공개하는 이유는 기술의 주도권을 잡기 위한 전략으로 풀이됩니다. 마이크 슈스터 박사는 직접 텐서플로우를 오픈소스 기술로 변환한 이유를 밝혔는데요. “소프트웨어 관리와 문서화를 더 잘하기 위해서”라고 말했던 부분이 인상적입니다.

“많은 분들이 구글이 하는 모든 프로젝트가 철저한 계획 아래 깔끔하고 효율적으로 진행될 걸로 생각하십니다. 사실 항상 그렇지 않습니다. 많은 프로젝트가 처음엔 엉망진창이며, 관련된 문서는 찾기 힘듭니다. 같은 일을 여러 번 반복하기도 하죠. 그런데 기술을 오픈소스화하면 (외부에 공개되기 때문에) 문서 작성나 작업을 체계화하는 데 많은 노력을 들입니다. 이건 과정에서 팀 전체가 일주일 동안 문서화 작업에 집중하기도 합니다. 이건 구글에게 매우 좋은 영향을 끼칩니다.”

두번째 이유는 커뮤니티가 텐서플로우 기술을 더 좋게 만드는데 도움이 될 거라고 생각했기 때문입니다. 마이크 슈스터 박사는 “텐서플로우와 관련된 좋은 예제는 커뮤니티에서 많이 나왔다”라며 “사실 한국 사용자들도 엄청나게 좋은 피드백을 주고 있으며 어떤 분은 업데이트가 되자마자 굉장히 빨리 소스코드를 기여했다”라고 말했습니다. 마지막으로 그는 “쉽게 이용할 수 있는 무료 도구로 더 많은 기업과 연구기관이 머신러닝 연구에 참여했으면 했다”라며 “함께 연구하고 공유하면서 지금의 머신러닝 한계를 뛰어넘을 수 있다고 생각했다”라고 밝혔습니다.

4. 머신러닝의 미래

마이크 슈스터 박사는 머신러닝 분야를 25년동안 연구했다고 합니다. 오랫동안 머신러닝을 연구한 입장에서 그는 머신러닝의 미래를 어떻게 바라볼까요? 마이크 슈스터 박사는 매일 하던 작업, 운전, 건강 문제 등 무엇인가 결정하는 데 앞으로 머신러닝이 도움을 더 줄 것으로 기대했습니다. 머신러닝이 문제를 단순하게 만들어주기 때문인데요. 마이크 슈스터 박사는 앞으로 머신러닝이 점점 더 많이 사용될 것이라고 확신하는 동시에 아래와 같은 당부를 함께 전했습니다.

“최근 머신러닝이 언론에서 많이 다뤄지고 있기도 해서 이 말을 꼭 하고 싶었습니다. 머신러닝으로 할 수 있다는 모든 것에 대해 조금은 회의적인(skeptical) 자세를 유지하시길 바랍니다. 기술을 어떤 결과물로 만드는 것은 매우 어려운 일입니다. 아이디어를 내는 것은 쉽습니다. ‘이렇게 하면 될 거야’, ‘아니 저렇게 하면 만들 수 있을 거야’라는 식으로요. 하지만 아이디어를 개선하고 실제 결과물로 내놓는 것은 어렵고 시간도 많이 걸리는 일입니다.”

Mike_Schuster_01-re

▲ 마이크 슈스터 구글 박사

다음은 참가자와 마이크 슈스터 박사가 주고받은 문답 일부입니다.

– 텐서플로우와 다른 머신러닝 라이브러리와의 차이점은 무엇인가? 비슷한 질문으로 다른 라이브러리가 아닌 텐서플로우를 선택해야 하는 이유는 무엇인가?

= 모든 기술을 이용해봐라. 토치카페 등 다른 기술들을 다운로드 하는 건 어려운 게 아니다. 다양한 기술을 작은 예제와 함께 일단 사용해보라. 그러면 결국 여러분들의 상황에 적합한 기술을 찾을 수 있을 거다. 텐서플로우가 모든 문제를 해결할 수 있는 만능 기술은 아니다. 텐서플로우의 장점은 구글이 만든 2세대 머신러닝 기술이고, 100여명의 인력이 투여되는 기술이라는 점이다. 그 말은 기술 지원이 활발하고, 오류도 더 빨리 발견하고 개선할 수 있다는 뜻이다. 작은 회사의 직원이고 어떤 기술을 선택할 지 고민하고 있다면 텐서플로우가 분명 좋은 대안이 될 것이다. 큰 데이터 규모에서는 더더욱.

– 텐서플로우는 윈도우에서 이용할 수 없다. 향후 윈도우를 지원할 계획이 있는가?

= 계획에 대해서는 뭔가 확실하게 이야기할 게 없다. 하지만 나도 윈도우 기기를 가지고 있고, 텐서플로우를 이용하고 있다. 그래서 추천하는 방법은 VM웨어를 설치하라. 무료 아닌가.(웃음) 그 위에서 다른 운영체제를 설치하고 텐서플로우를 이용해라.

– 알파고가 ‘강화학습(Reinforcement Training)’ 알고리즘을 이용했다고 들었다. 텐서플로우에서 강화학습 혹은 알파고 같은 기술을 지원할 계획이 있는가?

= 텐서플로우는 미국 본사에서 개발한다. 딥마인드는 영국에서 개발한다. 두 팀 모두 구글이란 같은 회사에 속해 있지만 서로 멀리 떨어져 있고 시차가 있어서 빨리 소통하기 어렵다. 딥마인드팀은 자체적으로 기술을 개발하고 있기 때문에 딥마인드가 하는 일에 대해서 많이 알지 못한다. API나 기술 지원은 언젠가 가능할 것으로 본다. 딥마인는 텐서플로우를 포함한 구글의 소프트웨어를 이용하고 있다. 텐서플로우나 구글 고유의 기술을 사용하는 비중이 얼마나 되는지는 잘 모른다.

– ‘텐서플로우 플레이그라운드‘라는 것을 이용해 봤다. 자바스크립트로 만든 시각화 도구인데 매우 흥미로웠다. 이런 도구는 텐서플로우 입문자에게 좋을 것 같더라. 혹시 비슷하게 텐서플로우와 통합해 사용할 수 있는 모니터링 도구나 프로파일 도구를 알고 있는가?

= 텐서플로우 그래프를 이용할 때 갑자기 속도가 느려지는 것을 경험하는 사용자가 있을 것이다. 무엇 때문에 속도가 늦어졌는지 알기 위해서 모니터링 도구나 프로파일링 도구가 필요하다. 텐서플로우 내부 팀이 이용하는 프로파일링 도구가 따로 있긴 하다. 좋은 도구인데 아직 이걸 오픈소스 기술로 공개할지는 결정하지 못했다. 언젠가 오픈소스 기술로 전환할 것이나, 그게 언제일지는 아직 모른다. 하지만 우리팀도 사람들이 어떤 문제를 해결하고 싶은지 명확하게 이해하고 있다. 텐서플로우 플레이그라운드라는 도구는 나도 잘 알고 있다. 여기 있는 분들도 한 번쯤 이용해보셨으면 좋겠다. 어떤 구성요소가 어떻게 작용하는지 쉽게 알 수 있을 것이다.

Mike_Schuster_06_tensorflowplayground

▲텐서플로우플레이그라운드. 구글과는 별개로 진행되는 외부 프로젝트다.

– 나는 맥 OS 사용자다. 텐서플로우를 이용하려고 했는데 AMD GPU를 지원하지 않더라. 향후 AMD GPU를 지원할 계획은 없는가?

= 계획에 대해 아는 것은 없다. 의존성 문제 때문에 기술을 변경하는 게 쉽지 않더라. 현재 말할 수 있는 가장 좋은 제안은 그냥 엔비디아 카드를 사는 것이다.(웃음)

– 구글의 딥러닝 프로젝트에 합류하려면 어떻게 해야 하는가? 지원자는 경력자여야 하나? 학위 같은 게 있어야 하나?

= 학위가 있으면 좋긴 할 것이다. 하지만 사실 텐서플로우팀은 정말 다양한 사람으로 구성됐다. 많은 사람들이 다른 국적을 가지고 있다. 모두가 일류 대학을 졸업하지도 않았다. 가장 중요한 것은 당연히 프로그래밍 실력이다. 너무 중요하다. 또 어떤 문제를 해결하고 싶어하는 마음이 있어야 한다. 열린 태도를 지니는 것도 중요한 부분이다. 사실 2015년 11월 ‘브레인 레지던시’라는 프로그램을 시작했다. 많은 사람이 이 프로그램에 지원했다. 그 중 30명이 1년간 브레인 레지던시 프로그램에 참여하게 됐다. 참여자들은 머신러닝을 배우고, 자신이 하고 싶은 프로젝트를 진행한다. 여건이 허락된다면 이 프로그램을 내년에도 진행할 계획이다. 여기 있는 많은 분들이 지원해주셨으면 좋겠다.

– 박사님께서 음성인식 분야를 전공하신 걸로 알고 있다. 음성인식 분야에서 기계가 인간의 실력을 뛰어넘을 수 있을 것이라고 보는가?

= 이미 기계가 음성인식 분야에서 인간보다 앞서 있다. 같은 문장이라고 가정하면 캘리포니아 출신이냐 텍사스 출신이냐에 따라 말 소리가 매우 다르게 들린다. 많은 사람이 서로 다른 억양을 가진 언어를 잘 이해하지 못한다. 기계는 모든 억양을 이해한다. 실제로 우리가 인도 사람의 말을 받아 적으라고 해보니 사람보다 음성인식 기계가 더 잘 이해했다. 아마 앞으로 서기는 필요 없을지도 모른다. 기계가 더 잘 이해하는 이유는 크게 2가지다. 하나는 억양, 두 번째는 맥락 정보를 잘 알고 있기 때문이다. 남자 아이가 형에게 하는 말은 부모님은 가끔 이해 못할 것이다. 맥락 정보가 없기 때문이다. 기계는 가능하다. 물론 현재 음성인식 앱은 성능이 별로 안 좋을 수 있다. 하지만 앞으로 더 나아질 것이다. 특히 5-6년 안에 음성인식 서비스와 관련해서 엄청난 변화가 있을 것이다.

– 텐서플로우를 기업에서 직접 활용한 사례를 알고 있는가?

= 많은 기업이 텐서플로우를 내려받고 이용하고 있다. 하지만 그걸로 정확히 무엇을 하고 있는지는 알지 못한다. 사실 내가 안다고 해도 그걸 여기서 말할 수 없다. 기업 비밀이지 않은가. 텐서플로우에 관심을 가지고 있는 기업 종류는 특정 산업군에 국한되지 않으며 매우 다양하다.

– 텐서플로우로 챗봇 시스템을 만들 계획이 있는가?

= 챗봇은 아주 만들기 쉬운 기술이다. 챗봇은 아주 기본적인 언어 구조를 이용한다. 문자가 입력되면 답변을 예상하고 다시 질문과 답변을 주고받는 식이다. 이 일련의 과정을 포함한 언어 모델을 계속 훈련시키면 챗봇을 만들 수 있다. 이러한 개념을 일단 이해만 하면 챗봇이 얼마나 쉬운 기술인지 알 수 있을 것이다. 텐서플로우로 지금 당장 개발할 수 있다. 하지만 챗봇을 정말로 쓸모 있게 만드는 것은 또 다른 문제다. 복잡한 대화를 이해하려면 많은 지식을 알고 있어야 하기 때문이다. 현재 나온 챗봇은 바보같은 대화만 할 수 있다. ‘안녕’, ‘이름이 뭐예요?’ 정도만 묻는 식이다. 복잡한 대화는 이해하지 못한다.
Mike_Schuster_05_logo


반응형
반응형

텐서플로우 시작하기

https://gist.github.com/haje01/202ac276bace4b25dd3f


윈도우에서 TensorFlow 설치하기


https://tensorflowkorea.wordpress.com/2016/01/07/%EC%9C%88%EB%8F%84%EC%9A%B0%EC%97%90%EC%84%9C-tensorflow-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/




TensorFlow 설치 및 튜토리얼

http://khanrc.tistory.com/entry/TensorFlow-1-Intro
http://dsmoon.tistory.com/entry/TensorFlow-install


https://www.tensorflow.org/


반응형
반응형

출처: http://thegear.co.kr/10202


지난 11월9일 구글이 머신러닝, 또는 기계학습에 대한 오픈소스 라이브러리를 공개했습니다. 이름은 ‘텐서플로(TensorFlow)’(http://www.tensorflow.org)입니다.

텐서플로,tensorflow


이름부터 어렵습니다. 텐서라고 하면 벌써 벡터니, 스칼라니 하면서 머리가 지끈거리는 분들이 많을 겁니다. 구글이 이야기하는 텐서는 머신러닝에 활용하는 행렬의 반복적인 곱이 이뤄지면서 '뉴로 네트워크'의 형태를 갖는 데에서 출발합니다. 이야기가 벌써 어려워지지요. 이름은 이름이고 일단 텐서플로 자체는 수학, 물리학, 통계학 등 다양한 학문 문야에서 활용할 수 있는 머신러닝 엔진이라고 보면 됩니다.

구글은 이미 검색 뿐 아니라 세상의 많은 요소들에서 활발하게 정보를 수집하고 있습니다. 그걸 분석하면 뭔가 통찰력을 얻을 것이라는 기대, 그리고 실제로 얻어낸 정보들이 이미 많이 있기 때문입니다. 데이터 분석이 갖는 의미 그 자체를 구글은 아주 잘 알고 있습니다. 지금 당장 쓰지 않아도 언젠가는 가치를 갖게 되고, 이미 그 답을 찾은 서비스에 대해서는 더 많은 데이터를 모으고자 하지요. 지난 번에 이야기한 구글 포토가 그 대표적인 사례일 겁니다.


 

소스부터, API, 상업적 이용까지 모두 공개




텐서플로의 이야기를 하기 전에 머신러닝에 대해서 조금 더 알아볼까요. 머신러닝은 인공지능의 한 축으로 꼽힙니다. 그리고 그 역사는 꽤나 오래 됐습니다. 그 역사를 거슬러 올라가면 1959년까지 거슬러 올라갑니다. 위키피디아를 보면 1959년 아서 사무엘이 ‘컴퓨터에게 코딩하지 않은 동작을 배우고 실행할 수 있도록 하는 능력’이라고 머신러닝을 설명하고 있습니다. 갑자기 튀어나온 기술이 아니라는 것이지요. 이미 오래 전부터 고민되어 왔고, 많은 시도가 이어지고 있습니다. 그리고 누구도 정답을 쥐고 있진 못합니다. 다만 지금에서야 컴퓨팅 자원이 풍부해지면서 이론적으로만 꿈꾸던 머신러닝의 사례가 나오기 시작한 겁니다. 싹이 트기 시작했다고나 할까요.

구글은 그 싹 중 하나인 머신러닝 기술을 모두에게 풀었습니다. 그게 텐서플로입니다. 텐서플로는 오픈소스로 공개된 소프트웨어 라이브러리입니다. 소스와 API들이 공개되고 아파치2.0 기준으로 활용할 수 있습니다. 아파치2.0 라이선스는 누구든 텐서플로 소프트웨어에서 파생된 프로그램을 제작할 수 있으며 저작권을 양도, 전송할 수 있습니다. 관련 소프트웨어를 이용해 상업적인 목적으로도 쓸 수 있습니다. 가장 열려 있는 오픈소스 라이선스 수준이라고 볼 수 있습니다.

엔진 자체도 상당히 유연해 보입니다. 데이터를 분석할 수 있는 컴퓨팅 자원은 CPU 뿐 아니라 GPU를 이용할 수도 있습니다. 그래픽카드의 엔진인 GPU를 연산에 활용할 수 있다는 이야기는 다중 병렬처리가 가능하다는 이야기입니다. 물론 듀얼코어나 쿼드코어 같은 데스크톱PC용 멀티코어 프로세서를 활용할 수 있을 뿐 아니라 가상화로 묶은 서버나 수 천대 규모의 데이터센터에서도 작동한다고 합니다.

심지어 모바일 기기에서도 필요하다면 데이터를 분석해낼 수 있습니다. 구글은 텐서플로가 이렇게 다양한 기기에서 작동하지만 관련 API는 기기에 관계 없이 공통으로 쓴다고 밝히고 있습니다. C++뿐 아니라 머신러닝에 많이 쓰는 파이선도 활용할 수 있습니다.




 

머신러닝 기술은 공개, 데이터는 비공개



하지만 구글은 이 서비스에 몇 가지 제약을 걸고 있습니다. 일단 클라우드 서비스를 제공하지는 않습니다. 구글은 이미 이 텐서플로를 다양한 서비스에 붙여 머신러닝을 적용하고 있지만 구글 컴퓨트 엔진의 모듈로 올리지는 않는 겁니다. 필요하다면 시스템을 직접 구축해야 합니다. 또 한가지, 구글은 그 어떤 데이터도 제공하지 않습니다. 구글이 제공하는 건 분석할 수 있는 틀 뿐입니다. 텐서플로가 뭘 하는지 알려면 먼저 머신러닝의 기본 구조를 조금 이해할 필요가 있습니다.

일단 머신러닝이 이뤄지려면 기본 설계의 틀이 되는 ‘모델’이 필요합니다. 이 모델은 입력값과 결과값을 대강 맞춰주는 함수라고 보면 됩니다. 직접적인 상관관계보다 입력과 출력 사이에 어떤 관계가 있는지 맞춰보는 정도라고 보면 됩니다. 그 다음에는 변수, 즉 파라미터가 필요합니다. 두 값의 상관 관계를 조금 더 구체화하는 것이죠. 그 다음은 실제 데이터를 기반으로 모델과 파라미터의 특성을 익혀가는 과정이 이뤄집니다. 모델이 얼마나 신빙성이 있는지 데이터로 직접 대조해 가는 것이지요. 그 과정에서 모델과 파라미터는 계속해서 개선됩니다.

결국 중요한 건 얼마나 많은 데이터에 모델을 적용해서 기계가 파라미터에 대한 신뢰를 갖느냐가 머신러닝의 관점입니다. 구글의 텐서플로는 모델과 파라미터를 설계할 수 있는 도구입니다. 다만 데이터까지 구글이 공개할 수는 없습니다. 구글의 개인정보 보호 약관 문제도 있겠지만 머신러닝의 가장 어려운 부분은 기계가 학습하기 위한 데이터의 수가 어마어마하다는 점입니다. 구글이라도 이런 데이터를 선뜻 내어줄 수는 없겠지요. 이 때문에 구글이 텐서플로에 기대하는 이용자에는 학계와 산업 현장, 그리고 더 나아가 데이터를 충분히 갖고 있는 경쟁자들도 포함되어 있습니다. 선다 피차이 구글 CEO는 ‘단백질 접힘(protein folding)’이나 ‘천문학 데이터 고속 처리’같은 이해하기 어려운 데이터까지 분석할 수 있는 수준이라고 말합니다. 뭐든 올려서 분석해보라는 겁니다.

구글은 이미 내부적으로 갖고 있는 데이터를 텐서플로에 올려 서비스에 머신러닝을 접목하고 있습니다. 대표적인 것이 지난 번에 설명한 구글포토입니다. 구글포토는 서비스 시작 6개월만에 500억 장의 사진을 모아 텐서플로에 올리고 머신러닝을 통해 이미지를 이해해 왔습니다. 그래서 고양이와 자동차, 사람 얼굴, 장소 등을 구분할 수 있는 ‘지능’을 갖게 됐지요. 구글은 문장이나 애매한 키워드를 입력해도 검색 결과를 보여주는 ‘랭크브레인’의 이해력에도 텐서플로가 있다고 밝혔습니다. 최근 G메일 인박스가 e메일의 내용을 이해해 적절하고 짧은 답장을 스스로 만들어주는 ‘스마트 답장’ 기능에도 텐서플로가 있다고 합니다.

이건 구글이 뭔가 다른 걸 형식적으로 공개하는 게 아니라 지금 직접 쓰고 있는 도구를 공개한 겁니다. 텐서플로는 구글이 그 동안 내부적으로 머신러닝에 이용해 온 디스트빌리프에 비해 5배나 더 빠르게 학습할 수 있다고 소개합니다.



 

이제 시작인 기술, “함께 풀자”



하지만 텐서플로가 머신러닝의 끝을 볼 수 있는 기술은 아닙니다. 구글 역시 이 기술을 더 발전시키기 위해 소스를 공개한 겁니다. 텐서플로는 기본적으로 구글이 그 동안 공개해 온 논문이나 오픈소스 라이브러리와 같은 목적을 갖고 있습니다. 기본적으로 상당 수준에 올라 있는 기술에 오픈소스를 더해 완성도를 다지는 겁니다. 이는 텐서플로 외에 머신러닝 전반에 대한 기술도 해당됩니다. 물론 관련 개발자들을 모을 수도 있습니다. 머신러닝 자체가 아직 정답이 있는 기술이 아니기 때문에 시장 자체를 키워보려는 목적도 짚어볼 수 있습니다. ‘빅데이터’ 시장을 키운 맵리듀스나 구글파일시스템 등도 비슷한 목적으로 공개됐지요.

텐서플로를 공개하는 것으로 구글이 머신러닝 시장을 지배한다거나 한발짝 빨리간다고 앞서 판단할 필요는 없습니다. 머신러닝 자체가 30년에서 50년까지 역사를 되짚어보는 기술이지만 아직도 초기 단계를 벗어나지 못하고 있습니다. 컴퓨팅 능력과 데이터 수집의 한계가 있고, 모델링도 아직 정교하지 못합니다. 이 때문에 일정 수준 이상의 용도로 쓰려면 상당히 많은 데이터를 모아야 한다는 점은 변하지 않았습니다.

두뇌를 이루는 신경망의 모양을 본딴 딥러닝, 뉴로네트워도 단계별로 분석 내용을 좁혀간다는 것이고, 정확도를 높이기 위해 많은 데이터를 필요로 하는 건 그리 다르지 않습니다. 텐서플로를 비롯한 머신러닝 기술은 가장 뜨거운 IT 트렌드로 꼽히지만 당장 하루 아침에 엄청난 결과를 내어줄 수는 없습니다.

다만 이제 데이터의 수집과 분석 면에서 활용할 수 있는 단계까지 올라섰고, 그 발전을 앞당기기 위해 구글이 선뜻 소스를 공개했다고 보면 좋을 것 같습니다. 기대는 좋지만 조급하지 않게 바라봐야 할 겁니다. 머신러닝의 핵심은 아주 오랜 기간동안 많은 데이터를 모으는 데에 있기 때문이지요. 기계가 뭘 어디까지 배울 지는 아무도 모릅니다. 이 재미있는 기술의 시작이 이제 열렸다고 보면 좋겠네요.

반응형
반응형

출처: http://thegear.co.kr/10087


에릭 슈미트 알파벳(전 구글) 회장이 지난 10월30일 오랜만에 서울을 찾았습니다. 그의 이야기 중에서 인터넷을 가장 후끈하게 만든 건 바로 ‘머신러닝’이었습니다. 기계가 세상을 학습하는 것 자체가 앞으로 우리 세상에서 어마어마한 가치를 만들어낼 것이라는 이야기였죠.

그런데 그 이야기가 괜히 나온 건 아닌가 봅니다. 불과 2주도 지나지 않아 에릭 슈미트 회장을 다시 만날 기회가 생겼습니다. 11월10일, 구글이 아시아 지역의 기자들을 도쿄에 모아놓고 머신러닝에 대한 이야기를 꺼냅니다. 사실 이 행사는 구글이 매년 가장 주목받는 기술에 대해 심도 있게 이야기하는 자리인데 올해의 주제가 바로 머신러닝이었습니다. 그리고 에릭슈미트 회장은 워싱턴에서 '행아웃'으로 도쿄의 행사장과 연결해 머신러닝의 가능성에 대해 직접 발표하고, 기자들의 질문을 받기도 했습니다.



말머리는 그가 서울에서 꺼낸 이야기와 많이 다르지 않습니다. 에릭 슈미트 회장은 “인터넷, 그리고 스마트폰이 세상 모두를 변화시킨 것처럼 다음 트렌드는 머신러닝이라고 생각한다”는 말로 이야기를 시작합니다.


 

머신러닝과 정보 수집의 역사



머신러닝이라는 말이 요즘에는 흔하게 쓰이지만 이 단어가 나온 건 그리 오래되지 않았습니다. 하지만 에릭 슈미트 회장은 ‘이미 30여년 전부터 업계는 신경망을 구축해 왔다’고 말합니다. 사람의 두뇌처럼 컴퓨터를 다중으로 연결해 통찰력을 갖기 위한 노력이지요. 그게 불과 4~5년 전부터 컴퓨팅 기술과 수학이 모여 더 깊은 단계의 신경망이 구축되기 시작했다고 합니다. 20~30개의 신경망 레이어로 복잡한 사물의 내용을 판단하게 된 겁니다. 비트, 선, 이미지 경계, 색깔, 형상, 그리고 눈이 있는지 등을 보다가 지금은 더 높은 단계의 이해로 아기와 남성, 여성을 구분해 낼 수 있는 수준에 이르게 된 겁니다.

구글이 본격적으로 이용자의 정보를 수집해 개인화 서비스를 시작하겠다며 데이터, 그리고 약관을 통합했던 것도 이때쯤입니다. 사실 구글은 2011년부터 수십 가지의 개별 서비스에 대한 주체와 데이터를 통합해 왔습니다. 구글도 회원정보 통합의 목적을 숨기지 않았습니다. 그리고 당시에는 업계가 들썩거릴 정도로 큰 파장과 우려를 샀지요. 이른바 ‘빅 브라더’입니다. 개개인의 정보를 속속들이 알게 될 것이라는 걱정입니다. 지금은 그 걱정은 눈에 띄게 줄어들었습니다. 오히려 광범위한 정보 수집과 분석을 통해 새로운 통찰력을 얻게 되는 것에 세상이 열광하고, 어떻게 보면 지나칠 정도로 큰 관심을 보이기도 합니다. 빅데이터나 머신러닝이 그 중심에 서 있는 기술입니다.

10일, 구글이 도쿄에서 꺼내놓은 머신러닝의 이야기는 크게 두 가지로 볼 수 있습니다. 구글포토, 그리고 머신러닝의 오픈소스입니다. 아, 물론 구글의 머신러닝은 이게 전부가 아닙니다. 우리가 생각하는 것 이상으로 복잡하게 얽혀 있습니다. 구글만큼 세상의 정보를 많이 갖고 있는 주체가 또 어디에 있을까요. 머신러닝의 핵심은 ‘정보의 양’ 그 자체에 있으니까요. 구글포토는 구글의 머신러닝을 읽어볼 수 있는 좋은 사례입니다. 구글포토는 정식서비스를 시작한 지 이제 막 반 년이 지났습니다. 물론 그 바탕에는 소셜미디어인 ‘구글플러스’가 있긴 하지만 이를 사진에 초점을 맞추고, 사진 크기를 바탕으로 저장 공간 무제한이라는 카드를 꺼내면서 서비스를 특화시킨 게 인기 비결입니다.


 

구글 포토, 서비스와 데이터 수집의 접점





구글포토는 뭘 위한 서비스일까요? 넘쳐나는 디지털 사진으로 인해 우리는 저장 공간 문제와 고질적인 사진 정리 문제를 떠안고 있습니다. 사진을 어디까지 지우고, 어디까지 보관해야 할지 판단하는 건 쉽지 않습니다. 그래서 어딘가에 일단 쌓아두게 되지요. 그리고 그 사진은 곧 잊혀지게 마련입니다. 수십 기가바이트를 넘어 테라바이트 단위의 클라우드 저장 서비스들도 있긴 합니다. 플리커가 대표적이지요. 하지만 구글포토가 인기를 얻게 된 이유는 단순히 용량 문제는 아닙니다. 이 서비스를 써보고 놀라게 되는 가장 큰 이유는 ‘사진을 이야기로 만들어준다’는 겁니다.

구글포토는 같은 장소에서 찍은 사진, 혹은 특정 날짜나 여행지를 통해 사진의 맥락을 읽고 중요한 내용을 묶어줍니다. 국내에선 아직 안 되지만 인물별로 분류해주기도 합니다. 그걸 사용자에게 일일이 ‘누구인지’, ‘어디인지’, ‘무슨 이벤트인지’에 대해 잘 묻지도 않습니다. 듬성듬성 묶어놓은 뒤에 “사진 묶어 뒀다”라고 이용자에게 알려주기만 합니다. 그러면 우리는 그 안에 제목과 이름, 그리고 정확한 장소 정보 등을 추가해서 사진첩을 완성하지요.

자, 이 안에 구글의 머신러닝이 숨어 있습니다. 구글은 오래 전부터 이미지 검색에 굉장히 공을 들여 왔습니다. 고양이 사진, 가족 사진, 자동차 사진 등을 구분해내기 위해 많은 노력을 해 왔지요. 결국 구글이 얻은 결과는 머신러닝입니다. 각 피사체가 갖는 특징을 프로그래밍으로 설명해 넣는 게 아니라 알고리즘으로 시스템이 직접 배우고 판단하도록 열어 놓는 것이지요. 구글포토 역시 머신러닝 기반으로 사진을 묶습니다. 당연히 사진에 담긴 정보를 이해할 수 있어야겠지요. 사진에서 얻을 수 있는 정보는 생각보다 많습니다. 마치 셜록 홈즈가 처음 만난 사람의 옷매무새나 소지품을 통해 판단하는 것처럼 말이지요.

단번에 어떤 사진인지 알아챌 수 있다면 좋겠지만 그건 쉽지 않습니다. 엄청나게 많은 정보가 필요하기 때문이지요. 구글이 선택한 방식은 뉴로 네트워크입니다. 사물을 판단하는 데에 단계를 두는 것이지요. 각각의 레이어를 통해 색, 선, 모양 등을 하나씩 골라내면서 사진의 정보를 구체화 합니다. 구글포토는 현재 22개의 레이어를 통해 사진의 정보를 얻어냅니다. 구글은 이를 ‘인셉션’이라고 부르더군요. 영화 인셉션처럼 꿈의 단계를 거쳐서 점점 더 깊은 잠재 의식에 접근하는 것처럼 정보를 파악한다는 것이지요. 네, 이게 딥러닝(deep learning)이지요. 단계별로 인지한다는 겁니다. 그리고 결국 사용자들이 더 많은 사진을 올리고 이용할 수록 그 정확도는 더 높아집니다. 머신러닝의 핵심은 결국 많은 ‘러닝’, 즉 ‘학습’이 이뤄져야 한다는 것이지요. 그래서 현재 구글포토는 단순히 ‘개’가 아니라 ‘프렌치 불독’이나 ‘옐로 래브라도’처럼 입력해도 사진을 찾아줍니다. 자동차 모델명 찾는 건 일도 아니지요. 구글포토에서 갖고 있는 사진을 검색해보시면 아기나 남자, 여자도 구분하고 골프장, 절벽, 음식 등 온갖 일반적인 분류 검색이 다 먹힙니다.

우리가 사진을 업로드하는 동안 사진의 정보가 다 읽혀진 것이지요. 물론 그 안에는 아주 간단한 메타 정보도 포함됩니다. GPS 정보를 이용해 아주 정확한 위치 정보를 알 수 있고, 촬영된 시간도 알 수 있지요. 이게 앞서 설명한 머신러닝 정보와 묶이기도 합니다. 예를 들어 구글포토에서는 아주 독특한 옷을 입고 있는 사진을 보았을 때 촬영한 날짜가 10월 말이었다면 할로윈 이벤트겠지요. 1월이면 코믹콘일 가능성이 높다는 복합적인 판단도 이뤄집니다. 정확한 위치 정보가 없어도 됩니다. 우리가 어떤 사진을 보고 ‘파리’라고 인지할 수 있는 건 왜일까요? 에펠탑이 있기 때문입니다. 개선문이 있으니까 알 수 있지요. 머신러닝이 그걸 찾아내는 건 아주 쉽습니다. 날씨나 밤낮 같은 건 거슬릴 게 없습니다. 에펠탑의 형상은 변하지 않으니까요. 오히려 앞서 설명했던 개나 고양이의 경우 일정한 형태가 없기 때문에 엄청나게 많은 사진을 반복해서 봐야 고양이라는 것을 인지할 수 있습니다.


 

“데이터는 곧 정확도”




구글이 구글포토의 저장 공간을 조건부 무제한으로 푼 이유도 사실 데이터 수집에 있습니다. 용량 제한 없이 사진을 올리고, 그걸 보기 쉽게 만들어주면 많은 사람들이 구글에 사진을 올리겠지요. 그러면 그만큼 더 많은 머신러닝의 소재가 되는 정보를 수집할 수 있습니다. 그 결과는 더 정확한 사진 분석으로 이용자에게 돌아갈 겁니다. 이미 구글은 그 효과를 보고 있습니다. 구글포토는 6개월만에 1억명 이상의 열성 이용자를 모았고, 이들이 500억 장이 넘는 사진을 인터넷에 올렸습니다. 배울 소재가 넘쳐나지요. 판단이 틀리기도 합니다. 실제로 사람을 침팬지로 인식하는 등 사회적으로 시끄러운 사건이 생기기도 했지만 결국 그 사건은 구글의 머신러닝 기술을 더 정밀하게 만들었습니다. 이게 머신러닝의 특징이기도 합니다. 기기가 뭘 배우게 될 지, 어떤 판단을 할 지에 대해 프로그래머도 알 수 없습니다. 그리고 정보가 부족하면 전혀 엉뚱한 답을 내놓기도 합니다.

이건 사실 30여년 전, 머신러닝에 대한 개념이 나오면서부터 겪던 문제였습니다. 그 해결책 중 하나가 딥러닝이긴 합니다. 하지만 근본적으로 구글은 더 많은 정보를 모으는 것이 답이라는 것을 아주 잘 알고 있습니다. 정보가 아주 많으면 오류는 급격하게 줄어듭니다. 얼마나 많은 정보를 모으느냐가 관건인 셈입니다. 그리고 구글만큼 착실하게, 그리고 안전하게 세계의 정보를 쌓아가는 회사도 흔치 않습니다. 대표적인 사례가 번역입니다. 그동안 수많은 회사들이 컴퓨터를 이용한 번역기를 개발해 왔습니다. 하지만 실제로 쓰기는 쉽지 않지요. 아예 컴퓨터로 번역한 걸 ‘기계번역’이라고 부를 정도인데 말 그대로 사전을 대조하는 방식이 많이 쓰였습니다. 구글은 여기에도 머신러닝을 붙여서 아예 문장을 통째로 번역합니다. ‘good morning’은 ‘좋은 아침’이 아니라 ‘안녕?’입니다. 이런 정보를 엄청나게 많이 갖게 되면 은어나 속어, 학술용어까지도 다 이해할 수 있게 되는 것이지요.

심지어 이게 카메라와 접목되면 사진으로 들어오는 이미지 형식의 글자를 텍스트로 받아들여 실시간으로 분석할 수 있게 됩니다. 활자는 쉽지만 저마다 다른 손글씨를 알아보려면 이 역시 반복적인 머신러닝을 이용해야 합니다. 모든 과정이 이론적으로는 사람이 언어를 배우는 방식과 비슷합니다. 하지만 아직 언어에 따라 원하는 수준의 정보가 수집되지 않았다는 게 문제라면 문제겠지요. 그리고 그 정보 수집은 결국 시간이 해결할 겁니다.

반응형

+ Recent posts