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

한빛출판네트워크

밑바닥부터 시작하는 딥러닝 3

파이썬으로 직접 구현하며 배우는 딥러닝 프레임워크

한빛미디어

번역서

판매중

  • 저자 : 사이토 고키
  • 번역 : 개앞맵시(이복연)
  • 출간 : 2020-11-20
  • 페이지 : 552 쪽
  • ISBN : 9791162243596
  • 물류코드 :10359
  • 초급 초중급 중급 중고급 고급
4.8점 (26명)
좋아요 : 10

코드 3줄이 딥러닝 프레임워크가 되는 마법

 

이 책은 ‘밑바닥부터’ 직접 만들어보며 즐겁게 딥러닝을 익히는 시리즈의 장점을 그대로 따랐습니다. 코드 3줄로 시작해 60단계까지 차근차근 구현해보세요. 어느새 파이토치, 텐서플로와 같은 현대적이지만 미니멀한 딥러닝 프레임워크가 완성돼 있을 것입니다. 딥러닝과 파이썬 지식을 어느 정도 갖췄다면 전편을 읽지 않고도 충분히 따라 할 수 있습니다. 동적 계산 그래프(Define-by-Run) 구조와 딥러닝 프레임워크 기본 설계, 두 마리 토끼를 잡아보세요!

 

 

추천사

 

『밑바닥부터 시작하는 딥러닝』이라는 책의 제목이 너무나도 어울리는 책입니다. 매번 딥러닝을 겉핥기식으로 사용하고 있다는 불안감에 차 있던 제게 큰 도움이 되었습니다. 파이썬에 대한 기초만 있다면 도전할 수 있도록 이끌어주기 때문에 딥러닝의 기초를 탄탄하게 다지고 싶은 분께 꼭 추천합니다.

_김효린, 스타트업 백엔드 개발자

 

딥러닝 프레임워크를 개발하며 그 구조를 이해하는 것뿐 아니라, API 설계에 대한 영감도 얻을 수 있는 책입니다. 차근히 따라 하다 보면 여러 주제를 한 번에 공부할 수 있습니다. 초보자를 위한 책은 아닙니다. ‘적어도 파이썬을 구사할 줄 아는 수준’에서 시작하면 한 단계 더 성장한 자신과 마주하게 될 것입니다.

_문상환, 오드컨셉, 도쿄공업대학

 

『밑바닥부터 시작하는 딥러닝 3』은 딥러닝뿐 아니라 파이썬 프로그래밍에 도움이 될 내용으로 가득합니다. 이 책을 통해 딥러닝 프레임워크의 기본 구조를 이해하고 나면 텐서플로와 파이토치 같은 프레임워크의 코드를 직접 보는 것도 한결 수월할 것입니다. 딥러닝 관련 일을 하지 않더라도 인공지능에 관심 있는 파이썬 엔지니어라면 꼭 읽어보길 권합니다.

_박진형, XL8 공동 창업자, 전 애플 엔지니어

 

자신만의 딥러닝 프레임워크를 꿈꾸는 분은 물론, 딥러닝 모델을 더 잘 만들고 싶은 분께 추천합니다. 자동 미분에서 시작해 밑바닥부터 프레임워크를 쌓아 올리면서 현대적 딥러닝 프레임워크들이 무엇을 지향하며 어떻게 설계되었는지 철학을 배울 수 있었습니다. 실제로 저는 이 책을 읽으며 파이토치의 코드들을 더 깊이 이해할 수 있었습니다. ‘딥러닝 프레임워크를 만들 생각은 없어!’라며 지나치지 말고, 책을 끝까지 읽다 보면 유명한 프레임워크들을 더 자유롭게 다루는 자신을 발견하게 될 것입니다.

_송헌, 규슈대학대학원 컴퓨터비전 연구실 석사과정

 

이번 3편을 베타리딩하면서 ‘당분간 인공지능 입문서는 이 책이 석권하겠구나’라는 생각이 들었습니다. 2020년 현재 주류인 동적 계산 그래프(Define-by-Run)의 구조와 인공지능의 기본 설계라는 두 마리 토끼를 모두 잡은 책입니다. 지식 간 연결고리가 잘 만들어지지 않아 고민이었다면, 이 책이 단비가 되어줄 것입니다.

_시한, VAIS 인공지능 오픈채팅 커뮤니티 운영진

 

이제 막 딥러닝을 공부하기 시작한 고등학생, 대학생, 대학원생은 물론 현업에 있는 모두에게 큰 도움이 되는 책입니다. 딥러닝을 대략적으로만 아는 이들이 부족한 부분을 채우고 한층 깊이 이해할 수 있도록 내용이 꼼꼼하고 자세합니다. 꼭 읽어보세요!

_안상준, 『파이썬 딥러닝 파이토치』 저자 

 

포스트 코로나 시대에는 인공지능 기술을 이해하고 의료 현장에 적용할 수 있는 전문가가 반드시 필요합니다. 이 책을 통해 유명 프레임워크를 좀 더 능숙하게 다루게 되어 의학적 진단, 치료, 예방에 도움이 되는 딥러닝 모델을 멋지게 구현하기 바랍니다. 『밑바닥부터 시작하는 딥러닝』에서 배운 이론을 바탕으로 자신의 전문 분야에 딥러닝을 적용하고 싶은 모든 분께 적극 추천합니다.

_이현훈, 한의사전문의, 경희대학교 임상한의학과 박사과정

 

라이브러리나 프레임워크를 밑바닥부터 구현하는 작업은 어렵고 힘들지만 딥러닝의 핵심 요소를 공부할 수 있는 좋은 기회입니다. 저도 텐서플로나 파이토치를 사용하다가 한 번쯤 나만의 딥러닝 프레임워크를 만들어보면 좋겠다고 생각한 적이 있습니다. 이 책과 함께라면 자동 미분 계산부터 신경망까지 구현하는 긴 여정을 헤쳐나갈 수 있습니다. 이 책은 여러분만의 프레임워크를 만드는 좋은 출발점이 되어줄 것입니다.

_옥찬호, 넥슨 코리아 프로그래머, 마이크로소프트 MVP

 

이 책은 설레는 모험으로 가득한, 마치 잘 짜여진 RPG 게임을 한 레벨씩 정복하는 듯한 몰입감을 줍니다. 그 여정에서 독자는 딥러닝 메커니즘을 완전히 이해하게 되고, 덤으로 파이썬의 고급 사용법까지 익히게 됩니다. 순탄치 않은 길이지만 완주 후 꽤나 값비싼 무기를 손에 쥐는 짜릿한 여운은 계속될 것입니다.

_전두용, 성운대 교양학부 교수, 경북대 컴퓨터공학과 박사과정

 

상세페이지_밑바닥부터 시작하는 딥러닝3_700px.jpg

사이토 고키 저자

사이토 고키

1984년 나가사키 현 쓰시마 출생. 도쿄공업대학교 공학부를 졸업하고 도쿄대학대학원 학제정보학부 석사 과정을 수료했다. 현재는 기업에서 인공지능 관련 연구·개발에 매진하고 있다. 『밑바닥부터 시작하는 딥러닝』 시리즈 집필 외에 『파이썬 인 프랙티스』, 『밑바닥부터 만드는 컴퓨팅 시스템』, 『Building Machine Learning Systems with Python』 등을 일본어로 옮겼다. 

개앞맵시(이복연) 역자

개앞맵시(이복연)

고려대학교 컴퓨터학과를 졸업하고 삼성전자에서 자바 가상 머신, 스마트폰 플랫폼, 메신저 서비스 등을 개발했다. 주 업무 외에 분산 빌드, 지속적 통합, 앱 수명주기 관리 도구, 애자일 등 동료 개발자들에게 실질적인 도움을 주는 일에 관심이 많았다. 그 후 창업전선에 발을 들여 좌충우돌하다가 개발자 커뮤니티에 기여하는 더 나은 방법을 찾아 출판 시장에 뛰어들었다.

『밑바닥부터 시작하는 딥러닝』 시리즈, 『구글 엔지니어는 이렇게 일한다』, 『리팩터링 2판』, 『JVM 밑바닥까지 파헤치기』, 『이펙티브 자바 3판』 등을 번역했다.

 

- 페이스북: facebook.com/dev.loadmap

- 브런치: brunch.co.kr/@wegra

 

 

제1고지 미분 자동 계산

__1단계 상자로서의 변수

__2단계 변수를 낳는 함수

__3단계 함수 연결

__4단계 수치 미분

__5단계 역전파 이론

__6단계 수동 역전파

__7단계 역전파 자동화

__8단계 재귀에서 반복문으로

__9단계 함수를 더 편리하게

__10단계 테스트

 

제2고지 자연스러운 코드로

__11단계 가변 길이 인수(순전파 편)

__12단계 가변 길이 인수(개선 편)

__13단계 가변 길이 인수(역전파 편)

__14단계 같은 변수 반복 사용

__15단계 복잡한 계산 그래프(이론 편)

__16단계 복잡한 계산 그래프(구현 편)

__17단계 메모리 관리와 순환 참조

__18단계 메모리 절약 모드

__19단계 변수 사용성 개선

__20단계 연산자 오버로드(1)

__21단계 연산자 오버로드(2)

__22단계 연산자 오버로드(3)

__23단계 패키지로 정리

__24단계 복잡한 함수의 미분

 

제3고지 고차 미분 계산

__25단계 계산 그래프 시각화(1)

__26단계 계산 그래프 시각화(2)

__27단계 테일러 급수 미분

__28단계 함수 최적화

__29단계 뉴턴 방법으로 푸는 최적화(수동 계산)

__30단계 고차 미분(준비 편)

__31단계 고차 미분(이론 편)

__32단계 고차 미분(구현 편)

__33단계 뉴턴 방법으로 푸는 최적화(자동 계산)

__34단계 sin 함수 고차 미분

__35단계 고차 미분 계산 그래프

__36단계 고차 미분 이외의 용도

 

제4고지 신경망 만들기

__37단계 텐서를 다루다

__38단계 형상 변환 함수

__39단계 합계 함수

__40단계 브로드캐스트 함수

__41단계 행렬의 곱

__42단계 선형 회귀

__43단계 신경망

__44단계 매개변수를 모아두는 계층

__45단계 계층을 모아두는 계층

__46단계 Optimizer로 수행하는 매개변수 갱신

__47단계 소프트맥스 함수와 교차 엔트로피 오차

__48단계 다중 클래스 분류

__49단계 Dataset 클래스와 전처리

__50단계 미니배치를 뽑아주는 DataLoader

__51단계 MNIST 학습

 

제5고지 DeZero의 도전

__52단계 GPU 지원

__53단계 모델 저장 및 읽어오기

__54단계 드롭아웃과 테스트 모드

__55단계 CNN 메커니즘(1)

__56단계 CNN 메커니즘(2)

__57단계 conv2d 함수와 pooling 함수

__58단계 대표적인 CNN(VGG16)

__59단계 RNN을 활용한 시계열 데이터 처리

__60단계 LSTM과 데이터 로더

 

부록 A 인플레이스 연산(14단계 보충) 

부록 B get_item 함수 구현(47단계 보충) 

부록 C 구글 콜랩에서 실행

출판사 리뷰

 

★ 파이썬을 활용해 밑바닥부터 직접 구현하는 딥러닝 프레임워크 

딥러닝 프레임워크 안은 놀라운 기술과 재미있는 장치로 가득합니다. 어떤 구조를 갖추고 어떤 원리로 움직일까요? 어떤 기술이 사용되고 어떤 사상이 밑바닥에 흐르고 있을까요? 3편의 목표는 그것들을 밖으로 꺼내보고 제대로 이해하는 것입니다. 그 과정에서 여러분이 기술적인 재미도 느낄 수 있도록 ‘밑바닥부터 만든다’는 방침을 세웠습니다. 다른 누군가가 만들어놓은 도구를 사용하기만 해서는 도달하기 어려운 깊은 깨달음을 얻기를 바랍니다. 

 

  • 제1고지_ 프레임워크 개발을 위한 기반을 마련합니다.
  • 제2고지_ 프레임워크를 사용하는 코드가 더 자연스럽게 보이도록 합니다.
  • 제3고지_ 2차 미분을 구할 수 있도록 프레임워크를 확장합니다. ‘역전파의 역전파’ 구조를 배우고 이해하면 프레임워크의 새로운 가능성에 눈을 뜨게 됩니다.
  • 제4고지_ 프레임워크를 신경망용으로 정비하고 이를 사용해 손쉽게 신경망을 구축합니다.
  • 제5고지_ CPU 대응, 모델 저장과 복원 등 실전 딥러닝에 꼭 필요한 기능을 추가합니다. CNN, RNN 등 발전된 모델도 다룹니다. 딥러닝 응용을 다루는 이 주제들을 프레임워크로 구현한다면 간단한 코드만으로 해결할 수 있습니다.

딥러닝 프레임워크를 직접 개발한다고? 그게 책으로 나왔다고?

 

이 책은 딥러닝 기초 이론은 어느 정도 알고 있고, 파이토치나 텐서플로 기본 예시 코드 정도는 돌려보거나 파이썬 기본은 알고 있는 독자들을 대상으로 합니다.

 

5고지 60단계로 개발 로드맵 목차를 구성하였습니다.

 

