작품소개
코드 3줄이 딥러닝 프레임워크가 되는 마법
이 책은 ‘밑바닥부터’ 직접 만들어보며 즐겁게 딥러닝을 익히는 시리즈의 장점을 그대로 따랐습니다. 코드 3줄로 시작해 60단계까지 차근차근 구현해보세요. 어느새 파이토치, 텐서플로와 같은 현대적이지만 미니멀한 딥러닝 프레임워크가 완성돼 있을 것입니다. 딥러닝과 파이썬 지식을 어느 정도 갖췄다면 전편을 읽지 않고도 충분히 따라 할 수 있습니다. 동적 계산 그래프(Define-by-Run) 구조와 딥러닝 프레임워크 기본 설계, 두 마리 토끼를 잡아보세요!
추천사
『밑바닥부터 시작하는 딥러닝』이라는 책의 제목이 너무나도 어울리는 책입니다. 매번 딥러닝을 겉핥기식으로 사용하고 있다는 불안감에 차 있던 제게 큰 도움이 되었습니다. 파이썬에 대한 기초만 있다면 도전할 수 있도록 이끌어주기 때문에 딥러닝의 기초를 탄탄하게 다지고 싶은 분께 꼭 추천합니다.
_김효린, 스타트업 백엔드 개발자
딥러닝 프레임워크를 개발하며 그 구조를 이해하는 것뿐 아니라, API 설계에 대한 영감도 얻을 수 있는 책입니다. 차근히 따라 하다 보면 여러 주제를 한 번에 공부할 수 있습니다. 초보자를 위한 책은 아닙니다. ‘적어도 파이썬을 구사할 줄 아는 수준’에서 시작하면 한 단계 더 성장한 자신과 마주하게 될 것입니다.
_문상환, 오드컨셉, 도쿄공업대학
『밑바닥부터 시작하는 딥러닝 3』은 딥러닝뿐 아니라 파이썬 프로그래밍에 도움이 될 내용으로 가득합니다. 이 책을 통해 딥러닝 프레임워크의 기본 구조를 이해하고 나면 텐서플로와 파이토치 같은 프레임워크의 코드를 직접 보는 것도 한결 수월할 것입니다. 딥러닝 관련 일을 하지 않더라도 인공지능에 관심 있는 파이썬 엔지니어라면 꼭 읽어보길 권합니다.
_박진형, XL8 공동 창업자, 전 애플 엔지니어
자신만의 딥러닝 프레임워크를 꿈꾸는 분은 물론, 딥러닝 모델을 더 잘 만들고 싶은 분께 추천합니다. 자동 미분에서 시작해 밑바닥부터 프레임워크를 쌓아 올리면서 현대적 딥러닝 프레임워크들이 무엇을 지향하며 어떻게 설계되었는지 철학을 배울 수 있었습니다. 실제로 저는 이 책을 읽으며 파이토치의 코드들을 더 깊이 이해할 수 있었습니다. ‘딥러닝 프레임워크를 만들 생각은 없어!’라며 지나치지 말고, 책을 끝까지 읽다 보면 유명한 프레임워크들을 더 자유롭게 다루는 자신을 발견하게 될 것입니다.
_송헌, 규슈대학대학원 컴퓨터비전 연구실 석사과정
이번 3편을 베타리딩하면서 ‘당분간 인공지능 입문서는 이 책이 석권하겠구나’라는 생각이 들었습니다. 2020년 현재 주류인 동적 계산 그래프(Define-by-Run)의 구조와 인공지능의 기본 설계라는 두 마리 토끼를 모두 잡은 책입니다. 지식 간 연결고리가 잘 만들어지지 않아 고민이었다면, 이 책이 단비가 되어줄 것입니다.
_시한, VAIS 인공지능 오픈채팅 커뮤니티 운영진
이제 막 딥러닝을 공부하기 시작한 고등학생, 대학생, 대학원생은 물론 현업에 있는 모두에게 큰 도움이 되는 책입니다. 딥러닝을 대략적으로만 아는 이들이 부족한 부분을 채우고 한층 깊이 이해할 수 있도록 내용이 꼼꼼하고 자세합니다. 꼭 읽어보세요!
_안상준, 『파이썬 딥러닝 파이토치』 저자
포스트 코로나 시대에는 인공지능 기술을 이해하고 의료 현장에 적용할 수 있는 전문가가 반드시 필요합니다. 이 책을 통해 유명 프레임워크를 좀 더 능숙하게 다루게 되어 의학적 진단, 치료, 예방에 도움이 되는 딥러닝 모델을 멋지게 구현하기 바랍니다. 『밑바닥부터 시작하는 딥러닝』에서 배운 이론을 바탕으로 자신의 전문 분야에 딥러닝을 적용하고 싶은 모든 분께 적극 추천합니다.
_이현훈, 한의사전문의, 경희대학교 임상한의학과 박사과정
라이브러리나 프레임워크를 밑바닥부터 구현하는 작업은 어렵고 힘들지만 딥러닝의 핵심 요소를 공부할 수 있는 좋은 기회입니다. 저도 텐서플로나 파이토치를 사용하다가 한 번쯤 나만의 딥러닝 프레임워크를 만들어보면 좋겠다고 생각한 적이 있습니다. 이 책과 함께라면 자동 미분 계산부터 신경망까지 구현하는 긴 여정을 헤쳐나갈 수 있습니다. 이 책은 여러분만의 프레임워크를 만드는 좋은 출발점이 되어줄 것입니다.
_옥찬호, 넥슨 코리아 프로그래머, 마이크로소프트 MVP
이 책은 설레는 모험으로 가득한, 마치 잘 짜여진 RPG 게임을 한 레벨씩 정복하는 듯한 몰입감을 줍니다. 그 여정에서 독자는 딥러닝 메커니즘을 완전히 이해하게 되고, 덤으로 파이썬의 고급 사용법까지 익히게 됩니다. 순탄치 않은 길이지만 완주 후 꽤나 값비싼 무기를 손에 쥐는 짜릿한 여운은 계속될 것입니다.
_전두용, 성운대 교양학부 교수, 경북대 컴퓨터공학과 박사과정
저자소개
사이토 고키
1984년 나가사키 현 쓰시마 태생. 도쿄공업대학교 공학부를 졸업하고 도쿄대학대학원 학제정보학부 석사 과정을 수료했다. 현재는 기업에서 인공지능 관련 연구·개발에 매진하고 있다. 오라일리재팬에서 『밑바닥부터 시작하는 딥러닝』 시리즈를 집필했으며 『파이썬 인 프랙티스』, 『밑바닥부터 만드는 컴퓨팅 시스템』 등을 일본어로 옮겼다.
역자
개앞맵시(이복연)
고려대학교 컴퓨터학과를 졸업하고 삼성전자에서 자바 가상 머신, 바다 플랫폼, 챗온 메신저 서비스 등을 개발했다. 주 업무 외에 분산 빌드, 지속적 통합, 수명주기 관리 도구, 애자일 도입 등 동료 개발자들에게 실질적인 도움을 주는 일에 적극적이었다. 그 후 창업 전선에 뛰어들어 좌충
우돌하다가, 개발자 커뮤니티에 기여하는 더 나은 방법을 찾아 출판 시장에 뛰어들었다. 한빛미디어에서 『밑바닥부터 시작하는 딥러닝』 시리즈, 『리팩터링 2판』, 『Effective Unit Testing』을 번역했고, 인사이트에서 『이펙티브 자바 3판』과 『JUnit 인 액션 2판』을 번역했다. 개발자들과의 소통 창구로 소소하게 facebook.com/dev.loadmap 페이지를 운영 중이다.
목차
제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 구글 콜랩에서 실행