C++ 최적화 - 최고 성능을 구현하는 10가지 검증된 기법
커트 건서로스 지음, 옥찬호 옮김 / 한빛미디어 / 2019년 7월
평점 :
장바구니담기


 리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.

 

B8975427001_l.jpg

 

  보통 프로그램을 작성할 때, 어떤 프로그램 언어를 이용해 목적하는 기능을 어떻게 구현하는 것에 대해 신경을 쓴다. 동작 시간과 관련한 요구사항이 특별히 없다면 프로그램이 원하는 대로 동작하면 거기서 프로그램 작성은 완료일 것이다. 하지만, 상업용으로 사용되는 프로그램의 경우 시간에 대한 요구사항은 항상 포함된다. PC나 서버에서 동작하는 프로그램부터 아주 작은 크기의 임베디드 시스템에서 동작하는 프로그램까지 아주 다양한 분야에서 다양한 요구사항이 존재한다. 그래서 하드웨어 제약(CPU 속도, 메모리 용량, 배터리 이용 유무 등)이 있으면서도 빠른 속도를 요구하는 시스템에서는 C, C++과 같은 언어를 이용하여 프로그램을 개발하는 경우가 많다. 프로그래밍 언어를 C, C++로 선택했다고 해서, 성능이 원하는 대로 빠르게 나올 수는 없기 때문에, 코드 작성 시 시간 제약을 맞추기 위해, 많은 시간을 최적화에 쏟을 수 밖에 없다. 최적화된 프로그램을 작성하기 위해, 많은 시간을 할애하지만 어떻게 하면 최적화를 할 수 있다는 정답은 없다고 생각한다. 내가 작성한 프로그램이 어떤 CPU와 어떤 메모리를 갖추고 있는 프로그램에서 돌고 있는 지, 어떻게하면 동일 연산을 수행하더라도 메모리 접근을 줄일 수 있는 지, Cache 활용은 어떻게 해야하는지 등 단순 언어의 지식만이 아닌 아키텍쳐적인 지식 및 지금까지 최적화를 하면서 겪은 경험도 중요하다고 생각한다.

    

  업무에서 주로 C 언어로 코드를 작성해 왔기 때문에, C++로 코드를 작성하기 전까지는 C 언어나 어셈블러 레벨의 최적화 자료들을 많이 찾아보았었다. 하지만 C나 어셈블러 그리고 컴파일러의 특성을 이용한 최적화 기법이나 사례들을 정리해 놓은 책들의 수가 많지 않고, 여러 권의 책을 읽어보아도 중복되는 내용이 많아, 아무래도 좀 더 정리되어 있는 자료가 있으면 좋겠다 싶은 아쉬움을 늘 가지고 있었다. 

    본 책을 리뷰하면서 느낀 점은 저자가 직접 경험하면서 느낀 내용들을 주제별로 그리고 C++이라는 언어가 가지는 특성과 잘 조합하여 정리해 두었다는 점이다. 그리고 주제별로 성능에 영향을 많이 줄 만한 부분들을 다루고 있어, 필요할 때 찾아보기가 쉽게 되어있다는 점도 이 책의 장점이라고 생각한다.

    

  C언어로 개발을 할 때는 못 느끼다가, C++을 이용해서 개발을 하기 시작했을 때, 제일 먼저 어찌해야 할지 답을 잘 찾지 못했던 것이 상당히 많이 이루어지는 메모리 복사이다. C언어와 달리 풍부한 라이브러리가 기본 제공되고, 사용하기 편하기 때문에 무턱대로 사용을 하게 되는데, 이러한 측면은 아무래도 성능에 영향을 많이 주게 된다. 그리고 어떠한 기능을 구현할 때, 여러 템플릿 중 어느 것을 이용해 구현해도 구현을 할 수 있으나, 어떤 것이 더 효율적인 지를 잘 모르는 경우가 있는데, 저자는 이런 부분들에 대해서도 상세히 설명해 주고 있다. 따라서 경험이 적은 C++ 개발자의 경우, 이 책이 상당히 도움이 될 것이라 생각한다. 물론 C++ 을 오랫동안 개발을 해 왔지만, 성능적인 측면을 크게 고려하지 않고 개발을 해 온 개발자들에게도 좋은 조언이 될 수 있는 부분이 많다고 생각한다.

    

  이 책은 Cache level 최적화와 같이 특정 아키텍쳐에 의존적인 내용이나 병렬처리 알고리즘이나 병렬처리를 위한 SSE, AVX 등의 SIMD instruction 사용 기법을 고려한 내용은 다루고 있지 않다. 또 컴파일러 레벨의 최적화 원리 설명이나 linker를 이용한 성능 향상 등의 주제는 다루지 않으므로 관련 내용이 필요한 분들은 다른 책을 참고할 필요가 있다.

    

    이 책을 읽고 예제를 이해하기 위해서는, C++의 문법과 동작 원리를 어느 정도 이해하고 있어야 한다. 그리고 저자가 모던 C++11과 같은 모던 C++의 문법도 이용하여 설명을 하고 있어, 관련 문법도 알고 있으면 더 좋을 것이라 생각한다. 책 내용 자체가 쉽지 않기 때문에, C++ 초보자를 위한 책은 아니지만, 최적화를 고려하는 최적화 초보자 분들께는 좋은 지침서가 될 것으로 생각된다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