1고지(1~10단계)에서는 미분 자동계산 : DeZero 의 기반을 마련

2고지(11~24단계)에서는 자연스러운 코드

3고지(25~36단계)에서는 고차 미분계산 : 2차 미분 계산하도록 DeZero 확장

4고지(37~51단계)에서는 신경망 만들기 : DeZero를 신경망용으로 구축

5고지(52~60단계)에서는 DeZero의 도전 : GPU 대응, 모델 저장 및 복원 등 딥러닝에 필요한 기능 추가, CNN, RNN 등

 

세세한 단계들을 따라가면서 딥러닝 프레임워크를 파이썬 코드(클래스, 함수)로 구현하고,

변수명까지 세세하게 따라갈 수 있도록 안내해줍니다.

 

 

 

프레임워크를 만드는 과정에서 필요한 코드들은 물론, 딥러닝 프레임워크를 이해하는 이론들도 많이 실려있습니다.

 

중간중간 '칼럼'을 실어 딥러닝 프레임워크의 동작방식(정적 계산 그래프, 동적 계산 그래프 방식)

딥러닝 프레임워크의 장단점 등등 딥러닝 프레임워크를 더 폭넓게 이해할 수 있는 내용들을 쉽고 자세하게 보충해줍니다 이 책은 구현만이 아니라 이론도 많이 다루고 있는 책이라고 할 수 있습니다.

 

밑바닥부터 시작하는 딥러닝 1은 이미 딥러닝을 시작하는 딥린이들의 필수 입문서로 자리매김하였습니다.

3권은 1, 2권으로 딥러닝의 기초가 탄탄하게 쌓인 딥린이들에게 또다른 챌린지를 제공해주고, 숲을 볼 수 있도록 직접 딥러닝 프레임워크를 개발해봄으로써 지식을 업그레이드할 수 있는 좋은 레벨업 책입니다.

 

앞으로 이 책의 코드들을 하나하나 따라해보면서 텐서플로, 파이토치와 같은 딥러닝 프레임워크를 직접 구현하면서 이해하고자 합니다.  

 

밑바닥 시리즈입니다. 아직까지 밑바닥부터 시작하는 딥러닝 1권을 새벽까지 열심히 밑줄 그어가면서 보던 기억이 납니다.

그리고 2권, 이번에 3번까지 딥러닝 시리즈의 완성본이라고 봅니다.

 

2020-12-22-21-51-33-783.jpg

 

밑바닥부터 시작하는 딥러닝 3, 3번째 책입니다.

 

2020-12-22-21-51-54-486.jpg

 

2020-12-22-21-51-38-849.jpg

이번엔 프레임워크다! 손으로 배우는 본격 딥러닝 학습서라고 첫 뒷면에 설명이 되었습니다. 60단계 5고지까지 달성할 수 있다는 겁니다.

2020-12-22-21-52-23-871.jpg

 

완전 초보, 기초자를 위한 책이라고 보기에는 어렵습니다. 

 

2020-12-22-21-53-08-108.jpg

 

코딩 3줄부터 기본에 기본부터 시작하지만, 초반에 명확하지 않으면, 나중에 내용 자체를 따라가는 것이 쉽지 않다는 겁니다.

그렇게 변수, 함수 이야기 하다가 미분이야기로 자연스레 넘어가게 됩니다.

눈에 띄는 특징은 컬러 인쇄 뽀인트가 있어서, 구성 내용들이 눈에 쏙쏙 들어옵니다.

20201222_215519.jpg

 

결론입니다. 60단계입니다.

20201222_215536.jpg

 

정말 밑바닥에서 부터 시작해야 합니다. 그래서 끈기도 필요하지만, 점차 딥러닝의 구성이 넘쳐나면 산출물로 계속 갱신 될 수 있다느 겁니다.

 

noname.png

 

책의 제목을 보고 처음 딥러닝을 시작하는 사람을 위해 만들어진 것으로 생각했지만, 딥러닝 프레임워크를 처음부터 만들어 보는 내용으로 더 깊게 이해하고 더 잘 사용할 수 있도록 도움을 주는 책입니다.

 

딥러닝 프레임워크 또는 라이브러리를 사용하는 것에서만 그치지 않고, 어떤 구조를 가지고 구현되어 있는지 볼 수 있어야 한 단계 더 나아갈 수 있다고 생각합니다.

책의 분량도 많고 내용도 쉽지 않지만 차근차근 따라해보고 여러번 읽어본다면 딥러닝을 이해하는데 큰 도움이 될 것입니다.

 

프로젝트를 진행하다보면 직접 모델을 구현해 사용해야 할 때가 있는데 이 책의 5개 챕터, 60단계를 모두 정복한다면 큰 도움이 될 거라고 생각합니다.

딥러닝 분야가 빠르게 발전하고 있는 만큼 이 책의 시리즈도 계속 나왔으면 좋겠습니다.

 

딥러닝 뿐만 아니라 프레임워크를 견고하게 개발하는 경험을 할 수 있는 것도 이 책의 큰 장점입니다.

밑바닥부터 시작하는 딥러닝 시리즈는 딥러닝 필수 학습서로 자리를 잡을 것으로 생각합니다.

애플의 2025년 자체 전기 자율주행차 생산계획을 발표한 후 전 세계의 자동차 회사들의 주가가 요동을 치고 있다. 단순히 주가총액으로만 보자면 국내를 대표하는 자동차 대기업 현대차의 50배를 훌쩍 넘는 애플의 행보는 확실히 위협이 될만하다. S&P500에 편입된 테슬라의 주가도 덩달아 출렁거렸을 정도였다. 내연기관차를 생산하기 위해서는 많은 기술이 필요하며 1차, 2차, 3차 등 수많은 협력회사가 필요하다. 내연기관에 들어가는 수많은 부품들을 생산해야 되기 때문이다. 그러나 전기차는 다르다. 전기차에서 가장 우선시되는 기술은 소프트웨어다. 모든 것이 전자적으로만 이루어져서 구동이 되며 말 그대로 차체가 하나의 Smart PC라고 해야 할까. 스마트폰보다 더 많은 메모리가 들어갈 것이고 상시로 네트워크게 연결되면서 딥러닝을 통해 자체적으로 진화할 가능성이 높다. 

 

 

MG0A9078_resize.JPG

이 분야의 출판사로 잘 알려진 한빛미디어에서 밑바닥으로부터 시작하는 딥러닝 3이라는 책을 제공받게 되었다. 이 책을 처음 본 느낌은 딥러닝에 대한 설명 없이 본격적인 실전에 들어간 느낌이었다. 찾아보니 딥터링1에서 기초지식과 처리, 딥러닝 2에서는 Sequence data를 설명해두고 3편에는 본격적인 프레임 워크를 만들기 위한 내용을 담고 있었다. 

 

 

MG0A9079_resize.JPG

 

어떤 정치인은 초등학교 때부터 코딩 교육을 해야 한다고 하는데 사실 코딩은 소프트 설계에서 중요한 부분은 아니다. 어떤 방식으로 설계하고 어떻게 구현할지에 대한 알고리즘을 모르면 아무리 코딩을 알고 있어도 의미가 없다. 코딩은 AI가 훨씬 더 잘할 수 있다. 미래에는 사람이 코딩할 필요성은 아마 거의 없을 것이다. ㅇ이 책은 파이썬으로 직접 구현하며 배울 수 있도록 이끌고 있다. 이 책을 활용하기 위해서는 객체 지향이라던가 기초이론은 알고 있어야 한다. 

 

 

이 책은 총 60단계로 구성이 되었는데 미분 자동계산, 자연스러운 코드, 고차 미분 계산, 신경망 만들기, DeZero의 도전으로 딥러닝 프레임워크들을 이해하는 새로운 관점을 만들어준다. 스마트폰을 살 때는 모두가 같았어도 같은 형태로 사용하는 사람은 아무도 없다. 자동차 역시 겉모습은 똑같지만 딥러닝으로 구현된다면 2030년이 가기 전에 자동차 자체에 프레임워크에 의해 속성을 가지게 될 수 있다. 책의 첫 부분에서는 Variable 클래스를 간단하게 보여주고 있다. 

 

 

MG0A9080_resize.JPG

 

 

class Variable:

 

def_init(self, data):

 

self.data = data

 

Variable에 데이터가 보관되는 것처럼 실생활에서 사용되는 모든 것에 개인에 최적화된 정보가 담길 수 있다. 자동차 또한 예외가 아니다. 아마 수학을 좋아하지 않았던 수많은 사람들은 미분이라는 이야기만 나와도 머리가 아플 수 있다. 미분은 정말 수많은 분야에서 활용이 된다. 물체의 시간에 따른 위치 변화율(위치의 미분)은 속도가 된다. 이 책에 나온 대로 따라가기 위해서는 소프트웨어에 대한 사전 지식을 비롯하여 파이썬에 대한 이해, 미분, 적분, 딥러닝을 알 수 있어야 한다. 

 

 

파이썬이라는 언어는 프로그래밍 언어의 하나인데 간결하고 생산성이 높은 것이 특징이다. 즉 자동화를 하기에도 장점이 있다. 책에서 소개한 역전파 자동화의 코드만 보아도 단순하다. 

MG0A9082_resize.JPG

 

 

 

class Function:

 

def_call_(self, input):

 

x = input.data

 

y = self.forward(x)

 

output = Variable(y)

 

output.set_creator(self) # 출력 변수에 창조자를 설정한다.

 

self.input = input

 

self.output = output # 출력도 저장한다.

 

reture output

 

 

 

MG0A9084_resize.JPG

 

 

책에는 장의 끝에 칼럼을 담고 있다. 제1고지에서는 수치 미분, 기호 미분, 자동 미분 등을 설명하고 있는데 미분은 지금까지는 필요에 의해서 그때마다 구현했지만 머신러닝에서 자동 미분은 활용될 가능성이 높다고 있다. 

 

 

제3고지에서의 고차 미분 코드에 의해 그려지는 그래프를 보면 마치 사람의 뉴런이 생각하는 방식과 유사해 보인다. 2차 미분, 3차 미분, 4차 미분, 5차 미분, 6차 미분, 7차 미분, 8차 미분을 거치면 딥러닝 그 자체를 보여주는 그래프를 볼 수 있다. 신경망에서 매개변수가 100만 개를 넘는 일이 다반사다. 100만 개의 매개변수를 뉴턴 방법으로 갱신한다면 100만*100만 크기의 헤세 행렬이 필요한데 그걸 처리할 큰 메모리는 근미래에 차량과 같은 장비에 장착이 가능하지 않을까.  

 

MG0A9088_resize.JPG

 

 

범용적인 완전 연결 계층 신경망

 

import dezero.functions as F

 

import dezero.layers as L

 

 

 

class MLP(Model):

 

del _init_(self, fc_output_zizes, activation=F .siqmoid):

 

super( ),_intit_( )

 

self .activation - activation

 

self .layers - [ ]

 

 

 

for i, out_size in enumerrate(fc_output_sizes):

 

layer = L.Linear(out_size)

 

setattr(self, '1' +str(i), layer)

 

self .layers.append(layer)

 

 

 

def forward(self, x):

 

for 1 in self .layers[:-1]:

 

x = self .activation(1(x))

 

return self .layers[-1](x)

MG0A9089_resize.JPG

 

 

 

 

 

 

 

이미 자율주행차의 시대가 시작이 되었다. 차량에서 사용하는 배터리의 단가는 어느시점에서 획기적으로 낮아지며 밀고가 고밀도가 되면 딥러닝이 가장 잘 구현되는 공간이 차량이 될 수 있다. 

 

 

책에서 제시되는 함수나 코드는 관련 업계에 종사하는 사람들이나 관련 업계로 나가려는 사람들에게는 많은 정보를 담고 있다.  DeZero는 앞으로도 함수와 계층 추가, 메모리 사용 효율 개선, 정적 계산 그래프와  ONNX지원, API문서 등을 제공을 할 것이라고 하니 관심을 가지는 것도 좋다. 하나하나 살펴보면서 이해하고 구현하는 재미가 있는 딥러닝의 세계로 빠져볼 수 있다. 

 

<이런 책을 기다려왔습니다>

본 리뷰는 한빛미디어의 "나는 리뷰어다" 를 통해 도서를 제공받았고 어떠한 가이드나 금전적인 지원을 받지 않았습니다. 

 

직접 구현하면서 원리를 파악해나가는 책. "밑바닥부터 시작하는 딥러닝 3"

 

현존하는 딥러닝 프레임워크들의 기저원리들을 파악하고 

각 기능들이 어떤 원리로 구현되었는지 알아갑니다.

 

전세계적으로 인공지능과 딥러닝이 매우 빠른 속도로 발전하고 있고 관련 사업도 많이 추진 중에 있습니다.

이런 빠른 속도를 지원해주는 것에는 구현에 쓰이는 오픈소스 딥러닝 프레임워크들의 도움이 매우 크게 작용합니다.

 

지금까지 저도 이 프레임워크들의 원리가 궁금하지만 어떻게 접근해서 알아내야하는지  엄두를 내지 못하고 있는 중에 이 책이 출간되었습니다. 

일본 출간 때부터 한국어 번역이 시작되었다는 소식을 듣고 얼마나 기다려왔는지 모릅니다.

 

