구글의 머신러닝을 이해하기 - 2편, 텐서 플로

최호섭 | 기사입력 2015/11/30 [02:10]

구글의 머신러닝을 이해하기 - 2편, 텐서 플로

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




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

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


 

소스부터, 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 트렌드로 꼽히지만 당장 하루 아침에 엄청난 결과를 내어줄 수는 없습니다.

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



 
  • 도배방지 이미지

스페셜 많이 본 기사