추천사,서문,실용적접근 – First Contact with TensorFlow

tensorflowbookcover-1024x7122x이 글은 스페인 카탈루냐 공과대학의 Jordi Torres 교수가 텐서플로우를 소개하는 책 ‘First Contack with TensorFlow‘을 번역한 것 입니다. 이 글은 원 도서의 라이센스(CC BY-NC-SA 3.0)와 동일한 라이센스를 따릅니다.

목록으로가기

 

추천사

머신러닝 분야는 컴퓨팅, 대용량 스토리지, 인터넷 같은 핵심 기술의 발전 덕분에 크게 성장하여 왔습니다. 사람들의 매일매일 일상 생활 속에 있는 많은 기술들과 이벤트들이 직간접적으로 자동화된 머신러닝(automatic learning)에 의해 영향을 받고 있습니다. 음성인식, 핸드폰에서도 되는 이미지 자동분류, 스팸 이메일 감지 등은 10년 전 쯤에는 공상과학소설에서나 있을 법한 것이었습니다. 주식시장과 의료 분야에서 머신러닝을 사용하여 우리 사회에 큰 반향을 일으켰습니다. 그뿐만이 아니라 자동주행 차량, 각종 로봇이나 드론 등이 그리 멀지 않은 미래에 우리 사회에 영향을 미칠 것 입니다.

딥러닝은 머신러닝의 한 종류로 2006년에 재 조명된 후 엄청난 성장을 하고 있는 분야라는 것에 의심의 여지가 없습니다. 실제로 실리콘 밸리의 많은 스타트업이 이를 전문분야로 하고 있으며 구글, 페이스북, 마이크로소프트, IBM 같은 테크 공룡들이 개발팀과 연구팀을 가지고 있습니다. 딥러닝은 대학이나 연구소 밖에서도 큰 관심을 받고 있습니다. 와이어(Wire) 같은 전문 잡지들과 뉴욕타임즈, 블룸버그, BBC 같은 일반 매거진들도 딥러닝에 관한 많은 글을 싣고 있습니다.

이런 관심 덕택에 많은 학생들과 기업가들, 투자자들이 딥러닝 분야로 들어오고 있습니다. 보내주시는 많은 관심과 오픈소스로 공개된 여러 패키지들에게 감사합니다. 2012년 PhD 학생일 때 버클리에서 개발했던 라이브러리 Caffe의 열혈 팬으로서(2013년부터는 구글에서 일하고 있습니다) 나는 구글에서 개발한 텐서플로우(바로 이 책이 말하려는 것입니다)가 딥러닝과 머신러닝으로 아이디어를 발전시키려는 연구자들과 중소기업들의 주요 도구가 될 것이라고 말할 수 있습니다. 오픈소스화 된 이 프로젝트에 많은 엔지니어들과 최고의 연구원들이 참여했다는 것이 이를 보증합니다.

이 책이 흥미진진한 이 분야에서 모험을 시작하려는 독자를 도울 수 있기를 바랍니다. 이 기술을 전파하는 데 노력을 아끼지 않는 저자에게 감사드리고 알게 되어 기쁩니다. 오픈소스로 발표된 지 두달만에 이 책의 첫번째 스페인어 버전이 쓰여진 건 기록적인 속도입니다. 이건 바르셀로나의 역동성과 우리 미래를 흔들어 놓을 테크놀러지 중 하나가 되리라는 걸 보여주는 하나의 예일 것입니다.

구글 브레인팀 연구원, Oriol Vinyals

서문

교육은 세상을 바꿀 수 있는 가장 강력한 무기 입니다. – 넬슨 만델라

이 책의 목적은 머신러닝의 놀라운 세계로 지식을 넓히고자 하는 엔지니어들을 돕기 위한 것입니다. 엔지니어 출신이라면 누군든지 자기의 일을 더 가치있게 만들어 줄 딥러닝이나 머신러닝 어플리케이션을 찾고 있을거라 믿습니다.

제 이력을 들어보면 독자들은 왜 이 사람이 딥러닝 기술에 대해 글을 쓰는 도전을 하는지 궁금해 할 것 입니다. 제 연구 관심사는 슈퍼 컴퓨터 아키텍처와 실행환경에서 빅 데이터 처리를 위한 미들웨어로 조금씩 옮겨져 왔고 최근에는 대용량 데이터 기반의 머신러닝 플랫폼으로 바뀌었기 때문입니다.

데이터 과학자는 아니고 정확하게는 엔지니어로서 텐서플로우 입문서를 만들어 이 분야에 일조할 수 있다고 생각합니다. 아마도 초보 엔지니어들에게 도움이 될 수 있을 것이고 원한다면 더 깊게 공부할 수 있는 발판이 될 것 입니다.

제가 사랑하는 교육 분야에도 이 책이 조금 도움이 되기를 희망합니다. 지식은 구속받지 않아야 하고 모두에게 열려 있어야 합니다. 이런 이유로 이 책의 모든 내용은 웹사이트(www.jorditorres.eu/TensorFlow)에 완전히 무료로 공개합니다. 만약 이 책 내용이 도움이 되고 제 노력에 대해 고마움을 표시하려면 웹사이트의 기부 버튼을 클릭해 주세요. 아니면 인쇄본을 좋아하는 독자는 아마존(www.amazon.com)을 통해서 책을 구입할 수 있습니다.