책을 펼치고서 하나씩 저자의 인도에 따라 스텝을 밟아가며 구현을 해나갈때마다 

이런 책이 출간되어 너무 감동적이었고 또한 이제야 출간되어 아쉬웠습니다.

 

파이썬으로 순수하게 구현을 해나가다보니, 파이썬 프로그래밍 자체적으로 제 기준에는 깊은 수준에서 배울 점이 많았습니다. 

또한, 프로그래밍 만으로도 사용자의 편의성을 고려하는 측면에서 재사용성과 효율성을 설명하는 부분에서 무릎을 탁! 치게 만드는 순간이 많았습니다.

 

책장을 넘길 때마다 저자가 해결해야하는 상황을 제시합니다. 이를 보고 스스로 '아마 이렇게 하면 되지 않으려나?' 하거나 

'여기서 더 개선이 된다고..? 잘 모르겠는데..' 같은 생각을 하면서 다음 장을 기대하게 되었습니다.

 

어느 순간부터는 이전의 내용들이 머리속에서 얽혀서 '뭐였더라..', '이게 왜 이렇게 잘되지..' 하면서 

책을 들었다 놨다 하면서 즐겁게 보았습니다.

 

파이썬 언어의 입문자 부터, 머신러닝 현업자 모두에게 추천드립니다.

 

이 책을 리뷰하게 되어 정말 기쁘고 언젠가 이런 책을 저도 쓰고싶습니다.

 아마 인공지능과 관련된 연구나 업무를 하고 있는 사람이라면 누구나 Tensorflow나 PyTorch, MXNet같은 딥러닝 프레임워크를 사용할 것이다. (몇몇 프레임워크는 C++이나 java같은 언어로 포팅이 되어 있겠지만) 대부분 이 프레임워크를 다루기 위해서는 파이썬을 잘 다루고, 뭔가의 수학 공식을 코드로 옮길 줄 알고 있을 것이다. 말이 쉬워보이지만, 이런 프레임워크가 미분도 자동으로 해주고, 사용자가 정의한 텐서를 이용해서 계산도 잘 할 수 있도록 해줬기에, 사용자가 조금 더 쉽게 구현에 집중할 수 있게해줬고, 덕분에 기술의 발전이 빠르게 진행되지 않았나 하는 생각을 해본다. 그런 뭔가 이름만 들으면 복잡해보이는 프레임워크를 우리가 직접 만들어볼 수 있을까? 

 어쩌면 이 책이 그 답이 될 수 있지 않을까 생각해본다.

 

 

그림 1. 밑바닥부터 시작하는 딥러닝 3

 

 2017년에 처음 출간했던 "밑바닥부터 시작하는 딥러닝" 시리즈가 올해 3편으로 출간되었다. 딥러닝에 대한 기초 지식과 이미지 처리와 관련된 내용을 다뤘던 1편과, 언어와 같은 Sequence data를 처리하는 방법을 다뤘던 2편과는 다르게 3편에서는 앞에서 소개했던 그 복잡해보이는 딥러닝 프레임워크를 직접 만드는 내용을 다루고 있다.

 

 사실 어쩌면 처음 보는 사람은 막막하게 느껴질 수 있다. 딥러닝 프레임워크를 구현하려면 파이썬 문법을 알고 있는 것을 넘어서서 프레임워크의 구조도 잘 정의해야 하고(어떻게 보면 소프트웨어 공학적인 내용이 필요하지 않을까 싶다.), 앞에서 언급했던 것처럼 텐서를 다루는 방법이나, 자동 미분 같은 수학 이론도 구현할 수 있어야 한다. 나열하다 보니까 단순히 딥러닝 이론만 알고 있다고 해서 모든 것이 구현될 것 같지는 않아 보인다. 그래서 이 책의 선수 지식도 보면 딥러닝 기초이론이나 객체 지향에 대해서 알고 있는 것을 필요로 한다.

 

딱 인공지능을 알고 있다고 가정지었을 때, 프레임워크가 필요한 요소는 어떤게 있을까 생각을 해보았다. 일단은 변수를 담을 텐서 정의가 필요할 것이고, 신경망을 구성하는 노드, 계층 들도 유기적으로 연결되게끔 구성되어야 할 것이다. 또한 각 노드별 가중치를 업데이트하기 위한 backpropagation도 있어야 할 것이고... 예측치와 실제값간의 오차를 표현할 loss function, optimizer도 필요할 것이다. 이런 내용은 Tensorflow나 Pytorch에는 API로 쉽게 구현되어 있기 때문에, 일반 사용자들은 구글링이나 공식 문서를 통해서 쉽게 가져다 쓸수야 있다지만, 우리가 구현한다면 이 모든게 가능할까 싶었다.

 

 그런데 이 책에서는 이런 내용을 모두 다루고 있다. 오히려 진짜 실제 딥러닝 프레임워크처럼 멋있는 시각화도 구현되고(물론 Tensorboard 같이 현란한 시각화까지는 아니지만, 내부 구조를 설명할 시각화는 이뤄진다.), 심지어는 GPU와 연동시켜서 성능을 개선하는 내용도 담고 있다. 딥러닝 개발 책인데, 메모리 관리같은 성능 측면을 다루고 있는 부분도 흥미로웠다.

 

그림 2. 딥러닝 구조 시각화

 

 위 사진은 책에 실제로 실려있는 딥러닝 구조를 시각화한 내용이다. 처음에는 책에 파본이 생긴줄 알고 깜짝 놀랐었는데, 이렇게 복잡한 딥러닝 내부 구조도 구현하고 시각해볼 수 있게끔 도와준다.  

 

 

그림 3. 밑바닥부터 시작하는 딥러닝 시리즈

 

 개인적으로는 딥러닝이라는 것을 모르는 상태에서 1편을 봤었고, 막 관심을 가지기 시작할 때 2편을 본 입장에서, 이 책은 정말 딥러닝에 대한 내용을 잘 모르는 사람이라도 책을 읽었을 때, 직접 구현해보면서 원리를 이해할 수 있다는 책의 컨셉이 참 맘에 들었다. 3편도 역시 총 60단계로 나눠서, 직접 딥러닝 프레임워크를 구현해보는 과정을 설명하고 있고, 기존 책의 의도를 물려받아 되도록 쉽고, 직접 구현해보면서 학습할 수 있는 내용 전개가 이뤄지고 있다. 이론이나 구현에만 치우쳐, 소위 말하면 "재미없는" 딥러닝 책이 아닌, 둘다 겸비하여 구현이라는 경험을 해볼 수 있는 것은 이 책이 다른 책들과 비교했을 때 더 돋보이게 하는 특징이라고 생각한다.

 

 책이 담고 있는 주제의 특성상 분명 이 책은 처음 인공지능을 배우는 사람을 위한 책이 아니다. 더구나 프레임워크 구현과 관련된 내용이기에, 딥러닝 본연의 내용과 더불어 소프트웨어 구조나 하드웨어 의존성과 같은 조금은 외적인 내용에 대해서도 어느정도 숙지가 되어 있어야 한다. 하지만 본인이 어느정도 경험이 있고, 무엇보다 직접 이런 프레임워크를 구현하고 싶다는 생각을 가진 사람한테는 많은 것을 느낄 수 있게 해주는 책이다. 더불어 최종 60단계를 거쳐 딱 만들어진 프레임워크를 보면, 조금은 뿌듯하면서 뭔가 새로운 것도 만들어 보고 싶은 그런 느낌도 주지 않을까 싶다.

 

PS1: 사실 이 책 이전에도 딥러닝 모델을 직접 구현하는 방법에 대해서 소개한 책이 있다. 

 

 

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

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

www.hanbit.co.kr

"밑바닥부터 시작하는 딥러닝" 책은 구조적 측면을 강조하면서 직접 프레임워크를 만들지만, 위의 책은 데이터에 딱 맞는 형태로 모델을 직접 구현하는 방식으로 설명되어 있는 책인데, 두 책 다 직접 구현해본다는 점에서 내용 전개가 유사하고 마찬가지로 추천할만한 책이다.

 

PS2: 이 책이 3권이라, 1권, 2권을 꼭 읽어야 할 책인지에 대해서 궁금할 수 있다. 글에도 설명한 것처럼 1권은 딥러닝 기초 지식과 이미지 처리 모델 관련 설명이 되어 있고, 2권은 순환 신경망에 대한 내용이라 3권과는 크게 관련이 없다. 읽으면 내용 이해에 도움이 될 정도?

 

책의 repository는 아래를 참고하면 좋을 것 같다.

 

 

WegraLee/deep-learning-from-scratch-3

『밑바닥부터 시작하는 딥러닝 ❸』(한빛미디어, 2020). Contribute to WegraLee/deep-learning-from-scratch-3 development by creating an account on GitHub.

github.com

 출처: https://talkingaboutme.tistory.com/entry/Book-Deep-learning-from-scratch-3 [자신에 대한 고찰]

ZerotoDeep3.jpg

 

 

딥러닝을 처음 시작할 때, 우리는 ANN부터 시작되는 신경망 개념부터 시작하여 CNN등 진화된 알고리즘 들에 대한 이론을 먼저 배우게 됩니다. 그리고 이를 구현하기 위해 텐서플로나 케라스, 파이토치 등을 배우고 MNIST같은 예시 데이터를 가지고 딥러닝 알고리즘을 이용하여 예측하며 프레임워크에 익숙해지게 됩니다.제가 보았던 대부분의 커리큘럼은 여기까지였습니다. 플러스 알파라고 한다면 캐글과 같은 경진대회에 나가는 정도. 

 

그리고 이런 커리큘럼에서 성장의 한계를 느꼈던 분들에게 드디어 추천할 수 있는 책이 나왔습니다.

 

이 책은 파이토치와 같은 딥러닝 프레임워크를 만들기 위한 60개의 단계로 구성되어 있습니다. 저자가 DeZero라 불리는 순수한 파이썬 기반의 딥러닝 라이브러리를 만드는 법과 그 내부 구조들에 대해서 자세하게 기술해 놓은 덕분에 우리는 편하게 이해하면서 따라가기만 하면 됩니다.

 

딥러닝 프레임워크를 바닥부터 만들어 보는 것은 생각보다 중요한 일입니다. 쉽계 예를 들자면 자동차 운전하는 방법은 알지만, 자동차의 구조에 대해서 안다면 운전을 할 때 차량의 기능을 100% 활용할 수 있을 뿐 아니라 차량을 관리 할 때 매우 유용하겠죠? 딥러닝 프레임워크도 마찬가지입니다. 위의 예시에서 운전을 딥러닝 모델링이라고 생각하고 관리를 코드 작성이라고 생각한다면, 파이토치와 같은 딥러닝 프레임워크를 그냥 문서를 보며 사용하는 것 보다 직접 만들어 보면서 내가 사용했던 API가 어떻게 작성되어 있는지를 안다면  그 활용도를 극한으로 끌어낼 수 있을것입니다.

 

특히 연구자들 사이에서 가장 뜨고있는 파이토치와 비슷한 API를 가지고 있기 때문에 파이토치에 입문하고자 하는 분들에게도 매우 유용할 것이라고 생각됩니다. 

 

본 리뷰는 한빛미디어에서 도서만 제공하였으며 어떠한 가이드나 금전적인 지원을 받지 않았습니다. 

 

아.. 드디어 이 책이 3권까지 나왔습니다. 시리즈로 몇권까지 나올려고 이러는지 부담스럽네요.
 
 

표지 2020-12-20 21.49.12.jpg

 

 
왜 부담스럽냐구요? 좋은 책이라 꼭 책장에 두어야만 하니까요. 
 
2권에서는 자연어 처리애 대한 내용을 다루었었는데, 이번에는 "밑바닥부터 딥러닝 프레임워크를 개발"하는 내용입니다.
 
딥러닝도 공부하고 프레임워크를 개발하는 방법도 배울 수 있는 "일석이조" 라고 봐야겠죠.
 
아래 로드맵을 보면 요렇게 단계별로 진행한다고 하네요. 역시 내용은 좀 어려워 보입니다.
 

로드맵 2020-12-20 21.49.48.jpg

 

 
내용이 쉽지 않은 책이라 부담스러울수 있는데 이런 로드맵이 있으면 왠지 든든한 느낌이 들기도 합니다.
 
이 책을 펼쳐본 순간 제일 맘에 드는 점은 위 로드맵에도 보이듯이 드디어 컬러판으로 나왔다는겁니다.
 
어릴 시절 흑백 티비만 보다가 컬러 티비를 봤을때의 그런 눈호강(?) 이 느껴집니다.
 
딥러닝 관련 코드는 특성상 수식과 배열, 등등이 많이 나오는데 이런 코드를 볼때마다 눈이 너무 금방 피곤해지고
 
가독성이 떨어졌었는데... 아래 사진을 보세요. 컬러로 되어 있으니 이렇게 달라보입니다.
 

숫자색 다름 2020-12-20 21.51.34.jpg

 

 
텐서플로우 공부할때도 잠깐 그려본적이 있는 정확도 같은 그래프도 아래처럼 나오니까 비교 하기가 쉽드라구요.
 
주요 코드도 하늘색으로 하이라이트 되어 있습니다.
 

