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

한빛출판네트워크

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

파이썬으로 익히는 딥러닝 이론과 구현

한빛미디어

번역서

판매중

  • 저자 : 사이토 고키
  • 번역 : 개앞맵시(이복연)
  • 출간 : 2017-01-03
  • 페이지 : 312 쪽
  • ISBN : 9788968484636
  • 물류코드 :2463
  • 초급 초중급 중급 중고급 고급
4.3점 (12명)
좋아요 : 1314

직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서 

 

이 책은 라이브러리나 프레임워크에 의존하지 않고, 딥러닝의 핵심을 ‘밑바닥부터’ 직접 만들어보며 즐겁게 배울 수 있는 본격 딥러닝 입문서입니다. 술술 읽힐 만큼 쉽게 설명하였고, 역전파처럼 어려운 내용은 ‘계산 그래프’ 기법으로 시각적으로 풀이했습니다. 무엇보다 작동하는 코드가 있어 직접 돌려보고 요리조리 수정해보면 어려운 이론도 명확하게 이해할 수 있습니다. 딥러닝에 새롭게 입문하려는 분과 기초를 다시금 정리하고 싶은 현업 연구자와 개발자에게 최고의 책이 될 것입니다.

 

★ 누구를 위한 책인가?

_ 외부 라이브러리는 최소한만 이용하고 파이썬을 사용해 딥러닝 프로그램을 처음부터 구현합니다.

_ 파이썬이 처음인 사람도 이해할 수 있도록 파이썬 사용법도 간략히 설명합니다.

_ 실제 동작하는 파이썬 코드와 독자가 직접 실험할 수 있는 학습 환경을 제공합니다.

_ 간단한 기계학습 문제부터 시작하여 궁극에는 이미지를 정확하게 인식하는 시스템을 구현합니다.

_ 딥러닝과 신경망 이론을 알기 쉽게 설명합니다.

_ 오차역전파법(backpropagation)과 합성곱(convolution) 연산 등 복잡해 보이는 기술을 구현 수준에서 이해할 수 있도록 설명합니다.

_ 하이퍼파라미터 결정 방식, 가중치 초깃값 등 딥러닝을 활용하는 데 도움이 되는 실용적인 기술을 소개합니다.

_ 배치 정규화, 드롭아웃, Adam 같은 최근 트렌드를 설명하고 구현해봅니다.

_ 딥러닝이 왜 뛰어난지, 층이 깊어지면 왜 정확도가 높아지는지, 은닉층이 왜 중요한지와 같은 ‘왜’에 관한 문제도 다룹니다.

_ 자율 주행, 이미지 생성, 강화학습 등, 딥러닝을 응용한 예를 소개합니다.

 

★ 누구를 위한 책이 아닌가?

_ 딥러닝 분야의 최신 연구에 대해서는 자세히 다루지 않습니다.

_ 카페(Caffe), 텐서플로(TensorFlow), 체이너(Chainer) 등의 딥러닝 프레임워크 사용법은 설명하지 않습니다.

_ 딥러닝, 특히 신경망에 관한 아주 상세한 이론까지는 담지 않았습니다.

_ 딥러닝의 정확도를 높이기 위한 튜닝은 자세히 설명하지 않습니다.

_ 딥러닝 성능을 높여주는 GPU 기술은 구체적으로 다루지 않습니다.

_ 주로 이미지 인식을 다룹니다. 자연어 처리, 음성 인식 등의 사례는 다루지 않습니다.

 

사이토 고키 저자

사이토 고키

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

 

개앞맵시(이복연) 역자

개앞맵시(이복연)

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

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

개발자들과의 소통 창구로 소소하게 facebook.com/dev.loadmap 페이지를 운영 중이다.

 

1장 헬로 파이썬

1.1 파이썬이란?

1.2 파이썬 설치하기

__1.2.1 파이썬 버전

__1.2.2 사용하는 외부 라이브러리

__1.2.3 아나콘다 배포판

1.3 파이썬 인터프리터 

__1.3.1 산술 연산 

__1.3.2 자료형 

__1.3.3 변수 

__1.3.4 리스트 

__1.3.5 딕셔너리

__1.3.6 bool 

__1.3.7 if 문 

__1.3.8 for 문 

__1.3.9 함수 

1.4 파이썬 스크립트 파일 

__1.4.1 파일로 저장하기 

__1.4.2 클래스 

1.5 넘파이 

__1.5.1 넘파이 가져오기 

__1.5.2 넘파이 배열 생성하기 

__1.5.3 넘파이의 산술 연산 

__1.5.4 넘파이의 N차원 배열 

__1.5.5 브로드캐스트 

__1.5.6 원소 접근 

1.6 matplotlib 

__1.6.1 단순한 그래프 그리기 

__1.6.2 pyplot의 기능 

__1.6.3 이미지 표시하기 

1.7 정리 

 

2장 퍼셉트론

2.1 퍼셉트론이란? 

2.2 단순한 논리 회로 

__2.2.1 AND 게이트 

__2.2.2 NAND 게이트와 OR 게이트 

2.3 퍼셉트론 구현하기 

__2.3.1 간단한 구현부터 

__2.3.2 가중치와 편향 도입 

__2.3.3 가중치와 편향 구현하기 

2.4 퍼셉트론의 한계 

__2.4.1 도전! XOR 게이트 

__2.4.2 선형과 비선형 

2.5 다층 퍼셉트론이 출동한다면 

__2.5.1 기존 게이트 조합하기 

__2.5.2 XOR 게이트 구현하기 

2.6 NAND에서 컴퓨터까지 

2.7 정리 

 

3장 신경망

3.1 퍼셉트론에서 신경망으로 

__3.1.1 신경망의 예 

__3.1.2 퍼셉트론 복습 

__3.1.3 활성화 함수의 등장 

3.2 활성화 함수 

__3.2.1 시그모이드 함수 

__3.2.2 계단 함수 구현하기 

