단어 하나, 코드 한 줄 버릴 것이 없다!
단 한 권의 딥러닝 책을 선택한다면 바로 이 책이다!
케라스 창시자이자 구글 딥러닝 연구원인 저자는 ‘인공 지능의 민주화’를 강조한다. 이 책 역시 많은 사람에게 딥러닝을 전달하는 또 다른 방법이며, 딥러닝 이면의 개념과 구현을 가능하면 쉽게 이해할 수 있게 하는 데 중점을 두었다. 1판 대비 75% 이상 수정되고 3분의 1 이상 증가된 2판은 직관적인 설명, 컬러 일러스트레이션, 명확한 예로 딥러닝 애플리케이션 개발을 시작하는 데 필요한 기술을 빠르게 습득할 수 있도록 구성했다. 실생활에서 쉽게 적용할 수 있는 실용적인 기법과 신경망을 완성하기 위한 중요한 이론을 모두 다루고 있으며, 딥러닝을 시작하는 방법부터 실무 기법까지, 저자의 철학과 통찰력이 담긴 내용을 만날 수 있다. 또한, 수학 장벽을 없애고자 수학적 표기 없이 직관적이고 간결한 코드로 개념을 설명한다. 딥러닝에 관심이 있거나 이해의 폭을 넓히고자 하는 모든 분에게 추천한다.
Contents
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 맺음말
Author
프랑소와숄레,박해선
가장 널리 사용되는 딥러닝 프레임워크인 케라스의 창시자다. 현재 구글의 소프트웨어 엔지니어로 케라스 팀을 이끌고 있으며, 추상화, 추론 그리고 인공 지능의 일반성을 높이기 위한 방법을 연구한다.
가장 널리 사용되는 딥러닝 프레임워크인 케라스의 창시자다. 현재 구글의 소프트웨어 엔지니어로 케라스 팀을 이끌고 있으며, 추상화, 추론 그리고 인공 지능의 일반성을 높이기 위한 방법을 연구한다.