밑바닥부터 시작하는 딥러닝: 파이썬으로 익히는 딥러닝 이론과 구현. [1]
- 대등서명
- ゼロから作るDeep Learning
- 개인저자
- 사이토 고키 지음; 개앞맵시 옮김
- 발행사항
- 서울: 한빛미디어, 2019
- 형태사항
- 312 p.: 삽화, 도표; 24 cm
- ISBN
- 9788968484636
- 청구기호
- 004.73 개61ㅁ
- 일반주기
- 개앞맵시의 본명은 \"이복연\"임 권말부록: A Softmax-with-Loss 계층의 계산 그래프 원저자명: 齋藤康毅
- 서지주기
- 참고문헌(p. 300-307)과 색인(p. 308-312)수록
소장정보
위치 | 등록번호 | 청구기호 / 출력 | 상태 | 반납예정일 |
---|---|---|---|---|
이용 가능 (1) | ||||
1자료실 | 00019879 | 대출가능 | - |
- 등록번호
- 00019879
- 상태/반납예정일
- 대출가능
- -
- 위치/청구기호(출력)
- 1자료실
책 소개
파이썬으로 익히는 딥러닝 이론과 구현
새로운 지식을 배울 때 설명만 들어서는 석연치 않거나 금방 잊어버리게 됩니다. 그래서 무엇보다 ‘직접 해보는 것’이 중요합니다.
이 책은 딥러닝의 기본을 ‘이론 설명’과 ‘파이썬 구현 코드’라는 투 트랙으로 설명합니다. 각 장은 주제 하나를 설명한 후 그것을 실습할 수 있도록 꾸몄습니다. 즉, 실행되는 소스 코드를 준비했습니다. 직접 실행해보세요! 소스 코드를 읽으면서 스스로 생각하고 그 생각을 반영해 실험하다 보면 확실하게 자기 것으로 만들 수 있습니다. 여러 실험을 해보면서 겪는 시행착오 역시 큰 자산이 될 것입니다.
_예제 소스: https://github.com/WegraLee/deep-learning-from-scratch
★ 누구를 위한 책인가?
_ 외부 라이브러리는 최소한만 이용하고 파이썬을 사용해 딥러닝 프로그램을 처음부터 구현합니다.
_ 파이썬이 처음인 사람도 이해할 수 있도록 파이썬 사용법도 간략히 설명합니다.
_ 실제 동작하는 파이썬 코드와 독자가 직접 실험할 수 있는 학습 환경을 제공합니다.
_ 간단한 기계학습 문제부터 시작하여 궁극에는 이미지를 정확하게 인식하는 시스템을 구현합니다.
_ 딥러닝과 신경망 이론을 알기 쉽게 설명합니다.
_ 오차역전파법(backpropagation)과 합성곱(convolution) 연산 등 복잡해 보이는 기술을 구현 수준에서 이해할 수 있도록 설명합니다.
_ 하이퍼파라미터 결정 방식, 가중치 초깃값 등 딥러닝을 활용하는 데 도움이 되는 실용적인 기술을 소개합니다.
_ 배치 정규화, 드롭아웃, Adam 같은 최근 트렌드를 설명하고 구현해봅니다.
_ 딥러닝이 왜 뛰어난지, 층이 깊어지면 왜 정확도가 높아지는지, 은닉층이 왜 중요한지와 같은 ‘왜’에 관한 문제도 다룹니다.
_ 자율 주행, 이미지 생성, 강화학습 등, 딥러닝을 응용한 예를 소개합니다.
★ 누구를 위한 책이 아닌가?
_ 딥러닝 분야의 최신 연구에 대해서는 자세히 다루지 않습니다.
_ 카페(Caffe), 텐서플로(TensorFlow), 체이너(Chainer) 등의 딥러닝 프레임워크 사용법은 설명하지 않습니다.
_ 딥러닝, 특히 신경망에 관한 아주 상세한 이론까지는 담지 않았습니다.
_ 딥러닝의 정확도를 높이기 위한 튜닝은 자세히 설명하지 않습니다.
_ 딥러닝 성능을 높여주는 GPU 기술은 구체적으로 다루지 않습니다.
_ 주로 이미지 인식을 다룹니다. 자연어 처리, 음성 인식 등의 사례는 다루지 않습니다.
목차
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 정리
참고문헌