저자소개
저자 사이토 고키(藤 康毅)는 1984년 나가사키 현 쓰시마 태생. 도쿄공업대학교 공학부를 졸업하고 도쿄대학대학원 학제정보학부 석사 과정을 수료했다. 현재는 기업에서 컴퓨터 비전과 기계학습 관련 연구개발에 매진하고 있다. 오라일리재팬에서 『실천 파이썬 3』, 『컴퓨터 시스템의 이론과 구현』, 『실천 기계학습 시스템』 등을 번역했다.
목차
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 정리
참고문헌