__3.2.3 계단 함수의 그래프 

__3.2.4 시그모이드 함수 구현하기 

__3.2.5 시그모이드 함수와 계단 함수 비교 

__3.2.6 비선형 함수 

__3.2.7 ReLU 함수 

3.3 다차원 배열의 계산 

__3.3.1 다차원 배열 

__3.3.2 행렬의 내적 

__3.3.3 신경망의 내적 

3.4 3층 신경망 구현하기 

__3.4.1 표기법 설명 

__3.4.2 각 층의 신호 전달 구현하기 

__3.4.3 구현 정리 

3.5 출력층 설계하기 

__3.5.1 항등 함수와 소프트맥스 함수 구현하기 

__3.5.2 소프트맥스 함수 구현 시 주의점 

__3.5.3 소프트맥스 함수의 특징 

__3.5.4 출력층의 뉴런 수 정하기

3.6 손글씨 숫자 인식 

__3.6.1 MNIST 데이터셋 

__3.6.2 신경망의 추론 처리 

__3.6.3 배치 처리 

3.7 정리 

 

4장 신경망 학습

4.1 데이터에서 학습한다! 

__4.1.1 데이터 주도 학습 

__4.1.2 훈련 데이터와 시험 데이터 

4.2 손실 함수 

__4.2.1 평균 제곱 오차 

__4.2.2 교차 엔트로피 오차 

__4.2.3 미니배치 학습 

__4.2.4 (배치용) 교차 엔트로피 오차 구현하기 

__4.2.5 왜 손실 함수를 설정하는가? 

4.3 수치 미분 

__4.3.1 미분 

__4.3.2 수치 미분의 예 

__4.3.3 편미분 

4.4 기울기 

__4.4.1 경사법(경사 하강법) 

__4.4.2 신경망에서의 기울기 

4.5 학습 알고리즘 구현하기 

__4.5.1 2층 신경망 클래스 구현하기

__4.5.2 미니배치 학습 구현하기 

__4.5.3 시험 데이터로 평가하기 

4.6 정리 

 

5장 오차역전파법

5.1 계산 그래프 

__5.1.1 계산 그래프로 풀다 

__5.1.2 국소적 계산 

__5.1.3 왜 계산 그래프로 푸는가? 

5.2 연쇄법칙 

__5.2.1 계산 그래프에서의 역전파 

__5.2.2 연쇄법칙이란? 

__5.2.3 연쇄법칙과 계산 그래프 

5.3 역전파 

__5.3.1 덧셈 노드의 역전파 

__5.3.2 곱셈 노드의 역전파 

__5.3.3 사과 쇼핑의 예 

5.4 단순한 계층 구현하기 

__5.4.1 곱셈 계층 

__5.4.2 덧셈 계층 

5.5 활성화 함수 계층 구현하기 

__5.5.1 ReLU 계층 

__5.5.2 Sigmoid 계층 

5.6 Affine/Softmax 계층 구현하기 

__5.6.1 Affine 계층 

__5.6.2 배치용 Affine 계층 

__5.6.3 Softmax-with-Loss 계층 

5.7 오차역전파법 구현하기 

__5.7.1 신경망 학습의 전체 그림 

__5.7.2 오차역전파법을 적용한 신경망 구현하기 

__5.7.3 오차역전파법으로 구한 기울기 검증하기 

__5.7.4 오차역전파법을 사용한 학습 구현하기

5.8 정리 

 

6장 학습 관련 기술들

6.1 매개변수 갱신 

__6.1.1 모험가 이야기 

__6.1.2 확률적 경사 하강법(SGD) 

__6.1.3 SGD의 단점 

__6.1.4 모멘텀 

__6.1.5 AdaGrad 

__6.1.6 Adam 

__6.1.7 어느 갱신 방법을 이용할 것인가? 

__6.1.8 MNIST 데이터셋으로 본 갱신 방법 비교 

6.2 가중치의 초깃값 

__6.2.1 초깃값을 0으로 하면? 

__6.2.2 은닉층의 활성화 분포 

__6.2.3 ReLU를 사용할 때의 가중치 초깃값 

__6.2.4 MNIST 데이터셋으로 본 가중치 초깃값 비교 

6.3 배치 정규화 

__6.3.1 배치 정규화 알고리즘 

__6.3.2 배치 정규화의 효과 

6.4 바른 학습을 위해 

__6.4.1 오버피팅 

__6.4.2 가중치 감소 

__6.4.3 드롭아웃 

6.5 적절한 하이퍼파라미터 값 찾기 

__6.5.1 검증 데이터 

__6.5.2 하이퍼파라미터 최적화 

__6.5.3 하이퍼파라미터 최적화 구현하기 

6.6 정리 

 

7장 합성곱 신경망(CNN)

7.1 전체 구조 

7.2 합성곱 계층 

__7.2.1 완전연결 계층의 문제점 

__7.2.2 합성곱 연산 

__7.2.3 패딩 

__7.2.4 스트라이드 

__7.2.5 3차원 데이터의 합성곱 연산 

__7.2.6 블록으로 생각하기 

__7.2.7 배치 처리 

7.3 풀링 계층 

__7.3.1 풀링 계층의 특징 

7.4 합성곱/풀링 계층 구현하기 

__7.4.1 4차원 배열 

__7.4.2 im2col로 데이터 전개하기 

__7.4.3 합성곱 계층 구현하기 

__7.4.4 풀링 계층 구현하기 

7.5 CNN 구현하기 

7.6 CNN 시각화하기 

__7.6.1 1번째 층의 가중치 시각화하기 

__7.6.2 층 깊이에 따른 추출 정보 변화 

7.7 대표적인 CNN 

__7.7.1 LeNet 

__7.7.2 AlexNet 

7.8 정리 

 

8장 딥러닝

8.1 더 깊게 

__8.1.1 더 깊은 네트워크로 