컬러 정확도 2020-12-20 21.53.21.jpg

 

 
아직 책의 내용을 꼼꼼히 다 본건 아니지만 앞서 나온 두권의 책과 같은 저자와 역자니까 믿고 보는 책인건 당연한거겠죠.
 
앞에서 설명한것처럼 이 책은 단순히 딥러닝을 빨리 배워서 사용해보는 책이 아닙니다. 
 
시간을 두고 공부하면서 직접 프레임워크까지 만들어보고 싶은 분들에게 추천하는 책입니다.
 
그럼 마지막으로 어디선가 봤던 기억이 있는 챠트가 나오길래 2권을 뒤져보니 ...  찾았습니다. 
 
제가 왜 컬러판에 대해서 침이 마르도록 칭찬(?) 하는지 아래 사진으로 비교해보시죠.
 

2권 3권 비교.png

 

 
 

이번에 리뷰할 책은 "밑바닥부터 시작하는 딥러닝3' 입니다.

딥러닝공부를 하면서 텐서플로나 파이토치등의 예제를 입력하고 실행하면서 뭔가 동작하기는 하는데 어떤 원리로 동작할까 궁금한 사람들에게 "밑바닥부터 시작하는 딥러닝" 시리즈는 기본 원리와 그에 대한 (딥러닝 라이브러리를 사용하지 않는) 파이썬 구현코드로 궁금증을 해소해 주었습니다. 
하지만 직접 구현한 코드의 사용형태가 원리를 이해하기는 좋았지만 실무등에서 텐서플로나 파이토치등의 예제를 사용하는 형태와 다른점이 있을 수 밖에 없다. 텐서플로나 파이토치등에서 왜 이런 옵션을 쓰고, 왜 이렇게 쉽게 알고리즘을 바꿔쓸 수 있고, 어떻게 비쥬얼라이즈를 할 수 있을까 .. 
이런 의문점을 3판이 해결해줍니다.

텐서플로를 사용해본 사람에게 익숙한 Variable 라는 class의 변수의 아주 단순한 구현을 시작으로 어떤 역할을 하는 Layer, Optimizer클래스나 함수를 하나씩 만들어갑니다.
미분에 대한 내용이 추가되고, 자동미분을 위한 변수 옵션이 Variable에 어떻게 들어가서 어떤식으로 구현되는지
Base class를 만들고 서브클래스로 구현을 분리해서 쉽게 바꿔쓸 수 있도록 구조를 만든다든지 
성능을 위해 GPU를 사용하게 한다든지 
저장후 불러오기나 분산처리를 하게 한다던지
그래프처리를 위해서 어떤 데이타들을 수집하고, 어떤식으로 출력한다든지등등의 과정을 거치다 보면 어느새 익숙한 기존 딥러닝 프레임워크와 예제와 비슷한 형태의 API로 동작하는 프레임웍을 볼 수 있습니다.
요즘에 사용하는 텐서플로1에서 쓰던 Define-and-Run(정적그래프)방식이 아닌 텐서플로2나 파이토치처럼 Defined-by-Run(동적그래프) 방식으로  진행됩니다.

 
파이썬 언어에 대한 사전지식은 필요하지만 초급자나 타 언어로 시작해서 파이썬을 배운 사람들에게 딥러닝에 대한 지식도 얻어가면서 리팩토링까지 배울 수 있는 아주 휼륭한책이라 생각합니다. 

딥러닝과 머신러닝을 처음 접했을 때, 그러니까 중1시절 어느 겨울날, 구글이 언제 무슨짓을 할 지 모르니 라이브러리까지 만들어야겠다! 라는 큰 꿈을 갖고 있었다. 뭐. 아직도 책읽고, 재밌어보이는 예제 몇개 돌려보고, 영어공부도 할겸 아카입에서 논문 왕창 다운받아놓고 몇개만 읽어보고있지만 말이다. 밑딥1은 아마 두 번째 정도로 접한 딥러닝 관련 도서였고, 무서운 물고기 표지를 덮어놓고 당시엔 다소 어렵던 개념과 수식들지금도 그렇지만 을 읽어가며 끝가지 읽지는 못했지만 이 분야에 대해 조금씩 이해시켜주던 책이었다. 어쨌든 3권이 또 나왔고, 이번엔 무서워 보이지 않는 귀여운 나뭇잎 해룡 표지다. 어쨌든 이번 밑딥은 텐서플로, 파이토치 같은 딥러닝 프레임 워크를 만들어나가는 책이라 그런지 목차도 활용을 다룬 다른 딥러닝 책들과는 달리, 한문장으로 쓰던 함수를 어떻게 구현하는가에 대한 내용이다. 예전엔 프로그래밍만 할 줄 알고, 거기에 필요한 몇몇 수학적 지식만 있으면 되는 줄 알았는데 깊이들어갈수록 메모리가 어떻고, cpu가 어떻고 하는 컴퓨터 구조에 관한 지식의 필요성이 느껴진다.. 밑딥 1,2와 다른점이라면 이번엔 드디어 흑백을 탈출해 컬러로 인쇄되어 있는거다! 알록달록해서 좋다. 이책을 통해 파이썬을 위한 도구를 만드는 일은 상당히 어렵다는것을 느꼈다. 많은 책들에서 한 두 번 정도 간단히 언급하고 가는 미분이라던지, 역전파라던지 이런걸 구현해야 하고.. 그리고 이 책을 처음 받고 딱 펼쳤을 때 등장한 페이지. 내 책에 엄청난 인쇄오류가 있나보다.. 했는데 앞페이지를 넘겨보니 8차 미분을 시각화한 그래프의 일부라고 한다. 다른 내용은 이해 못한게 아니라 스포일러하면 안되니 책을통해 직접 읽어보시길. 일단은 궁금해서 책를 읽어보려고 시도했으나 아직 때가 이른 것 같다. 이번 방학때 도서관에서 밑딥1권 빌려서 조금 더 공부한 후에 다시 읽어봐야겠다. 

코로나로밖에 사람들도 없고 조용합니다.


한풀 꺾이나 했지만, 코로나가 다시 살아나서 문제입니다.


하루빨리 코로나에 대한 위협이 끝이 나길 바랍니다.


모두 건강 조심하세요.


딥러닝을 학습하고자 하는 분들에게 책을 추천하고자 합니다.


밑바닥부터 시작하는 딥러닝 책이 1권과 2권도 잘 봤는데요.

드디어 3권까지 나오게 되어 너무 기쁩니다.


그러면 3권을 한번 같이 살펴보도록 하겠습니다.



02.jpg

 


1. 60단계로 배우는 딥러닝

딥러닝을 60단계로 배울 수 있습니다.


챕터로는 5가지 챕터로 알려줍니다.


5가지 챕터는 미분 자동 계산부터 시작합니다.


그다음은 자연스러운 코드에 대해 배웁니다.


고차 미분 계산, 신경만 만들기, DeZero 프레임워크를 3, 4, 5챕터에서 배우게 됩니다.


DeZero 프레임워크의 목표는 이해하기 쉽게 만드는 데 있습니다.


가능한 라이브러리를 사용하지 않고 코드 양을 줄였습니다.


파이썬만을 사용한 프레임워크로 파이썬을 아시는 분은 코드를 읽는 데 어려움이 없을 겁니다.



03.jpg

 


2. 프레임워크 제작

프레임워크를 제작하는 방법도 알려줍니다.


코드의 범용성은 더해야 합니다.


문제 도메인도 말아야 이해하고 개발할 수 있습니다.


프레임워크를 개발하는 경험을 하게 도와줍니다.


이 경험은 개발자의 수준을 한 단계 올려줄 것입니다.


무작정 기능만 추가하는 것은 안 됩니다.


단계적으로 프레임워크를 만들어보는 경험을 하실 수 있습니다.

 


01.jpg

 


Ps

1편은 합성곱 신경망과 이미지 처리가 주제였습니다.


2편의 주제는 순환 신경망과 자연어 처리였습니다.


3편은 동적 계산 그래프와 딥러닝 프레임워크를 알려줍니다.


3가지 주제별로 딥러닝에 대해 배울 수 있습니다.


1, 2, 3편 모두 읽으시면 앞으로 딥러닝 하는데 유용하실 겁니다.


딥러닝에 관심 있는 분들에게 이 책을 추천합니다.

안녕하세요 괴짜 개발자 namedboy 입니다. Emotion Icon

혹시 딥러닝은 배우기 어려운 분야 라고 생각하시나요? 저도 비슷한 생각을 가지고 있습니다.

 

아무리 책에서 쉽게 설명해도 여러 함수나 용어 자체가 익숙하지 않으면 이해가 어렵고 그만큼 배우기 어려워지죠. 제가 추구하는 것도 무엇이든 배울 때 완전히 이해를 하고 그 이해를 바탕으로 더 나은 것들을 생각할 수 있을 때 제대로 배우고 익혔다라고 생각합니다. 하지만 그렇게 하지 못하는 분야도 많죠.

 

그렇게 하지 못했을 때 할 수 있는 나머지 방법 하나가 결과를 보고 과정을 이해하는 방법인데요. 지금 제가 리뷰할 이 책이 딱 그 방식으로 배우는 접근을 하고 있다고 느꼈습니다.

 

사실 책 초반에 기초 이론을 습득한 사람이 이 책으로 공부하면 적당한 수준이라고 생각한다고 쓰여 있기도 합니다. 몇가지를 써보면 이렇습니다.

 

파이썬 기본 문법과 객체지향 기초 개념(필수)

밑바닥부터 시작하는 딥러닝 혹은 그에 준하는 딥러닝 기초 이론(필수)

최소한 이 두가지 정도는 필요하다고 얘기하고 있습니다. 그 이유가 관련 이론과 함께 수학적인 메커니즘의 이해를 요하고 있기 때문입니다.

 

이 책은 프레임워크를 만드는 방식을 채용했습니다.

 

기술적인 이해와 이론이 워낙 어려우니 변수, 함수, 미분, 재귀, 반복문등을 만들어보면서 딥러닝 자체를 이해하는 시도인거죠.

 

아무런 이해가 없어도 책을 따라서 하나씩 하나씩 만들면서 이해하고 딥러닝 프레임워크가 어떻게 동작하는지 알게 되는 것이죠. 물론 중간 중간 이론적인 내용도 이해를 해야 합니다. 그렇지 않으면 책에서 만들라고 해서 만들었지만 결국 내것이 아니라 책이 시켜서 한 것밖에 되지 않기 때문이죠.

 

어쨌든 책에서 DeZero라는 프레임워크를 만들면서 딥러닝의 모델을 테스트하고 시험해보게 됩니다.

 

처음에 변수를 만들고 그 다음 함수를 만들고 미분 고차 미분등을 처리하는 프로세스를 만들어 신경망처리를 하고 딥러닝을 처리할 수 있게 됩니다.

 

정말 밑바닥부터 만든 딥러닝인것이죠.

 

딥러닝에 대해 잘 몰라도 전체를 만들고 나서 각각 하나 하나의 프로세스가 동작하는 과정의 이해를 하고 나면 딥러닝이라는 분야에 대해 한층 더 이해하고 습득할 수 있지 않을까 생각해봅니다.

 

이 책은 링크 에서 보실 수 있습니다.

 

Author: 사이토 고키 지음 / 개앞맵시 옮김

출판사: 한빛미디어

Score /5: ⭐️⭐️⭐️⭐️⭐️

 

최근에 딥러닝 프레임워크는 춘추전국 시대인것 같다.
처음은 텐서플로로 대동단결 할 듯 싶더니 파이토치가 점점 더 올라오고 현재는 비등비등한 듯하다.

 

구글트랜드 : 현재는 텐서플로와 파이토치가 비등비등하게 검색되고 있다.

 

그렇다면 왜 요즘 파이토치가 핫 한걸까?
파이썬 문법의 간단함과 강력한 산술라이브러리(Numpy)를 지원하기 때문이라고 생각한다.

나는 개발자로 파이썬은 간단하게 쓸 줄 알지만 요즘 많이들 얘기하는 머신러닝/딥러닝의 세계는 아직도 어지럽고 현기증이 난다.

 

나에겐 너무 어려운 딥러닝

 

 

그런 나에게 밑바닥부터 시작하는 딥러닝3 은 파이썬은 한줄기 빛 아니었을까? (물론 나에게만 빛일수도 있다...)
각설하고 이 책에 대해서 느낀점을 리뷰하자.

딥러닝 프레임워크를 기초부터 만들어 가면서 익힐 수 있습니다.

그동안 나는 개발자로 미리 만들어진 프레임워크를 어떻게 활용할지 API만 호출하는 형태로만 딥러닝을 간략하게 이해해 왔다.
이 책은 How 가 아니라 Why에 더 집중할 수 있게 해주는 책이다.

왜 Why가 중요할까?
물론 How 라는 접근도 중요하지만 어떻게 사용해야 하는지에 대한 절차만 기술되어 있다면 나중에 다른 기술이 나온다면 어떻게 되는 것일까? 새로운 How를 배우기 위해 시간을 사용해야 한다.

