어떤 토픽에 대해서 새롭게 공부 하고자 할때 나름대로 정해놓은 기준이 있다. 현재 내가 하고 있는 업무와 관련이 있는지 여부이다. 단순히 책을 읽거나, 강의를 듣는 것은 input의 영역일 뿐, input으로 받아 들인 지식들을 프로덕션 레벨에서 사용할 때 비로소 output의 영역으로 들어 갈 수 있다고 생각하기 때문이다. 더불어 다양한 상황 속에 노출될 때 하게되는 고민들이 비로소 나의 자산이 된다고 믿고 있다.
그럼에도 불구하고 <골빈해커의 3분 딥러닝 텐서플로맛>을 읽게된 이유는, 최근에 관심을 갖고 있는 팟캐스트를 좀 더 잘 이해하고 싶었기 때문이다. 딥러닝에 관한 주제로 하나의 에피소드가 진행이 되었는데, 개발자의 영역과 완전 다른 영역의 용어들이 난무하는 가운데 우리말을 듣고 있지만 전혀 이해가 되지 않는 신기한 상황과 마주하고 있었다. 하이퍼파라미터를 튜닝하고, 손실 함수를 구현하는 등의 이야기를 하는데, 단순히 느낌적인 느낌은 '아, 이것들은 딥러닝을 이야기 할때 기본적으로 숙지하고 있어야 하는 것이구나' 이었다. 용어들의 의미를 전혀 알지 못하니 해당 에피소드의 내용을 전혀 이해할 수 없었다.
하이퍼파라미터는 학습을 진행하는 과정에서 영향을 주는 변수를 나타낸다고 한다. 이 값에 따라서 학습 속도나 신경망 성능이 크게 달라질 수 있다고 설명하고 있다. 머신러닝에서는 이 하이퍼파라미터를 잘 튜닝하는 것이 큰 과제란다.
손실 함수는 한 쌍(x,y)의 데이터에 대한 손실값을 계산하는 함수이고, 손실값은 실제값과 모델로 예측한 값이 얼마나 차이가 나는 가를 나타내는 값이다. 즉, 손실값이 작을수록 그 모델이 X와 Y의 관계를 잘 성명하고 있다는 뜻이며, 주어진 X값에 대한 Y값을 정확하게 예측할 수 있다는 뜻이라고 한다.
어떤 주제에 대해서 학습하는데 있어서, 기본적인 용어에 대한 이해는 반드시 필요하다. 위에 나온 용어의 정의는 3장 텐서플로 프로그래밍 101에 나오는 내용인데, 입문자 혹은 초보가 입장에서 이해하기에 적절한 수준으로 설명해주고 있다. 물론 심도 있는 내용을 다루지 않고 있기 때문에 깊게 이해하고자 한다면 다른 책이나 강의 등을 보는 것도 좋을 것 같다. 저자이신 김진중 님이 서문에서 밝혔듯, 이 책은 다양한 딥러닝 모델의 개념을 익히는 것을 목표 삼고 있으며, 이론은 최대한 간단하게 소개하고 있다. 딥러닝을 본격적으로 사용하려면 이론도 함께 익히는 게 좋을 것 같다. 함께 공부하면 좋을 사료들에 대해서도 가이드 해주고 있다. 딥러닝 초보가 스스로 학습 로드맵을 그려 볼 수 있도록 안내하는 부분이 꽤나 마음에 든다.
설명 흐름에 맞춰 필요한 소스 코드에 대해서 설명해주고 마지막에는 각 챕터에서 설명하고자 했던 전체 코드를 제공하고 있는데, 챕터 별로 실행 가능한 하나의 완전한 코드를 제공한다는 사실이 개발자로서 가장 마음에 드는 부분이다.
비록 입문자를 위해서 쉽게 쓰여졌다고는 하나, 처음 접하는 주제인 만큼 한장 한장 넘어가는데 속도가 잘 나지는 않는다. 챕터 별로 가볍게 1회독 한 후에, 전체 코드를 쳐보면서 나름대로의 동작에 대해서 유추해보고, 책에서 제공하는 부분 코드와 상세 설명을 보면서 정리하고 난 다음에, 다시 한번 책터의 내용을 쭉 훑어보면서 정리를 해보니, 아 이런게 대충 이런 느낌이구나 정도의 느낌을 받을 수 있었다. 물론 ... 더 상세한 내용들은 따로 공부를 해야 겠지만 말이다.
수식은 최대한 배재하고 그림을 통해서 쉽게 개념을 설명하고 있는데, 김진중님의 배려가 돋보이는 부분이다. 텐서플로를 이용해서 딥러닝이란 것을 해보고 싶은데, 어디에서 부터 시작해야 할지 잘 모르는 분들에게 안성맞춤이다.
다만 딥러닝이나 텐서플로나 결국 문제를 풀기위한 하나에 도구에 불과하기 때문에, 책을 읽는 과정에서 각자가 해결하고자 하는 문제에 어떻게 적용하면 좋을지 충분히 생각하는 시간을 갖는 것도 도움이 되지 않을까 싶다. 단순히 기술 습득 차원이 아니라 활용에 대한 방안도 같이 고민해보면 좋을 것 같다.