창시자의 철학까지 담은 머신 러닝/딥러닝 핵심 원리와 실무 기법
단어 하나, 코드 한 줄 버릴 것이 없다!
단 한 권의 딥러닝 책을 선택한다면 바로 이 책이다!
케라스 창시자이자 구글 딥러닝 연구원인 저자는 ‘인공 지능의 민주화’를 강조한다. 이 책 역시 많은 사람에게 딥러닝을 전달하는 또 다른 방법이며, 딥러닝 이면의 개념과 구현을 가능하면 쉽게 이해할 수 있게 하는 데 중점을 두었다. 1판 대비 75% 이상 수정되고 3분의 1 이상 증가된 2판은 직관적인 설명, 컬러 일러스트레이션, 명확한 예로 딥러닝 애플리케이션 개발을 시작하는 데 필요한 기술을 빠르게 습득할 수 있도록 구성했다. 실생활에서 쉽게 적용할 수 있는 실용적인 기법과 신경망을 완성하기 위한 중요한 이론을 모두 다루고 있으며, 딥러닝을 시작하는 방법부터 실무 기법까지, 저자의 철학과 통찰력이 담긴 내용을 만날 수 있다. 또한, 수학 장벽을 없애고자 수학적 표기 없이 직관적이고 간결한 코드로 개념을 설명한다. 딥러닝에 관심이 있거나 이해의 폭을 넓히고자 하는 모든 분에게 추천한다.
1장 딥러닝이란 무엇인가?
1.1 인공 지능과 머신 러닝, 딥러닝
__1.1.1 인공 지능
__1.1.2 머신 러닝
__1.1.3 데이터에서 표현을 학습하기
__1.1.4 딥러닝에서 ‘딥’이란 무엇일까?
__1.1.5 그림 3개로 딥러닝의 작동 원리 이해하기
__1.1.6 지금까지 딥러닝의 성과
__1.1.7 단기간의 과대 선전을 믿지 말자
__1.1.8 AI에 대한 전망
1.2 딥러닝 이전: 머신 러닝의 간략한 역사
__1.2.1 확률적 모델링
__1.2.2 초창기 신경망
__1.2.3 커널 방법
__1.2.4 결정 트리, 랜덤 포레스트, 그레이디언트 부스팅 머신
__1.2.5 다시 신경망으로
__1.2.6 딥러닝의 특징
__1.2.7 머신 러닝의 최근 동향
1.3 왜 딥러닝일까? 왜 지금일까?
__1.3.1 하드웨어
__1.3.2 데이터
__1.3.3 알고리즘
__1.3.4 새로운 투자의 바람
__1.3.5 딥러닝의 대중화
__1.3.6 지속될까?
2장 신경망의 수학적 구성 요소
2.1 신경망과의 첫 만남
2.2 신경망을 위한 데이터 표현
__2.2.1 스칼라(랭크- 0 텐서)
__2.2.2 벡터(랭크-1 텐서)
__2.2.3 행렬(랭크-2 텐서)
__2.2.4 랭크-3 텐서와 더 높은 랭크의 텐서
__2.2.5 핵심 속성
__2.2.6 넘파이로 텐서 조작하기
__2.2.7 배치 데이터
__2.2.8 텐서의 실제 사례
__2.2.9 벡터 데이터
__2.2.10 시계열 데이터 또는 시퀀스 데이터
__2.2.11 이미지 데이터
__2.2.12 비디오 데이터
2.3 신경망의 톱니바퀴: 텐서 연산
__2.3.1 원소별 연산
__2.3.2 브로드캐스팅
__2.3.3 텐서 곱셈
__2.3.4 텐서 크기 변환
__2.3.5 텐서 연산의 기하학적 해석
__2.3.6 딥러닝의 기하학적 해석
2.4 신경망의 엔진: 그레이디언트 기반 최적화
__2.4.1 도함수란?
__2.4.2 텐서 연산의 도함수: 그레이디언트
__2.4.3 확률적 경사 하강법
__2.4.4 도함수 연결: 역전파 알고리즘
2.5 첫 번째 예제 다시 살펴보기
__2.5.1 텐서플로를 사용하여 첫 번째 예제를 밑바닥부터 다시 구현하기
__2.5.2 훈련 스텝 실행하기
__2.5.3 전체 훈련 루프
__2.5.4 모델 평가하기
2.6 요약
3장 케라스와 텐서플로 소개
3.1 텐서플로란?
3.2 케라스란?
3.3 케라스와 텐서플로의 간략한 역사
3.4 딥러닝 작업 환경 설정하기
__3.4.1 주피터 노트북: 권장하는 딥러닝 실험 도구
__3.4.2 코랩 사용하기
3.5 텐서플로 시작하기
__3.5.1 상수 텐서와 변수
__3.5.2 텐서 연산: 텐서플로에서 수학 계산하기
__3.5.3 GradientTape API 다시 살펴보기
__3.5.4 엔드-투-엔드 예제: 텐서플로 선형 분류기
3.6 신경망의 구조: 핵심 Keras API 이해하기
__3.6.1 층: 딥러닝의 구성 요소
__3.6.2 층에서 모델로
__3.6.3 ‘컴파일’ 단계: 학습 과정 설정
__3.6.4 손실 함수 선택하기
__3.6.5 fit( ) 메서드 이해하기
__3.6.6 검증 데이터에서 손실과 측정 지표 모니터링하기
__3.6.7 추론: 훈련한 모델 사용하기
3.7 요약
4장 신경망 시작하기: 분류와 회귀
4.1 영화 리뷰 분류: 이진 분류 문제
__4.1.1 IMDB 데이터셋
__4.1.2 데이터 준비
__4.1.3 신경망 모델 만들기
__4.1.4 훈련 검증
__4.1.5 훈련된 모델로 새로운 데이터에 대해 예측하기
__4.1.6 추가 실험
__4.1.7 정리
4.2 뉴스 기사 분류: 다중 분류 문제
__4.2.1 로이터 데이터셋
__4.2.2 데이터 준비
__4.2.3 모델 구성
__4.2.4 훈련 검증
__4.2.5 새로운 데이터에 대해 예측하기
__4.2.6 레이블과 손실을 다루는 다른 방법
__4.2.7 충분히 큰 중간층을 두어야 하는 이유
__4.2.8 추가 실험
__4.2.9 정리
4.3 주택 가격 예측: 회귀 문제
__4.3.1 보스턴 주택 가격 데이터셋
__4.3.2 데이터 준비
__4.3.3 모델 구성
__4.3.4 K-겹 검증을 사용한 훈련 검증
__4.3.5 새로운 데이터에 대해 예측하기
__4.3.6 정리
4.4 요약
5장 머신 러닝의 기본 요소
5.1 일반화: 머신 러닝의 목표
__5.1.1 과소적합과 과대적합
__5.1.2 딥러닝에서 일반화의 본질
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.4.3 조기 종료 사용하기
__5.4.4 모델 규제하기
5.5 요약
6장 일반적인 머신 러닝 워크플로
6.1 작업 정의
__6.1.1 문제 정의
__6.1.2 데이터 수집
__6.1.3 데이터 이해
__6.1.4 성공 지표 선택
6.2 모델 개발
__6.2.1 데이터 준비
__6.2.2 평가 방법 선택
__6.2.3 기준 모델 뛰어넘기
__6.2.4 모델 용량 키우기: 과대적합 모델 만들기
__6.2.5 모델 규제와 하이퍼파라미터 튜닝
6.3 모델 배포
__6.3.1 고객에게 작업을 설명하고 기대치 설정하기
__6.3.2 추론 모델 배치하기
__6.3.3 작동 중 모델 모니터링하기
__6.3.4 모델 유지 관리
6.4 요약
7장 케라스 완전 정복
7.1 다양한 워크플로
7.2 케라스 모델을 만드는 여러 방법
__7.2.1 Sequential 모델
__7.2.2 함수형 API
__7.2.3 Model 서브클래싱
__7.2.4 여러 방식을 혼합하여 사용하기
__7.2.5 작업에 적합한 도구 사용하기
7.3 내장된 훈련 루프와 평가 루프 사용하기
__7.3.1 사용자 정의 지표 만들기
__7.3.2 콜백 사용하기
__7.3.3 사용자 정의 콜백 만들기
__7.3.4 텐서보드를 사용한 모니터링과 시각화
7.4 사용자 정의 훈련, 평가 루프 만들기
__7.4.1 훈련 vs 추론
__7.4.2 측정 지표의 저수준 사용법
__7.4.3 완전한 훈련과 평가 루프
__7.4.4 tf.function으로 성능 높이기
__7.4.5 fit( ) 메서드를 사용자 정의 루프로 활용하기
7.5 요약
8장 컴퓨터 비전을 위한 딥러닝
8.1 합성곱 신경망 소개
__8.1.1 합성곱 연산
__8.1.2 최대 풀링 연산
8.2 소규모 데이터셋에서 밑바닥부터 컨브넷 훈련하기
__8.2.1 작은 데이터셋 문제에서 딥러닝의 타당성
__8.2.2 데이터 내려받기
__8.2.3 모델 만들기
__8.2.4 데이터 전처리
__8.2.5 데이터 증식 사용하기
8.3 사전 훈련된 모델 활용하기
__8.3.1 사전 훈련된 모델을 사용한 특성 추출
__8.3.2 사전 훈련된 모델 미세 조정하기
8.4 요약
9장 컴퓨터 비전을 위한 고급 딥러닝
9.1 세 가지 주요 컴퓨터 비전 작업
9.2 이미지 분할 예제
9.3 최신 컨브넷 아키텍처 패턴
__9.3.1 모듈화, 계층화 그리고 재사용
__9.3.2 잔차 연결
__9.3.3 배치 정규화
__9.3.4 깊이별 분리 합성곱
__9.3.5 Xception 유사 모델에 모두 적용하기
9.4 컨브넷이 학습한 것 해석하기
__9.4.1 중간 활성화 시각화
__9.4.2 컨브넷 필터 시각화하기
__9.4.3 클래스 활성화의 히트맵 시각화하기
9.5 요약
10장 시계열을 위한 딥러닝
10.1 다양한 종류의 시계열 작업
10.2 온도 예측 문제
__10.2.1 데이터 준비
__10.2.2 상식 수준의 기준점
__10.2.3 기본적인 머신 러닝 모델 시도해 보기
__10.2.4 1D 합성곱 모델 시도해 보기
__10.2.5 첫 번째 순환 신경망
10.3 순환 신경망 이해하기
__10.3.1 케라스의 순환 층
__10.4 순환 신경망의 고급 사용법
__10.4.1 과대적합을 감소하기 위해 순환 드롭아웃 사용하기
__10.4.2 스태킹 순환 층
__10.4.3 양방향 RNN 사용하기
__10.4.4 더 나아가서
10.5 요약
11장 텍스트를 위한 딥러닝
11.1 자연어 처리 소개
11.2 텍스트 데이터 준비
__11.2.1 텍스트 표준화
__11.2.2 텍스트 분할(토큰화)
__11.2.3 어휘 사전 인덱싱
__11.2.4 TextVectorization 층 사용하기
11.3 단어 그룹을 표현하는 두 가지 방법: 집합과 시퀀스
__11.3.1 IMDB 영화 리뷰 데이터 준비하기
__11.3.2 단어를 집합으로 처리하기: BoW 방식
__11.3.3 단어를 시퀀스로 처리하기: 시퀀스 모델 방식
11.4 트랜스포머 아키텍처
__11.4.1 셀프 어텐션 이해하기
__11.4.2 멀티 헤드 어텐션
__11.4.3 트랜스포머 인코더
__11.4.4 BoW 모델 대신 언제 시퀀스 모델을 사용하나요?
11.5 텍스트 분류를 넘어: 시퀀스-투-시퀀스 학습
__11.5.1 기계 번역 예제
__11.5.2 RNN을 사용한 시퀀스-투-시퀀스 모델
__11.5.3 트랜스포머를 사용한 시퀀스-투-시퀀스 모델
11.6 요약
12장 생성 모델을 위한 딥러닝
12.1 텍스트 생성
__12.1.1 시퀀스 생성을 위한 딥러닝 모델의 간단한 역사
__12.1.2 시퀀스 데이터를 어떻게 생성할까?
__12.1.3 샘플링 전략의 중요성
__12.1.4 케라스를 사용한 텍스트 생성 모델 구현
__12.1.5 가변 온도 샘플링을 사용한 텍스트 생성 콜백
__12.1.6 정리
12.2 딥드림
__12.2.1 케라스 딥드림 구현
__12.2.2 정리
12.3 뉴럴 스타일 트랜스퍼
__12.3.1 콘텐츠 손실
__12.3.2 스타일 손실
__12.3.3 케라스로 뉴럴 스타일 트랜스퍼 구현하기
__12.3.4 정리
12.4 변이형 오토인코더를 사용한 이미지 생성
__12.4.1 이미지의 잠재 공간에서 샘플링하기
__12.4.2 이미지 변형을 위한 개념 벡터
__12.4.3 변이형 오토인코더
__12.4.4 케라스로 VAE 구현하기
__12.4.5 정리
12.5 생성적 적대 신경망 소개
__12.5.1 GAN 구현 방법
__12.5.2 훈련 방법
__12.5.3 CelebA 데이터셋 준비하기
__12.5.4 판별자
__12.5.5 생성자
__12.5.6 적대 네트워크
__12.5.7 정리
12.6 요약
13장 실전 문제 해결을 위한 모범 사례
13.1 모델의 최대 성능을 끌어내기
__13.1.1 하이퍼파라미터 최적화
__13.1.2 모델 앙상블
13.2 대규모 모델 훈련하기
__13.2.1 혼합 정밀도로 GPU에서 훈련 속도 높이기
__13.2.2 다중 GPU 훈련
__13.2.3 TPU 훈련
13.3 요약
14장 결론
14.1 핵심 개념 리뷰
__14.1.1 AI를 위한 여러 방법
__14.1.2 머신 러닝 분야에서 딥러닝이 특별한 이유
__14.1.3 딥러닝에 대해
__14.1.4 핵심 기술
__14.1.5 일반적인 머신 러닝 워크플로
__14.1.6 주요 네트워크 구조
__14.1.7 딥러닝의 가능성
14.2 딥러닝의 한계
__14.2.1 머신 러닝 모델의 의인화 위험
__14.2.2 자동 기계 vs 지능 에이전트
__14.2.3 지역 일반화 vs 궁극 일반화
__14.2.4 지능의 목적
__14.2.5 일반화의 스펙트럼
14.3 AI에서 일반화를 높이기 위한 방법
__14.3.1 올바른 목표 설정의 중요성: 지름길 규칙
__14.3.2 새로운 목표
14.4 지능 구현: 누락된 구성 요소
__14.4.1 추상적 비유에 뛰어난 지능
__14.4.2 두 종류의 추상화
__14.4.3 누락된 절반의 그림
14.5 딥러닝의 미래
__14.5.1 프로그램 같은 모델
__14.5.2 딥러닝과 프로그램 합성을 혼합하기
__14.5.3 영구 학습과 모듈화된 서브루틴 재사용
__14.5.4 장기 비전
14.6 빠른 변화에 뒤처지지 않기
__14.6.1 캐글의 실전 문제로 연습하기
__14.6.2 아카이브(arXiv)를 통해 최신 논문 읽기
__14.6.3 케라스 생태계 탐험하기
14.7 맺음말
ㆍ지은이 프랑소와숄레
ㆍ옮긴이 박해선
독자의견 남기기