__8.1.2 정확도를 더 높이려면 

__8.1.3 깊게 하는 이유 

8.2 딥러닝의 초기 역사 

__8.2.1 이미지넷 

__8.2.2 VGG 

__8.2.3 GoogLeNet 

__8.2.4 ResNet 

8.3 더 빠르게(딥러닝 고속화) 

__8.3.1 풀어야 할 숙제 

__8.3.2 GPU를 활용한 고속화 

__8.3.3 분산 학습 

__8.3.4 연산 정밀도와 비트 줄이기 

8.4 딥러닝의 활용 

__8.4.1 사물 검출 

__8.4.2 분할 

__8.4.3 사진 캡션 생성 

8.5 딥러닝의 미래 

__8.5.1 이미지 스타일(화풍) 변환 

__8.5.2 이미지 생성 

__8.5.3 자율 주행 

__8.5.4 Deep Q-Network(강화학습) 

8.6 정리 

 

부록 A Softmax-with-Loss 계층의 계산 그래프

A.1 순전파 

A.2 역전파 

A.3 정리 

참고문헌 

파이썬으로 익히는 딥러닝 이론과 구현

 

새로운 지식을 배울 때 설명만 들어서는 석연치 않거나 금방 잊어버리게 됩니다. 그래서 무엇보다 ‘직접 해보는 것’이 중요합니다.

이 책은 딥러닝의 기본을 ‘이론 설명’과 ‘파이썬 구현 코드’라는 투 트랙으로 설명합니다. 각 장은 주제 하나를 설명한 후 그것을 실습할 수 있도록 꾸몄습니다. 즉, 실행되는 소스 코드를 준비했습니다. 직접 실행해보세요! 소스 코드를 읽으면서 스스로 생각하고 그 생각을 반영해 실험하다 보면 확실하게 자기 것으로 만들 수 있습니다. 여러 실험을 해보면서 겪는 시행착오 역시 큰 자산이 될 것입니다.

# 처음 시작하는 딥러닝


- 인터넷에 공개된 다양한 딥러닝 코드를 **활용**하는 것은 어쩌면 딥러닝을 처음 시작하는데 적절한 방법일 수도 있습니다. 하지만 활용에서 벗어나 **응용**을 하기 위해서는 탄탄한 기초가 필요합니다.

- 처음 시작하는 딥러닝 책은 딥러닝의 가장 기초가 되는 함수를 시작으로 합성곱 신경망인 CNN, 그리고 순환 신경망인 RNN까지 일련의 과정을 학습합니다. 딥러닝에 대한 전체적인 이해를 바탕으로 마지막 파이토치(PyTorch)를 활용하는 방법으로 책은 마무리가 됩니다.



## 주요 특징: 초반


- 책에서 신경망을 처음 학습할때 접근하는 방법은 아래와 같이 세 가지 관점으로 접근합니다. 이는 처음 시작하는 딥러닝 책의 시작을 보면 그 의도를 알 수 있습니다. `수식을 외우지 말라. 개념만 제대로 이해하면 나만의 수식을 만들 수 있다. - 존 코크런` 즉, 단순한 암기에서 벗어나 원리와 과정을 이해하여 응용할 수 있는 능력을 함양하는데 목적이 있다는 것을 알 수 있습니다.


  1. 수식: 수식 형태로 설명한다.

  2. 코드: 가능한 한 간단한 문법만 사용해 설명한다.

  3. 다이어그램: 코딩 인터뷰에서 사용할 법한 다이어그램으로 구조나 과정을 설명한다.


- 세 가지 관점은 특히 기본 지식을 수식과 코드로 접하고, 다이어그램으로 이해를 하는 구조는 독자들로 하여금 조금 더 쉽게 이해할수 있도록 도와줍니다.


- 또한 신경망 구조를 설명하고, 신경망 연산을 사용하는 부분에서는 처음부터 PyTorch나 TensorFlow와 같은 딥러닝 프레임워크를 사용하지 않고, 넘파이(NumPy)를 사용하여 보다 세부적인 이해를 도와줍니다. 손실 함수를 구현하기 위해 도함수 계산 과정을 직접 구현하는 등 딥러닝 프레임워크가 제공하는 추상화된 메소드를 호출하는 것이 아니므로 자신만의 무언가를 만들려고 할 때 큰 장벽에 가로막히는 과정을 최대한 줄이려는 노력이 보입니다.



## 주요 특징: 중반


- 기초를 벗어나 본격적인 딥러닝을 만들어보는 과정은 다양한 클래스를 설계하여 구현하는 과정을 학습합니다. 이는 프레임워크가 제공하는 클래스의 의도를 이해하는데 도움을 줍니다. 뿐만 아니라 직접 설계한 클래스는 이미 구현된 클래스를 가져다 사용하는 것 보다 활용하는데 쉽기 때문에 추가적인 테스트 또는 자신이 준비한 데이터를 사용해보는데 수월하다는 특징이 있습니다.

- 기본적인 딥러닝 클래스에서 다양한 부가적인 클래스로 확장하는 과정은 모멘텀(Momentum), 학습률 감쇠(Learning Rate Decay), 드롭아웃(Dropout) 등 학습을 도와주는 다양한 응용 기법을 다룹니다. 이 역시 직접 클래스로 구현하면서 동작을 확인합니다.



## 주요 특징: 후반


- 딥러닝의 기본적인 구조를 학습하면 CNN, RNN 구조의 특별한 연산 방법을 공부하며, 일반적인 Nerural Network에서 보다 발전된 내용을 학습합니다. 특히 CNN과 RNN과 같은 구조를 직접 구현한다는 것은, 프레임워크가 제공하지 않는 본인만의 특별한 레이어(Layer)를 설계하는데 큰 도움이 됩니다.


