|
본 리뷰는 한빛미디어의 도서 서평단 <나는 리뷰어다 2021> 프로그램의 일환으로, 무상으로 도서를 증정 받고 작성된 리뷰임을 고지합니다.
![]()
오늘의 리뷰 도서는 '만들면서 배우는 파이토치 딥러닝' 입니다. 제목 그대로, 파이토치를 활용해서, 총 12개의 모델을 통해 딥러닝 개발을 실습해볼 수 있는 책인데요.
사실 기존에 더 많이 들어보고, 기존에 사용 경험이 있었던 라이브러리는 텐서플로우였기에, 파이토치는 조금 생소한 부분도 있었습니다. 하지만 점유율로 보면 파이토치가 오히려 텐서플로우를 역전하고 있는데요.
위 자료와 같이, 논문에서의 PyTorch 점유율은 이미 TensorFlow를 훌쩍 넘어서고 있는 것을 볼 수 있습니다. 그것도 근래에 와서는 상당히 압도적인 수치를 보이고 있는데요. 특히, 이번 학부 수업에서 PyTorch를 활용하는 인공지능 수업을 듣게 되어서, 본 도서의 리딩은 더욱 저에게 의미가 깊었습니다.
![]()
기존에 KoBERT 등을 사용해본 경험이 있어, 7~8장을 특히 흥미롭게 읽을 수 있었습니다. 하지만 일본인 저자의 책이다보니, 당연히 일본어 중심의 NLP 예제가 서술되어 있습니다. 이 부분은 어쩔 수 없이 감안하고 읽어야 하는 부분이기도 합니다. 그럼에도, 책의 전체적인 내용에서는, 각 장의 서두마다 모델에 대한 기본적인 내용이 제공되고 있어서, 모델의 이해에 도움이 되었는데요. 사실 쉬운 난이도의 책은 아니다보니, 한번에 술술 읽히는 책은 아니었습니다.
본 책을 한마디로 표현하면 '파이토치와 딥러닝의 기본기가 잡힌 독자를 위한, 실용적 중급서'라고 할 수 있겠습니다.
처음 ML/DL을 접하는 독자에게 이 책은 적합한 도서가 아닙니다. 친절하게 하나부터 열까지 알려주는 기본서도 아닙니다. 오히려, 딥러닝이 손에 익은 독자를 대상으로 하여, 다양한 모델을 활용해보고, 실습해볼 수 있게 해주는 실용서이자, 학습서입니다.
사실 '딥러닝 입문'... '밑바닥...', '초보...' 이런 내용의 딥러닝 서적은 많지만, 파이토치를 통해 실용적인 딥러닝 학습을 할 수 있도록 하는 도서는 많지 않기에, 대상 독자층에게는 상당히 유용한 책이 될 것 같습니다. 이미 어느정도 딥러닝을 활용해보고, 학습한 독자들에게 분명 많은 배움을 제공해주는 책이 될 것이라고 생각합니다.
|
|
'만들면서 배우는 파이토치 딥러닝'은 딥러닝을 구현하는 머신러닝 패키지인 파이토치를 이용하여 딥러닝 응용기술을 구현하면서 학습하도록 구성되어 있다. 이 책에서는 총 12개의 딥러닝 모델을 9장에 걸쳐 다루고 있다. 1장 화상분류와 전이학습 (VGG)
이 책의 장점은 12개의 딥러닝 모델을 다루고 있고, 그 모델들은 최고 성능 모델에 기반했다는 점이다. 그리고 1장부터 차례대로 읽을 수 있도록 구성되어 있다. 왜냐하면 딥러닝 모델을 이해하기 위해 이전 장의 지식을 습득하도록 했다. 각 모델의 구성 및 구현도 중요하지만, 각 모델 구현 후 학습 및 검증이 각 모델마다 포함되어 있어, 어떤 결과를 얻을 수 있는지 확인할 수 있다. 각 장절마다 학습해야하는 학습 목표를 초반부에 언급하여 어떤 내용을 배우는지 다시 한번 환기 시키고 있다.
이 책의 아쉬운 점은 책 초반부의 아나콘다 설치 설명부분이다.
이 책의 내용을 통해 비즈니스 현장에서 딥러닝을 활용한 구현 경험을 쌓는데 도움이 될 것이다. 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. #만들면서배우는파이토치딥러닝 #딥러닝 #머신러닝 #파이토치 #한빛미디어 |
|
이번에 리뷰해볼 책은 만들면서 배우는 파이토치 딥러닝이다. 이 책의 장점으로는 최근에 다양하게 이용되는 딥러닝 분야들을 가볍게 경험해 볼 수 있는, 찍먹을 해보는 책이라는 것이다. 최근에 딥러닝을 원리부터 구현하는 책들도 많이 나오는데, 그런 책들은 기초적인 개념부터 시작하기 때문에 다양한 딥러닝 분야 모델들을 책 한 권에 다 다룰 수 없다는 것이었다. 하지만 이런 책이 나온다면, 이미 딥러닝에 기본적인 이해가 있는 사람들이 다양한 분야의 대표적 모델들을 빠르게 훓어 볼 수 있으므로 좋다고 생각한다. 특히 마음에 들었던 점은, 이미지 분류 모델에 중점을 둔 것이 아닌 다른 시멘틱 분할이나, NLP, 그리고 GAN과 같은 좀더 응용된 모델들이 많이 소개되었다는 점이다.
또다른 장점은 파이토치 기반으로 모델들을 설명하고 있다는 점이다. 가장 많이 사용되는 딥러닝 라이브러리로 파이토치와 텐서플로우가 항상 언급되고는 하는데, 비록 같은 기능을 수행한다 하더라도, 직관적으로 전체적인 프로세스를 이해하는 데에는 파이토치가 장점을 더 가진다고 생각한다. 기본적으로 텐서플로우와 파이토치는 인터페이스 디자인에서 Declarative와 Imperative 의 차이도 있는 데다, 텐서플로우가 케라스 API 와 같이 통합되면서, 너무 블랙박스처럼 되어버린 점도 있다. 그렇기에 사용성을 떠나 학습하는 입장에서는 파이토치를 선택한 것이 괜찮은 선택으로 보인다.
이 책에서 단점을 뽑아보자면, 너무 모델들을 '찍먹' 하다보니 많은 디테일들이 생략되었다는 점이다. 물론 각각의 챕터에서 모델들의 메커니즘과 그들에게 사용된 기본적인 개념들을 소개하지만, 정말 간단히 소개하고 있다. 그렇기 때문에 이 책으로 경험해본 모델들을 시작점으로 조금 더 디테일한 이론기반을 찾아보거나, 소개된 대표적인 모델에서 변형된 다른 모델들을 공부해 보면 좋을 것 같다.
디테일에서의 단점은 있지만, 딥러닝 기초에 대한 책을 읽고 나서 읽으면 현재 딥러닝이 사용되는 분야들에 기본적 오버뷰를 가질 수 있으므로 좋은 책이라고 생각한다. 또한, 책에 나온 설명들과 함께 구현에 대한 설명이 잘 되어 있어, 차근차근 하면서 따라가기가 수월했다.
*한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
|
|
이 책은 파이토치로 개발한 딥러닝 모델 사례로서 12가지를 소개한다. 이미지 처리와 관련있는 모델로서 VGG( 객체 분류) , SSD (물체 검출) , PSPNet ( 시맨틱 분할) , OpenPose ( 자세 추정 ) 모델을 다룬다. GAN 모델을 사용하여 이미지 생성을 , AnoGAN을 통해 비정상 이미지를 검출한다. 자연어 처리 분야에서는 Tansformer와 BERT 모델을 사용하여 감정 분석을 수행한다. 마지막으로 3D CNN 모델로서 ECO 모델을 사용하여 동영상을 분류한다. 거의 모든 장에 걸쳐 Pretrained 모델을 제공하고 있어, 추론 모델을 실행해 볼 수 있다.
|
|
딥러닝으로 문제를 해결하는 과정에서 다른 연구자들의 아이디어 혹은 모델을 활용, 응용, 혹은 변형하는 능력을 키우고 싶을 때 유용한 PyTorch 기반의 DNN, CNN, RNN, LSTM 등 딥러닝의 기본을 충실히 익히고 있고 새로운 문제 혹은 변형된 문제가 발생했을 때 모델의 뇌 기능 측정과 계산 신경과학을 연구한 저자가 연구의 응용력과 구현 기술까지 탁월한데 책의 전달력까지 뛰어나 적잖이 놀랐다. 다른 독자분들의 평도 봐야겠지만 적어도 내 기준에서는 그동안 너무 찾던 책이다. 읽는 내내 컬러판이 아니라는 단점 하나 외에는 모두 장점 투성이였다. 부디 이 책이 널리 흥해서 컬러판이 나왔으면 하는 바램이다. 단, 주의할 점은 난이도가 중급서 이상이라는 점이다. 적어도 python, pyTorch, 딥러닝의 기본(DNN, CNN, RNN, LSTM 등), Linux 정도는 알고 책을 읽는 것이 좋을듯 하다. 처음부터 합성곱층, 전결합층, 텐서보드X 등의 용어가 나오기 때문이다. 각 장별로 어떤 내용을 다루는지 구체적인 설명과 더불어 읽으며 느꼈던 장단점을 기술해보겠다. 들어가기에 앞서 책 소개 챕터에
뒤에 이어질 12가지 심도 있는 모델을 이해하고, 구현하고, 응용하는데 있어 반드시 알아야 할 기초 지식이기에 충분히 숙지하고 넘어가야 한다. 첫번째로 Vision 분야의 고전이 되어버린 두번째로 각 논문 구현체나 서적마다 각기 다른 방식으로 구현하고 있기에 혼선이 생겨 직접 구현 시 어떤 패턴을 선택할지 의외로 많은 고민을 하게 되는데 깊게 고민할 필요도 없이 이 참에 이 책에 나온 패턴대로 주류를 잡고 차후 발견하는 패턴을 이 윤곽에서 업그레이드하는 형태로 접근해도 충분히 훌륭한 방식이 될거라 생각한다. 나는 초보자에 지나지 않지만 적어도 지금까지 겪어온 구현체 중에 가장 깔끔하고 확장성이 좋은 패턴이라는 생각이 들었다. 세번째로 네번째로 마지막으로 파인튜닝은 새로운 논문이나 모델이 등장할 때마다 수시로 적용해 봐야 하는 마치 Python 문법과 같이 계속 곁에 두고 활용하는 기본 기술이므로 이 참에 이 책을 통해 확실히 익혀두면 실무에 매우 유용할 것이다. 다행히 2장 이후 지속적인 파인튜닝 실습을 진행하는데 이 책 실습만 잘 따라해도 파인튜닝에 꽤 익숙해져 새로운 과제가 주어져도 자신감이 생길만큼 능숙해질 수 있을거라 생각한다.
구체적으로 SSD300 모델로 실습하며 8,732개의 디폴트 박스, 오프셋 정보변수 4개, 신뢰도 21개 클래스로 218,300개의 정보를 출력하는 실습이다. SSD 알고리즘의 핵심은 아래 그림과 같이 디폴트박스(DBox)를 바운딩박스(BBox)로 변형하는 과정이다. 좌측에서 우측 그림으로 변형하며 cx, cy, w, h 등 4개의 오프셋 변수에 관계식이 생성된다. 이를 통해 손실함수 클래스 MultiBoxLoss 클래스를 구현하는 과정이 가장 인상적인데 당면한 문제마다 손실함수만 잘 설계해도 괄목할만한 성과를 얻을 수 있다는 것을 느낄 수 있는 부분이다. 이 책의 겉표지에 왜 “딥러닝 응용”이라는 부제가 붙었는지 알 수 있는 부분이다. 이 책에서 말하는 응용은 구현 기술이라기 보다는 연구 결과를 구현체에 반영하는 과정에서의 응용이니 연구쪽에 가깝다고 할 수 있다. 책에 등장하는 12가지 모델에 잘 훈련된다면 아마 새롭게 마주하는 문제에 있어서도 거인의 어깨에 선 것처럼 기존 좋은 연구나 모델들을 활용하여 멋진 문제를 해결해 낼 수 있겠다는 생각이 들었다. 전체적인 구현 절차는 1장에서 언급했던 기본 패턴을 준수하고 있으며 의외로 디테일한 부분까지 설명하고 있어 친절하다는 느낌을 받을 수 있었다. 1장과 달리 DataLoader등을 직접 구현하기에 새로운 문제에 적합성을 키울 수 있다는 점도 책이 가지는 장점이다. 여담이지만 개인적으로 SSD는 정이 많이가는 모델이다. 몇년 전 SOTA급 논문을 어떻게든 구현하는 능력을 키우고 싶다는 욕망으로 처음으로 달려든 논문이 바로 이 SSD를 발표한 논문이었다. CNN을 배우고 나름의 자신감이 생겨 논문을 뜯어보며 고군분투했지만 당시엔 실패했다. 그 때 실패를 경험하며 삽질을 해서인지 아니면 이 책의 설명이 뛰어나서인지는 알 수 없으나 당시 나를 괴롭혔던 왜 SSD의 디폴트 박스가 8,732개가 나오고 입출력 차원이 원하는대로 계산되지 않았던 것인지 끙끙댈 때와 비교한다면 이 책이 가치를 느낄 수 있다. 이 모델을 처음접하는 독자에게 떠먹여 주는 정도가 아니라 아주 잘게 씹어 떠먹여주는 수준의 친절한 느낌을 받았다. 그렇기에 이 책은 딥러닝의 기본기를 다진 독자가 논문과 접하는 경계선을 탐험하고 스스로의 아이디어를 기존 모델에 접목, 변형해 보고 싶을 때 아주 좋은 무기가 될거라 생각한다.
이 시점에서 책의 구성이 매우 돋보였는데 2장에서 거의 모든 것을 직접 구현해 기초를 다졌다면, 3장은 파인 튜닝을 활용한다. 뒤에 이어질 4장에서는 일부분을 직접 구현하도록 유도한다. 친절히 모든 것을 알려준 후, 타인의 연구를 응용하는 법을 배우며, 나아가 부족한 부분은 스스로 구현해보게 함으로써 수준높은 학습효과를 달성할 수 있다. 다른 이들은 어떨지 모르나 개인적으로 너무 마음에 드는 구성이다.
이 장에서는 PAFs와 히트맵이 이 모델의 성능을 정교하게 끌어올리는 부분이 관심있는 부분이었다. 확실히 Vision 분야의 데이터여서 그런지 XAI 기법도 가능하고 해석력이 높은 모델인 점에 끌렸다.
이 장의 핵심은 Attention 모델이다. 특히 304p의 설명은 참 알기쉽게 잘 쓰여있다는 생각이 들었다. 원론, 수학적으로 크게 부족한 내용없이 소스 코드 구현과정을 통해 명확하게 이해할 수 있게 쓰여있어 인상적이었다. 더불어 308p의 스펙트럴 정규화도 참 알기쉽게 설명을 잘하고 있어 논문이나 교과서의 내용이 어렵다면 이 책을 통해 진입장벽을 낮춰 접근하는 것도 좋은 방법이 되리라는 생각한다.
이 장 역시 앞서 언급했던 손실함수 변형을 통한 문제 해결 능력을 키워주는 부분이 장점인 파트이다. 구현만이 아닌 이론, 수학적 차원에서 고민을 해결하고자 할 때 저자의 접근방식에서 힌트를 얻을 수 있을 것이다.
문맥과 어순 즉, Sequence여야한다는 NLP의 고정관념을 깬 아이디어가 어떻게 BERT까지 이어지게 되었는지 논문 리뷰하듯 상세히 분석해주는 것이 장점이다. 단, 일본어를 예제로 다루고 있어 일본어 지식이 전무한 나같은 독자는 예제를 쉽게 이해하기 힘든 것이 단점이지만 그럼에도 Attention과 BERT의 핵심을 너무 잘 전달하고 있어 반드시 읽어둬야 하는 파트이다. 마지막 이 모델은 2차원 CNN으로 작은 크기의 피처를 추출한 뒤 C3D 모델에 입력하는 것이 핵심이다. 아직 구현해보지 않았는데 공부도 조금 더 필요하고 아껴두는 마음으로 남겨뒀다. 이 장에서 스스로의 구현 능력을 얼마나 완성시킬 수 있느냐에 따라 앞으로의 새로운 연구의 구현, 응용의 미래가 달려있다 생각했기 때문이다. 일종의 시험치르는 느낌이었다. 책을 읽으며 워낙 배운 것도 많고 느낀 것도 많아 쓰다보니 리뷰가 너무 길어진 것 같다. 내용이 너무 길어지는 듯 싶어 써가며 나름 핵심만 남기고 줄였음에도 이렇게 길어질 정도로 이 책에서는 배우고 느낄만한 점이 정말 많다. 서두에 언급했듯 근래에 보기드문 중급서 교과서가 등장했다. 나 혼자만의 의견일진 모르겠지만 적어도 내겐 핸즈온 머신러닝, 머신러닝교과서, 밑바닥 시리즈 등과 비교해도 손색이 없을 정도의 완벽한 책이라는 생각을 했다. 거인의 어깨를 빌려 배우고, 응용하며 자신만이 가진 문제를 딥러닝으로 해결하고 싶다면 혹은 그 단계로 나아가기 위해 기초 수준에서 어려움을 겪고 있다면 강력히 추천하고 싶은 책이다. |
|
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
<세줄요약>
프로그래밍을 공부하고 있거나 관심이 있다면 한번쯤 딥러닝에 대해 들어본적이 있을 것이다. 나 역시 프로그래밍과 뗄 수 없는 삶을 살고 있어 다양한 수업이나 자료들을 찾아 보았다. 대부분의 수업은 기초적인 퍼셉트론(perceptron)부터 시작해서 다층 퍼셉트론(multi-layer perceptron: MLP), 역전파(backpropagation), 컨볼루션(convolution), 순환 신경망(recurrent neural network: RNN) 등에 대해 이론적인 내용으로 이루어져 있다. 이런 수업들을 듣고 나면, 어떤 딥러닝 문제가 주어져도 풀 수 있을 것이라는 생각이 들게 되고 당당하게 캐글의 다양한 컴피티션에 참가해 보면서 수 많은 좌절을 느끼게 된다. 문제 풀이의 시작이라고 할 수 있는 데이터를 불러오는 것 부터 시작해서 어떤 네트워크를 사용해야 하는지 등 수 많은 딥러닝의 장벽에 가로막히게 된다. 오가와 유타로의 <만들면서 배우는 파이토치 딥러닝>은 이러한 장벽에 약간의 틈을 만들게 해주는 아주 유용한 책이다. 일반적으로 딥러닝에서 만나볼 수 있는 대표적인 몇가지의 태스크에 대해서 데이터를 다루는 법부터 시작하여 베이스라인 네트워크를 직접 만들고, 학습 파이프라인을 만들어 보고, 실제 검증까지 해볼 수 있는 예제들로 가득하다. <만들면서 배우는 파이토치 딥러닝>은 이미지 분류(image classification)문제, 객체 인식(object detection), 시멘틱 분할(semantic segmentation), 자세 추정(pose estimation), GAN(generative adversal network), 자연어 처리(natural language processing, NLP), 그리고 동영상 분류(video detection)에 대한 챕터들로 이루어져 있다. 각각의 챕터들은 각 태스크에서 일반적으로 수행되는 베이스라인 코드에 대한 설명들과, 특수하게 수행하는 내용들에 대한 자세한 설명이 되어 있다. 이를 토대로 그 동안 배운 딥러닝의 기초적인 이론을 토대로 실전 적용을 해보기 전 유사한 태스크를 이 책을 통해 연습해 볼 수 있고, 필요한 경우 베이스라인으로써 활용하기 좋은 형태로 작성되어 있다. 특히 파이토치를 통해 딥러닝 태스크를 수행해 보면서 느꼈던 부분들은 매번 새로운 태스크를 만날 때마다 학습을 위한 파이프라인을 얼기설기 짜맞추어 정돈되지 않은 나의 코드를 보며 한숨을 쉬는 것이 일과의 많은 부분을 차지 하였는데, 책에서 나오는 예제들을 따라 치며 그동안 나에게 부족했던 코딩 실력을 조금은 메꿔지는 듯 하였다. 이 책은 딥러닝에 대한 기초 공부는 마친 사람들이 실제 문제를 접하기 전에 한번쯤은 읽어보며 스스로 부족했던 부분들을 채우기 좋은 책이라 생각된다.
|
|
최근 핫한 딥러닝 트렌드를 꼽자면 역시 파이토치라고 생각을 한다. 한동안은 텐서플로가 우세하게 나타났지만, 어느샌가 파이토치의 간결함과 직관성이 인정을 받기 시작해서 하나둘씩 찾는 사람들이 많이 늘어나는 상황이다. 이런 흐름을 반영이라도 하듯 텐서플로우 위주의 도서들이 점차 파이토치의 분량이 늘어나는 것을 확인할 수 있는데, 이번에 읽은 책도 그 일환으로 비춰지고 있다.
저런 언어적인 문제가 있다 하더라도 책 자체에 들어있는 내용은 괜찮은 편이다. 모델에 대한 이해도 최대한 쉽게 설명을 잘 되어있고, 코드에 대한 예제나 설명도 괜찮다고 생각한다. 다소 난이도가 있다는 부분이 있다고 하더라도 파이토치로 모델을 구현한다는 것에 대한 부분은 깔끔히 잘정리되어있다고 생각한다. 다만 앞서 얘기했듯 어느정도의 배경지식이 필요하고, 바로 모델로 접근하기 때문에 컴퓨터 비전 또는 자연어 처리에 대한 베이스가 있는 상태에서 이 책을 보면 좋을 듯 하다. |
|
이 책을 통해 딥러닝 기술의 응용법을 구현하며 학습해볼 수 있다.
딥러닝 구현 패키지는 파이토치를 이용하고 있으며, 아나콘다와 주피터 노트북, AWS를 이용해서 실습을 해볼 수 있다.
화상 분류와 전이학습(VGG), 물체 감지(SSD), 시맨틱 분할(PSPNet), 자세 추정(OpenPose), GAN을 활용한 화상 생성(DCGAN, Self-Attention GAN), GAN을 활용한 이상 화상 탐지(AnoGAN, Efficient GAN), 자연어 처리에 의한 감정 분석(Transformer), 자연어 처리를 활용한 감정 분석(BERT), 동영상 분류(3DCNN, ECO)와 같은 다양한 방법으로 딥러닝을 활용하는 내용을 담고 있다.
아예 딥러닝을 처음 시작하는 사람들보다는, 기초적인 딥러닝을 구현한 경험이 있는 사람이 이 책을 읽으면 좋을 것 같다. 다양한 예제로 실습해보면서 딥러닝 응용에 대한 갈피를 잡을 수 있을 것이라 생각이 든다.
* 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. |
|
파이토치에 대해서는 현장에서 주로 많이 쓴다는 말을 들었습니다. 파이토치를 설치해보고 다양한 것들을 하고 싶었던 찰라에 파이토치 책을 구하게 되어서 차근차근 해 볼 수 있었습니다. 이 책은 다양한 분야에 적용 가능한 파이토치의 모습을 익힐수 있습니다. 사실 파이토치에 대해서 개념만 알고 있었지 어떻게 구현하는지도 몰랐는데 전이학습/파인튜닝을 활용한 화상 분류(VGG), 물체 인식(SSD), 시맨틱 분할(PSPNet), 자세 추정(OpenPose), GAN을 활용한 화상 생성(DCGAN) 및 이상 탐지(AnoGAN), 텍스트 감정 분석(Transformer/BERT), 동영상의 클래스 분류(3DCNN, ECO) 등등 다양한 분야에 대해서 해 볼수 있어서 좋았던것 같습니다. 배우는데 좀 어렵긴 했지만 텐서플로만 사용하다가 만날 수 있던 파이토치여서 좋았습니다. "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
|
|