게임으로 익히는 코딩 알고리즘 - 취업, 이직, 승진 준비생들을 위한 알고리즘 기본 + 코딩 테스트 트레이닝 북, 2019년 세종도서 학술부문 선정
김영기 지음 / 한빛미디어 / 2019년 5월
평점 :
장바구니담기


  리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.


  정확히 기억이 나지는 않지만, 4~5년 전부터 현재 다니고 있는 회사에서 프로그램 코딩 실력을 시험하는 제도를 도입하고, 사원들에게 사내 자격을 취득하도록 독려하고 있다. 자격 취득을 위해 시험을 보면, 알고리즘을 응용하여 주어진 문제를 정해진 시간내에 푸는 문제가 제시된다. 현업에서 작성하는 코드와는 일견 관련이 없는 것처럼 보이고, 고급 알고리즘을 사용하지 않더라도 당장 프로그램을 구현하는 데에는 문제가 없는 경우도 많이 있다. 그러다 보니, 왜 이런 자격을 취득해야만 하는지에 대해 의문을 제기하는 사람들 역시 존재한다.


  하지만, 이러한 자격 시험의 목적은, 프로그램 작성을 위한 기초 체력을 키우는, 즉 유연한 생각을 가지고 복잡한 문제를 제대로 해결을 할 수 있도록 하는 데 있다고 생각한다. 좀 더 높은 자격을 취득하기 위해, 평소에는 소홀히 했던 자료구조를 다시 공부하게 되고, 이를 응용한 문제를 다시 풀어 보면서, 이런 저런 문제 풀이 방법을 고민해보고... 이런 과정을 반복하면서 굳어져가는 머리를 조금씩 부드럽게 하는 연습을 할 수 있다고 생각한다.


  이러한 자격 취득을 현업 개발자 뿐만 아니라, 취업을 준비하는 사람들에게도 요구를 하다보니, 시중에는 여러가지 알고리즘 트레이닝 관련 책들 및 온라인 judge 사이트가 다수 존재한다. 보통 이러한 책들에서 설명하는 문제의 유형은 온라인 사이트에서 제시하는 내용과 크게 다르지 않다. 책을 이용해 문제를 풀기 위해 필요한 알고리즘을 종류와 원리를 이해하고, 이를 바탕으로 온라인 사이트에서 문제를 풀어보고 하는 과정을 반복하면서 실력을 늘리는 분들이 많이 있을 것이라 생각된다. 


  아무래도 어려운 문제 풀이 과정을 반복하다보면 지루해지는 감이 있는 것이 사실이다. 리뷰를 하기 전에는 사실 codinggame 이라는 온라인 사이트가 존재하는 줄 몰랐다. 리뷰를 하면서 문제를 직접 사이트에 접속해 풀어보면서, 코드 작성과 디버깅 모두 지루함을 느끼지 않는 다는 것을 느꼈다. 본 사이트에 제시된 문제들은, 작성자가 특정 조건을 만족하고, Test case들을 풀어나감에 따라 화면에 게임이 진행되는 것을 볼 수 있다. 그리고 문제 디버깅 역시 단계별로 게임 진행 상황을 보면서 체크할 수 있어 생각한 것보다 더 재밌게 코드 작성을 즐길 수 있도록 유도하고 있다. 그리고 이 사이트의 또 다른 장점은 문제 풀이에 사용할 수 있는 언어가 다양하다는 점이다. 보통 온라인 사이트들을 보면 C, C++ 만을 이용할 수 있는 곳이 많이 있는데, 이 곳은 Python, Ruby, Go, C# 등 인기있는 다양한 언어를 이용할 수 있다.


  이 책의 저자는, 즐겁게 코드를 작성하고 실력을 늘려갈 수 있도록 해당 사이트의 이용방법에 대한 설명을 시작으로, 간단한 문제부터 어려운 난이도까지 문제를 풀어가면서 알고리즘 트레이닝 및 사이트 이용방법 모두에 대해 설명을 해 주고 있다. 책에서는 단순히 문제만 푸는 것이 아니라, 어떤 문제에 어떤 알고리즘이나 자료구조를 적용하여 문제를 푸는 것이 좋은지, 그리고 어떻게 문제 풀이를 접근해야 하는지도 하나 하나 짚어주고 있어, 알고리즘 트레이닝 입문자에게 있어, 큰 도움이 될 것으로 판단된다. 사실 문제를 보고 덥썩 코딩부터 시작하는 사람들도 많이 있는데, 저자는 어떤 식으로 문제를 파악해야 하는지, 그리고 문제를 푼 후, 속도를 최적화하기 위해 접근해야 하는 방식에 대해서도 집어주고 있어, 입문자가 아니라 문제 풀이 방식을 배우고자 하는 분들에게도 도움이 될 수 있다고 생각한다. 또 Python을 이용한 문제 풀이 과정을 따라 하면서 Python 언어에 익숙치 않은 사람들에게 있어서, 적절한 Python 사용법도 익힐 수 있다.


  그러나, 이 책의 목적과 다르게 고급 실력을 키우려는 사람들이 이 책을 선택했을 때는, 원하는 바와 맞지 않을 수 있다고 생각한다. 대부분의알고리즘 트레이닝 책들과 마찬가지로 이 책 역시 반드시 다루어야 하는 내용들을 다루고 있다. 이 부분은 중급 이상의 고급 문제 풀이 과정을 기대하는 분들에게는 이 내용들이 시중에 나와있는 다른 책들의 내용과 중복되는 면이 있다고 생각할 수 있기 때문이다.


  하지만, codinggame 사이트를 통해 즐겁게 코드를 작성하고, 이를 통해 프로그램 작성의 응용력 및 기초 체력을 증진 시키는 것을 원하는 분들에게는 이 책이 목적에 딱 맞는 책이 될 것이다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