스페인어 버전도 있습니다. 사실 이 책은 지난 1월에 쓰여져서 제가 조직위로 있는 GEMLeB(Grup d’Estudi de Machine Learning de Barcelona) 모임에 제출된 스페인어 버전을 번역한 것입니다.

이 책을 읽어 주셔서 감사합니다! 제 마음이 뿌듯하고 이 책을 쓰길 잘했다 생각이 듭니다. 제 지인들은 제가 기술을 널리 알리는 데 힘쓴다는 것을 알 겁니다. 그일이 제게 힘을 주고 공부를 계속 할 수 있게 동기를 부여해 줍니다.

2016년 2월, Jordi Torres

실용적 접근

말로  들은 건 잊어버리고 가르쳐 준 건 기억에 남지만 함께 참여하면 배우게 됩니다. – 벤자민 플랭클린

딥러닝을 이용한 대표적인 어플리케이션 중 하나는 패턴 인식입니다. 프로그램을 처음 배울 때 ‘Hello World’를 프린트하는 것으로 시작하는 전통이 있듯이 딥러닝에서는 손글씨 숫자를 인식하는 모델(역주: 머신러닝 모델)을 만드는 것으로 시작하는 것이 보통입니다. 앞으로 보게 될 뉴럴 네트워크(neural network)의 첫번째 예제에서 텐서플로우라는 새로운 기술을 만나게 될 것입니다.

하지만 저는 머신러닝이나 딥러닝에 관한 연구 보고서을 쓰려는 게 아니라 단지 텐서플로우라는 새 머신러닝 패키지를 가능하면 빠르게 모든 사람들에게 알리고 싶은 것입니다. 이런 목적 때문에 일반 독자를 대상으로 쓰려다 보니 일정 부분 의도적으로 단순화시킨 부분에 대해서는 동료 데이터 과학자들에게 양해를 구합니다.

이 글은 제가 수업을 진행할 때 사용하는 스타일을 따르고 있습니다. 바로 키보드를 직접 두드리면서 배우는 것입니다. 우리는 이걸 ‘백문이 불여일타'(learn by doing)라고 부르며 UPC에서 교수로서 제 경험을 비추어볼 때 새로운 분야를 처음 시작하는 엔지니어에게 매우 좋은 방법입니다.

이 책은 실용적인 책이므로 가능하면 이론적 배경은 최대한 줄였습니다. 하지만 배우는데 꼭 필요한 일부 수학적 내용은 포함되었습니다.

독자가 기본적인 머신러닝에 대해 이해하고 있다고 가정하고 몇가지 잘 알려진 알고리즘들을 사용하여 텐서플로우를 배우도록 구성하였습니다.

첫번째 장에서는 텐서플로우가 주목받는 배경에 대한 소개와 함께 텐서플로우의 기본적인 구조를 설명하고 데이터를 내부적으로 어떻게 관리하는 지 간략하게 설명합니다.

두번째 장에서는 선형회귀분석을 통해 기본적인 코드 구성을 소개하는 동시에 코스트 함수(Cost Function)나 그래디언트 디센트(Gradient Descent) 같은 머신러닝을 학습할 때 필요한 중요한 개념에 대해 설명합니다.

세번째 장에서는 클러스터링(Clustering) 알고리즘을 소개하고 텐서플로우의 기본 데이터 구조인 텐서(tensor)에 대해 설명합니다. 그리고 텐서를 만들고 다루는데 필요한 클래스들과 함수들을 설명합니다.

네번재 장에서는 손글씨 숫자를 판별하기 위해 하나의 레이어(layer)를 가지는 뉴럴 네트워크를 어떻게 만드는지 자세히 설명합니다. 여기에서 앞서 이야기한 모든 개념들을 정리하고 하나의 모델을 만들고 테스트 하는 전체 과정을 보게 됩니다.

다음 장은 이전 장에서 보인 뉴럴 네트워크의 개념을 설명하는 것으로 시작해서 손글씨 숫자를 좀 더 잘 판별하기 위해 멀티 레이어(multi-layer) 뉴럴 네트워크를 어떻게 만드는지 소개합니다. 그리고 컨볼루션(Convolution) 뉴럴 네트워크가 무엇인지 자세히 설명합니다.

여섯번째 장에서는 모든 독자에게 해당되진 않겠지만 GPU의 연산 파워를 사용하는 좀 더 특별한 주제에 대해 살핍니다. 1장에서 소개된 것 처럼 GPU는 뉴럴 네트워크의 학습 과정에 매우 중요한 역할을 합니다.

이 책은 몇가지 결론에 대해 언급하는 것으로 마무리 됩니다. 그리고 이 책에서 사용한 예제 코드는 깃허브 레파지토리에서 다운 받을 수 있다는 것을 잊지 마세요.

목록으로가기