[리뷰] 한 줄씩 따라 해보는 파이토치 딥러닝 프로젝트 모음집



비제이퍼블릭 출판사의 "한 줄씩 따라 해보는 파이토치 딥러닝 프로젝트 모음집(이경택, 김수지, 박희경, 신훈철, 심은선 저 외 4명)"를 읽고 작성한 리뷰입니다.

표지


CNN, 전이학습, NLP, GAN, 음성, Moviepy, Opencv 등을 활용해 다양한 딥러닝 예제를 PyTorch로 구현해보는 책이다.

인상적인 장점으로는 한 번쯤 구현하고 싶었던 재미있는 주제 6가지나 제공된다는 점, 예제가 풍부하다보니 본인이 종사하는 직장에 딥러닝을 어떻게 적용해 볼 수 있을지 고민해볼 시간을 가질 수 있다는 점, 대학생 연합회에서 활동한 내역이 담겨있다보니 이해하기 쉽고 실용적이라는 점 등이 눈에 띄는 장점이라고 할 수 있다.


이 중에서도 대학생 연합회 출신의 멤버들이 쓴 책이라는 점이 가장 마음에 들었던 부분이다. 핸즈온 머신러닝이나 머신러닝 교과서같은 뛰어난 베스트셀러 대비 이 책이 차별성을 가지는 부분이다. 세계적인 연구자가 쓴 책은 내용의 왼성도나 깊이는 뛰어나지만 전달력이 약점이다. 물론 언급한 책들은 전달력도 일품인 책이지만 그럼에도 생략되거나 함축된 부분이 어느정도 존재한다.

특히 학사 출신 실무 경력 위주의 나같은 독자들은 연구보다는 실전적으로 접근하거나 직접 개발을 통해 익히는 것이 이해가 잘 될때가 많다. 컴퓨터 공학과 출신이라면 백견이 불여일타를 신조로 삼고 완성된 결과물이 이해를 높여주고 동기부여가 되기 때문에 더욱 그렇다.

이 책은 이론이 책의 25% 가량을 차지하고 나머지는 직접 코드로 개발하는 실습 과정으로 되어있다. 컴퓨터 공학과가 평소 프로그램을 개발하는 방식으로 이루어져있기에 위에 서술한 방식의 학습이 익숙한 독자라면 이 책으로 빠른 시간내에 다양한 성과를 낼 수 있을거라 생각한다.

또 대학생 연합회의 활동 내역이 담겨있어 전달력이 뛰어나다. 대학생이라면 아무래도 수학이나 연구 수준이 석박사에 비해 높을 수 없다. 대학생의 활동을 평가절하하려는 것이 아니라 그만큼 딥러닝이라는 난이도 높은 개념이 일반인들이 생각하는 상식과 가깝게 연결되어 있음을 뜻한다.

구현을 최우선 목적에 둔다면 라이브러리나 모델에 감춰진 수학적 개념이나 원리는 당장 필요없는 것도 사실이다. 하지만 훌륭한 기본서들은 더 나은 연구 성과를 위해 이런 부분들에 아낌없이 지면을 할애한다.

즉, 당장 구현에 불필요한 내용들이 많이 담겨있어 구현을 우선시하는 독자 입장에는 다소 집중력이 떨어질 수 있고 독자의 수준이 낮을수록 우선순위의 등고선이 입체적으로 보이지 않아 지치거나 난이도라는 장벽에 진입을 포기할 수도 있게된다.

대학생 수준에서 별도의 연구없이 딥러닝을 이해하려고 했던 시도와 노력이 읽는 내내 돋보였다. 그렇기에 서술하는 방식이 매우 구체적이고 직관적이어서 이해하기 쉽다.

예를 들면 14p에 소개되는 분류에 대표적인 손실함수 교차 엔트로피 오차(CEE)에 대한 설명이 그렇다. 수학이나 연구 기반이 없는 독자가 CEE를 공식으로 마주하면 일단 거부감이 들 것이다. 이를 아래와 같은 구체적인 예시로 설명한다.

“만약 모델이 개, 고양이, 하마를 각각 [0.2, 0.3, 0.5]의 확률로 예측했다면 수식 -(0log0.2 + 0log0.3 * 1*log0.5) = 0.69 가 손실함수의 결과가 된다.

공식을 이해하는 가장 초보적이고 확실한 방법은 숫자를 직접 대입해보는 것이다. 이 책은 이렇게 구체적인 예시와 이론을 연결하는 것이 장점이다. 마찬가지로 손실함수에서 경사하강법으로 이어지는 부분에서 다른 책들이 함축하거나 생략한 부분의 과정이 담겨있어 이해하기 쉽다.

또 구현에 초점을 맞추다 보면 의외로 딥러닝의 기본 원리를 많이 알 필요가 없을 때가 많다. 예를 들어 CNN 모델링 시 구현에 가장 많이 활용되는 수식은 아마도 Feature Map의 크기를 산정하는 공식일 거라 생각한다. Feature Map 크기

파레토의 법칙 마냥 많은 원리 중 엔지니어가 가장 흔하게 활용하는 기본적인 공식이 있는데 책은 실전 중심이기에 가장 중요한 것이 주로 담겨져 있어 제한된 시간 내 생산성을 높일 수 있는 것이 장점이다.

따라서 전반부에 등장하는 이론파트는 실무에 반드시 필요한 수준의 엑기스 이론들이 압축된 형태라 반드시 숙지해야 한다. 실전 중심의 사고로 쉽게 기술되어 있기에 Part1을 제대로 이해할 수 없다면 딥러닝 애플리케이션을 만드는데 큰 어려움을 겪을 것이다.