파이썬으로 웹 크롤러 만들기 - 초간단 나만의 웹 크롤러로 원하는 데이터를 가져오는 방법, 2판
라이언 미첼 지음, 한선용 옮김 / 한빛미디어 / 2019년 3월
평점 :
구판절판


리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.


파이썬이라는 언어는, 프로그래밍을 한다고 하면 항상 C 언어를 배워야했던 것처럼, 반드시 익혀야하는 언어라고 생각이 될 정도로 일반화되었다고 생각한다. 단순히 사용하기 쉽다 정도에서 끝나지 않고, 어떤 일을 빠른 시간 내에 해야 할 때, 이미 필요한 대부분의 라이브러리가 준비되어 있는 경우가 많다. 웹 관련 기술에서도 이러한 점은 다르지 않다.


초판이 정확이 언제 출간되었는지 기억이 나지는 않는데, 벌써 두 번째 버전의 번역판이 출간되었음을 다른 책을 구매하러 한빛 미디어 사이트에 들어갔다가 알게 되었다. 마침 기회가 되어 리뷰까지 할 수 있어 감사하게 생각한다.  


웹 크롤러를 만들어 특정 사이트에서 원하는 정보를 얻어 오는 것은, 어떤 정보를 어느정도로 수집할 것인가에 따라 난이도는 많이 달라진다. 간단한 정보라 해도, 정보를 수집하게 어렵게 만들기 위한 여러 기법이 적용되어 있는 사이트의 경우, 이를 위해 많은 정보를 찾아보아야 하고, 어떤 언어를 이용하는 것이 가장 도움이 되는 지에 대해서도 고민해야 하는 부분이 된다.


