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