이 책의 또 하나의 강점은 풍분한 예제이다. 예제 제목만 봐도 꽤 흥미로운 주제임을 알 수 있고 누구나 한 번쯤은 구현해보고 싶은 예제들로 가득하다. 다루는 데이터의 소재 또한 다양하여 딥러닝에서 자주 활용되는 분야의 거의 모든 맛보기가 가능하다. 각 장 마다 읽고 실습한 후기를 간략히 남겨본다.

4장 농작물의 잎을 찍은 사진은 CNN, 분류, 전이학습이라는 기술을 활용한다. 지도학습에서 대표적으로 사용하는 회귀, 분류 중 분류 문제를 어떻게 모델링하는지 전처리에 어떤 고민을 해야 하는지 엿볼 수 있다.

CNN 모델의 기본 원리와 실전 적용법을 익히기 좋은 예제이며 특히 잘 학습된 모델을 가져와 새로운 모델에 적용해보는 전이학습 과정을 거친다. 처음 등장하는 예제부터 전이학습을 적용한 것만 봐도 책이 얼마나 실전 및 문제해결 중심으로 구성되어 있는지 파악할 수 있다.

5장 국민청원 분류는 NLP의 기초를 다질 수 있음은 물론 크롤링을 거쳐 Pandas를 활용하는 방법을 익힐 수 있다. 재미있는 주제인만큼 개인적으로도 시간 가는 줄 모르고 흥미롭게 실습했다. 이미지 분야에서 주로 활용되는 CNN을 텍스트 분야에 접목하는 부분도 흥미로웠다. 국민청원

6장에서는 CycleGAN을 활용하여 실제 사진을 애니메이션으로 바꿔본다. 개인적으로 웹툰 AI에 관심이 많아 흥미롭게 실습할 수 있었다. 누구나 상상할 수 있는 웹툰의 기가막힌 스토리만 가지고 있다면 특정 작가의 그림으로 학습한 AI가 그림 작가 역할을 대신 해줄 수 있다면 인간이 가진 뛰어난 생각이 얼마나 쉽게 세상에 공유될 수 있을까? 애니메이션

7장은 음성데이터를 분석하여 비명 소리인지 아닌지를 판별하는 모델을 만든다. 이 책의 장점 중 하나로 다양한 소재의 데이터가 등장한다는 점을 꼽을 수 있는데 이 장에서는 음성데이터도 다룬다. 음성에 대한 지식이 전무했는데 데이터를 수집하는 방법에서부터 Frame Processing까지 흥미로운 스킬들을 익힐 수 있었다.

8장은 전체 실습 내용 중 가장 인상적인 부분이었다. 수능 영어 문제를 푸는 딥러닝 모델을 구축하는 일이다. 이미 GPT-3가 수능 같은 문제를 풀고 성과를 낸 일은 늘 기사로 접했지만 이를 구현하고 싶은 마음 대비 시간이 늘 부족해 원리를 궁금해 하고 있던 차였는데 이 책에서 등장하는 모델의 성능이 비록 좋진 않지만 어떻게 모델을 구성해야 하는지 첫 단추를 꿰는 법을 배울 수 있어 만족스러웠다. 수능풀이

특히, 일반적인 분류나 회귀가 아닌 현실의 문제를 어떻게 모델링 할 수 있을지 깊게 고민해볼 수 있는 장이다. 무조건 읽기만 할 것이 아니라 본인이라면 어떻게 구현할 지 먼저 설계해보고 하나씩 비교해가며 따라한다면 상당한 응용력을 쌓을 수 있는 장이 될 것이다. 또, 전이학습을 활용하면 응용의 범위가 얼마나 넓어질 수 있는지 깨달을 수 있을 것이다.

9장은 AI 주제와 더불어 영상, 이미지를 편집하는 능력을 배울 수 있다. Moviepy, Opencv와 같은 툴을 익혀 아이돌 무대 영상을 교차편집하는 실습을 진행한다. AlphaPose 모델을 활용하여 사람의 관절, 뼈다귀 형태를 추출하는 법도 실습한다. 이미지, 영상은 정말 다양한 전처리가 활용된다. 교차편집

단순히 영상 교차편집 목적외에도 어떤 목적을 가진 모델이 필요로 될지 모르기 때문에 9장에 소개된 툴들로 전처리에 익숙해지고 싶다면 9장은 앞으로 많은 도움을 줄 수 있는 장이다.


정리하자면 실전 위주의 직관적이고 쉬운 설명으로 당장 딥러닝 성과물을 필요로 하는 이들에게 아주 유용한 실전서라 할 수 있다. 꼭 비즈니스 목적의 성과물이 아니더라도 이 책으로 결과물을 만들어본 후 핸즈온 머신러닝 같은 기본서를 다시 읽어본다면 그간 이해를 방해했던 막혔던 부분들이 뻥 뚫릴 수 있을 것이다.

단, 이 책을 보기 전에 PyTorch와 Python의 기본은 충실히 하는 편이 좋을 것이다. 물론 이 책을 그대로 따라하기만 해도 실습하는데 큰 무리는 없으나 기본 프로그래밍 실력이 부족하다면 부분적으로 이해하기 어려운 부분들이 생길 수 있다.

딥러닝을 좋아하는 누구에게나 유용한 책이지만 컴퓨터 공학 학습 방식에 익숙한 독자들, 연구보다 실무 중심의 종사자들, 기술이 어려운 비즈니스 분야 종사자 혹은 사업가, 학생 등의 독자들께 특히 추천하고 싶다.







© 2019.04. by theorydb

Powered by theorydb