본 책은, 그러한 고민을 시작하거나 이미 하고 계신 분들에게, 도움이 될 수 있다고 생각한다. 책의 두께만 보고 별 내용이 없으리라 판단할 수도 있지만, 모든 챕터를 꼼꼼히 읽어보면, 단순히 웹 크롤링러 작성하는 방법만을 나열한 책이 아니라는 것은 쉽게 파악할 수 있다. 간단한 스크레이퍼를 작성하는 방식으로 접근을 하면서 하나 하나 좀 더 복잡한 경우 그리고 좀 더 다양한 고려를 해야만 하는 경우들을 짚고 있다. 그리고 중간 중간에 뒤에 진행되어야 할 부분에 대한 필요한 정보에 대해서도 몇 개의 챕터를 할애해 설명을 하고 있다. 간단한 테크닉이나 단순 라이브러리의 사용법 이외에도, 쿠키 처리, CAPTCHA 다루는 방법, 스크레이핑 방어 코드 우회 등과 같이 좀 더 고급 내용도 다루고 있어 참고하기에 좋은 부분이라 생각한다. 그리고 웹 크롤러 작성시 반드시 고려해야하는 윤리성, 합법성 관련 문제에 대해서도 다루고 있다. 전반적으로 웹 크롤러 작성 시 큰 그림을 보기 위해서 읽어볼 만한 좋은 책이라 생각한다. 


하지만, 책을 읽으면서 아쉬운 부분도 일부 눈에 띄었다. 첫째로 이 책이 원서라는 점이다. 원서이기 때문에 이 책이 간행된 시점과 번역서가 간행된 시점은 차이가 날 수 밖에 없다. 예제로 설명하는 코드가 번역이 진행된 시점에 동작하지 않는 부분들이 존재한다. 하지만 역자 분이 이 부분을 꼼꼼히 체크하여, 이러한 부분들을 일일이 언급하고 필요시 예제 코드를 변경하거나, 별도의 github 사이트에 대체 코드를 올려주신 부분은 고마운 부분이라 생각된다. 둘째로 일부 내용의 경우, 배치를 굳이 이렇게 해야했나 하는 부분도 눈에 띈다. 굳이 CVS, PDF와 같은 포맷의 문서 읽기나 자연어 처리와 같이, 알면 도움이 되지만 흐름상 배치를 참고 자료로서 뒷쪽에 배치해도 될 것으로 보이는 내용들을, 중간에 배치 해, 그냥 스킵하고 다음으로 넘어가도 되는 내용 아닐까 하는 부분도 있었다. 셋째로, 다양한 주제를 적은 페이지의 책에서 설명하려다보니, 예제가 단순한 면이 있다. 규모가 좀 큰 예제와 그런 경우 고려해야하는 부분들이 있으면 좋았을텐데 하는 아쉬움이 있다.


요즘 들어 번역서들은 과거의 수준과는 달리 상당히 번역이 잘 되어 있다. 이 책 역시 책을 읽으면서 큰 어색함을 느끼지 못하였다. 또 띄어 쓰기나 쉼표 등이 잘 되어 있어서 어색함과는 별개로 빠르게 읽어나가는데도 문제가 없다고 느꼈다 ( 이 부분에 있어서는 사람들마다 생각이 다를 수는 있으나, 아무리 컴퓨터 IT 책이라도, 중요하다고 생각하는 편이다).