이 책은 물론 How도 설명하지만 Why를 통해서 개발자 또는 독자가 적절한 인사이트를 얻게 도와주려는 책이다.
내가 밑바닥에 대한 인사이트 왜 이렇게 해야하는지에 대해서 인사이트를 얻으면 다음에 다른 기술이 나와도 기본은 변하지 않으므로 쉽게 기술을 따라갈 수 있다.
이게 중요하다! 개발자 또는 IT 업계 엔지니어들은 평생 공부해야 하는 직군이라고들 한다. 엄청나게 많은 기술들이 내가 잠자거나 글을 쓰고 있는 이순간에도 쏟아지지만 내가 적절한 기준과 인사이트를 갖고 있다면 해당 기술의 밑바닥(?)은 비슷하거나 같은 경우가 많으므로 대부분의 상황에서는 내가 기술을 Follow하고 따라갈 수 있을 것이다.

그럼 다른 관점에서 책을 한번 보고 싶은데 초보자가 이해하기에는 괜찮을까?
생각보다는... 쉽지는 않다. 하지만 책을 읽으면서 느끼는 것은 필자가 독자에게 이렇게 이렇게 가자 라고 끌고 가려는 의지가 보이고 친절하게 한입 한입 떠 먹여주기 위해서 노력하는 느낌이 많이 든다.
입에 들어와 있는 음식을 삼키는 건? 독자의 몫이다.


그리고 책을 읽으면서 느낀 공통적인 부분은 적절한 예시와 그림이 탁월하다.
아래는 번역판이 기존 원판보다 더 나은 부분인 것 같다. 역자가 필요하다 생각 되는 부분을 추가해 놓았다. (역자님 굿!)

 

책 두께는 절대 얇지 않다. 그 말은 반대로 말하면 충분히 설명을 하고 있다는 말이 되기도 하고 많은 내용을 담고 있다는 의미이기도 하다.
이 책은 한번 쓰고 버리는 일회용 같은 개념이 아니다. 두고 두고 다시 보면 아 이렇게 할 수 있구나 하는 작은 관점으로 인사이트를 나에게 던져 줄 수 있는 그런 책이라고 본다.

 

절대 가볍지 않은 책

 

 

개인적으로 마음속에 담아둔 고사성어(?)가 있는데 '독서백편 의자현' 이라고 한다.

처음 읽었을 때 이해가 안가는 문장이나 내용이라도 여러번 읽으면 그 뜻이 자연스럽게 나타난다 라는 의미다.

나에게 이 책이 그런 책이 아닐까?

다른 분들도 이 책을 통해서 딥러닝의 매력에 빠졌으면 좋겠다.

밑바닥부터 시작하는 딥러닝3을 리뷰해보겠습니다. 

 

 

KakaoTalk_20201220_162207578.jpg

 

 1,2권을 이어서 이젠 모델 구현쪽에 포커스를 맞춘다고 생각했었는데, 3권은 '프레임워크를 직접 만드는' 내용들입니다. 

 

책의 도입부에서 체이너를 기초로 파이토치의 설계를 덧씌웟으며, 텐서플로 2.0부터는 이 설계 방식을 기본 모드로 채택한다고 합니다. 즉, 프레임워크가 어떤식으로 만들어지는지 공부할 수 있는 기회라고 생각합니다. 

 

KakaoTalk_20201220_162207858.jpg

 

5가지 목표를 향해서 총 60단계에 달하는 스텝으로 한 단계 한 단계 그 과정을 제대로 이해해서 진행한다고 하면 쉬운 여정은 아닙니다. 우선, 1,2권을 제대로 한 번 정독을 실습까지 마쳤다면 3권을 읽는데 큰 무리는 없다고 생각합니다. 

 

 

KakaoTalk_20201220_162208125.jpg

 

KakaoTalk_20201220_162208362.jpg

 

 

프레임워크를 만들 때 고려해야하는 변수와 이에 해당하는 값, 함수 심지어 메모리 관리까지 다룹니다. 이런 점들로 보아 파이토치를 공부해봤다면 확실히 더 도움이 될 것은 분명해보입니다. 

 

 

이렇게 단계를 밟아가면서 

 

 

KakaoTalk_20201220_162208627.jpg

 

KakaoTalk_20201220_162208904.jpg

 

KakaoTalk_20201220_162209232.jpg

 

 모델의 완성까지 나아갑니다. 

 

 

1,2권에서의 CNN, RNN, LSTM 만드는 것과 조금 많이 다르게 봐야합니다. 

 

이 책의 목표는 프레임워크를 만드는 거라고 생각합니다. 저희가 편하게 사용하는 케라스, 파이토치, 텐서플로우 2.0 등은 사실 이러한 과정이 함축되어 있습니다. 결국, 우리는 모델을 나중에 직접 구현해야 할 필요가 있는데요. 이렇게 프레임워크가 어떻게 디자인되었는지 이해한다면 논문을 읽고 모델의 구현하는데 큰 도움이 된다고 생각합니다. 

 

항상 몇 줄 안되는 API 로만 간단한 모델을 돌리고, 큰 모델들을 손대려면 막막했는데 이 책을 통해 조금은 내공을 더 쌓아서 능수능란하게 모델을 다룰 수 있게 될 것 같습니다. 

 

 

4권도 나올 것 같은데 이제 무엇을 다룰지 더 궁금해집니다. 딥러닝의 발전 속도는 워낙 빠르다보니 이 책의 시리즈는 계속 더 나올 것 같네요 :) 

 

※ 본 리뷰는 한빛미디어 리뷰어로 출판사로부터 제공받아 읽고 작성한 글입니다.

 

항상 감사하는 한빛미디어 ㅎㅎ

책만 받아놓고 서평만하고 제대로 공부는 안하고 있는 1인

그렇다!

밑바닥부터 딥러닝 시리즈 이게 3편까지 나오다니 와우...

도대체 밑바닥이 왜 3편까지 나왔을까? 이 책은 어떤 내용을 담고 싶어서 나왔을까??

이 책을 한줄로 표현하자면 밑바닥부터 딥러닝 프레임워크 제작

그동안 딥러닝에 대한 이야기를 해왔다면 이제는 프레임워크까지 작성하는 내용이다.

프레임워크에 대해서 검색해보면 여러가지 많은 내용들이 있지만

내가 보는 관점에서 프레임워크는 개발효율성 극대화의 목적이 크다고 본다.

프레임워크 공부는 스프링을 하면서 많은 고민을 하게 됬었는데

그건 딴 이야기라 넘어가고 이 책에 내용과 요즘 추세를 보자면

딥러닝 프레임워크가 많이 나왔고 그것 들이 어느덧 공통적인

특성이 생기고 비슷한 방향으로 개발되어가는 정착단계에 들어갔다고

저자는 이야기한다(난 모른다 모든걸 까본적도 없고 다 다뤄보지도 못했다)

실제로 텐서플로우, 케라스, 카페, 파이토치등... 내가 나열한것 보다 훨씬 많다.

이 프레임워크들을 사용하면 정말 간단하게 코드 몇줄만 작성하면 딥러닝을

할 수 있게끔 해준다.

이러한 딥러닝 프레임워크를 구현수준으로 상세하게 작성된 책이 이 책

밑바닥부터 딥러닝3라고 할 수 있다.

여기서 만들어진 프레임워크의 이름이 바로 deZero 이다.

책 제목과 어울리는 듯?

이러한 성격의 책을 딥러닝을 처음 공부하는 사람 보다는 어느정도

잔뼈가 굵은 사람들이 보는게 맞겠다 싶다.그러니까 난 이걸 왜 쓰고 있지?

딥러닝을 프레임워크 관점에서 밑바닥부터 제대로 구현하고 싶다!

그러한 엄청나신 분들이라면 이 책이 도움이 될 것이라 생각한다.

난 밑바닥부터 시작하는 딥러닝1이나 공부열심히 해야겠다

이 책은 한빛미디어로부터 제공받아 리뷰가 작성되었습니다.

어느덧 “밑바닥부터 시작하는 딥러닝 시리즈”의 세번째 책이 발간되었다. 밑바닥 시리즈는 딥러닝을 연구, 학습하는 이들이 이구동성으로 극찬하는 딥러닝 입문서이다.

개인적으로 알파고 등장 이후 2017년 처음으로 구매한 딥러닝 서적이 “밑바닥부터 시작하는 딥러닝” 인데, 이 책 덕분에 역전파의 늪에서 벗어날 수 있었기에 지금도 깊은 애정을 갖고 있는 책이다. 그때는 시리즈로 계속 나올줄 몰랐는데 결국 3권까지 나왔다.

이번 도서 3권은 어떤 밑바닥을 구현하게 될까? 그것은 바로 DeZero라는 이름을 가진 딥러닝 프레임워크 이다.밑바닥시리즈

텐서플로우나 파이토치 같은 훌륭한 딥러닝 프레임워크가 이미 존재하는데 굳이 프레임워크를 만들 필요가 있을까라는 의문이 생길 수도 있다. 그럼에도 이 책을 반드시 읽어야 할 이유는 무엇일까? 대표적으로 다음 2가지 이유를 들고 싶다.


  • SOTA 연구 및 개발 협업 연구 리터러시 능력
    최신 AI 기술을 활용하여 서비스를 개발하는 회사일수록 SOTA급 논문을 빠르게 이해하고 코드로 구현하는 능력이 매우 중요하다. 연구 결과를 구현체로 만드는 대표적인 사이트로 paperswithcode를 예로 들 수 있는데 최전선에 위치한 기술인 만큼 타인의 연구 결과를 빠르게 해석하여 구현하고자하는 서비스에 빠르게 녹일 수 있는 커뮤니케이션 능력 혹은 리터러시는 매우 중요한 능력이다.

    또한 스스로의 연구를 코드로 구현하고 검증하는 과정은 연구의 이해 수준 자체를 높일 수 있음과 동시에 다른이와의 의사소통을 향상시킬 수 있고 객관화 할 수 있다.

    연구 리터러시외에도 실제 서비스를 구현할 때의 커뮤니케이션도 중요한 부분이다. 뛰어난 아이디어가 있음에도 팀 내 수준 높은 코드를 이해하지 못해 민폐 코드를 작성한다거나, 미래에 예기치 못한 오류를 양산할 수 있는 가능성을 가진 코드를 주입한다면 향후 서비스 품질과 일정에 막대한 지장을 초래할 수 있다.

    본 도서를 통해 딥러닝 프레임워크 내부 구현 매커니즘을 확실히 이해한다면 실 서비스 개발에 있어 수준높은 협업을 통한 서비스 구현은 물론 다른 연구 결과를 빠르고 쉽게 분석하여 좋은 인사이트를 녹일 수 있다는 장점이 있다.

  • 프로젝트 설계-구현 능력 향상
    딥러닝 분야 외에도 이 책에는 파이썬을 활용한 대규모 프로젝트 설계 기법을 다루고 있다. 변수와 함수를 굳이 Variable, Function이라는 클래스로 추상화하여 출발하는데서 객체지향에 숨은 철학을 이해할 수 있다.

    Define-by-Run(동적 계산 그래프), 고차미분, Computational Graphs를 직접 구현하며 왜 개발자들이 텐서플로우 1.x 버전보다 파이토치에 열광했는지, 텐서플로우 2.x의 출현이 필연적이었는지 깨닫는 것은 신호탄에 불과하다.

    텐서플로는 버전 1.x에서 채택한 독자적인 프로그래밍 언어 Domain Specific Language (DSL)을 사용한 정적 계산 그래프 기능을 보며 잘못된 설계가 가져오는 여파를 대규모의 프로젝트에 참여하지 않아도 간접적으로나마 직접 눈으로 확인하고 실감할 수 있게 된다.

    이를 통해 동적 Define-by-Run 방식(텐서플로우의 경우 Eager Execution이라 지칭) 매커니즘과 자동 미분의 매커니즘 그리고 이를 지원하기 위한 설계 기법을 배울 수 있는데 이는 다른 서비스를 구현할 때도 활용할 수 있는 메타 설계기법으로 활용할 수 있을 것이다.핵심 클래스들의 관계도

    자동 미분, 계층 컬렉션, 데이터셋, 옵티마이저 각각의 Layer와 클래스를 분리하는 관점이나 파이썬을 Pythonic하게 활용하는 방법부터 GPU 활용 및 속도, 메모리 성능 개선 측면에서도 배울 것이 많기에 굳이 딥러닝이 아니더라도 어떤 서비스를 설계 및 구현하는데 필요한 프로젝트 능력을 크게 향상 시킬 수 있다.


본 도서를 읽으며 느꼈던 위 2가지 장점 외에도 단 한 권의 책으로 딥러닝 프레임워크를 만들 수 있다는 사실에 적잖이 놀랐다.

단 2개의 클래스 Variable, Function의 추상화에서 출발하여 역전파, Define-by-Run(동적 계산 그래프), 고차미분, Computational Graphs, Layer 및 Optimizer 등의 확장성을 부여하며 60단계 과정을 따라 하다 보면 어느덧 CNN, RNN, LSTM 모델을 지원하는 딥러닝 프레임워크 DeZero를 만들 수 있게된다.

특히 어떤 식도 미분 가능하게 모듈화한 설계가 인상적이었으며, 5개고지 60단계별로 구현한 결과를 시점별로 실행하며 눈으로 확인할 수 있어 보다 쉬운 이해가 가능했다.

스스로 역전파를 완전히 이해하고 있다고 생각했었는데 3고지에서 역전파의 역전파를 구현하면서 구석에 남아있는 무지의 영역을 확실히 깨칠 수 있는 계기를 얻을 수 있어 만족스러웠다.

