728x90
반응형

 

나는 한빛미디어의 '밑바닥부터 시작하는 딥러닝' 이라는 책을 통해서 '텐서플로우'를 처음 접하게 되었다. 밑바닥부터 시작하는 딥러닝 이라는 책은 처음 딥러닝을 입문하는 사람들에게 간단 명료하게 꼭 알아야 하는 것들만 콕콕 찝어서 친근하게 설명해주는 책이었다. 이 책이 나온 이후로부터 멸종 위기에 처한 동물들을 삽화로 그려낸 오라일리 표지를 쓰는 한빛미디어의 책들을 좋아하게 되었다.

 

한빛미디어에서 나오는 딥러닝 관련 서적들은 실무자 중심으로 상세한 설명과 코드를 제공하기 때문에 파이썬을 이용하는 딥러닝 개발자들에게 매력적으로 다가오는 것 같다. 

 

이 외에도 핸즈온 머신러닝, 처음 배우는 머신러닝, 파이썬 라이브러리를 활용한 머신러닝, 골빈해커의 3분 딥러닝 이라는 책들을 읽었는데 이 중 파이썬 라이브러리 (numpy 등)를 이용하여 딥러닝 아키텍쳐를 개발하는 나에게 가장 적격이었던 책은 '파이썬 라이브러리를 활용한 머신러닝' 이었다. 아직도 이 책을 바이블 삼아 수시로 보는데, 네트워크를 설계하는데 많은 도움이 되고 있다. 

 

그래서 이번에는 '텐서플로'에 초점을 맞춘 '텐서플로를 활용한 머신러닝' 이라는 책에 대해서 리뷰를 하고자 한다. 

 

텐서플로를 활용한 머신러닝

 

이번 2019년 2월에 출간된 텐서플로를 활용한 머신러닝 이라는 책은 딥러닝 책 대가인 한빛미디어에서 출판되었다. 책은 총 세 부분으로 구성되어 있다. 

 

  • 머신러닝 및 텐서플로우 개념
  • 핵심 학습 알고리즘
  • 신경망 패러다임

머신러닝에 대한 개념이 어느 정도 탑재 되어 있고, 텐서플로우를 이용하여 딥러닝 알고리즘을 설계하고자 하는 개발자에게 적격인 책이다. 딥러닝 책이라면 제일 기본 사항인 소스코드는 깃허브에 있으며, 제일 매력적인 점은 이 소스코드는 최신 버전으로 지속적으로 업데이트 될 것 이라고 한다. 책을 들여다보면서 이슈사항이 생기면 깃에 올려봐야겠다. 책에 대한 소스코드 내용을 지속적으로 신경쓰고, 깃에 풀 요청을 하거나 새로운 이슈를 올리라고 써놨는데 이 점에서 독자들과 소통하려는 점이 굉장히 마음에 든다. 마치 액티브한 개발자와 커뮤니티를 공유하는 느낌이랄까.

 

 

BinRoot/TensorFlow-Book

Accompanying source code for Machine Learning with TensorFlow. Refer to the book for step-by-step explanations. - BinRoot/TensorFlow-Book

github.com

 

 

 

머신러닝의 기초 개념에서 가장 중요한 것은 '블랙박스' 라고 생각한다.

 

전통적인 프로그래밍은 입력값에 대해 정해진 출력값을 가지게 되는데, 반면 머신러닝은 입력값과 출력값 간의 관계가 명확히 이해되지 않는 상황에서의 문제들을 해결 할 수 있다. 사람이 풀 수 없는 문제들을 머신러닝은 이전의 경험으로부터 학습하여 미래의 상황을 풀어 낼 수도 있다는 것을 의미하게 된다. 

 

다음 그림과 같이 머신러닝이 문제를 해결하는 방법은 만족스러운 결과를 얻을 때까지 블랙박스의 파라미터를 튜닝해나가는 과정이라고 할 수 있다. 이 책에서는 독자들의 설명을 돋우기 위해서 필요한 최소한의 그림만 명료하게 나타낸 것이 특징이다. 그래서 머신러닝 및 텐서플로에 관한 정보를 더 많은 정보를 텍스트로 얻되, 도식 설명이 필요한 내용에 대해서는 그림을 통해서 이해를 돕고 있다. 

 

머신러닝 블랙박스

 

 

 

 

또한, 텐서플로를 활용한 머신러닝 책에서는 이전의 다른 책에서는 볼 수 없었던 연습문제들이 등장한다. 사실, 이전의 머신러닝 혹은 딥러닝 책들은 관련 내용을 설명하기에 급급했던 느낌이라면, 이 책은 순조롭고 여유롭게 개념을 설명하고 있다는 느낌을 받았다. 아래 사진처럼 각 장의 연습문제를 둠으로써 독자들이 머신러닝 및 텐서플로 개념을 읽는 것에 그치지 않고 '이해' 할 수 있도록 하였다. 이러한 연습문제 형식은 '수학익힘책' 과 같은 느낌을 준다. 이 책의 별명을 '머신러닝익힘책' 이라고 해도 좋을 것 같다. 

 

 

 

 

 

그리고 또한 이 책에서는 머신러닝 성능 개선을 위한 몇 가지 팁을 제시하고 있었다. 사실 딥러닝 개발자가 필요한 지식은 바로 이런 것이다. 기본적인 개념에만 미치지 않고 더 나아가 실무에 적용할 수 있는 팁들을 뽑아(?)가는 게 우선이기 때문에 이런 팁은 언제나 환영이다. 더불어 능력있는 개발자가 제시하는 팁이라면 더더욱 신뢰가 간다. 

 

 

 

 

 

부록에는 언제나 그렇듯 설치 방법이 수록되어있다. 이 책에서는 도커를 이용하여 텐서플로를 설치하는 방법을 소개하고 있었다. 나는 개인적으로 아나콘다를 이용한 텐서플로 설치 보다는 '도커'를 이용한 텐서플로 설치를 권장하고 싶다. 아나콘다는 기본적으로 개인이 CUDA 나 cuDNN 설정 등 모두 해주어야 하지만, 도커는 컨테이너 기반으로 개발자들이 필요한 기능들이 담긴 이미지를 설치하여 환경을 설정하기 때문에 가벼운 가상환경을 쓰는 듯한 느낌을 준다. 

 

 

 

 

이 책이 가진 장점은 정리해보면 다음과 같다. 

 

  • 독자와 소통가능한 깃 허브 운영 및 소스코드 최신 버전 관리 
  • 독자들의 깊은 이해를 돕기 위한 설명과 간단 명료한 그림
  • '머신러닝 익힘책' 느낌을 주는 연습문제
  • 성능 개선을 위한 팁 수록
  • 텐서플로를 활용하기 위한 입문서

 

텐서플로를 활용한 머신러닝 책은 텐서플로를 이용하여 딥러닝 프레임워크를 작성하고자 하는 초급-중급 개발자에게 적합한 입문서 인 것 같다. 그림으로 쉽게 개념을 익힐 수 있어서 좋고, 연습문제를 풀어 나가며 실제 동작하는 예제들을 실행해보면서 텐서플로 및 머신러닝에 대한 개념을 처음부터 설계 할 수 있는 책이다.  텐서플로에 입문하는 개발자라면 추천하고 싶은 책이다. 

 

728x90
반응형