티스토리 뷰

Hobby/Book

[Book] 만들면서 배우는 파이토치 딥러닝

생각많은 소심남 2021. 9. 19. 23:52

(해당 포스트에서 소개하고 있는 "만들면서 배우는 파이토치 딥러닝" 책은 한빛미디어로부터 제공받았음을 알려드립니다.)

 

만들면서 배우는 파이토치 딥러닝

입문서에서는 알기 어려웠던 전이학습과 파인튜닝을 활용한 화상 분류, 물체 감지, 시맨틱 분할, 자세 추정, GAN을 활용한 화상 생성 및 이상 탐지, 텍스트 데이터 감정 분석, 동영상 데이터 클래

hanbit.co.kr

인공지능에 대한 관심이 늘면서, 서점의 IT 섹션에 가면 딥러닝, 머신러닝, 인공지능 책들이 많이 전시되어 있다. 나도 가끔 퇴근하면서, 요새 나오는 인공지능 전문서적들의 트랜드가 어떤지에 대해서 살펴보곤한다. 많은 책들은 본 것은 아니지만, 시중에서 많이 살펴보는 책들은 아무래도 다음과 같은 경향을 가지고 있지 않나 싶다.

  • 머신러닝의 기초부터 심층 신경망의 이론적인 부분을 다루고, 이에 대한 예시를 간단하게 다룬 책
  • 심층 신경망을 구현할 수 있는 프레임워크인 텐서플로나 파이토치의 사용법에 대해서 다루고, 이를 바탕으로 실제로 구현해보는 책
  • 캐글같은 데이터 대회의 문제 프로젝트를 기반으로 문제를 해결할 수 있는 기법에 대해서 다룬 책

사실 위의 내용을 모두 다루기에는 책의 분량은 한정되어 있다.(여담으로 유명한 책 중 하나인 핸즈온 머신러닝 책도 분량이 대략 950페이지 정도이다..) 또 책의 두께가 두꺼워지면 아무래도 책장의 장식품이 될 가능성이 매우 높다. 개인적인 경험으로는...

 아무튼 이런 이유로 아무래도 난이도별, 혹은 이를 가지고 현업에 적용하고자 하는 실무자별로 책의 구분이 초/중/고급 등으로 나눠질텐데, 이번에 소개할 책은 나름 최근에 소개된 이론에 대한 구현을 소개한 전형적인 "고급"책이다.

이 책은 앞에서 소개했던 것처럼, 보통 파이토치 책들의 서두에 나오는 기본 문법이나 동작 원리에 대한 설명없이 첫장부터 VGG를 이용한 transfer learning을 다루고, 이에 대한 이론적인 설명이 나온다. 그래서 어느 정도 파이토치의 사용에 익숙하고, 이론적인 배경이 있는 현업 실무자가 읽으면 좋을 거 같다. 또다른 적절한 독자층을 찾자면, 많이 나오는 논문들의 배경을 설명하고, 이를 파이토치로 구현하는 방법을 살펴보고 싶은 사람이라면 이 책이 딱 그 목적을 충족시킨다. 이 책은 저자가 논문에 대한 본인의 이해를 바탕으로 코드로 구현할때 참고했던 점에 대해서 설명되어 있다. 사실 논문을 직접 읽는 것도 좋지만, 논문에 수없이 나와있는 수식과 불친절한 해석은 막상 원리를 코드로 구현하기 막막할텐데, 이 책에서는 그런 수식에 대한 설명보다는 이를 잘 설명할 수 있는 예시를 기반으로 설명되어 있기 때문에 조금 더 읽는 입장에서는 이해하기가 수월했다. 참고로 이 책에서는 다음과 같은 내용들을 다루고 있다.

  • VGGNet과 이를 활용한 Transfer learning
  • Single Shot Detector (SSD)을 통한 Object Detection
  • Pyramid Scene Parsing Network (PSPNet)을 통한 Semantic Segmentation
  • OpenPose Network을 통한 자세 추정
  • DCGAN, Self Attention GAN
  • AnoGan, Efficient GAN을 활용한 Anomaly Detection
  • Transformer
  • Bidirectional Encoder Representations from Transformers (BERT)
  • 3DCNN, ECO 등을 활용한 동영상 분류

이밖에도 이론적인 내용 외로, 이를 데이터로 활용하기 위한 전처리 기법이나 텐서보드 활용법, 책에서 다루는 신경망을 AWS로 학습시킬때의 방법들은 내용 외적으로 실무에서 적용해보고자 하는 사람에게는 도움이 될만한 부분이 담겨져있다. 참고로 이 책에서 다루는 대부분의 신경망들은 왠만한 개인 PC에서 돌리기엔 조금 버거운 형태로 구성되어 있다. 그래서 AWS나 GCP, Azure같은 클라우드 인스턴스에서 가속기 지원을 받은 상태에서 학습시켜야 원하는 결과를 얻을 수 있다. 

다만 아쉬운 부분이 있다면, 책의 내용이 12개의 모델을 통해서 딥러닝 관련 내용을 다뤘다고는 하지만 실제로는 거의 대부분의 내용이 영상처리 모델에 내용을 다루고 있다는 점(물론 언어모델인 Transformer나 BERT에 대한 내용도 다른 주제에 비교할 수 있을 만큼 잘 설명되어 있다.), 특히 Transformer를 설명하는 부분에서는 원서 그대로 일어에 대한 예시가 소개되어 있는 부분은 영어나 한글이 많이 사용하는 실무에서는 조금 보기 어려운 점이 있지 않나 싶은 생각이 있다. 물론 한글에 대한 모델이나 일어에 대한 모델이나 언어를 학습하는 모델 측면에서는 비슷한 개념이겠지만...

개인 입장에서는 딱 내 목적에 부합한 책이었다. 항상 집에 와서도 고민하는 내용은 내가 너무 쉬운 내용만 가지고 회사에서 일하는 것은 아닐까? 혹은 나도 조금 더 최신 기술에 대한 내용도 살펴보면서 구현도 해봐야 하는 것은 아닌가 하는 걱정을 항상 가진다. 그런데 시간은 항상 없고, 그렇다고 논문을 딱 보면 "이를 어떻게 구현할까?" 하는 막막함까지 든다. 그래서 항상 설명을 예시와 함께 설명해주고, 이를 코드로 적용할 수 있는 기법에 대한 내용이 다뤄진 책을 갈망했었는데, 이번 기회에 그 내용들을 접하게 되어서 좋았다. 아마 나와 비슷한 생각을 했던 사람이라면 이 책을 딱 봤을 때, 그런 논문에만 언급된 모델들을 실제로 구현해볼 경험을 얻을 수 있을 것이다.

참고: 원서 소스 코드 (Jupyter Notebook으로 되어 있어서 보기 편할 것이다.)

 

GitHub - YutaroOgawa/pytorch_advanced: 書籍「つくりながら学ぶ! PyTorchによる発展ディープラーニング」

書籍「つくりながら学ぶ! PyTorchによる発展ディープラーニング」の実装コードを配置したリポジトリです - GitHub - YutaroOgawa/pytorch_advanced: 書籍「つくりながら学ぶ! PyTorchによる発展ディープラ

github.com

 

댓글