책의 구성과 전달력 또한 일품이다. 독자 의식의 흐름을 꿰뚫기라도 한 듯 궁금한 질문이 생길때마다 저자의 답변이 등장한다. 독자의 마음을 어떻게 이렇게 잘 들여다 볼 수 있을까? 저자의 뛰어난 예측 공감각력(?)에 감탄하는 일련의 과정이었다. 고수들의 내공을 이보다 쉽고 편하게 배우긴 어려울 것 같다. 전편 명성 그대로 독자 의식을 꿰뚫 듯 궁금증이 생길 때마다 친절한 설명이 등장한다.

설계에 녹아있는 철학은 기술을 넘어 예술의 영역에 가깝다. Layer, Optimizer, DataLoader 등 앞서 설명한 설계 철학 외에도 구체적으로 계산 그래프의 위상이 어떤 형태일지라도 역전파가 가능하도록 설계한 부분은 감탄을 금할 수 없었다.

개인적으로는 DeZero를 만든 후 paperswithcode 사이트를 비롯 연구 결과의 코드 구현체가 전보다 쉽게 읽혀 매우 신기했다. 연구의 철학이나 아이디어를 생생히 느낄 수 있는 또 다른 시야를 얻은 것 같아 특히 만족스러웠다.

Eager Execution, Computational Graphs를 직접 구현하며 TensorFlow2.0 등장 등의 트렌드를 알 수 있었고, 자주 사용하지 않던 프레임워크에 대한 자신감 또한 큰 수확이었다.

텐서플로우 1.x에서 누구나 느꼈던 불편함과 어색함이었던 PlaceHolder, Session분기, Define-and-Run 방식에서 비롯된 계산 그래프 수행의 비효율성 등이 왜 발생했는지 그래서 올바른 설계가 왜 중요한지 나아가 파격적인 문법 변화에 따른 리스크를 감수하면서까지 텐서플로우 2.x이 등장할 수 밖에 없었던 필연을 구체적으로 실감할 수 있었다.

그 외 파이썬을 파이썬답게 활용하는 방법부터 GPU 활용 및 속도, 메모리 성능 개선 측면에서도 배울 것이 많았다.

읽는 내내 머리속에 계속 느낌표가 떠오르는 명작 중의 명작이었다. ML/DL 엔지니어분들은 물론 IT 서비스를 설계, 구현하는 분들께도 강력하게 추천하고 싶은 책이다.




[한줄평]

코드 3줄로 시작해서 60단계까지 간다면 당신은 바로 딥러너입니다.


[목차]

제1고지 미분 자동 계산

제2고지 자연스러운 코드로

제3고지 고차 미분 계산

제4고지 신경망 만들기

제5고지 DeZero의 도전



[이 책의 특징]

-딥러닝 기초 이론을 구현 관점에서 바라보며 이해한다.

-현대적프레임워크의 동작 원리를 이해한다.

-효율적인 파이썬 프로그래밍 방법을 익힌다.

-규모 있고 체계적인 소프트웨어를 점진적으로 만들어가는 경험을 쌓는다.

[대상 독자]

- 밑바닥부터 시작하는 딥러닝 혹은 그에 준하는 딥러닝 기초 이론을 학습한 분

- 파이썬 기본 문법과 객체지향 기초 개념을 학습 한 분

- 2~3년 이상의 파이썬 혹은 다른 객체지향 프로그래밍 언어 개발 경험자

- 파이토치 혹은 텐서플로2.0 입문서 수준의 예시 코드를 경험한 분


[서평]

밑바닥부터 시작하는 딥러닝이 벌써 3편까지 나왔네요. 1편에서는 합성곱 신경망과 이미지처리, 2편에서는 순환 신경망과 자연어 처리 그리고 3편에서는 동적 계산 그래프와 딥러닝 프레임워크를 중점 적으로 다루고 있습니다.


밑바닥부터 시작하는 딥러닝의 가장 좋은 점은 처음부터 거대한 프레임워크로 시작 하는것이 아니라 hello world로 시작해서 각 단계별로 조금씩 살을 붙여서 최종 단계로 완성해가는 구성으로  RPG게임 같은 레벨업? 같은 구조라 볼수 있다. 이번 책에서는 크게 다섯 고지로 나누고 있다.


제1고지에서는 DeZero의 기반을 마련합니다. 간단한 문제만 취급하고 최소의 시간으로 미분을 자동으로 구하는 구조를 만듭니다.

제2고지에서는 DeZero를 사용하는 코드가 더 자연스럽게 보이도록 해줍니다. 제2고지를 정복할 무렵에는 평범한 파이썬 코드로 DeZero를 이용할 수 있게 됩니다.

제3고지에서는 2차 미분을 계산할 수 있도록 DeZero를 확장합니다. 이렇게 하려면 ‘역전파의 역전파’가 가능하도록 해야 합니다. 이구조를 이해하면 DeZero의 새로운 가능성에 누뜨게 될 것입니다.

제4고지에서는 DeZero를 신경망용으로 정비합니다. 그 결과 Dezero를 사용하여 손쉽게 신경망을 구축할 수 있게 됩니다.

마지막 제5고지에서는 GPU 대응, 모델 저장과 복원 등 실전 딥러닝에 꼭 필요한 기능을 추가합니다. 또한 CNN, RNN등의 발전된 모델도 다룹니다. 딥러닝 응용을 다루는 이 주제들은 중요하면서도 평범한 수단으로 풀기 어려운 문제들입니다. 그러나 DeZero라면 간단한 코드만으로 해결할 수 있습니다.

이책에서 DeZero라는 오리지널 프레임워크를 처음부터 만들면서 작지만 강력한 프레임워크를 60단계로 나눠서 완성해 나갑니다. 그 단계에 파이토치, 체이너, 텐서플로 등 많이 사용하는 프레임워크의 지식도 배우게 됩니다. 이책에 말하고자 하는것은 아마도 텐서플로, 파이토치등 기존에 만들어진 프레임워크를 사용하는 수준에서 머무는 것이 아니라 처음부터 프레임워크를 만들어 가면서 딥러닝 이라는 분야를 더 넓게 바라보는 법을 터득 하게 되는 것이 진정한 딥러닝 교육의 가치라고 생각합니다. 여러분도 이책을 통해서 좀더 넓은 시야를 갖도록 해보세요





오늘은 밑바닥부터 시작하는 딥러닝 3을 리뷰하려고 한다. 밑바닥 시리즈는 딥러닝을 공부하는 사람이라면 무조건 읽어본다는 시리즈이다. 그만큼 진짜 밑바닥부터 시작하기 때문에 하나하나씩 다 구현해가면서 딥러닝의 원리를 이해할 수 있기 때문이다. 이번에도 좋은 기회에 밑바닥 딥러닝 3판을 얻게 되었다.

 


 

 

1판은 딥러닝 기초, CNN, 2판은 RNN, LSTM이었다면 3판은 "pytorch 비스무리한거 만들기" 라고 볼 수 있다. 직접 딥러닝 프레임워크를 만드는 것을 다룬다.

딥러닝 프레임워크중에 가장 유명한 것은 아무래도 텐서플로우와 파이토치를 들 수 있는데, 텐서플로우 2.0 버전부터는 파이토치스러운 API로 디자인이 변경되었다.

그래서 이 책에서도 파이토치 스러운 디자인으로 직접 딥러닝 프레임워크를 만든다. 이름은 DeZero. 책의 도입부분에 이 책에서 만들 프레임워크에 대해서 소개해준다.

 

파이토치같은 딥러닝 프레임워크가 주목받았던 큰 원인은 Autograd 있을 것이다. Autograd는 미분을 자동으로 수행해주는 것이다. 미분이 자동이라는 말은, 특정 수식에 대한 미분을 프레임워크 차원에서 미분식을 구해준다는 것이다. 그래서 직접 미분식을 프로그래밍하지 않아도 된다. 딥러닝에서는 기본적으로 미분을 적극 활용하기 때문에 프레임워크단에서 지원하는게 아주 끝내주는거다.

 

 

프레임워크를 만들때 변수에 해당하는 값, 함수, 연산자 등등을 직접 만들게 되는데 여기에서 파이썬에서 발생할 수 있는 메모리 관리 같은 부분도 꼼꼼히 챙겨준다. 크으.. 정말 좋은 책이다. 이 책은 총 60단계의 스탭을 통해 프레임워크를 만들어간다. 5개의 고지가 있는데, 한 고지를 넘어갈때마다 정말 도전해볼만하며 재미있는 책인 것 같다. 하지만 이 책을 제대로 따라가려면 밑바닥 딥러닝1권을 따라해봤거나 파이토치를 써본적이 있거나 딥러닝에 대한 지식을 기본적으로 알고 있어야 보기에 힘들지 않다.

아무튼 매우 흥미롭고 재미있는 책이다.

한국에서 가장 유명하지 않을까 생각하는 딥러닝 입문서(?)의 신작입니다.

 

3년 동안 1~2년 걸쳐 출간된 [밑바닥 시리즈] 3번째 책입니다. 세번째 책이지만 밑바닥이라는 이름답게 딥러닝의 기초를 다루기 때문에 1권이 나올 때 딥러닝을 공부하기 시작한 사람에게는 굳이 필요한 책은 아니라고 생각합니다.

 

 

그렇다고 세번째 책인만큼 딥러닝이 완전히 처음인 사람을 위한 책은 아닙니다.

 

 

그 이유는 이 책은 딥러닝 패키지를 파이썬으로 직접 만드는 것이 주 내용이기 때문입니다.

밑바닥부터 시작하는 딥러닝이라는 책이 어떤 프레임워크(텐서플로,토치,카페) 등에 의존하지 않고 코드를 보여주는 책이었는 데, 이번에는 아예 직접 프레임워크를 구현해보는 것이 목적입니다. 

 

 

저는 이 책이 처음부터 끝까지가 파이썬 코드를 작성해서 딥러닝의 기능을 구현함으로써, 입문서를 읽었더라도 쉽게 이해하기 힘든 구조인

딥러닝의 주 요소 하나하나를 이해하기 위한 책이라고 느꼈습니다.

 

 

이런 이유로 이 책은 어느 정도는 기초 지식이 있을 것을 기대하고 모든 부분 설명하지는 않습니다.

 

즉 적어도 밑바닥 1권을 읽었다고 가정하고 쓰여진 책이라고 할 수 있습니다.

 

 

이 책의 장점은 이론이나 딥러닝 라이브러리를 사용하는 것만으로는 자칫 블랙박스가 되어 버리는 딥러닝 전체 과정을 이해하는데 도움을 준다는 것입니다.

 

또한 파이썬으로 일일히 코딩을 해서 모듈을 만드는 것이 생각 외의 장점이 있는 것 같습니다.

 

많은 분들이 파이썬 입문 수업을 받으시면 아마 클래스까지 배우게 되는 데 독학하는 분들은 많이 사용해도 함수 정도로, 거의 그 이상은 다루지 않은 채 잊어버리는 경우가 대다수라고 생각합나다.

 

 

해당 책에서 파이썬으로 함수부터 시작해서 모듈을 만들고, 이를 개선해나가는 과정을 통해서 오히려 딥러닝보다 파이썬프로그래밍에 대해서 잘 알 수있는 기회가 될지도 모릅니다.

 

 

단점은 처음부터 끝까지 모든 내용이 이어지기 때문에 읽을 때마다 햇깔리는 부분이 많아서 고생했습니다.

책만으로 이 책을 읽기 힘들고, 적어도 자료 코드를 봐야 이해가 될 것이라고 생각합니다.

처음 읽을 당시엔 "내가 프레임워크까지 알 필요가 있을까?" 라고 생각하였으나 읽을면서 프레임워크의 동작 원리를 이해할 수 있었고, 이를 통해 패키지, 라이브러리들의 목적과 효율적인 프로그래밍에 대한 이해력을 높일 수 있었습니다. 책의 설명이 목적별로 잘 구분되어 있어 파이썬 개발시 옆에 두고 참고용으로 활용하기 좋을 것 같습니다.

1.png

 

딥러닝을 개발하기 위해서 파이썬을 공부하고 그러고 나서 텐서 플로어 우나 파이토치와 같은 프레임워크를 사용하게 됩니다.

처음에는 파이썬으로 하나하나 실제로 구현을 해보다가 프레임워크의 편리함으로 인해 어떻게 구현되는지는 잊게 됩니다.

 

프레임워크에 너무 익숙해지다 보면 프레임워크에 종속된 개발자가 되게 되고, 그 내부의 구현 원리는 모른 채 프레임워크에서 제공하는 기능만 사용하게 됩니다.

 

이 책의 시리즈는 1, 2편 다 읽어 보고 3편에 대한 기대감이 컸습니다.

그러던 중 3편이 간단한 프레임워크를 구현하는 내용이라는 것을 알고는 솔직히 그런 생각을 했습니다.

"텐서 플로어 우나 파이토치 같은 프레임워크를 쓰면 되는데 굳이...."

 

그래도 한번 보자는 생각에 이 책을 보게 되었는데, 가지고 다니면서 보려고 이북까지 구입을 했습니다.

 

한 마디로 제가 느끼는 이 책의 장점은 다음과 같습니다.

 

1. 딥러닝 프레임워크의 원리를 이해한다.

