[리뷰] fastai와 파이토치가 만나 꽃피운 딥러닝
in Review on Review, Book, Fastai, 딥러닝, 제품화, 분류, 이미지, 영상, 모델링, 협업필터링, Nlp, Api, 밑바닥
한빛미디어
출판사의"fastai와 파이토치가 만나 꽃피운 딥러닝(제러미 하워드, 실뱅 거거 저/박찬성, 김지은 역)"
를 읽고 작성한 리뷰입니다.
딥러닝의 민주화를 꿈꾸는
fast.ai
를 다룬 책으로 애플리케이션 구동부터 밑바닥 구현에 이르기까지 Top-Down 방식으로 fast.ai의 철학과 구현의 묘를 알려주는 양서이다.
fast.ai는 손쉽게 딥러닝을 가능하게 해주는 Pytorch보다 고수준의 딥러닝 라이브러리
이다. 흔하게 알려진 Tensorflow, Pytorch에 비해 문자 그대로 얼마나 빠르고 쉽게 AI를 구현할 수 있는지 본 도서의 1장만 참조해도 쉽게 파악할 수 있다.
예를 들면 1장에는 개와 고양이의 분류기를 만드는 예제가 등장하는데 필요한 코드량이 고작 6줄
이다. 딥러닝 입문자 수준만 되어도 fast.ai 라이브러리의 학습 유무와 무관하게 직관적으로 이해할 수 있는 코드라는 점이 특징이다.
위 코드를 한 번 해석해 보는 것이 fast.ai의 정체가 무엇인지 가장 빠르게 느낄 수 있는 방법이 될 것 같다는 생각이 든다. 그 외에 data 기반으로 손실 함수를 자동 선택
하는 매력적인 기능에서부터 doc()
함수와 같이 사소한 부분까지 fast.ai에는 매력적인 기능들이 넘쳐난다.
이 책의 학습 방식은 다소 독특한데 전반적으로 Top-Down 방식
으로 구성되어 있다. 먼저 위와 같이 최소한의 코드로 빠르게 개와 고양이 분류기를 만들고 눈으로 직접 확인하며 어플리케이션 사용자가 되어 본다.
다음으로 코드를 한 줄씩 뜯어보며
정체를 알아본다. 코드를 해석하고 난 다음에는 필요한 딥러닝의 개념, 모델의 구조를 알아보는 식이다.
종국에는 fast.ai 없이 밑바닥까지 구현
하는 구성으로 되어 있으며 필요 시 논문 및 연구 결과
를 해석해보는 것은 물론 그 안에 포함된 수식
도 주저없이 다룬다.
fast.ai라는 것이 밑바닥 레이어를 가리고 빠르고 쉽게 딥러닝을 구현 가능하게 해주는 라이브러리라는 것이 무색할 정도로 시간이 흐를수록 책이 뒷부분으로 넘어갈수록 깊이 있는 내용까지 세세하게 파고든다는 것이 꽤 아이러니
했다.
얼마나 상세하게 다루는지 그동안 기초라고 생각하며 넘어갔던 내용도 상세히 뜯어주고 있어 당연하듯 외우고 넘어갔던 부분을 내가 얼마나 모르고 있었는지 부끄럽게 만들어 줄 정도이다.
왠만한 교과서 이름 들어가는 딥러닝 책을 수 십권 이상 읽은 것 같은데 새롭게
배우게 된 내용들이 많아서 충격이었다.
대충 알고 있던 연구 결과의 심오한 의미를 다시 깨닫게 된 것에서 시작하여 마빈 민스키 교수가 XOR과 관련하여 여러 층의 신경망으로 해결할 수 있다는 사실을 증명했다는 사소한 것까지 이 책 덕분에 바로 잡을 수 있었다.
분량도 700p가 넘고 fast.ai를 사용하는 사람들의 기대와는 다르게 왜 딥러닝의 밑바닥까지 기술했는지 읽을 수록 궁금했다. 상당한 분량의 책을 오랜 시간 1회독한 후에야 저자들의 의도
를 어렴풋이나마 알 수 있게 되었다.
아마도 이 책을 읽는 독자는 수준이나 경험의 차이는 있을지 몰라도 딥러닝으로 어떤 솔루션을 구현하는데 있어 저마다의 방법론
을 갖고 있을 것이다.
때로는 그 방법이 매우 뛰어난 방법이 될 수도 있는 반면 크게 도움이 되지 않는 조촐한 방법이 될 수도 있을 것이다. 그리고 아마 대부분 후자에 해당될 것이다.
나 역시 딥러닝을 활용한 나름의 해결 방법론을 갖고 있는데 이 책 덕분에 나의 방법이 얼마나 조악하고 임기 응변 식이었는지 적나라하게 깨달을 수 있었다.
fast.ai의 껍데기에서 11장의 중간수준 API를 거치고도 밑바닥까지 구현하는 방법을 모두 소개하는 과정 덕분에 fast.ai는 어떤 철학으로 만들어졌으며 나의 방법과는 어떤 차이가 있는지
깨달을 수 있었다.
그리고 이 책의 저술 방식
또한 fast.ai의 철학을 그대로 따르고 있다는 사실을 알게 되었다. fast.ai가 딥러닝의 민주화로 칭송받는 만큼 이 책은 fast.ai가 어떻게 만들어졌는지 투명하게 공개하여 다른 고수들의 도전을 받아들일 준비가 되었음을 시사하는 것 같아 감회가 새로웠다.
읽는 내내 세상에 완벽한 시스템은 없지만 이 정도 철학과 구현에 토를 달 수 있을 것인지 만약 그렇다면 fast.ai를 업그레이드하는데 참여해 볼 생각이 없느냐는 저자 심중
의 말이 들리는 느낌이었다.
아무튼 fast.ai가 어떻게 구현되고 설계되어있으며 현존하는 다른 솔루션과 어떻게 연결할 수 있는지를 파악하며 내 딥러닝 세계의 모래성
이 상당 부분 허물어졌고 새롭게 쌓아 올리게 되었으며 그 과정에서 많은 것들을 배울 수 있었다.
즉, 이 책은 fast.ai의 모든 것을 다룬 책이지 결코 fast.ai의 장점이나 활용 측면만을 다룬 책이 아니라는 것을 꼭 알아두었으면 한다.
개인적으로 가장 재미있던 파트는 9장과 11장이다. 9장은 Tabular 데이터
를 다루는데 딥러닝이 얼마나 개입할 수 있고 딥러닝이 무엇을 도와줄 수 있는지에 대해 꽤 깊이있게 다룬다.
캐글 경진대회에 관심이 많거나 기존 레거시를 그대로 안고 AI를 도입하려는 조직에 몸담고 있는 분들이라면 공감이 될 만한 장이다. AI로 새 출발을 하는 스타트업이나 부서라면 모르겠지만 대부분의 기존 부서들은 RDBMS에 대한 의존도가 상당히 높기 떄문이다.
영상처리나 NLP, 시계열에는 딥러닝이 우위를 점하고 있지만 Tabular 데이터 앞에서는 그다지 활용도가 높지 않다. 기존 머신러닝 세계의 앙상블만으로도 꽤 좋은 성능을 내기 때문이다.
하지만 흔히 활용되는 랜덤 포레스트, 그레이디언트 부스팅과 비교하여 딥러닝을 활용하는 방법은 구체적으로 어떤 차이가 있을지 다차원의 피처에서 어떤 도움을 받을 수 있는지 등 다른 책에서 찾아보기 힘든 내용이 많이 담겨 있어 흥미롭게 읽을 수 있었음은 물론 배울 내용이 많았다.
11장은 중간 수준 API를 통해 fast.ai의 내부
를 엿볼 수 있는 장이다. Python이 제공하는 추상화
의 위력을 실감할 수 있고 콜러블, 데코레이터 등 특수한 기능을 어떻게 fast.ai에 녹였는지 짧지만 쉽게 이해할 수 있도록 잘 정리하고 있다.
fast.ai의 철학을 엿보기 쉬운 장이므로 조금 더 많은 분량을 할애하여 설명해 주길 바랬지만 이 책이 fast.ai의 활용과 이해에 주안을 두고 있는 것을 알았기에 아쉬움을 뒤로 할 수 있었다.
전체적으로 파트1에서는 실제로 눈으로 확인 가능한 제품을 만들고 확인하는 것에서 출발한다. 파트2는 fast.ai의 애플리케이션 레이어에 대한 설명을 다루고 있으며 영상처리, 협업 필터링과 관련한 추천시스템 등 제품 관점에서 필요한 지식 위주의 설명을 담고 있다.
파트3는 딥러닝의 기반을 이루는 모델에 대해 분석하고 논문 등의 연구 결과를 뜯어 본다. 마지막 파트4에서는 밑바닥 수준의 신경망을 구현하는 방법 등을 다루는 데 특히 Learner 클래스를 직접 구현해 보는 19장이 흥미로웠다.
그 외에도 이 책은 많은 흥미로운 서드 파티 요소들을 소개하고 있다. IPython, Voila 등을 이용해서 주피터 노트북을 애플리케이션화하는 방법이나 배포하는 방법 혹은 깃허브 블로그를 만들어 연동하는 방법까지 보다 생태계
를 널리 활용하는 방법도 담고 있다.
책의 구성 방식도 매우 독특한데 주인공 세명
이 등장한다. 컴퓨터에 강하지만 수학에 약한 제러미, 수학은 잘 하는데 IT에 약한 실뱅, 독자와 비슷한 눈높이를 가진 동료같은 알렉시스가 어려운 내용이 등장할때마다 TIP 박스에 등장한다. 마치 옆에서 얘기해주는 느낌이 들 만큼 친절한 구성이었는데 깊이 있는 이해와 졸릴 때마다 많은 도움이 되었다.
또, 각 장 말미에는 질문지
가 등장하는데 딥러닝을 어느 정도 학습한 독자라면 이 질문지를 먼저 읽을 것을 권하고 싶다. 이미 알고 있는 내용은 빠르게 건너뛰고 질문지에서 답하기 힘들었던 내용을 중심으로 입체적으로 읽어나간다면 더 빠르고 확실한 이해에 도움이 될 것이다.
리뷰가 너무 길어져 이만 정리하지만 사실 하고 싶은 말이 너무 많았다. 700p가 넘는 책을 읽다보니 언급하고 싶었던 것도 많지만 너무 글이 통일성도 없고 두서없이 늘어놓는 것만 같아 이즈음에서 줄인다.
꼭 fast.ai를 활용하지 않더라도 밑바닥에서 고수준을 아우르는 라이브러리를 직접 구현하여 사용한다면 스스로의 작품과 fast.ai와의 진검승부
에 이 책은 좋은 가이드가 되어 줄 것 같다.
상당히 심오하고 깊이있는 내용임에도 매우 쉽게 전달하는 저자들의 능력과 노력에 감탄했다. fast.ai와 무관하게 딥러닝에 관심이 있는 독자라면 누구에게라도 반드시 도움이 될 것을 확신하며 리뷰를 마친다.