- 직접 구현한 NumPy 기반의 딥러닝 연산들은 GPU와 같은 하드웨어 가속을 처리할 수 없기 때문에 다양한 프레임워크를 사용하게 됩니다. 하지만 딥러닝의 이론과 코드에 대한 적절한 이해가 있다면 딥러닝 프레임워크를 사용하는데 큰 도움이 됩니다. 지금까지 학습한 내용을 PyTorch로 사용하는 방법을 학습하여 프레임워크가 제공하는 기능을 보다 명확하게 사용하도록 도와줍니다.



## 총평


- 딥러닝을 처음 공부하는데 많은 사람들이 참고하는 책이 [밑바닥부터 시작하는 딥러닝]이라 생각합니다. 밑바닥부터 시작하는 딥러닝도 딥러닝에 사용하는 다양한 기초 내용부터 시작하여 직접 코드로 구현하는 과정을 거치지만, 처음 시작하는 딥러닝보다 오래된 내용을 다룬다는 점, 순환 신경망 또는 PyTorch와 같은 내용들이 없다는 점을 고려하면, 딥러닝을 **처음 시작하는** 사람들에게 매력있는 책이라 생각합니다.

- 저 역시도 책에서 제공하는 코드를 따라하고, 모듈로 분리하여 하나의 패키지로 만들어보는 등 다양한 경험을 할 수 있어서 매우 좋았습니다.


> 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

관련 전공을 한 적이 없어 한쪽 한쪽 보는데 오래 걸리기는 하지만 이 책처럼 처음부터 천천히 익힐 수 있는 책은 없는 듯 합니다.

 

단지 44페이지에 '몇몇 분들'이 불편해하시는 이미지가 있으니 예민맘들은 피해주세요~