2. 효율적인 프로그래밍 방법을 익힌다. (파이썬뿐만 아니라.)

 

딥러닝을 공부하시는 분이라면 효율적인 개발을 위해서는 읽어 봐야 할 책이라 생각합니다.

 

2.png

 

 

"이 글은 한빛미디어 '나는 리뷰어다.' 서평단 자격으로 작성된 글입니다."

 

20201216_111032_HDR.jpg

 

오늘 소개할 책은 Deep Learning from Scratch 밑바닥부터 시작하는 딥러닝3 입니다.

 

 

바로 이 책인데요.

 

밑바닥부터 시작하는 딥러닝 시리즈 3번째 책입니다.

 

관련도서를 보면 밑바닥부터 시작하는 딥러닝, 밑바닥부터 시작하는 딥러닝2가 등록되어 있습니다.

 

 

책은 DeZero라는 딥러닝 프레임워크를 구현하는 과정을 소개하는 내용입니다.

 

DeZero라는 딥러닝 프레임워크를 통해 어떻게 프레임워크가 구현이 되는지를 소개해 줍니다.

 

  

책 추천사에서 말하는 것처럼 프레임워크가 어떻게 만들어 지는지를 간접적으로 체험할 수 있도록 구성이 된 책입니다.

 

딥러닝이 아니더라고 파이썬 프로그램에 관심있는 독자에게도 도움이 될 내용이 참 많은 책입니다.

 

 

파이토치, 체이너, 텐서플로, 카페 등 다양한 프레임워크가 발전하는 가운데 프레임워크에 대한 관심을 갖고 있는 독자에게 진짜 프레임워크들은 어떤 구조를 갖추고 있고, 어떤 원리로 움직이는 것일지 설명해 주는 책입니다.

 

 

DeZero 디제로라는 이름을 짓고 이 프레임워크의 방향을 정했는데요.

 

그 방향이 오리저널입니다. 

 

다양한 형태의 프레임워크에서 공통점을 짚어 교육 측면을 강화한 미니멀 프레임워크가 바로 디제로입니다.

 

 

Deep Learning form Zero 

 

특징은

 

1. 미니멀리즘 - 이해하기 쉽게 만들기

 

2. 순수 파이썬 - 파이썬으로만 구현

 

3. 현대적인 기능 - Define-by-Run 방식

 

 

 

소스는 

 

https://github.com/WegraLee/deep-learning-from-scratch-3

 

 

 

WegraLee/deep-learning-from-scratch-3

『밑바닥부터 시작하는 딥러닝 ❸』(한빛미디어, 2020). Contribute to WegraLee/deep-learning-from-scratch-3 development by creating an account on GitHub.

 

github.com

 

  

Deep Learning from Scratch 밑바닥부터 시작하는 딥러닝3 차례

 

  

 

  

Deep Learning from Scratch 밑바닥부터 시작하는 딥러닝3  책은

 

3줄 코드에서 출발해서 60단계까지 진행이 됩니다.

 

사실 쉽지 않은 내용이라, 초보자가 보기에는 어려울 것 같고요.

 

이쪽 분야에 관심있는 초급 이상의 프로그래머와 인공지능에 관심있는 독자에게 추천되는 책입니다.

최근들어 인공지능,딥러닝에 대한 인기가 갈수록 높아지자 그와 관련된 책들이 무척 많이 나오고 있다. 나도 그 인기를 실감하며 많은 책을 보면서 관심을 가지고 있는데, 유독 눈에 띄는 시리즈의 책이 있다. 바로 <밑바닥부터 시작하는 딥러닝 시리즈>이다. 보통 한권안에 모든걸 끝내려는 딥러닝 책들과는 다르게 벌써 3권이나 나오면서 차근차근 가르치고 있는 이 책이 무척이나 신기한데, 시리즈가 계속 나오면서도 주변에 그 인기도 나름 있는 터라 과연 그 인기 비결이 뭔지 궁금해 최신권인 3권을 한번 펼쳐보게 되었다.

 

책 앞에서 부터 각양각색의 전문가들의 추천사가 이어짐과 동시에 목차가 눈에 들어왔다. 목차는 챕터가 아니라 독특하게 다섯 고지, 60단계라는 이름으로 세부화하여 진행하고 있었다. 엄청나게 세부적으로 나뉜것도 독특한데, 고지, 단계라는 이름을 붙이고 있어 뭔가 게임하는 듯한 느낌이 든게 무척 신선하게 느껴졌다.

 

책 소개를 보니 DeZero라는 오리지널 프레임 워크를 만들면서 개발을 진행한다고 적혀있었다. 기존의 딥러닝 책들은 다양한 API를 실습하는 형태로 진행하고 있다고 생각했는데, 물론 이 책도 API나 프레임워크를 일부 사용하지만 이 책만의 독자적인 프레임워크를 사용해서 실습환경을 구축한다는 것을 보고서 얼마나 책을 만들기 위해 많은 정성을 쏟아부었는지라는게 실감이 났다.

 

물론 이런 실습자료에서 공을 들였다고 전부가 아니라 생각해 책의 내용도 차근차근 읽어보았는데, 설명이 무척 잘 되어있다고 느낀 부분이 엄청 많았다. 책 이름 그대로 밑바닥부터 원리 하나하나 사용되는 수학이론 하나하나 설명하면서 그에 대한 실습을 보여주고 있어 이론부터 실습까지 탄탄한 그야말로 정석적인 코스 그대로 밟고 있어 좋았다. 그렇다고 엄청 어렵거나 수준높게 공식이 막 나오고 그런 정신없는 내용이 아니라 정말 단단하게 지식을 다지기에 필요한 내용을 잘 정리한 느낌이라 무척 도움이 되는게 많이 보였다.

 

아무래도 내용의 수준이 있다보니 초보자가 본다기 보다는 어느정도 파이썬에 익숙한 사람이 보는것이 맞겠단 생각이 든다. 하지만 그렇지 않더라도 딥러닝에 무척 관심이 많아 배워보길 원하는 사람이라면 이 책이 가장 적합하단 생각이 든다. 딥러닝을 공부하는 것을 이제 막 시작하려는 사람, 본격적으로 배우고 싶은 사람들은 이 책의 시리즈를 한번 구해서 정독하며 공부해보기를 권하고 싶다.

 

 

밑바닥부터 시작하는 딥러닝 3

 

 

밑바닥부터 시작하는 딥러닝3은 다음과 같이 직접 딥러닝프레임 워크를 파이썬을 이용해서 만들어 봅니다.

이렇게 딥러닝 프레임워크를 구현하다 보면 밑바닥부터 시작하는 딥러닝 시리즈를 읽으면서 기초이론을 접목해서 직접 실행해 보면서 어떤 식으로 딥러닝이 동작하는지를 파악할 수 있게 됩니다.

 

밑바닥부터 시작하는 딥러닝3편에서는 Step1~60 까지 단계별로 구성이 되어 있습니다.

60단계는 다음과 같이 다섯고지로 나눌 수 있으며 여기서 만드는 딥러닝 프레임 워크는 DeZero 프레임워크입니다.

 

 

 

텐서플로 2.0부터는 이 책에서 설계방식이 DeZero 와 같은 방식을 채택했으며 이러한 프레임워크의 특징은 다음과 같습니다.

1. 미니멀리즘

- 이해하기 쉽게 만들기 : 아래 몇 단계의 코드를 확인해 보시면 파이썬을 조금만 다뤄 보셔도 금방 이해 할 수 있습니다.

2. 순수 파이썬

- DeZero는 순수 파이썬만으로 구현하였습니다. 제가 만들어 본 코드 역시 구글에서 제공하는 colab을 이용하여 코딩 테스트를 해 본 결과물입니다.

3. 현대적인 기능

- Define-by-Run 방식의 프레임 워크로 Define-by-Run이란 딥러닝에서 수행하는 여러 계산을 실행 시점에 연결 하는 구조를 말합니다. 

 

책의 내용을 살펴 보면 다음과 같습니다.

Step1,2 변수와 함수 만들어 보기

DeZero 에서 사용하는 변수와 함수를 만들어 봅니다.

step3,4 함수연결 및 수치미분

미분은 다양한 과학기술 분야에 사용됩니다. 특히 딥러닝을 포함한 머신러닝의 여러 분야에서 중추적인 역할을 합니다. 딥러닝 프레임 워크는 미분을 계산하기 위한 도구 입니다.

 

y=x^2 에서 x의 값이 2.0 일때 4.0 이 되어야 하는데 오차가 발생하는 것을 확인할 수 있습니다.

 

여기서 역전파가 구세주로 등장을 하게 되는데요~

Step5 : 역전파의 이론과 계산그래프로 살펴보기

Step6 : 역전파의 구현

Step7 : 역전파의 자동화

Step8 : 재귀에서 반복문을 이용한 구현

Step9 : 함수를 더 편리하게 사용하기

Step10 : 미분 자동계산 함수의 테스트

이렇게

제1고지에서 미분 자동계산 프로그램을 구현해 보게 됩니다.

제2고지는 함수를 사용하기 쉽도록 개선하며 복잡한 계산이 가능하도록 개선하며 패키지로 만들어 봅니다.

제3고지에서는 고차미분(고차미분이란 2번 이상 미분한것)의 원리와 고차미분을 계산할 수 있도록 DeZero를 확장하여 파이토치와 텐서플로 등 현대적인 딥러닝 프레임워크에서 사용하는 고차미분을 자동으로 계산하는 기능을 구현해 봅니다.

제4고지에서는 스칼라(한개의 값)만을 처리 한것을 텐서(행렬)를 이용한 신경망 만들기에 도전을 합니다. 제 4고지가 끝나면 딥러닝 프레임 워크라고 불러도 좋을 만큼 훌륭하게 성장해 있는 프레임 워크를 만나 보실 수 있습니다.

제5고지에서는 GPU를 활용하거나 모델을 외부파일로 저장하는 등의 새로운 기능을 추가 합니다. 여기서는 신경망(CNN)과 재귀신경망(RNN)등을 구현해 봅니다.

(step60 RNN을 활용한 시계열 데이터 처리와 이것을 활용해서 LSTM 구현까지)

소스코드는 깃허브에서 다운로드 해서 확인해 볼수도 있지만(github.com/WegraLee/deep-learning-from-scratch-3)

한땀 한땀 코딩을 하면서 그 의미를 정확하게 이해하는 것이 더 좋아 보이네요~

 

 

 

이 책을 읽고

태어날때 부터 눈이 보이지 않는 장님이 있었습니다.

장님에게 아무리 코끼리에 대해 설명을 해 주고 그림을 그리게 해도 장님은 코끼리를 본적이 없어서 항상 엉뚱하게 그림을 그립니다.

코끼리 코는 길다고 아무리 설명을 해 주어도 본적이 없는 장님은 항상 자신의 코보다 조금 더 길게 그립니다.

하지만 이 장님에게 코끼리의 모형을 만들어서 만져보게 하고 형상을 알려 준다면 코끼리의 형상을 좀더 구체적으로 알 수 있지 않을까요?

 

밑바닥부터 시작하는 딥러닝 시리즈3은 이러한 코끼리의 실체를 확인시켜 주는 책이 아닌가 라는 생각이 들었습니다.

Step1 에서 단 3줄에서 시작하는 코딩으로 한단계 한단계 밟아 가다 보면 어느 순간 텐서플로와 같은 딥러닝 프레임 워크를 내 손으로 만들어 놓은것을 확인 하실수가 있을것 같네요.^^

 

한줄 한줄 코딩을 하면서 이해 되지 않던 딥러닝의 실체를 하나 하나 깨닫게 되는 신비로움을 경험해 볼수 있는 책이라고 말씀드릴 수가 있을것 같네요.^^

 

아직 딥러닝의 원리를 이해하지 못한 독자라면 밑바닥부터 시작하는 딥러닝 시리즈 1과 밑바닥부터 시작하는 딥러닝 시리즈3 을 가지고 직접 코딩을 하면서 코딩이 이해가 되지 않으면 시리즈 1을 찾아 보시고 원리가 이해 되지 않으면 코딩을 하면서 반복하다 보면 딥러닝의 원리가 어느 순간 자신의 것이 되어 있지 않을까 생각해 보게 됩니다.

 

손꼽아 기다리던 '밑바닥부터 시작하는 딥러닝' 시리즈의 세번째 책...


앞서 출간된 '밑바닥부터 시작하는 딥러닝' 시리즈 1,2는 아마도 국내에서 가장 많이 팔린 딥러닝 책들이라 해도 과언이 아닐 것이다.

소위 요즘 머신러닝/딥러닝 하는 사람 대부분 시작을 이 책들과 하지 않았을까? 

그리고 이제 막 입문하는 사람들이 물어보면 가장 먼저 추천해주는 책도 이 책이 아닐까 싶다, 나도 표지가 너덜너덜 하도록 보고 또 보고 했으니...

 

이 시리즈의 장점은 뭐니뭐니 해도 기본 개념과 원리를 프레임워크 사용을 최소화 하고 직접 구현하며 배울 수 있다는 것이다, 최근 몇년간 출간된 책들중 입문서로 텐서플로나 파이토치, 케라스 같은 것 사용안하고 넘파이 정도만을 사용해서 한땀한땀 만들어가며 배우는 책으로 이만한게 없지 싶다.


