[현장] 구글 ‘텐서플로우’ 개발자가 생각하는 머신러닝이란?

가 +
가 -

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년간 브레인 레지던시 프로그램에 참여하게 됐다. 참여자들은 머신러닝을 배우고, 자신이 하고 싶은 프로젝트를 진행한다. 여건이 허락된다면 이 프로그램을 내년에도 진행할 계획이다. 여기 있는 많은 분들이 지원해주셨으면 좋겠다.

– 박사님께서 음성인식 분야를 전공마이크 슈스터 박사는 독일에서 전기공학을 전공하고 일본 나라 첨단과학기술대학교에서 음성인식학 박사학위를 받았다.close하신 걸로 알고 있다. 음성인식 분야에서 기계가 인간의 실력을 뛰어넘을 수 있을 것이라고 보는가?

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

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

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

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

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

네티즌의견(총 3개)