참고로 이 책은 웹 크롤링에 대한 입문서이지, 파이썬 언어에 대한 입문서는 아니다. 책에서 저자가 책에서 설명하는 라이브러리 설치 방법 등에 대해 상세하게 설명하는 부분이 있지만, 어느정도 파이썬에 익숙해져 있는 분들을 위한 내용이다. 따라서 본 책을 보기 전에 먼저 파이썬 입문서를 참고한 후 읽는 것이 더 효과적으로 책을 이해할 수 있을 것이라 생각한다.


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
파이썬 웹 프로그래밍 - Django(장고)로 배우는 쉽고 빠른 웹 개발, 개정판 파이썬 웹 프로그래밍
김석훈 지음 / 한빛미디어 / 2018년 8월
평점 :
구판절판


파이썬 프로그래밍

  리뷰에 앞서 리뷰는 한빛 출판 네트워크에서 진행한나는 리뷰어다이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.

  

  파이썬이라는 언어가 나온지는 상당히 오래되었으나, 몇년간 눈에 띄게 여러 분야에서 사용되고 있다고 느끼고 있다. 예전에 Perl 가지고 있던 위상이나 이상이라고 느껴진다. 워낙 많은 분야에서 사용되고 있다보니 프로그래밍 역시 파이썬을 알고 있다면 접근이 어렵지 않은 것이 사실이다. 하지만 모든 프로그래밍 언어 또는 관련 라이브러리에서 지원하는 소켓 기능, 간단한 HTTP 파서만을 가지고 처음부터 끝까지 혼자 프로그램을 나간다는 지금과 같은 빠른 결과물, 좋은 결과물을 원하는 시대에는 불가능한 일이라 생각한다.


  리뷰를 하게 파이썬 프로그래밍 파이썬을 이용해 프로그래밍을 시작하려고 하지만 무엇부터 시작할 모르는 분들에게 맞는 책이라는 생각이 든다. 책은 웹프로그래밍에 대한 기본 내용에 대해 간단히 장에서 설명을 하고, 장고 프레임웍을 가지고 어떻게하면 쉽고 빠르게 프로그래밍을 있는지 설명해 나간다. 간단히 친절하게 설명된 튜토리얼이라고 있다하지만 파이썬을 이용하기 때문에 독자는 파이썬의 기초는 알고 있어야 한다. 초보자를 위한 설명이 상세히 나오기는 하지만 HTML 대한 기초적인 지식은 갖추고 있어야 예제를 이해하는 문제가 없을 것이다


  처음 장은 프로그래밍을 하기 위한 기초적인 내용 설명 파이썬이 지원하는 통신을 위한 라이브러리에 대해 설명을 한다. 파이썬의 경우 2.x 3.x 버전간 라이브러리 사용에 약간의 문법적, 구조적 차이가 있는데, 3.x 기준으로 기본설명을 하고 2.x 대한 설명도 되어 있어 양쪽 사용자를 배려했다는 느낌이 든다. 3장과 4장은 장고 프레임웍의 특징 MVT 패턴에 맞춘 간단한 예제 실습으로 구성된다. 하지만 처음부터 장황하게 설명하지 않고, 하나씩 하나씩 완성해나가는 형태로 예제 프로젝트를 진행하기 때문에 차근차근 실습하며 이해해 나가는 무리가 없다. 5장에서는 실습 예제를 확장해 나가면서 3장과 4장에서 설명한 내용을 다시 연습해 있도록 두었다. 어떤 프레임웍이든 프레임웍이 가지는 구조가 있기 때문에 반복하면서 구조에 익숙해질 필요가 있는데, 저자는 이런 부분을 이해하고 그에 맞춰 책을 구성했다는 생각이든다. 나머지 챕터들은 서버와 장고 프레임웍간의 연동, 클라우드 시스템 연동에 대해서 따라하기 형태로 구성된다. 부록에는 외부 라이브러리, 데이터베이스 연동 Pycharm IDE 대해서 실려있는데, 장황한 설명이 아닌 처음에 설치해서 어떻게 설정하는지 위주로 설명이 되어 있다


  앞에서 설명한 것처럼 책은 전체적으로 처음 파이썬으로 프로그래밍을 하는 사람에게 필요한 내용 위주로 필요한 내용을 설명해 놓았다는 생각이 든다. 책을 선택할 때는 이런 점에 유의를 해야 것이라 생각이 든다. 예를 들면, 나는 초보자지만, 장고 이외에 다른 프레임웍들에 대한 다양한 소개 여러 가지 다양한 예제를 위주로 경우 문제점 해결 방안 등도 알고 싶다 라고 생각하는 독자라면 책은 맞지 않을 수도 있다. 하지만 그러한 독자라면 책을 기초로 익히고 다른 깊이 파고들 있는 다른 책을 보는 것도 좋은 방법이라 생각한다.


  보통의 요즘 프로그래밍 책과 달리 책의 예제는 윈도우즈 OS 환경에서 테스트 코드 실행 결과가 실려있다. 보통 Linux MacOS(BSD 인터페이스)에서 프로그램 작성이나 실행하는 일이 많기 때문이다. 하지만 책은 Linux MacOS 대한 가이드는 나오지만, 대부분의 예제 작성 실행이 윈도우즈 OS에서 수행된다. 파이썬이라는 언어가 플랫폼에 의존성이 적은 언어라 충분히 문제가 되지는 않기에 누구든 쉽게 접근할 있는 윈도우 OS 환경을 기준으로 설명했다는 생각이 든다


  마지막으로 지극히 주관적인 의견일지 모르지만, 컴퓨터 분야 책이든 이외 분야든, 책을 읽을 문장 부호, 띄어 쓰기는 상당히 중요하다고 생각한다. 물론 저자의 관련 분야에 대한 지식은 물론이다. 그런 면에서, ‘파이썬 프로그래밍 저자가 꼼꼼히 띄어 쓰기, 쉼표를 사용하여 읽는 불편함이 없었다고 생각한다


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
딥러닝의 정석 - 텐서플로와 최신 기법으로 배우는 딥러닝 알고리즘 설계
니킬 부두마 지음, 고광원 외 옮김 / 한빛미디어 / 2018년 2월
평점 :
구판절판


  리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.


  이 책의 제목만 보았을 때, 또 한 권의, 시중에 나온 많은 딥러닝 책들과 유사한 책이 나왔을 거라 생각을 했다. 하지만 내용을 읽어 나가면서, 생각과는 다르다는 판단을 하였다.   

  시중에 나와 있는 많은 책들이 기초적인 Python, iPython 사용법, logistic regression, softmax  classification, activation function, backpropagation, dropout, CNN, RNN 등등을 다루고 있다. 이 때 기초적인 설명에 많은 지면을 할애하되, 수학적인 어려움을 느낄 수 있는 부분들에 대해서는 최대한 쉽게 설명하거나 스킵하는 경우도 많이 있다. 하지만 이 책은 그 보다는 좀 더 본격적으로 딥러닝의 내용을 다루고 있다는 생각이 든다.

  

  이 책을 제대로 보기 위해서는 기초적인 machine learning 및 python 사용법은 익히고 있어야 하며, 미적분 및 선형대수에 대해서도 지식이 필요하다고 생각된다. 이 부분은 책 서두에도 저자도 밝히고 있다.

  

  이러한 부분이 이 책과 다른 기초를 기술한 책들과는 다른 부분이라고 생각된다. 또 이 부분이 다른 책들에 비해 가지는 장점이라 생각한다. 기초적인 내용들의 설명을 줄이고 수식에 대한 설명이 필요한 부분에 대해서는 꼼꼼히 설명을 하고, 필요하면 이해를 돕기위한 그림, 도표를 사용하고 있다. 또 Google의 Tensorflow를 이용해 실제로 구현을 어떻게 해야하는 지에 대해서도 설명한다.

  

  이 책은 앞서 나열한 여러 책에서 상세히 설명하는 기초적인 부분에 대해서 많은 설명을 하지는 않는다. 이 책의 1~3장에서 상당히 빠른 속도로 기초 개념에 대한 설명을 하고 넘어간다. 3개 장을 할애하여 설명을 하는데 그 정도면 되는 것 아닌가라고 생각할 수도 있다. 하지만 실제 읽어보면 다른 책을 참고할 필요성을 느낄 수도 있을 거라는 생각이 들었다.

  4장에서는 학습률 최적화를 위한 여러가지 사례와 설명 등이 나오지만 뭔가 모르게 많이 나열을 하고 끝나버린다. 신경망을 학습 시킬 때의 문제점, 성능 등을 설명하며 모멤텀, RMSProp, Adam optimizer에 대한 설명을 수식과 함께 설명을 하고 있으나 전반적인 소개를 하고 지나가는 느낌이다.

  5장과 6장은 CNN에 대한 설명이 그리고 7장과 8장은 RNN 에 대해 기술하고 있다.각각 전체적인 큰 그림을 먼저 제시하기 보다는 하나하나 단계별로 설명을 해 나가면서 이를 위해 어떤 것들이 필요한 지를 수식, 그림 및 도표 등을 이용해 설명하고 있다. 

  마지막 장(9장)은 강화 학습 관련 부분으로, 이 책에서 다루지 못한 강화 학습의 기본 원리를 설명하고 있다.

  

  책을 계속 읽어나가면서 느낀 점은, 복잡한 내용을 하나 하나 단계적으로 접근해가며 설명을 하고 있고 관련된 참고할 내용들을 다양하게 기술하고 있어 좀 더 깊게 딥러닝을 공부하려는 분들에게 좋은 참고서가 될 수 있을 거라는 생각을 하였다. 하지만 딥 러닝에 대한 지식이 부족해서 인지, 기초적인 부분에 대해서도 좀 더 많은 설명이 있었으면 더 좋았을 거라는 아쉬움이 있다. 그래서 이 책을 읽기 전에 "파이썬 라이브러리를 이용한 머신러닝", "밑바닥부터 시작하는 딥러닝" 과 같은 책을 먼저 읽고 보는 것이, 내용 이해에 도움이 될 라는 생각이 든다. 

   

  책 내용과는 별개로 개인적으로 아쉬운 점을 들어보면

    첫째로 책에 오탈자가 여러 부분 있었다. 예전 한빛 미디어 책들을 읽을 때에도, 여러 곳에 오탈자가 있었을 것이라 생각하는데, 이 책이 좀 더 많다는 느낌을 받았다. 독자들이 등록한 관련 내용은, 한빛 미디어 도서 페이지(http://www.hanbit.co.kr/store/books/look.php?p_code=B5128867520&tid=misprint)에서 확인 가능하다. 하지만 모든 부분이 다 체크될 수 없기 때문에, 다음 쇄 나올 때 좀 더 꼼꼼히 수정이 되었으면 하는 바램이다.

  

    둘째로 한빛 미디어 사이트에서 책의 예제 코드들을 챕터별로 분류해서 제공해 주었으면 더 좋았으리라는 아쉬움이 있다. github 사이트(https://github.com/darksigma/Fundamentals-of-Deep-Learning-Book)에 있는 저자의 예제 코드가 챕터 별로 되어 있지 않기 때문이다. 한빛 미디어 사이트에서 다운 받을 수 있는 데이터는, 책 내용 중 현재 다운이 불가능한 CoNLL-2000 데이터셋만 있다. 책 내용 중 코드에 해당하는 파일 이름이 명기 되어 있지 않는 부분들이 있어, 예제 코드를 github 사이트에서 찾는 것이 좀 번거로웠다. 그리고 책에 있는 예제 코드에 오류가 있는 부분들이 있어, 책의 코드를 일일이 typing 하면서 실행해 본다면, 에러가 나는 부분에 대해서는 github 예제 코드를 확인해 보아야 한다. 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo