이 책은 텐서플로(TensorFlow)를 사용하여 다양한 딥러닝 모델을 학습하는 방법과 최적화 이론을 다룬다. 딥러닝에 관련된 많은 수학 이론이 있지만, 가장 핵심적인 최적화 문제를 중심으로 딥러닝 학습을 설명한다. 2020년도에 발간된 “딥러닝을 위한 최적화와 수치해석”의 개정판 성격이 강하다.
텐서플로 1이던 기존 실습 예제들이 모두 텐서플로 2로 변경되는 큰 변화가 있다. 또한, 기존에는 자연어 데이터에서 중요한 사전학습 관련 파트를 추가하고, 영상, 자연어, 그리고 테이블 데이터가 모두 섞여 있는 데이터를 다루는 파트도 추가하여 실제 현장과 제품에 적용할 때 도움이 되도록 구성하였다.
현재까지 출판된 딥러닝 관련 도서와 강의들은 최적화 이론에 대해서 다루지 않거나 너무 간단하게 다룬다. 하지만 최적화 이론을 이해하기에는 부족한 양입니다. 이 책에서는 가장 먼저 최적화 이론을 소개하고, 최적화 문제는 텐서플로를 사용하여 푼다.
Contents
이 책을 내며...
들어가며...
추천의 말
PART 1 프로그래밍 준비 작업
Chapter 01 개발환경 설정하기
1.1 아나콘다(Anaconda)
1.1.1 아나콘다 설치하기
1.1.2 터미널 실행 방법
1.1.3 개발환경 생성과 삭제 그리고 패키지 설치
1.1.4 개발환경 활성화와 비활성화
1.1.5 개발환경 내에 패키지 설치하기
1.1.6 개발환경 내보내기와 불러오기
1.2 텐서플로(TensorFlow) 및 관련 패키지 설치하기
1.2.1 yml을 통해 불러오기
1.2.2 yml없이 직접 설정하기
Chapter 02 주피터 노트북과 파이썬 튜토리얼
2.1 주피터 노트북(Jupyter Notebook)
2.1.1 파이썬 코드 실행하기
2.1.2 마크다운
2.1.3 편리한 기능 소개
2.2 파이썬 기초 문법
2.2.1 변수 선언 및 함수 선언, 그리고 익명함수
2.2.2 주요 변수 타입
2.2.3 for loop
2.2.4 if statement
2.2.5 제너레이터(Generator)
2.3 자주 사용되는 파이썬 문법 패턴
2.3.1 데이터 타입마다 다른 for loop 스타일
2.3.2 zip이 들어간 for loop
2.3.3 한 줄 for문
2.3.4 파일 읽기/쓰기
18.6 ReLU 활성 함수
18.6.1 사라지는 그래디언트 문제(Vanishing gradient problem)
18.6.2 문제의 이해
18.6.3 문제의 원인
18.6.4 해결
18.7 자동 특성(Feature) 추출
18.8 MNIST 숫자 분류 문제
18.8.1 데이터 훑어보기
18.8.2 One-Hot 인코딩
18.8.3 CNN모델 구축하기
18.8.4 최적화 문제 설정
18.8.5 하이퍼 파라미터 설정
18.8.6 학습 시작
18.8.7 정확도 확인
18.8.8 전체 코드
Chapter 19 GAN(Generative Adversarial Networks) 모델
19.1 min-max 최적화 문제 소개
19.2 Generator(생성기)
19.2.1 학습용 데이터 준비
19.2.2 Leaky ReLU(누설 ReLU)
19.2.3 Tanh Output
19.3 Discriminator(판별기)
19.4 GAN 네트워크 만들기
19.4.1 Hyperparameters
19.5 손실함수
19.6 Training(학습)
19.6.1 Training(학습)의 세부 조건 설정
19.6.2 Training one epoch
19.6.3 학습 시작
19.6.4 Training loss(학습 손실)
19.6.5 생성기로 만든 샘플 영상
19.6.6 생성기로 새로운 영상 만들기
19.7 유용한 링크 및 전체 코드
19.7.1 유용한 링크
19.7.2 전체 코드
PART 6 응용 문제
Chapter 20 영상
20.1 Transfer Learning(전이 학습)
20.2 꽃 사진 분류
20.2.1 필요한 사전 지식
20.2.2 환경 준비
20.2.3 문제 소개
20.2.4 VGG16 모델
20.2.5 데이터 훑어보기
20.2.6 모델 만들기
20.2.7 최적화 문제와 하이퍼 파라미터 설정
20.2.8 학습
20.2.9 정확도
20.3 Fine-tuning
20.4 Transfer Learning 전체 코드
Chapter 21 자연어 데이터 전처리와 머신러닝 모델
21.1 IMDB 데이터
21.2 자연어 데이터 전처리
21.3 머신러닝에서 사용하던 전처리 기법
Chapter 22 IMDB 영화 리뷰 예제: RNN 모델 학습
22.1 Embedding
22.2 LSTM모델 학습
22.3 Bidirectional LSTM모델 학습
22.4 Multi-Layer LSTM 모델 학습
Chapter 23 IMDB 영화 리뷰 예제: RNN 사전학습 모델 활용
23.1 임베딩 그대로 사용하기
23.2 임베딩 추가 학습하기
Chapter 24 IMDB 영화 리뷰 예제: BERT 사전학습 모델 활용
24.1 BERT 사전학습 모델
24.2 BERT 사전학습 모델 로드하기
24.3 BERT 사전학습을 IMDB 감정 분석으로 추가 학습
Chapter 25 혼합 타입 데이터를 입력으로 받는 딥러닝 모델
25.1 Concatenate를 활용한 다중 입력 모델 생성
25.2 이미지 데이터 추가한 모델 생성
25.3 이미지와 자연어 데이터 추가한 모델 생성
PART 7 부록
Chapter 26 GPU 사용하기
26.1 CPU vs GPU - Latency and throughput processing
26.2 TPU, Tensor core
26.3 GPU 환경 구축
26.3.1 Linux(리눅스)
26.3.2 Windows(윈도)
26.4 텐서플로 예제
Chapter 27 텐서플로를 이용한 병렬 계산
27.1 암달의 법칙
27.2 데이터 병렬화와 모델 병렬화
27.2.1 데이터 병렬화(data parallelism)
27.2.2 모델 병렬화(model parallelism)
27.3 데이터 병렬화 예제
27.4 전체 코드
27.4.1 18장 데이터 병렬화
27.4.2 20장 데이터 병렬화
찾아보기
Author
황윤구,양한별,신동욱
연세대학교 계산과학공학과에서 강화학습을 통한 수리생물학으로 응용수학 박사학위를 마쳤다. 패스트 캠퍼스에서 ‘딥러닝’ 강의를 했으며, Udacity에서는 Deep Reinforcement Learning 나노디그리의 멘토로 활동하고 있다. 삼성메디슨 연구소에서 영상/신호처리 알고리즘 개발을 했었고, 현재는 LG CNS D&A 연구소에서 AI Professional로 강화학습 파트에서 근무하고 있다.
연세대학교 계산과학공학과에서 강화학습을 통한 수리생물학으로 응용수학 박사학위를 마쳤다. 패스트 캠퍼스에서 ‘딥러닝’ 강의를 했으며, Udacity에서는 Deep Reinforcement Learning 나노디그리의 멘토로 활동하고 있다. 삼성메디슨 연구소에서 영상/신호처리 알고리즘 개발을 했었고, 현재는 LG CNS D&A 연구소에서 AI Professional로 강화학습 파트에서 근무하고 있다.