메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

밑바닥 딥러닝의 강화판

mydrea***

|

2019-09-18

파이썬 날코딩으로 알고 짜는 딥러닝

이 책은 딥러닝 알고리즘의 원리를 깊숙이 이해하고 이를 파이썬 코딩만으로 구현하는 데 주안점을 둔다. 이를 위해 가장 간단한 신경망 구조부터 복잡한 응용 구조까지 다양한 딥러닝 신경망 예제의 실제 구현 과정을 소개한다.

  • 저자 : 윤덕호
  • 출간 : 2019-07-15

프레임워크 없이 numpy만으로 딥러닝 네트워크를 구현하면서 학습한다는 컨셉의 <밑바닥부터 시작하는 딥러닝><밑바닥부터 시작하는 딥러닝 2>가 몇 년 동안 많은 인기를 얻었고, 나 또한 이 두 책으로 재미를 보았었다. 일본 IT 서적 특유의 잘 구조화되어있고 꼼꼼한 설명으로 좋은 인상을 받았었는데, 이번에는 비슷한 컨셉으로 한국인 저자가 집필한 책이 나왔다.


밑바닥 시리즈와의 차이점이라면 단연 두께가 두껍다는 것. 밑바닥 시리즈 2권을 합쳐도 이 책 한권에 미치지 못할 정도로 상당히 두껍다 (약 700 페이지 분량). 그도 그럴 것이 다루고 있는 범위가 밑바닥 시리즈 두 권을 합친 것보다 더 넓다. 밑바닥 시리즈는 1권에서 MLP(다중 퍼셉트론 레이어)와 CNN을, 2권에서 RNN + attention 을 다루었는데 이 책은 위 내용에서 attention을 빼고 오토인코더, 인코더-디코더, GAN을 추가로 다루고 있다.

밑바닥 시리즈와 마찬가지로 프레임워크 없이 직접 한땀 한땀 딥러닝 네트워크를 구현해야 하기 때문에 이론적 설명이 풍부하다. 차이점은 밑바닥 시리즈는 핵심 내용을 최대한 쉬운말로 잘 풀어내고 있다면, 이 책은 마치 전공 강의를 듣는 것처럼 엄밀한 설명에 중점을 둔다. 난 마침 기본적인 원리는 이해하고 있는 상태였기 때문에 이 책을 통해 간과하고 있던 디테일한 부분들을 짚어볼 수 있어서 좋았다.

한가지 정말 좋았던 부분은 코드의 생략 없이 구현 전체를 의미있는 단위로 잘 나눠서 담았다는 점이다. 보통 개발 서적의 예제 코드들은 핵심 내용만 책에 담고 나머지는 인터넷에서 찾아보게 하거나, 혹은 하나의 클래스나 함수가 매우 길어서 이를 부득이하게 나눠놓고 있는데 이럴 경우 예제를 그대로 구현할 시 구문 오류가 발생하여 코드를 읽기가 상당히 불편하다. 그런데 이 책에서는 하나의 함수 구현은 나누지 않고 반드시 한 단위에 포함시켰고, 구현이 길어질 클래스는 초기화 함수만 포함하고 구체적 기능을 담당하는 메소드는 별도로 정의해서 주입하는 방식으로 어떤 예제코드든 구문 오류가 발생하지 않도록 해 두었다. 어느 부분의 예제를 참고하든 작동이 가능하여 직접 실행해보며 이해할 수 있어 좋았다.

그리고 여러 딥러닝 모델을 소개하는데 그치지 않고 모델의 성능을 점진적으로 개선하는 과정을 보여주기 때문에 실무에서 적용할때도 성능이 잘 나오지 않으면 어떤 것들을 점검해봐야 하는지를 배울 수 있었다. 이런 구성이 실무에 적용할 때 많은 도움이 된다.

다만 책을 읽을 때 유의해야 할 점이 몇가지 있다. 우선 예제 코드의 완결성을 위해 채택한 방식이 실무에서 코드를 생산하는 방식과는 다르기 때문에 실제로 이용할때는 주의가 필요하다. 예제 코드들은 jupyter notebook에서 실행되는 것을 전제로 하기 때문에 코드 재사용성, 캡슐화와 같은 OOP 원칙을 아주 잘 따르고 있지는 않으므로 이 부분은 염두에 두어야 한다.

그리고 한가지 아쉬운 점이 있다면 프레임워크 없이 구현하며 배우는데 초점이 맞춰져 있지만 그래도 구현 방식이 여타 딥러닝 프레임워크의 아키텍쳐와 닮아있다면 더 좋았을 거란 생각이 든다. 예를 들어 일반적인 딥러닝 프레임워크에서는 네트워크를 학습할때 Stochastic Gradient Descent, Adam 과 같은 학습 방법을 optimizer 라는 모듈로 따로 정의하는데 이 책에서는 단순히 forward와 backward 과정 중 하나로 취급하고 새로운 학습 방법을 사용할때는 네트워크 클래스 자체를 상속하는 방식을 사용한다. 실무에서는 결국 프레임워크를 사용하기 때문에 이런 부분까지 고려가 되었다면 더 좋았을 것이다.


나는 이번에 책을 읽으면서 예제 코드를 전부 따라하기 보다는 코드를 읽어서 의도를 파악한 뒤 해당 기능을 기존 프레임워크 (tensorflow)를 사용해서 구현하는 방식으로 학습했다. 그래서 딥러닝 구현 외에 성능 향상, 데이터 정제 과정에 집중 할 수 있어서 좋은 기회가 되었다. 워낙 기본에 충실한 내용을 담고 있는 책이라서 독자의 취향대로 학습을 한다면 얻는 것이 많을 것이다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?