44페이지의 레나 이미지는 역사만 오래된 것이 아니라 비판도 오래되었습니다. 그런데 심지어 역주에서는 오히려 이것을 찾아 보기를 권장하기까지 하고 있어서 더 큰 문제입니다. 이 이미지는 이미 2016년부터 SciPy 등의 라이브러리에서 라이센스 문제로 삭제되었습니다. 2018년에는 Nature Nanotechnology 13(https://www.nature.com/articles/s41565-018-0337-2)에서도 이 이미지를 사용해 온 역사가 여성의 과학기술 교육을 장려하려는 노력과 충돌한다고 인정했고, 이 이미지를 사용한 논문은 게재하지 않겠다는 정책을 밝혔습니다. “밑바닥부터 시작하는 딥러닝”의 “밑바닥”이 남자들의 바닥을 가리키는 것은 아니라고 믿겠습니다.

안녕하세요. 해당교재를 구매한 여성구매자입니다.

44p의 레나사진에 대한 옮긴이의 글 삭제하십시오.

레나사진은 플레이보이라는 남성들 성욕해소풀이용 잡지의 여성나체사진입니다.

숨은 이야기가 궁금하니 찾아보라는 글을 남긴 것을 보면 옮긴이 본인도 알고 있겠지만요.

전공공부하려고 내돈주고 산 책에서 제 성을 대상화한 포르노그래피를 봐야하는 것도 불쾌하기 그지없는데 굳이 꼬릿말에 사진에 대해 검색해보라는 글을 남긴 의도가 무엇입니까? 여성독자 생각은 하나도 안하셨네요. 놀랍게도 여자도 딥러닝을 공부한답니다. 전공서적을 공부하면서까지 여자가지고 낄낄대고 싶어하는 남자들만 보는게 아니라요.

 

피드백 바랍니다.

스탠포드 CS231n 강좌의 핵심과 저자의 직관이 잘 담긴 책으로 유명하다. 텐서플로우 등의 프레임워크에 의존하지 않고 파이썬과 넘파이 만으로 코드를 구현했다는 점이 상당히 매력적이다. 동작원리를 더 명확히 이해하려면 코드 레벨에서 들여다 볼 필요가 있는데 이 책은 아주 잘 짜여진 코드를 제시하며 보다 깊은 이해를 유도한다.

고전적인 퍼셉트론으로 2장이 시작된다. (1장은 파이썬과 넘파이의 기본적인 소개이다.)
가중치(weight)와 편향(bias)에 대한 설명에서 약간의 전율을 느낄 수 있었다. 대강의 개념은 알고 있었으나 이 책의 설명을 통해 시야가 더 넓어진 느낌이다.
가중치는 퍼셉트론으로 들어오는 입력 신호가 결과에 주는 영향력을 조절하는 요소로 작용한다는 점과
태초의 퍼셉트론 식에서 우변에 존재하던 임계값(θ)을 좌변으로 넘기면서 그 값이 자연스레 편향이 되고 우변의 기준은 0으로 고정이 되었다는 설명을 통해 가중치와 편향의 개념을 더욱 확실히 다질 수 있었다. 

3
장의 내용은 퍼셉트론에서 신경망으로 발전하게 된 과정을 살펴본다. 태초에 사용되었던 계단 함수의 한계점과 그를 극복한 시그모이드 함수의 도입을 통해 신경망은 더욱 풍부한 표현력을 갖추게 되었다는 점을 밝힌다. 왜 시그모이드 함수를 사용하는가의 의문점은 완전히 해소된다.

4장에서는 경사하강법이 소개된다. 학습의 지표로 정확도가 아닌 오차를 사용하게 된 배경과 오차를 최소화하는 최적화 과정에서 기울기, 즉 미분값이 길잡이로 사용되게 된 자세한 설명이 나온다. 이 책의 설명만큼 깊고 명확한 이해를 유도할수는 없을것 같다. 오차함수와 경사하강법에 대한 이해의 범위가 넓어질뿐만 아니라 왜 이것이 튀어나오는가에 대한 궁금점이 해소된다. 처음 공부를 시작할 당시엔 미분이 갖는 의미를 다소 과소평가했던것 같다. 이 책을 통해 미분과 기울기라는 개념을 완전히 다시 생각하게 되었다.

필자는 이 책의 꽃을 5장이라고 생각한다. 딥러닝의 존속과 강하게 결부되는 개념인 "오차역전파"를 아름다울정도로 서술한 장이다. 계산그래프를 통해 수치적으로 접근을 하며 설명이 시작된다. 곱셈과 덧셈뿐인 간단한 연산으로 오차역전파의 과정을 되짚는다. 너무나도 손쉬운 연산의 연속으로 난제로 꼽히던 깊은 신경망의 학습을 가능케 한 이 아이디어가 경이롭기까지 하다. 마빈 민스키 교수님도 후학의 성취를 보면 놀라워하실 것이다. 

6장에서는 학습 관련 테크닉들이 소개된다. 경사하강법이 가지던 단점을 극복한 모멘텀, AdaGrad, Adam 알고리즘이 소개되는데 필자가 너무나도 갈망하던 내용이 소개되어서 정말 반가웠다. 특히 요새는 Adam이 많이 사용되는데 그토록 유명한 경사하강법을 놔두고 왜 이걸 쓸까란 궁금증이 항상 있었다. 이 책의 설명은 그 궁금점을 완전히 해소해준다. 저자의 깊은 이해와 직관력에 다시금 감탄했던 대목이다. 또한 가중치 초기값에 대한 설명도 압권이다. 기존의 초기화 방식으로는 기울기 소실 문제에 직면할 수 밖에 없는 필연성을 보여주고 그를 해결한 방안을 소개한다. Xavier 초기값과 He 초기값이 그것이다.

CNN을 다루는 7장도 숨쉴틈 없이 읽어봤다. 기본적인 설명은 다른 책을 통해서도 얻을 수 있다. 그러나 이 책에서는 통찰력과 직관력을 얻을 수 있다. "합성곱 계층, 쉽게 말해 필터가 보고 있는게 도대체 무엇일까?" "사람과 달리 인공신경망은 도대체 이미지를 어떻게 인식하는걸까?" "깊게 형성되어 있는 합성곱 계층에서는 도대체 무슨 일이 일어나는걸까?" 이러한 의문점에 대한 속 시원한 대답을 내놓는다.
앞단의 필터는 엣지와 블롭을 추출한다. 뒤로 진행될수록 사물의 텍스쳐(질감), 의미있는 부분 등으로 고급 정보가 추출된다. 깊은 층을 타고 정보가 흐를수록 이미지에서 고급 특징을 얻어내고 신경망은 사물을 더 잘 이해하게 되는것이다. 이 정도의 설명은 쉽게 찾아볼 수 있는 것이 아니다. 컴퓨터 비전 분야에도 관심이 있기에 더 흥미롭게 읽은 대목이다.

마지막 8장에서는 딥러닝의 추가적인 연구과제와 미래를 보여준다. 정말 공부하면 할수록 더 공부할게 많아지고 어려워지는게 딥러닝 같다. 정말 끝이 없다. 그러기에 재밌다. 자율주행과 강화학습 등의 내용도 흥미로웠지만 화풍변환 기술과 GAN의 소개가 가장 기억에 남는다. GAN을 공부해야겠다 GAN..

마지막 장 마저도 보물같은 내용이 넘쳐난다. 이 책은 페이지 한장 한장이 다 좋다. 딥러닝 분야를 떠나서.. 인문, 과학, 공학 전 분야를 통틀어서 인생책이라고 말하고 싶다. 책에 포스트잇 플래그를 수십장은 붙인것 같다. 서재에 고히 모셔두고 고전명작 처럼 탐독하고 싶은 책이다. 

 

 

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

 

 

 

 

다른 머신러닝/딥러닝 입문서를 읽어보면 이책이 얼마나 잘 쓴책인지 알 수 있음!!

딥러닝 스터디를 하면서 관련 서적이나 온라인 자료를 많이 접하고 있다. 이전에 한빛미디어의 이벤트에 응모한 적이 있는데 생각지도 않게 이벤트에 당첨이 되어 책을 몇 권 받게 되었다. 그 중 한권이 바로 이 책이다. TensorFlow를 이용하면 딥러닝을 정말 믿을 수 없이 간단하게 구성할 수 있지만, 공대생이라면 추상화된 라이브러리 뒤에서 어떠 일이 일어나고 있는지 궁금하기 마련이다. 이 책은 그런 궁금증이 있는 사람들을 위한 책이다. 머신 러닝 입문자라면, 딥러닝 첫걸음, 김성훈 교수님의 모두를 위한 머신러닝을 배운 뒤에 읽으면 좋을 것 같다.

나는 책을 읽을 때 머릿말을 꼭 먼저 읽는 편인데, 저자와 역자의 의도나 책의 구성에 대해서 이해할 수 있기 때문이다. 역자가 정말 친절하다. 딥러닝 분야에서 용어 간 번역에 대해 통일된 것이 아직 없는데, 역자가 친절히 용어정리를 해서 제공하고 있다. 그리고 중요한 용어의 경우는 역자가 각주를 달아 다른 문헌에서는 어떻게 번역하고 있는지 알려준다. 이뿐만 아니라, 딥러닝을 배우는데 도움이 되는 로드맵도 제공하고 있다. ‘딥러닝 첫걸음’을 읽으면서 불만이었던 부분을 해소해주고 있어서 정말 마음에 드는 부분이었다.

이 책은 입문서로서는 상당히 자세하게 이론에 대해서 설명하고 있다. 특히, 6장에서는 학습 관련 기술들을 소개하고 있는데 매개변수 최적화 방법(SGD, Momentum, AdaGrad, Adam), 매개변수 초기화 방법(Xavier, He method), 오버피팅 방지법(Weight decay, drop-out), 하이퍼파라미터 최적화 방법 네가지로 분류하여 직관적으로 이해할 수 있도록 설명하고 있다. 더 구체적인 설명은 레퍼런스 논문들을 참고하면 될 것 같다.

매개변수 최적화 방식 비교

가장 마음에 들었던 챕터는 5장이다. Backpropagation 방법을 그래프 계산으로 설명하고 있는데 편미분으로 식을 유도하는 것보다 쉽고 재미있었다. 식이 복잡해도 ‘국소적 연산’이라는 것에 주목하면 Backpropagation을 쉽게 유도해낼 수 있다는 것이 인상적이었다. TensorFlow의 신경망은 TensorBoard를 통해 시각화하여 확인할 수 있는데, 이 신경망의 모습이 Graph 계산식의 모습과 유사했다. 이 둘을 비교하며 공부하면 더 재미있을 것이다.

그래프 계산식 예제

TensorBoard를 통해 시각화한 신경망

마지막 장인 8장에서는 Vision분야의 응용기술 및 최신 머신러닝 트렌드를 소개한다. 학습자와 평가자 두 모델을 경쟁적으로 학습시키는 기술(DCGAN)이 인상적이었다. 예제로 침실 이미지를 생성해주는 신경망이 나왔는데, 실제로 존재하는 장소라고 믿을만큼 그럴듯한 결과가 나왔다. 기존 머신러닝에서 허들이 되는 부분 중 하나가 대량의 정답셋 생성이었는데, 이 분야가 잘 연구된다면 머신러닝이 더 부흥하게 될 것 같다.

이 책은 ‘진지한’ 학습자를 위한 딥러닝 입문서이다. 이 책을 읽기 전에 머신러닝에 대해 나름 잘 알고있다고 착각하고 있었다. 배우면 배울수록 모르는게 많아진다는 것을 새삼 느끼게 해주는 책이었다. 딥러닝을 배우고자 하는 모든 사람들에게 추천해주고 싶다.

#밑바닥부터 시작하는 딥러닝 #딥러닝 #딥러닝 책 추천

자율주행 자동차에 있어서 이미지 인식은 아주 중요합니다. 따라서 저자가 이것만 강조하여 빠르게 배울 수 있는 포인트를 선정하는 것은 정말 좋은 선택과 집중의 묘미가 있습니다.

 

얇은 책을 먼저 반복해서 공부하는 것은, 효율적인 방법이 될 만하다고 하죠. 딱 딥러닝 분야에서 이 책은 그런 역할읗 잘 보여 줍니다. 정말 인공지능 뉴스가 하루라도 빠지지 않습니다. 마치 처음 인터넷이 등장하고 윈도우95가 등장하던 그런 때가 생각납니다. 그보다는 더욱 더 파괴적인 영향력을 끼칠 것 같습니다. 그래서 미루고 미룬 딥러닝 공부라면 딱 이 책부터 해보면 시간도 절약하고 전체적인 흐름을 좀 더 깊이있게 알게 됩니다. 다른 사람에게 듣는 딥러닝은 한계가 있습니다. 그래서 직접 열공 성공하는 길은 당연히 스스로 해보는 것이죠. 

 

파이썬 기초부터 다루고 있습니다. 넘파이, matplotlib도 다루면서 파이썬 데이터분석을 빠르게 경험합니다. 파이썬을 처음 접하는 분들도 배려하고 있습니다. 

 

퍼셉트론 / 신경망 / 신경망 학습 / 오차역전파법 / 합성곱 신경망 / 딥러닝 

이렇게 알짜로만 배우기 위해 조금만 노력하면 되는 것이죠. 그렇게 흥미롭고 보람을 얻을 만한 시간을 이 작은 책, 얇은 책에서 경험할 수 있습니다. 물론 이미 잘 알려진 것처럼 이 분야는 수학을 새롭게 다시 공부하는 각오가 있어야 한다고 그렇죠. 당연히 인공지능적이라면 수학이 필요하겠죠. 물론 딥러닝 학습이라는 목적성을 위해 일단 빠르게 경험하는 것조차 행운입니다.

 

물론 저자는 특별히 "누구를 위한 책이 아닌가" 언급하면서 시작합니다. 즉, 딥러닝 분야 최신 연구, 상세한 이론, 튜닝, GPU 기술을 다루지 않고 자연어 처리, 음성 인식 등의 사례도 커버하지 않는다고 합니다. 이미지 인식은 그래도 굉장한 분야이죠. 그래서 일단 시작해보자. 그렇게 마음을 먹을 수 있습니다. 딥러닝 그 넘사벽이 완만한 동산 같이 느껴질 것입니다. 언제라도 마음 먹고 딱 주말 짧은 시간이라도 노력하면 어렵지 않게 완독을 할 것입니다. 

 

그래서 저자에게 경의를 표하게 됩니다. 우리에게 정말 필요한 기술을 아주 쉽게 알려 주니 말이죠!!!

 

딥러닝이란 자동차를 만들기위해 바퀴부터 만들어볼까!!!!

 

이 책을 비롯해 '밑바닥부터 시작하는/배우는...' 이란 키워드가 들어있는 책을 보면 드는 생각입니다. 

 

저의 개인적 성향일수도 있지만 아마 많은 분들도 이런 '밑바닥부터...'란 컨셉을 좋아하실 것 같습니다.

데이터 분석과 머신러닝의 수요와 관심이 높아졌고 이를 사용하기위한 기술적 진입장벽을 낮춰주고 시간적인 편의를 제공하는

각종 라이브러리, 프레임워크들이 많이 나오면서 많은 사람들이 사용을 하고 있습니다.

 

저 또한, 현업에서 파이썬의 Scikit-Learn을 사용하면서 큰 혜택을 얻는 사람 중 하나지요.

하지만, 좋은 라이브러리를 단순히 사용하는 것 뿐 아니라 '사용하는 알고리즘의 동작원리를 정말 속속들이 알고싶어!!'

...라는 생각은 항상 들지요. 

'해야되는데...해야되는데...알고싶긴한데...' 하던 차에 아주아주 제가 좋아하는 스타일의 책이 나왔습니다.

한줄씩, 한줄씩, 함수 하나씩 실행해보고 이게 뭔지 감을 잡으면서 여러번 반복해야 이해를 하는 저로서는 

이 책의 지식전달 방향이 너무너무 저와 잘 맞는다 생각합니다.

 

입문서는 정말 많은 것을 고려해야합니다.

프로그래밍은 할 줄 아는데 개념을 모르는 사람도 있고, 아예 프로그래밍을 못하는 사람도 있어서

설명 범위를 잘 잡는 것이 중요하다 생각하는데, 이 책은 아예 프로그래밍을 모르는 사람부터 고려한다는 배려가 

느껴집니다. 파이썬 설치부터 기본 문법, 설명과 시각화에 필요한 라이브러리의 사용법부터 시작해서 

퍼셉트론, 다층 퍼셉트론, 딥러닝으로 순차적으로 하위개념부터 상위개념을 포괄합니다.

 

말로만 설명해선 어려운 개념도 소스코드를 첨부해 설명해나가니, 독자는 책의 진행을 따라가다보면 어느새 

감을 잡게 됩니다. 저 또한, 그랬구요.

 

이런 친절함과 구성 덕분에 딥러닝이란 자동차를 만드는 과정을 바퀴부터 만들어가며 이해하기 수월했습니다.

물론, 저 스스로 더 공부가 필요합니다만 이 책으로 앞으로의 학습을 위한 토대를 잘 쌓아주었기에 과거보다 자신이 

생겼습니다.

 

이런 '밑바닥부터..' 시리즈가 많이 나왔으면 하는 바램입니다. 

 

밑바닥부터 시작하는 딥러닝 (Deep Learning from Scratch)
 
제목에 걸맞게 밑바닥부터 차근차근 쌓아 올려 딥러닝을 설명하는 책이다. 책은 딥러닝을 설명하기 위해 파이썬 언어를 사용하고 있는데, 심지어 파이썬 언어를 몰라도 이 책을 따라갈 수 있을 것이로 생각하며, 심지어 다른 언어를 이용해서도 비슷하게 구현하며 따라갈 수 있을 것으로 보인다. 수학적인 내용도 그림을 통해 쉽게 설명하고 있다. 경사하강법(gradient descent)를 통해 최적점(optima)을 찾아가는 과정이나, 연쇄법칙(chain rule)과 오차역전파법(backward propagation) 등을 차근차근 예시를 들어 설명하고 있어, 수학에 자신이 없더라도 딥러닝이 어떤 것인지 감을 잡을 수 있다. 책의 표지에 from Scratch라는 말이 아주 작게 쓰여 있는데, 조금 더 강조되어도 좋을 것 같다. 딥러닝을 알지 못하는 누구라도, 심지어 수학과 컴퓨터를 잘 알지 못하더라도 조금만 노력하면 이 책을 따라갈 수 있을 것이다. 책의 첫 장은 파이썬을 설치하는 법부터 간단한 문법을 다루고 있고, 두 번째 장은 퍼셉트론(대학교 논리설계 시간에 배우는 AND gate 등)부터 차근차근 다루고 있기 때문이다.
반면, 이미 딥러닝을 하고 있거나 적어도 스탠퍼드의 cs231n, Udacity의 Deep learning강좌 등을 통해 딥러닝을 조금이나마 배운 사람들에게는 너무 쉬운 내용이라 느껴질 수 있다. 하지만 그렇다 하더라도, 책의 예제코드를 따라 쳐보는 실습은 꽤 도움이 될 것이다. 책은 Tensorflow나 Caffe등의 Deep Learning Framework들을 사용하지 않고 전파(propagation)나 손실(loss) 등을 직접 구현하는데, 이를 통해 딥러닝 기초 아이디어와 프레임워크에서는 드러나지 않는 과정들을 다시 생각하고 공부할 수 있다. 또 하이퍼파라메터(hyper parameter)의 설정이나 활성화함수(activation function)으로 사용되는 비선형함수(non-linear function)의 선택 등에 대해서 몇 가지 팁을 얻고, 애매한 부분들을 다시 정리하는데에도 도움이 될 것으로 생각한다.
책은 크게 8개의 장로 나뉜다.
  • 첫 장은 파이썬에 대한 대략적인 소개인데, 파이썬을 이미 알고 있다면 읽지 않아도 무방한 내용이다.
  • 두 번째 장은 퍼셉트론(perceptron)을 다룬다. 논리 게이트를 사용하여 원하는 결과를 얻도록 설계하는 방법을 이야기하는데, 대학교 논리설계 수업을 들었다면 빠르게 훑어 보는 것으로 충분하다.
  • 세 번째 장부터 본격적으로 신경망이 등장한다. 앞 장에서 얘기했던 퍼셉트론을 확장하여 신경망을 설명하며, 활성화함수(activation function), 소프트맥스함수(softmax function)을 소개한다. 벡터 내적과 같은 기초적인 수학도 꼼꼼하게 설명한다.
  • 네 번째 장은 학습을 다룬다. 손실(loss function)을 왜 정의하는지, 이것과 딥러닝이 어떻게 관련이 있는지 설명한다(딥러닝은 정의한 손실을 최소화하는 과정이라고도 할 수 있으며 이를 학습이라 한다.). 손실을 줄이는 최적화 과정은 미분을 통해 이루어지는데, 수학을 어려워하는 사람들을 위해 한 절을 할애하여 미분을 자세히 설명한다.
  • 다섯째 장은 오차역전파법(backward propagation)을 다룬다. 최적화 과정에서의 미분을 빠르게 하는 방법을 설명하는데, 이를 위해 미분의 연쇄법칙(chain rule) 부터 차근차근 설명한다. 다소 복잡한 개념이지만, 예시와 함께 따라간다면 무리 없이 이해할 수 있다.
  • 여섯째 장은 모델을 설계할 때 고려해야 할 사항들을 다룬다. 흔히 사용하는 확률적경사하강법(stochastic gradient descent) 외에 어떤 방법들이 있을지, 하이퍼파라메터(hyper parameter)들을 어떻게 초기화 하여야 할지, 정규화(normalization)는 어떻게 하는지, 과적합(overfitting)을 방지하기 위한 테크닉은 어떤 것들이 있는지 소개한다.
  • 일곱째 장은 이미지를 다룰 때 주로 사용되는 딥러닝의 한가지 종류인 합성곱 신경망(convolutional neural network)를 다룬다. 패딩(padding), 스트라이드(stride), 풀링(pooling) 등의 용어를 설명하며, CNN의 동작 과정을 단계별 그림을 통해 최대한 쉽게 설명한다.
  • 마지막 여덟째 장은 실제 딥러닝을 다룰 때의 문제를 얘기한다. 세 번째 장부터 다섯째 장까지 설명한 딥러닝의 기본 아이디어로 보면, 딥러닝은 꽤 쉬워 보이지만 실제로는 그렇지 않다. 전통적인 알고리즘들과 달리 프로그래머가 내부 동작을 규정할 수 없는 상황에서 어떻게 정확도를 더 높일 수 있을지, 그리고 학습에 걸리는 시간을 어떻게 단축할 수 있을지 등의 문제를 소개한다. state of the art였던 알고리즘들을 소개하며 딥러닝의 변화와 발전을 보여주며, 책에서 다루었던 딥러닝이 어떤 문제에 활용될지를 얘기하며 책을 마무리한다.
이 책은 아주 기본적인 내용부터 수준 높은 이야기까지 단계별 상세한 그림으로 쉽게 설명하고 있으며, 300쪽 남짓의 얇은 책이지만 아주 잘 편집된 내용과 구성으로 딥러닝을 이해하는데 필수적인 것들을 알차게 다루고 있다. 흔히 딥러닝을 공부하는 데에 필수 3서로 비숍 책(Bishop, Pattern Recognition And Machine Learning)과 머피 책(Murphy, Machine Learning: A Probabilistic Perspective) 그리고 딥러닝북(Deep Learning Book) 을 꼽는데, 이들 책의 두께와 내용이 부담스럽다면 이 책으로 딥러닝을 접해보는 것을 추천한다.

 

딥러닝이라는 것을 이해하기 위해 알고 있어야 하는 기초 이론들의 개념을 설명하는 책입니다. 좀 더 자세하게는 퍼셉트론, 신경망, 딥러닝 순으로 목차가 구성되어 있습니다. 아직 전부는 읽지 못했고 4장 신경망 학습까지 읽으면서 예제 코드를 따라해 보고 있는데, 책을 읽으면서 느낀 점을 써보겠습니다.

몇 년 전에 대학 인공지능 수업을 수강할 때 퍼셉트론을 배우긴 했는데, 그 때는 퍼셉트론으로 AND, OR를 구현하는 방법을 배우고, XOR를 구현하는 숙제를 하고 넘어갔던 걸로 기억합니다. 퍼셉트론과 신경망에 막연히 관심은 있었지만 그것들을 다루는 책들은 저한테는 이해하기 너무나 어려운 것이었습니다. 그래서 언젠가 이런 걸 쉽게 설명하는 책이 나올 거야 하고 생각하고 있었는데, 정말로 몇 년 되지 않아서 지금 리뷰하는 이런 책이 나오게 되었네요.

이 책의 난이도는 다른 머신러닝 책들에 비해서는 굉장히 이해하기 쉬운 편이고 어려운 단어가 거의 없습니다. 처음 본 단어들은 대부분 설명이 충분히 되어 있기 때문에 읽는데 개념을 몰라서 찾아보는 일은 거의 없었습니다. 오라일리 번역서인데 저자가 일본인이라서인지 일본에서 출판된 다른 책들처럼 매우 세세하게 과정의 생략 없이 설명해주는 점이 좋았습니다.

이 책도 다른 머신러닝 책들처럼 파이썬을 프로그래밍 언어로 쓰고 있습니다. 쉬운 행렬 계산을 위해 파이썬 넘파이 라이브러리를 씁니다. 다만 머신러닝 라이브러리 설명서라기보다는 어떤 부분에 이런 라이브러리 함수들이 필요하고 왜 그런가를 설명해 줍니다.

3장부터는 입력층, 출력층만 있는 퍼셉트론에서 진보된 형태인 신경망을 다룹니다. 입력층, 출력층 사이에 여러 은닉층들이 있는 구조에서 출력값을 계산하는 구조를 예제 코드를 따라하면서 확인해 보니까 이해가 더 잘 되었습니다. 이 책은 특히 복잡한 구조들을 명쾌하게 드러내는 그림들이 많은 편이라서 이해에 많은 도움이 됩니다.

예제 코드는 한빛 출판사에서도 다운로드할 수 있는데, 여기에서 내려받은 예제 코드들의 주석 역시 한국어로 번역이 되어 있어서 좋았습니다. 어떤 모듈의 경우에는 책 안에서 예제 코드 안에 포함되어 있어서 불러와 쓰면 된다고 설명하고 있는데, 이런 모듈들은 데이터를 가공해주는 역할을 하므로 책의 범위를 벗어나기 때문에 일부러 설명하지 않은 것 같습니다. 나중에 예제 코드를 분석해 보면서 데이터를 가공하는 방법도 익히면 좋을 것 같습니다.

5장 이후에는 오차역전파법, CNN, 딥러닝 등을 다루는데 무리없이 이론들을 배울 수 있을 것 같아서 기대됩니다. 딥러닝 이전에 밑바닥이 되는 기초 이론을 배울 수 있는 장점이 있는 책입니다.

 

 

 

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

배송료 안내

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

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

닫기

리뷰쓰기

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

* 리뷰 작성시 유의사항

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

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

오탈자 등록

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

도서 인증

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

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

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

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

닫기

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

자료실