책소개
코드 3줄이 딥러닝 프레임워크가 되는 마법
이 책은 ‘밑바닥부터’ 직접 만들어보며 즐겁게 딥러닝을 익히는 시리즈의 장점을 그대로 따랐습니다. 코드 3줄로 시작해 60단계까지 차근차근 구현해보세요. 어느새 파이토치, 텐서플로와 같은 현대적이지만 미니멀한 딥러닝 프레임워크가 완성돼 있을 것입니다. 딥러닝과 파이썬 지식을 어느 정도 갖췄다면 전편을 읽지 않고도 충분히 따라 할 수 있습니다. 동적 계산 그래프(Define-by-Run) 구조와 딥러닝 프레임워크 기본 설계, 두 마리 토끼를 잡아보세요!
추천사
『밑바닥부터 시작하는 딥러닝』이라는 책의 제목이 너무나도 어울리는 책입니다. 매번 딥러닝을 겉핥기식으로 사용하고 있다는 불안감에 차 있던 제게 큰 도움이 되었습니다. 파이썬에 대한 기초만 있다면 도전할 수 있도록 이끌어주기 때문에 딥러닝의 기초를 탄탄하게 다지고 싶은 분께 꼭 추천합니다.
_김효린, 스타트업 백엔드 개발자
딥러닝 프레임워크를 개발하며 그 구조를 이해하는 것뿐 아니라, API 설계에 대한 영감도 얻을 수 있는 책입니다. 차근히 따라 하다 보면 여러 주제를 한 번에 공부할 수 있습니다. 초보자를 위한 책은 아닙니다. ‘적어도 파이썬을 구사할 줄 아는 수준’에서 시작하면 한 단계 더 성장한 자신과 마주하게 될 것입니다.
_문상환, 오드컨셉, 도쿄공업대학
『밑바닥부터 시작하는 딥러닝 3』은 딥러닝뿐 아니라 파이썬 프로그래밍에 도움이 될 내용으로 가득합니다. 이 책을 통해 딥러닝 프레임워크의 기본 구조를 이해하고 나면 텐서플로와 파이토치 같은 프레임워크의 코드를 직접 보는 것도 한결 수월할 것입니다. 딥러닝 관련 일을 하지 않더라도 인공지능에 관심 있는 파이썬 엔지니어라면 꼭 읽어보길 권합니다.
_박진형, XL8 공동 창업자, 전 애플 엔지니어
자신만의 딥러닝 프레임워크를 꿈꾸는 분은 물론, 딥러닝 모델을 더 잘 만들고 싶은 분께 추천합니다. 자동 미분에서 시작해 밑바닥부터 프레임워크를 쌓아 올리면서 현대적 딥러닝 프레임워크들이 무엇을 지향하며 어떻게 설계되었는지 철학을 배울 수 있었습니다. 실제로 저는 이 책을 읽으며 파이토치의 코드들을 더 깊이 이해할 수 있었습니다. ‘딥러닝 프레임워크를 만들 생각은 없어!’라며 지나치지 말고, 책을 끝까지 읽다 보면 유명한 프레임워크들을 더 자유롭게 다루는 자신을 발견하게 될 것입니다.
_송헌, 규슈대학대학원 컴퓨터비전 연구실 석사과정
이번 3편을 베타리딩하면서 ‘당분간 인공지능 입문서는 이 책이 석권하겠구나’라는 생각이 들었습니다. 2020년 현재 주류인 동적 계산 그래프(Define-by-Run)의 구조와 인공지능의 기본 설계라는 두 마리 토끼를 모두 잡은 책입니다. 지식 간 연결고리가 잘 만들어지지 않아 고민이었다면, 이 책이 단비가 되어줄 것입니다.
_시한, VAIS 인공지능 오픈채팅 커뮤니티 운영진
이제 막 딥러닝을 공부하기 시작한 고등학생, 대학생, 대학원생은 물론 현업에 있는 모두에게 큰 도움이 되는 책입니다. 딥러닝을 대략적으로만 아는 이들이 부족한 부분을 채우고 한층 깊이 이해할 수 있도록 내용이 꼼꼼하고 자세합니다. 꼭 읽어보세요!
_안상준, 『파이썬 딥러닝 파이토치』 저자
포스트 코로나 시대에는 인공지능 기술을 이해하고 의료 현장에 적용할 수 있는 전문가가 반드시 필요합니다. 이 책을 통해 유명 프레임워크를 좀 더 능숙하게 다루게 되어 의학적 진단, 치료, 예방에 도움이 되는 딥러닝 모델을 멋지게 구현하기 바랍니다. 『밑바닥부터 시작하는 딥러닝』에서 배운 이론을 바탕으로 자신의 전문 분야에 딥러닝을 적용하고 싶은 모든 분께 적극 추천합니다.
_이현훈, 한의사전문의, 경희대학교 임상한의학과 박사과정
라이브러리나 프레임워크를 밑바닥부터 구현하는 작업은 어렵고 힘들지만 딥러닝의 핵심 요소를 공부할 수 있는 좋은 기회입니다. 저도 텐서플로나 파이토치를 사용하다가 한 번쯤 나만의 딥러닝 프레임워크를 만들어보면 좋겠다고 생각한 적이 있습니다. 이 책과 함께라면 자동 미분 계산부터 신경망까지 구현하는 긴 여정을 헤쳐나갈 수 있습니다. 이 책은 여러분만의 프레임워크를 만드는 좋은 출발점이 되어줄 것입니다.
_옥찬호, 넥슨 코리아 프로그래머, 마이크로소프트 MVP
이 책은 설레는 모험으로 가득한, 마치 잘 짜여진 RPG 게임을 한 레벨씩 정복하는 듯한 몰입감을 줍니다. 그 여정에서 독자는 딥러닝 메커니즘을 완전히 이해하게 되고, 덤으로 파이썬의 고급 사용법까지 익히게 됩니다. 순탄치 않은 길이지만 완주 후 꽤나 값비싼 무기를 손에 쥐는 짜릿한 여운은 계속될 것입니다.
_전두용, 성운대 교양학부 교수, 경북대 컴퓨터공학과 박사과정
저자소개
사이토 고키
1984년 나가사키 현 쓰시마 출생. 도쿄공업대학교 공학부를 졸업하고 도쿄대학대학원 학제정보학부 석사 과정을 수료했다. 현재는 기업에서 인공지능 관련 연구·개발에 매진하고 있다. 『밑바닥부터 시작하는 딥러닝』 시리즈 집필 외에 『파이썬 인 프랙티스』, 『밑바닥부터 만드는 컴퓨팅 시스템』, 『Building Machine Learning Systems with Python』 등을 일본어로 옮겼다.
최근작
개앞맵시(이복연)
고려대학교 컴퓨터학과를 졸업하고 삼성전자에서 자바 가상 머신, 스마트폰 플랫폼, 메신저 서비스 등을 개발했다. 주 업무 외에 분산 빌드, 지속적 통합, 앱 수명주기 관리 도구, 애자일 등 동료 개발자들에게 실질적인 도움을 주는 일에 관심이 많았다. 그 후 창업전선에 발을 들여 좌충우돌하다가 개발자 커뮤니티에 기여하는 더 나은 방법을 찾아 출판 시장에 뛰어들었다.
『밑바닥부터 시작하는 딥러닝』 시리즈, 『구글 엔지니어는 이렇게 일한다』, 『리팩터링 2판』, 『JVM 밑바닥까지 파헤치기』, 『이펙티브 자바 3판』 등을 번역했다.
- 페이스북: facebook.com/dev.loadmap
- 개앞맵시에게 번역이란: brunch.co.kr/@wegra/27
목차
제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편의 목표는 그것들을 밖으로 꺼내보고 제대로 이해하는 것입니다. 그 과정에서 여러분이 기술적인 재미도 느낄 수 있도록 ‘밑바닥부터 만든다’는 방침을 세웠습니다. 다른 누군가가 만들어놓은 도구를 사용하기만 해서는 도달하기 어려운 깊은 깨달음을 얻기를 바랍니다.
독자리뷰
딥러닝 프레임워크를 직접 개발한다고? 그게 책으로 나왔다고?
이 책은 딥러닝 기초 이론은 어느 정도 알고 있고, 파이토치나 텐서플로 기본 예시 코드 정도는 돌려보거나 파이썬 기본은 알고 있는 독자들을 대상으로 합니다.
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번까지 딥러닝 시리즈의 완성본이라고 봅니다.
밑바닥부터 시작하는 딥러닝 3, 3번째 책입니다.
이번엔 프레임워크다! 손으로 배우는 본격 딥러닝 학습서라고 첫 뒷면에 설명이 되었습니다. 60단계 5고지까지 달성할 수 있다는 겁니다.
완전 초보, 기초자를 위한 책이라고 보기에는 어렵습니다.
코딩 3줄부터 기본에 기본부터 시작하지만, 초반에 명확하지 않으면, 나중에 내용 자체를 따라가는 것이 쉽지 않다는 겁니다.
그렇게 변수, 함수 이야기 하다가 미분이야기로 자연스레 넘어가게 됩니다.
눈에 띄는 특징은 컬러 인쇄 뽀인트가 있어서, 구성 내용들이 눈에 쏙쏙 들어옵니다.
결론입니다. 60단계입니다.
정말 밑바닥에서 부터 시작해야 합니다. 그래서 끈기도 필요하지만, 점차 딥러닝의 구성이 넘쳐나면 산출물로 계속 갱신 될 수 있다느 겁니다.
책의 제목을 보고 처음 딥러닝을 시작하는 사람을 위해 만들어진 것으로 생각했지만, 딥러닝 프레임워크를 처음부터 만들어 보는 내용으로 더 깊게 이해하고 더 잘 사용할 수 있도록 도움을 주는 책입니다.
딥러닝 프레임워크 또는 라이브러리를 사용하는 것에서만 그치지 않고, 어떤 구조를 가지고 구현되어 있는지 볼 수 있어야 한 단계 더 나아갈 수 있다고 생각합니다.
책의 분량도 많고 내용도 쉽지 않지만 차근차근 따라해보고 여러번 읽어본다면 딥러닝을 이해하는데 큰 도움이 될 것입니다.
프로젝트를 진행하다보면 직접 모델을 구현해 사용해야 할 때가 있는데 이 책의 5개 챕터, 60단계를 모두 정복한다면 큰 도움이 될 거라고 생각합니다.
딥러닝 분야가 빠르게 발전하고 있는 만큼 이 책의 시리즈도 계속 나왔으면 좋겠습니다.
딥러닝 뿐만 아니라 프레임워크를 견고하게 개발하는 경험을 할 수 있는 것도 이 책의 큰 장점입니다.
밑바닥부터 시작하는 딥러닝 시리즈는 딥러닝 필수 학습서로 자리를 잡을 것으로 생각합니다.
애플의 2025년 자체 전기 자율주행차 생산계획을 발표한 후 전 세계의 자동차 회사들의 주가가 요동을 치고 있다. 단순히 주가총액으로만 보자면 국내를 대표하는 자동차 대기업 현대차의 50배를 훌쩍 넘는 애플의 행보는 확실히 위협이 될만하다. S&P500에 편입된 테슬라의 주가도 덩달아 출렁거렸을 정도였다. 내연기관차를 생산하기 위해서는 많은 기술이 필요하며 1차, 2차, 3차 등 수많은 협력회사가 필요하다. 내연기관에 들어가는 수많은 부품들을 생산해야 되기 때문이다. 그러나 전기차는 다르다. 전기차에서 가장 우선시되는 기술은 소프트웨어다. 모든 것이 전자적으로만 이루어져서 구동이 되며 말 그대로 차체가 하나의 Smart PC라고 해야 할까. 스마트폰보다 더 많은 메모리가 들어갈 것이고 상시로 네트워크게 연결되면서 딥러닝을 통해 자체적으로 진화할 가능성이 높다.
이 분야의 출판사로 잘 알려진 한빛미디어에서 밑바닥으로부터 시작하는 딥러닝 3이라는 책을 제공받게 되었다. 이 책을 처음 본 느낌은 딥러닝에 대한 설명 없이 본격적인 실전에 들어간 느낌이었다. 찾아보니 딥터링1에서 기초지식과 처리, 딥러닝 2에서는 Sequence data를 설명해두고 3편에는 본격적인 프레임 워크를 만들기 위한 내용을 담고 있었다.
어떤 정치인은 초등학교 때부터 코딩 교육을 해야 한다고 하는데 사실 코딩은 소프트 설계에서 중요한 부분은 아니다. 어떤 방식으로 설계하고 어떻게 구현할지에 대한 알고리즘을 모르면 아무리 코딩을 알고 있어도 의미가 없다. 코딩은 AI가 훨씬 더 잘할 수 있다. 미래에는 사람이 코딩할 필요성은 아마 거의 없을 것이다. ㅇ이 책은 파이썬으로 직접 구현하며 배울 수 있도록 이끌고 있다. 이 책을 활용하기 위해서는 객체 지향이라던가 기초이론은 알고 있어야 한다.
이 책은 총 60단계로 구성이 되었는데 미분 자동계산, 자연스러운 코드, 고차 미분 계산, 신경망 만들기, DeZero의 도전으로 딥러닝 프레임워크들을 이해하는 새로운 관점을 만들어준다. 스마트폰을 살 때는 모두가 같았어도 같은 형태로 사용하는 사람은 아무도 없다. 자동차 역시 겉모습은 똑같지만 딥러닝으로 구현된다면 2030년이 가기 전에 자동차 자체에 프레임워크에 의해 속성을 가지게 될 수 있다. 책의 첫 부분에서는 Variable 클래스를 간단하게 보여주고 있다.
class Variable:
def_init(self, data):
self.data = data
Variable에 데이터가 보관되는 것처럼 실생활에서 사용되는 모든 것에 개인에 최적화된 정보가 담길 수 있다. 자동차 또한 예외가 아니다. 아마 수학을 좋아하지 않았던 수많은 사람들은 미분이라는 이야기만 나와도 머리가 아플 수 있다. 미분은 정말 수많은 분야에서 활용이 된다. 물체의 시간에 따른 위치 변화율(위치의 미분)은 속도가 된다. 이 책에 나온 대로 따라가기 위해서는 소프트웨어에 대한 사전 지식을 비롯하여 파이썬에 대한 이해, 미분, 적분, 딥러닝을 알 수 있어야 한다.
파이썬이라는 언어는 프로그래밍 언어의 하나인데 간결하고 생산성이 높은 것이 특징이다. 즉 자동화를 하기에도 장점이 있다. 책에서 소개한 역전파 자동화의 코드만 보아도 단순하다.
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
책에는 장의 끝에 칼럼을 담고 있다. 제1고지에서는 수치 미분, 기호 미분, 자동 미분 등을 설명하고 있는데 미분은 지금까지는 필요에 의해서 그때마다 구현했지만 머신러닝에서 자동 미분은 활용될 가능성이 높다고 있다.
제3고지에서의 고차 미분 코드에 의해 그려지는 그래프를 보면 마치 사람의 뉴런이 생각하는 방식과 유사해 보인다. 2차 미분, 3차 미분, 4차 미분, 5차 미분, 6차 미분, 7차 미분, 8차 미분을 거치면 딥러닝 그 자체를 보여주는 그래프를 볼 수 있다. 신경망에서 매개변수가 100만 개를 넘는 일이 다반사다. 100만 개의 매개변수를 뉴턴 방법으로 갱신한다면 100만*100만 크기의 헤세 행렬이 필요한데 그걸 처리할 큰 메모리는 근미래에 차량과 같은 장비에 장착이 가능하지 않을까.
범용적인 완전 연결 계층 신경망
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)
이미 자율주행차의 시대가 시작이 되었다. 차량에서 사용하는 배터리의 단가는 어느시점에서 획기적으로 낮아지며 밀고가 고밀도가 되면 딥러닝이 가장 잘 구현되는 공간이 차량이 될 수 있다.
책에서 제시되는 함수나 코드는 관련 업계에 종사하는 사람들이나 관련 업계로 나가려는 사람들에게는 많은 정보를 담고 있다. DeZero는 앞으로도 함수와 계층 추가, 메모리 사용 효율 개선, 정적 계산 그래프와 ONNX지원, API문서 등을 제공을 할 것이라고 하니 관심을 가지는 것도 좋다. 하나하나 살펴보면서 이해하고 구현하는 재미가 있는 딥러닝의 세계로 빠져볼 수 있다.
<이런 책을 기다려왔습니다>
본 리뷰는 한빛미디어의 "나는 리뷰어다" 를 통해 도서를 제공받았고 어떠한 가이드나 금전적인 지원을 받지 않았습니다.
직접 구현하면서 원리를 파악해나가는 책. "밑바닥부터 시작하는 딥러닝 3"
현존하는 딥러닝 프레임워크들의 기저원리들을 파악하고
각 기능들이 어떤 원리로 구현되었는지 알아갑니다.
전세계적으로 인공지능과 딥러닝이 매우 빠른 속도로 발전하고 있고 관련 사업도 많이 추진 중에 있습니다.
이런 빠른 속도를 지원해주는 것에는 구현에 쓰이는 오픈소스 딥러닝 프레임워크들의 도움이 매우 크게 작용합니다.
지금까지 저도 이 프레임워크들의 원리가 궁금하지만 어떻게 접근해서 알아내야하는지 엄두를 내지 못하고 있는 중에 이 책이 출간되었습니다.
일본 출간 때부터 한국어 번역이 시작되었다는 소식을 듣고 얼마나 기다려왔는지 모릅니다.
책을 펼치고서 하나씩 저자의 인도에 따라 스텝을 밟아가며 구현을 해나갈때마다
이런 책이 출간되어 너무 감동적이었고 또한 이제야 출간되어 아쉬웠습니다.
파이썬으로 순수하게 구현을 해나가다보니, 파이썬 프로그래밍 자체적으로 제 기준에는 깊은 수준에서 배울 점이 많았습니다.
또한, 프로그래밍 만으로도 사용자의 편의성을 고려하는 측면에서 재사용성과 효율성을 설명하는 부분에서 무릎을 탁! 치게 만드는 순간이 많았습니다.
책장을 넘길 때마다 저자가 해결해야하는 상황을 제시합니다. 이를 보고 스스로 '아마 이렇게 하면 되지 않으려나?' 하거나
'여기서 더 개선이 된다고..? 잘 모르겠는데..' 같은 생각을 하면서 다음 장을 기대하게 되었습니다.
어느 순간부터는 이전의 내용들이 머리속에서 얽혀서 '뭐였더라..', '이게 왜 이렇게 잘되지..' 하면서
책을 들었다 놨다 하면서 즐겁게 보았습니다.
파이썬 언어의 입문자 부터, 머신러닝 현업자 모두에게 추천드립니다.
이 책을 리뷰하게 되어 정말 기쁘고 언젠가 이런 책을 저도 쓰고싶습니다.
아마 인공지능과 관련된 연구나 업무를 하고 있는 사람이라면 누구나 Tensorflow나 PyTorch, MXNet같은 딥러닝 프레임워크를 사용할 것이다. (몇몇 프레임워크는 C++이나 java같은 언어로 포팅이 되어 있겠지만) 대부분 이 프레임워크를 다루기 위해서는 파이썬을 잘 다루고, 뭔가의 수학 공식을 코드로 옮길 줄 알고 있을 것이다. 말이 쉬워보이지만, 이런 프레임워크가 미분도 자동으로 해주고, 사용자가 정의한 텐서를 이용해서 계산도 잘 할 수 있도록 해줬기에, 사용자가 조금 더 쉽게 구현에 집중할 수 있게해줬고, 덕분에 기술의 발전이 빠르게 진행되지 않았나 하는 생각을 해본다. 그런 뭔가 이름만 들으면 복잡해보이는 프레임워크를 우리가 직접 만들어볼 수 있을까?
어쩌면 이 책이 그 답이 될 수 있지 않을까 생각해본다.
2017년에 처음 출간했던 "밑바닥부터 시작하는 딥러닝" 시리즈가 올해 3편으로 출간되었다. 딥러닝에 대한 기초 지식과 이미지 처리와 관련된 내용을 다뤘던 1편과, 언어와 같은 Sequence data를 처리하는 방법을 다뤘던 2편과는 다르게 3편에서는 앞에서 소개했던 그 복잡해보이는 딥러닝 프레임워크를 직접 만드는 내용을 다루고 있다.
사실 어쩌면 처음 보는 사람은 막막하게 느껴질 수 있다. 딥러닝 프레임워크를 구현하려면 파이썬 문법을 알고 있는 것을 넘어서서 프레임워크의 구조도 잘 정의해야 하고(어떻게 보면 소프트웨어 공학적인 내용이 필요하지 않을까 싶다.), 앞에서 언급했던 것처럼 텐서를 다루는 방법이나, 자동 미분 같은 수학 이론도 구현할 수 있어야 한다. 나열하다 보니까 단순히 딥러닝 이론만 알고 있다고 해서 모든 것이 구현될 것 같지는 않아 보인다. 그래서 이 책의 선수 지식도 보면 딥러닝 기초이론이나 객체 지향에 대해서 알고 있는 것을 필요로 한다.
딱 인공지능을 알고 있다고 가정지었을 때, 프레임워크가 필요한 요소는 어떤게 있을까 생각을 해보았다. 일단은 변수를 담을 텐서 정의가 필요할 것이고, 신경망을 구성하는 노드, 계층 들도 유기적으로 연결되게끔 구성되어야 할 것이다. 또한 각 노드별 가중치를 업데이트하기 위한 backpropagation도 있어야 할 것이고... 예측치와 실제값간의 오차를 표현할 loss function, optimizer도 필요할 것이다. 이런 내용은 Tensorflow나 Pytorch에는 API로 쉽게 구현되어 있기 때문에, 일반 사용자들은 구글링이나 공식 문서를 통해서 쉽게 가져다 쓸수야 있다지만, 우리가 구현한다면 이 모든게 가능할까 싶었다.
그런데 이 책에서는 이런 내용을 모두 다루고 있다. 오히려 진짜 실제 딥러닝 프레임워크처럼 멋있는 시각화도 구현되고(물론 Tensorboard 같이 현란한 시각화까지는 아니지만, 내부 구조를 설명할 시각화는 이뤄진다.), 심지어는 GPU와 연동시켜서 성능을 개선하는 내용도 담고 있다. 딥러닝 개발 책인데, 메모리 관리같은 성능 측면을 다루고 있는 부분도 흥미로웠다.
위 사진은 책에 실제로 실려있는 딥러닝 구조를 시각화한 내용이다. 처음에는 책에 파본이 생긴줄 알고 깜짝 놀랐었는데, 이렇게 복잡한 딥러닝 내부 구조도 구현하고 시각해볼 수 있게끔 도와준다.
개인적으로는 딥러닝이라는 것을 모르는 상태에서 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 [자신에 대한 고찰]
딥러닝을 처음 시작할 때, 우리는 ANN부터 시작되는 신경망 개념부터 시작하여 CNN등 진화된 알고리즘 들에 대한 이론을 먼저 배우게 됩니다. 그리고 이를 구현하기 위해 텐서플로나 케라스, 파이토치 등을 배우고 MNIST같은 예시 데이터를 가지고 딥러닝 알고리즘을 이용하여 예측하며 프레임워크에 익숙해지게 됩니다.제가 보았던 대부분의 커리큘럼은 여기까지였습니다. 플러스 알파라고 한다면 캐글과 같은 경진대회에 나가는 정도.
그리고 이런 커리큘럼에서 성장의 한계를 느꼈던 분들에게 드디어 추천할 수 있는 책이 나왔습니다.
이 책은 파이토치와 같은 딥러닝 프레임워크를 만들기 위한 60개의 단계로 구성되어 있습니다. 저자가 DeZero라 불리는 순수한 파이썬 기반의 딥러닝 라이브러리를 만드는 법과 그 내부 구조들에 대해서 자세하게 기술해 놓은 덕분에 우리는 편하게 이해하면서 따라가기만 하면 됩니다.
딥러닝 프레임워크를 바닥부터 만들어 보는 것은 생각보다 중요한 일입니다. 쉽계 예를 들자면 자동차 운전하는 방법은 알지만, 자동차의 구조에 대해서 안다면 운전을 할 때 차량의 기능을 100% 활용할 수 있을 뿐 아니라 차량을 관리 할 때 매우 유용하겠죠? 딥러닝 프레임워크도 마찬가지입니다. 위의 예시에서 운전을 딥러닝 모델링이라고 생각하고 관리를 코드 작성이라고 생각한다면, 파이토치와 같은 딥러닝 프레임워크를 그냥 문서를 보며 사용하는 것 보다 직접 만들어 보면서 내가 사용했던 API가 어떻게 작성되어 있는지를 안다면 그 활용도를 극한으로 끌어낼 수 있을것입니다.
특히 연구자들 사이에서 가장 뜨고있는 파이토치와 비슷한 API를 가지고 있기 때문에 파이토치에 입문하고자 하는 분들에게도 매우 유용할 것이라고 생각됩니다.
본 리뷰는 한빛미디어에서 도서만 제공하였으며 어떠한 가이드나 금전적인 지원을 받지 않았습니다.
딥러닝과 머신러닝을 처음 접했을 때, 그러니까 중1시절 어느 겨울날, 구글이 언제 무슨짓을 할 지 모르니 라이브러리까지 만들어야겠다! 라는 큰 꿈을 갖고 있었다. 뭐. 아직도 책읽고, 재밌어보이는 예제 몇개 돌려보고, 영어공부도 할겸 아카입에서 논문 왕창 다운받아놓고 몇개만 읽어보고있지만 말이다. 밑딥1은 아마 두 번째 정도로 접한 딥러닝 관련 도서였고, 무서운 물고기 표지를 덮어놓고 당시엔 다소 어렵던 개념과 수식들지금도 그렇지만 을 읽어가며 끝가지 읽지는 못했지만 이 분야에 대해 조금씩 이해시켜주던 책이었다. 어쨌든 3권이 또 나왔고, 이번엔 무서워 보이지 않는 귀여운 나뭇잎 해룡 표지다. 어쨌든 이번 밑딥은 텐서플로, 파이토치 같은 딥러닝 프레임 워크를 만들어나가는 책이라 그런지 목차도 활용을 다룬 다른 딥러닝 책들과는 달리, 한문장으로 쓰던 함수를 어떻게 구현하는가에 대한 내용이다. 예전엔 프로그래밍만 할 줄 알고, 거기에 필요한 몇몇 수학적 지식만 있으면 되는 줄 알았는데 깊이들어갈수록 메모리가 어떻고, cpu가 어떻고 하는 컴퓨터 구조에 관한 지식의 필요성이 느껴진다.. 밑딥 1,2와 다른점이라면 이번엔 드디어 흑백을 탈출해 컬러로 인쇄되어 있는거다! 알록달록해서 좋다. 이책을 통해 파이썬을 위한 도구를 만드는 일은 상당히 어렵다는것을 느꼈다. 많은 책들에서 한 두 번 정도 간단히 언급하고 가는 미분이라던지, 역전파라던지 이런걸 구현해야 하고.. 그리고 이 책을 처음 받고 딱 펼쳤을 때 등장한 페이지. 내 책에 엄청난 인쇄오류가 있나보다.. 했는데 앞페이지를 넘겨보니 8차 미분을 시각화한 그래프의 일부라고 한다. 다른 내용은 이해 못한게 아니라 스포일러하면 안되니 책을통해 직접 읽어보시길. 일단은 궁금해서 책를 읽어보려고 시도했으나 아직 때가 이른 것 같다. 이번 방학때 도서관에서 밑딥1권 빌려서 조금 더 공부한 후에 다시 읽어봐야겠다.
코로나로밖에 사람들도 없고 조용합니다.
한풀 꺾이나 했지만, 코로나가 다시 살아나서 문제입니다.
하루빨리 코로나에 대한 위협이 끝이 나길 바랍니다.
모두 건강 조심하세요.
딥러닝을 학습하고자 하는 분들에게 책을 추천하고자 합니다.
밑바닥부터 시작하는 딥러닝 책이 1권과 2권도 잘 봤는데요.
드디어 3권까지 나오게 되어 너무 기쁩니다.
그러면 3권을 한번 같이 살펴보도록 하겠습니다.
1. 60단계로 배우는 딥러닝
딥러닝을 60단계로 배울 수 있습니다.
챕터로는 5가지 챕터로 알려줍니다.
5가지 챕터는 미분 자동 계산부터 시작합니다.
그다음은 자연스러운 코드에 대해 배웁니다.
고차 미분 계산, 신경만 만들기, DeZero 프레임워크를 3, 4, 5챕터에서 배우게 됩니다.
DeZero 프레임워크의 목표는 이해하기 쉽게 만드는 데 있습니다.
가능한 라이브러리를 사용하지 않고 코드 양을 줄였습니다.
파이썬만을 사용한 프레임워크로 파이썬을 아시는 분은 코드를 읽는 데 어려움이 없을 겁니다.
2. 프레임워크 제작
프레임워크를 제작하는 방법도 알려줍니다.
코드의 범용성은 더해야 합니다.
문제 도메인도 말아야 이해하고 개발할 수 있습니다.
프레임워크를 개발하는 경험을 하게 도와줍니다.
이 경험은 개발자의 수준을 한 단계 올려줄 것입니다.
무작정 기능만 추가하는 것은 안 됩니다.
단계적으로 프레임워크를 만들어보는 경험을 하실 수 있습니다.
Ps
1편은 합성곱 신경망과 이미지 처리가 주제였습니다.
2편의 주제는 순환 신경망과 자연어 처리였습니다.
3편은 동적 계산 그래프와 딥러닝 프레임워크를 알려줍니다.
3가지 주제별로 딥러닝에 대해 배울 수 있습니다.
1, 2, 3편 모두 읽으시면 앞으로 딥러닝 하는데 유용하실 겁니다.
딥러닝에 관심 있는 분들에게 이 책을 추천합니다.
안녕하세요 괴짜 개발자 namedboy 입니다.
혹시 딥러닝은 배우기 어려운 분야 라고 생각하시나요? 저도 비슷한 생각을 가지고 있습니다.
아무리 책에서 쉽게 설명해도 여러 함수나 용어 자체가 익숙하지 않으면 이해가 어렵고 그만큼 배우기 어려워지죠. 제가 추구하는 것도 무엇이든 배울 때 완전히 이해를 하고 그 이해를 바탕으로 더 나은 것들을 생각할 수 있을 때 제대로 배우고 익혔다라고 생각합니다. 하지만 그렇게 하지 못하는 분야도 많죠.
그렇게 하지 못했을 때 할 수 있는 나머지 방법 하나가 결과를 보고 과정을 이해하는 방법인데요. 지금 제가 리뷰할 이 책이 딱 그 방식으로 배우는 접근을 하고 있다고 느꼈습니다.
사실 책 초반에 기초 이론을 습득한 사람이 이 책으로 공부하면 적당한 수준이라고 생각한다고 쓰여 있기도 합니다. 몇가지를 써보면 이렇습니다.
파이썬 기본 문법과 객체지향 기초 개념(필수)
밑바닥부터 시작하는 딥러닝 혹은 그에 준하는 딥러닝 기초 이론(필수)
최소한 이 두가지 정도는 필요하다고 얘기하고 있습니다. 그 이유가 관련 이론과 함께 수학적인 메커니즘의 이해를 요하고 있기 때문입니다.
이 책은 프레임워크를 만드는 방식을 채용했습니다.
기술적인 이해와 이론이 워낙 어려우니 변수, 함수, 미분, 재귀, 반복문등을 만들어보면서 딥러닝 자체를 이해하는 시도인거죠.
아무런 이해가 없어도 책을 따라서 하나씩 하나씩 만들면서 이해하고 딥러닝 프레임워크가 어떻게 동작하는지 알게 되는 것이죠. 물론 중간 중간 이론적인 내용도 이해를 해야 합니다. 그렇지 않으면 책에서 만들라고 해서 만들었지만 결국 내것이 아니라 책이 시켜서 한 것밖에 되지 않기 때문이죠.
어쨌든 책에서 DeZero라는 프레임워크를 만들면서 딥러닝의 모델을 테스트하고 시험해보게 됩니다.
처음에 변수를 만들고 그 다음 함수를 만들고 미분 고차 미분등을 처리하는 프로세스를 만들어 신경망처리를 하고 딥러닝을 처리할 수 있게 됩니다.
정말 밑바닥부터 만든 딥러닝인것이죠.
딥러닝에 대해 잘 몰라도 전체를 만들고 나서 각각 하나 하나의 프로세스가 동작하는 과정의 이해를 하고 나면 딥러닝이라는 분야에 대해 한층 더 이해하고 습득할 수 있지 않을까 생각해봅니다.
이 책은 링크 에서 보실 수 있습니다.
Author: 사이토 고키 지음 / 개앞맵시 옮김
출판사: 한빛미디어
Score /5: ⭐️⭐️⭐️⭐️⭐️
최근에 딥러닝 프레임워크는 춘추전국 시대인것 같다.
처음은 텐서플로로 대동단결 할 듯 싶더니 파이토치가 점점 더 올라오고 현재는 비등비등한 듯하다.
그렇다면 왜 요즘 파이토치가 핫 한걸까?
파이썬 문법의 간단함과 강력한 산술라이브러리(Numpy)를 지원하기 때문이라고 생각한다.
나는 개발자로 파이썬은 간단하게 쓸 줄 알지만 요즘 많이들 얘기하는 머신러닝/딥러닝의 세계는 아직도 어지럽고 현기증이 난다.
그런 나에게 밑바닥부터 시작하는 딥러닝3 은 파이썬은 한줄기 빛 아니었을까? (물론 나에게만 빛일수도 있다...)
각설하고 이 책에 대해서 느낀점을 리뷰하자.
딥러닝 프레임워크를 기초부터 만들어 가면서 익힐 수 있습니다.
그동안 나는 개발자로 미리 만들어진 프레임워크를 어떻게 활용할지 API만 호출하는 형태로만 딥러닝을 간략하게 이해해 왔다.
이 책은 How 가 아니라 Why에 더 집중할 수 있게 해주는 책이다.
왜 Why가 중요할까?
물론 How 라는 접근도 중요하지만 어떻게 사용해야 하는지에 대한 절차만 기술되어 있다면 나중에 다른 기술이 나온다면 어떻게 되는 것일까? 새로운 How를 배우기 위해 시간을 사용해야 한다.
이 책은 물론 How도 설명하지만 Why를 통해서 개발자 또는 독자가 적절한 인사이트를 얻게 도와주려는 책이다.
내가 밑바닥에 대한 인사이트 왜 이렇게 해야하는지에 대해서 인사이트를 얻으면 다음에 다른 기술이 나와도 기본은 변하지 않으므로 쉽게 기술을 따라갈 수 있다.
이게 중요하다! 개발자 또는 IT 업계 엔지니어들은 평생 공부해야 하는 직군이라고들 한다. 엄청나게 많은 기술들이 내가 잠자거나 글을 쓰고 있는 이순간에도 쏟아지지만 내가 적절한 기준과 인사이트를 갖고 있다면 해당 기술의 밑바닥(?)은 비슷하거나 같은 경우가 많으므로 대부분의 상황에서는 내가 기술을 Follow하고 따라갈 수 있을 것이다.
그럼 다른 관점에서 책을 한번 보고 싶은데 초보자가 이해하기에는 괜찮을까?
생각보다는... 쉽지는 않다. 하지만 책을 읽으면서 느끼는 것은 필자가 독자에게 이렇게 이렇게 가자 라고 끌고 가려는 의지가 보이고 친절하게 한입 한입 떠 먹여주기 위해서 노력하는 느낌이 많이 든다.
입에 들어와 있는 음식을 삼키는 건? 독자의 몫이다.
그리고 책을 읽으면서 느낀 공통적인 부분은 적절한 예시와 그림이 탁월하다.
아래는 번역판이 기존 원판보다 더 나은 부분인 것 같다. 역자가 필요하다 생각 되는 부분을 추가해 놓았다. (역자님 굿!)
책 두께는 절대 얇지 않다. 그 말은 반대로 말하면 충분히 설명을 하고 있다는 말이 되기도 하고 많은 내용을 담고 있다는 의미이기도 하다.
이 책은 한번 쓰고 버리는 일회용 같은 개념이 아니다. 두고 두고 다시 보면 아 이렇게 할 수 있구나 하는 작은 관점으로 인사이트를 나에게 던져 줄 수 있는 그런 책이라고 본다.
개인적으로 마음속에 담아둔 고사성어(?)가 있는데 '독서백편 의자현' 이라고 한다.
처음 읽었을 때 이해가 안가는 문장이나 내용이라도 여러번 읽으면 그 뜻이 자연스럽게 나타난다 라는 의미다.
나에게 이 책이 그런 책이 아닐까?
다른 분들도 이 책을 통해서 딥러닝의 매력에 빠졌으면 좋겠다.
밑바닥부터 시작하는 딥러닝3을 리뷰해보겠습니다.
1,2권을 이어서 이젠 모델 구현쪽에 포커스를 맞춘다고 생각했었는데, 3권은 '프레임워크를 직접 만드는' 내용들입니다.
책의 도입부에서 체이너를 기초로 파이토치의 설계를 덧씌웟으며, 텐서플로 2.0부터는 이 설계 방식을 기본 모드로 채택한다고 합니다. 즉, 프레임워크가 어떤식으로 만들어지는지 공부할 수 있는 기회라고 생각합니다.
5가지 목표를 향해서 총 60단계에 달하는 스텝으로 한 단계 한 단계 그 과정을 제대로 이해해서 진행한다고 하면 쉬운 여정은 아닙니다. 우선, 1,2권을 제대로 한 번 정독을 실습까지 마쳤다면 3권을 읽는데 큰 무리는 없다고 생각합니다.
프레임워크를 만들 때 고려해야하는 변수와 이에 해당하는 값, 함수 심지어 메모리 관리까지 다룹니다. 이런 점들로 보아 파이토치를 공부해봤다면 확실히 더 도움이 될 것은 분명해보입니다.
이렇게 단계를 밟아가면서
모델의 완성까지 나아갑니다.
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, 2편 다 읽어 보고 3편에 대한 기대감이 컸습니다.
그러던 중 3편이 간단한 프레임워크를 구현하는 내용이라는 것을 알고는 솔직히 그런 생각을 했습니다.
"텐서 플로어 우나 파이토치 같은 프레임워크를 쓰면 되는데 굳이...."
그래도 한번 보자는 생각에 이 책을 보게 되었는데, 가지고 다니면서 보려고 이북까지 구입을 했습니다.
한 마디로 제가 느끼는 이 책의 장점은 다음과 같습니다.
1. 딥러닝 프레임워크의 원리를 이해한다.
2. 효율적인 프로그래밍 방법을 익힌다. (파이썬뿐만 아니라.)
딥러닝을 공부하시는 분이라면 효율적인 개발을 위해서는 읽어 봐야 할 책이라 생각합니다.
"이 글은 한빛미디어 '나는 리뷰어다.' 서평단 자격으로 작성된 글입니다."
오늘 소개할 책은 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편에서는 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 현업개발자로서 한빛미디어 리뷰어로 출판사로부터 제공받아 읽고 작성한 글입니다.
본 리뷰는 본인 블로그에 작성된 것을 옮긴 것입니다: https://jehyunlee.tistory.com/12