그리고 그 세번째 이야기, 딥러닝 프레임워크...

1편의 딥러닝 이론과 구현, 2편의 순환 신경망과 자연어 처리 그리고 이번에는 딥러닝 프레임워크라... 방향을 너무나 잘 잡은 것 같다.


머신러닝/딥러닝을 공부하면서 나도 언젠간 좋은 이론과 모델 그리고 프레임워크를 만들어 이쪽 생태계에 contributor가 되보고 싶다는 생각을 해봤는데 최신 트렌드 따라가기도 버거운게 현실이긴 하지만 나는 그런 꿈을 가지고 있다.


기존에 봤던 책중에는 밑바닥부터 시작하는 딥러닝 만큼이나 입문서로 좋다고 생각하는 '그로킹 딥러닝'이란 책에서 한 챕터정도 딥러닝 프레임워크를 만드는 내용을 소개한 적이 있었던것 같은데, 아직 그럴만한 여력이 없긴 하지만 그 밖에 다른 곳에서는 아직 접해보지 않은 주제이긴 했다.

newprivatemarine.tistory.com/88?category=712862

 

[서평][IT개발][딥러닝] 그로킹 딥러닝 / 한빛미디어

인공지능 분야가 한때 침체기를 걷다가, 기술적 진보를 통해 긴 부진의 터널을 뚫었고 몇년전 알파고를 기점으로 확실히 붐업이 되었다, 오히려 요즘은 딥러닝이 붙어 있으면 살짝 진부할 정도

newprivatemarine.tistory.com

막연한 기대와 꿈 그리고 어디서부터 시작해야 할지 막막하기만 한데, 이 책은 그런부분에 있어 할 수 있다는 용기와 영감을 주는 책이라 감히 말해본다.


이 책은 자신만의 딥러닝 프레임워크나 딥러닝 모델을 효과적이고 세련되게 구축할 수 있는 기본기를 다지는데 매우 유용한 정보와 스킬을 제공한다.

한편으로 기존 프레임워크를 이해하고 더 잘 활용할 수 있는 계기를 만들어주기도 한다.


책은 잘 만들어진 프레임워크로 가기 위한 5가지 목표를 총 60단계에 걸쳐 하나하나 만들어가는 여정으로 구성되어 있다.

각 단계를 3~4장 정도의 분량으로 부담스럽지 않게 구성해놨다, 각 단계를 연속성을 가지며 딥러닝 프레임워크라는 최종 목표를 향해 필요한 개념 하나하나 그리고 직접 구현하고 개선하는 과정을 통해 프레임워크 내면에서 벌어지는 일들을 이해할 수 있다.


마치 딥러닝 프레임워크라는 토이 프로젝트를 애자일(스크럼) 방식으로 스프린트마다 점진적으로 만들어가는 구성은 무겁지 않으면서도 책장은 술술 넘기게끔 만든다.


편집도 그림과 소스 위주로 깔끔하고, 아무래도 딥러닝이 이미지 처리 관련 내용이나 예제가 많다보니 요즘 딥러닝 책들의 트랜드가 컬러 인쇄가 기본인데 이번 3권도 이러한 추세를 따랐다, 하단 2권까지만 해도 흑백이었는데...


딥러닝 프레임워크를 만들어가는 과정을 통해 딥러닝 기본 개념과 원리를 다시 한번 이해하고 구현해볼 수 있고, 다른 좋은 프레임워크의 사상과 구조를 더 잘 이해할 수 있어 시리즈 방점을 찍는 것 같다.


혹 4권이 나올까? 아님 1, 2권 개정판이 나올까? 저자의 다음 행보가 벌써부터 기다려진다.


※ 본 리뷰는 IT 현업개발자로서 한빛미디어 리뷰어로 출판사로부터 제공받아 읽고 작성한 글입니다.

 

  • "야, 까먹을 게 따로 있지 어떻게 그걸 까먹냐"
    • 일전에 한 선배가 나를 타박하면서 했던 말.
    • 선배는 이해할 수 없는 내 망각의 대상은 군번이었다.
    • 26개월 현역으로 군대를 다녀온 선배에게 군번은 "자다가도 툭 치면 나와야 되는", 글자 그대로 자신의 정체성(ID = identity)이었겠지만 전문연구요원으로 논산 훈련소에서 4주만 보낸 내게는 대체 입사 지원서에 이걸 왜 써넣어야 하는지 모를 성가신 행정코드일 뿐이다.
  • 내게도 20년 가까운 시간이 지났지만 잊혀지지 않는 것이 있다.
    • 지금은 데이터를 다루지만 석사 시절엔 실험을 했다.
    • 참 멋진 선배가 만든, 이온 밀링을 포함해 6가지 소재를 스퍼터링하여 박막을 만드는 장비가 있었는데 이 장비를 함께 사용해서 시료를 만들었을 뿐 아니라 나사 하나하나를 풀고 조이며 업그레이드하고, 수리하고, 길게는 이틀씩 베이킹을 하면서 온도를 체크했다.
    • 아무도 없는 새벽에 장비를 꼭 안아주면서 우리 힘내보자 한 적도 있지만 아쉽게도 당시에 좋은 성과를 내놓지는 못했다. 표현은 못했지만 선배에게 빚을 지고 갚지 못한 것 같아 아직까지 미안하다.
    • 그러나, 성과와는 별개로 나사를 조일 때 짓눌러지는 개스킷의 감각, 장마철엔 습도때문에 실험이 제대로 안돼서 서운해하던 감정은 그대로 남아서 다시 하라면 할 수 있을 것 같다.
  • 반면, 이런 느낌이 없어서 아쉬운 것도 있다.
    • 박사 2년차에 시뮬레이션으로 분야를 옮겼다.
    • 내 적성이 실험보다는 책상물림쪽인지 성과가 제법 괜찮게 나왔다 - 2008년 당시 박사 디펜스때 1저자 5편, 논문을 낼 수 없는 사기업에 들어간 뒤에도 미리 뿌려놓은 씨를 후배들이 틔워준 것까지 해서 40여편의 논문이 나왔다.
    • 실적으로 치면 결코 나쁘지 않지만 다른 사람이 짠 코드를 사용하기만 했지 코드를 건드리지 못했다
    • 이 코드를 만든 분들은 코드를 이리저리 수정하며 자기 아이디어를 반영해 연구를 하고 있는데, 나도 비슷한 아이디어는 많았으나 포트란, C, C++이 복잡하게 얽힌 유한요소해석(FEM: Finite element method) 코드를 손댈 능력이 되지 못해 다른 아이디어만 적용했다.
    • 그 때 코드의 밑바닥을 건드려봤다면 - 그렇다고 더 좋은 논문을 썼을 것이라는 보장은 없지만 - 더 뿌듯하게, 더 즐겁게 연구를 하지 않았을까 하는 상상만 한다. 
  • 딥러닝이 알파폴드2로 또 한번 깃발을 꽂았다.
    • 알파폴드는 딥러닝으로 3차원 단백질 구조를 예측하는, 구글이 만든 프로그램이다. 
    • 2019년 12월에 열린 단백질 구조 예측 대회(CASP) 템플릿 프리 구조 예측에서 43개 구조 중 25개를 정확히 예측하여 1위를 기록했는데, 2위는 미시간대 연구팀으로 고작 3 문제에서 가장 높은 점수를 받았고 대다수의 연구진들은 0점이었다. 그만큼 어려운 문제이고, 왜 새로운 병은 자꾸 생기는데 신약 개발은 늦는지에 대한 일면의 답이 될 수 있다.
    • 그리고 어제, 알파폴드2가 사고를 쳤다. 
    • 작년보다 훨씬 더 고도화된 성능으로 인간계와의 차이를 더 크게 벌렸으며, 이 분야에 15년간 몸담은 한 전문가의 말에 따르면 "단백질 염기 서열만 알면 X-ray, NMR, Cryo-EM 실험을 할 필요 없이 거의 정확하게 구조를 얻을 수 있다는 것을 의미한다"
    • 현재까지 염기 서열이 알려진 10억개의 단백질 중 구조가 알려진 단백질은 10만개가 채 되지 않기 때문에 신약 개발 등에 큰 진전이 있을 것이라는 전언과 함께 "기존의 단백질 구조 예측 연구는 대부분 휴지통으로 들어갈 운명"이라 예측했다.
    • 관심이 있으신 분은 이 기사들을 같이 읽어보셔도 좋겠다. [이주용님 글 링크][네이처 기사 링크], [딥마인드 블로그 기사 링크]
  • "딥러닝을 배울까 말까가 아니라 어디에 쓸지를 고민해야 한다"
    • 바둑을 두는 알파고, 단백질 구조를 예측하는 알파폴드, 관심 동영상을 계속 추천하는 유튜브와 넷플릭스. 
    • 이런 회사들의 성취가 너무 두드러져서 딥러닝이 내 인생과 무슨 상관이 있나 싶을 수도 있지만, 딥러닝을 이용한 앱들이 점점 많이 나오고 있다 - 회의시간에 스마트폰을 켜두기만 하면 화자를 분리해서 회의록을 작성해주는 앱, 밑에 책을 놓으면 읽어주는 스탠드, 읽고 있는 책을 찍으면 울퉁불퉁한 종이를 펴주고 글자를 분리해주는 서비스 등등 셀 수가 없을 정도다. 스마트폰으로 사진을 찍으면 나도 모르는 사이에 딥러닝으로 화질을 보정해준다.
    • 이미 연구에도 딥러닝이 깊숙히 들어와 있다.
      • X-ray 판독은 식약처 인증을 받은 제품들이 나오고 있다.
      • 매우 약해서 TEM 이미지를 얻기 힘든 시료를 최대한 살살 촬영한 뒤 영상을 재건한다.
      • 시뮬레이션과의 협력으로 interpolation의 늪을 벗어나 새로운 소재를 스스로 찾으며 탐색한다.
  • 딥러닝은 배우기 쉽다. 그러나
    • IT 분야에는 기존 연구분야의 사고방식으로는 이해하기 어려운 공유 문화가 있다.
    • 장인이 골방에서 남몰래 몇년을 집중하여 어느날 짠! 하고 멋진 논문을 내놓는 것이 기존의 연구방식이라면,
      IT 분야는 뭐 조그만 것을 만들어 광장에 가져가서 사람들 앞에서 뚝딱거리고 있으면 지나가던 사람이 자기 도구를 써보라고 빌려주기도 하고, 이렇게 하면 잘 되더라고 훈수도 둔다. 그리고 이렇게 쌓인 평판은 부와 명예, 더 큰 기회로 이어진다.
    • 당연히 후자의 발전속도가 빠를 수 밖에 없고, 일도 점점 더 쉬워진다.
    • 구글이 내놓은 텐서플로, 페이스북이 공개한 파이토치만 해도 사용자 유입에 큰 역할을 했는데, 텐서플로를 쉽게 해주는 케라스, 파이토치를 쉽게 해주는 파이토치 라이트닝과 fast.ai 의 등장은 중학생 딥러닝 개발자를 탄생시키고 있다.
    • 하지만 공유 문화에 너무 기댄 나머지 남의 코드를 갖다 쓰기만 하면서 그럴싸하게 포장하는 사람들이 적지 않고, 작동 원리는 전혀 모른 채 성능을 향상시키겠다고 이런저런 파라미터만 바꾸는 사람도 많다.
    • 이런 분들은 과거의 내가 그랬듯, 남들에게는 박수를 받아도 본인 스스로는 매우 목이 마를 수 있다. 
    • 만약 전혀 목이 마르지 않고 박수갈채를 즐긴다면 연구자로서의 자질을 의심해볼 필요가 있다. 전자레인지에 즉석식품을 데워서 배를 채우는 것은 문제가 되지 않지만 이런 음식을 요리라고 내놓는 요리사는 없기 때문이다.
  • 한번쯤은 밑바닥을 찍고 뼈에 새길 필요가 있다.
    • 좋은 도구를 놔두고 매번 기초공사부터 하는 것도 어리석은 짓이다.
    • 하지만 이 도구가 어떻게 돌아가는지, 어떤 취약점이 있어서 어떨 때 쓰면 안 되는지, 내가 이 문제를 풀기 위해 A, B, C를 선택하지 않고 D를 선택했는지 설명할 수 있으려면 한 번쯤은 바닥부터 긁어볼 필요가 있다.
    • 밑바닥 시리즈는 1, 2권도 대호평을 받았지만 3권은 특히 딥러닝 프레임워크 구축을 다루고 있다.
    • 작은 함수와 클래스부터 만들어 연속 미분, 유닛 테스트를 거쳐 프레임워크를 만드는 과정은 "내가 이 짓을 해야 하나"라고 느낄 수도 있다. 이에 대해 나는, 강하게 "네. 뼈에 새기진 못해도 흔적은 남겨야죠" 라고 말하고 싶다.
  • 자기 밥줄이라면, 적어도 군번보다는 깊게 새겨야 하지 않을까.

본 리뷰는 본인 블로그에 작성된 것을 옮긴 것입니다: https://jehyunlee.tistory.com/12

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 상품명 :
밑바닥부터 시작하는 딥러닝 3
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
밑바닥부터 시작하는 딥러닝 3
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
밑바닥부터 시작하는 딥러닝 3
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

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

자료실

최근 본 상품1