Description
딥러닝에 관련된 거의 모든 최신 기술을 설명한다. 회귀부터 시작해 딥러닝의 기초를 설명하고, 컨볼루션 신경망, 순환 신경망, LTSM, 자연어 처리, 이미지 합성 등에 대한 최신 기술 동향을 소개한다. 특히 현재 활발히 연구 중인 AutoML 분야의 현황과 구글 클라우드를 이용한 AutoML 실습도 다루며, 확률적 텐서플로와 그래프 신경망에 대해서도 친절하게 안내한다.

풍부한 예제를 통해 케라스가 완전 통합된 텐서플로의 사용 방법을 다양한 응용분야에 걸쳐 직접 구축해볼 수 있다. GAN을 통한 필기체 숫자의 생성, RNN과 LTSM이 나오게 된 배경 및 어떤 문제를 해결하고자 했는지에 대한 배경 설명을 듣고 나면 다양한 각도에서 딥러닝을 이해하게 될 것이다.

트랜스포머를 별도로 다루는 새로운 장을 추가했고, BERT, GPT-2, GPT3, Reformer 등 다양한 언어 모델에 대한 상세한 설명과 비교 및 Huggin Face 라이브러리를 통한 다양한 언어 예제 등 2판에 비해 여러 내용을 보강했다. 그래프 신경망 또한 예제와 함께 그 기능과 특징을 자세히 설명한다.
저자

아미타 카푸어, 안토니오 걸리, 수짓 팔

(Amita Kapoor)
신경망 및 인공지능 분야의 연구를 가르치고 관리했다. 인도 델리대학교에서 부교수로 20년 이상 재직했으며 현재 프리랜서로 활동하고 있다. AI 컨설턴트이며 AI 및 EdTech 분야에서 일하는 다양한 조직에 전문 지식을 제공하고 있다.

목차

1장. TF와 신경망 기초
__TensorFlow(TF)란 무엇인가?
__Keras란 무엇인가?
__신경망 소개
__퍼셉트론
____TensorFlow 첫 코드 예제
__다층 퍼셉트론 - 신경망 첫 예제
____퍼셉트론 훈련의 문제점과 그 해결책
____활성화 함수 - 시그모이드
____활성화 함수 - tanh
____활성화 함수 - ReLU
____추가적인 2개의 활성화 함수 - ELU와 LeakyReLU
____활성화 함수들
____간단히 말해 - 결국 신경망이란 무엇인가?
__실제 예제 - 필기체 숫자 인식
____원-핫 인코딩
____TensorFlow로 단순 신경망 정의
____단순 TensorFlow망 실행과 베이스라인 구축
____TensorFlow의 단순 신경망을 은닉층으로 개선
____TensorFlow에서 드롭아웃으로 단순망 개선
____TensorFlow에서 서로 다른 최적기 테스트
____에폭 수 증가시키기
____최적기 학습률 조절
____내부 은닉층 개수 증가
____배치 계산 크기 증가
____필기체 인식 실행 차트 요약
__규제화
____과적합을 피하기 위한 규제화 적용
____배치 정규화의 이해
__Google Colab 사용 - CPUs, GPUs, TPUs
__감정 분석
____초매개변수 튜닝과 AutoML
__출력 예측
__역전파에 대한 실용적 개괄
__지금까지 배운 것?
__딥러닝 접근법을 향해
__요약
__참고문헌


2장. 회귀와 분류
__회귀란 무엇인가?
__선형회귀를 사용한 예측
____단순 선형회귀
____다중 선형회귀
____다변량 선형회귀
__선형회귀를 위한 신경망
____TensorFlow Keras를 사용한 단순 선형회귀
____TensorFlow Keras API를 사용한 다중과 다변량 선형회귀
__분류 과제와 결정 경계
____로지스틱 회귀
____MNIST 데이터셋에 로지스틱 회귀 적용
__요약
__참고문헌


3장. 컨볼루션 신경망
__심층 컨볼루션 신경망
____지역 수용 필드
____가중치 공유 및 편향
____수학적 예제
____TensorFlow의 ConvNets
____풀링 계층
______최댓값 풀링
______평균값 풀링
____ConvNets 요약
__DCNN의 예시 - LeNet
____TF에서 LeNet 코드
____딥러닝의 위력 이해하기
__딥러닝으로 CIFAR-10 이미지 인식
____심층 신경망으로 CIFAR-10 성능 향상
____데이터 증강을 통해 CIFAR-10 성능 개선
____CIFAR-10으로 예측
__대형 이미지 인식을 위한 고심층 컨볼루션 신경망
____VGG16 신경망으로 고양이 인식
____tf.keras의 내장 VGG16 Net 활용
____특징 추출을 위해 사전 구축된 딥러닝 모델 재활용
__전이학습을 위한 심층 인셉션 V3망
__다른 CNN 아키텍처
____AlexNet
____잔차 네트워크
____HighwayNets와 DenseNets
____Xception
__스타일 변환
____콘텐츠 거리
____스타일 거리
__요약
__참고문헌


4장. 단어 임베딩
__단어 임베딩 - 유래와 기초
__분산 표현
__정적 임베딩
____Word2Vec
____GloVe
__Gensim을 사용한 자신만의 임베딩 생성
__gensim을 사용한 임베딩 공간 탐색
__워드 임베딩을 사용한 스팸 탐지
____데이터 얻기
____데이터를 사용 준비
____임베딩 행렬 구축
____스팸 분류기 정의
____모델의 훈련과 평가
____스팸 탐지기 실행
__신경망 임베딩 - 단어 이외의 용도
____Item2Vec
____node2vec
__문자와 부분 단어 임베딩
__동적 임베딩
__문장과 문단 임베딩
__언어 모델 기반 임베딩
____BERT를 특징 추출기로 사용
__요약
__참고문헌


5장. 순환 신경망
__기본 RNN 셀
____BPTT
____사라지고 폭발하는 그래디언트
__RNN 셀 변형
____LSTM
____GRU
____핍홀 LSTM
__RNN 변형
____양방향 RNN
____상태 저장 RNN
__RNN 위상들
____예제: 일대다-텍스트 생성을 학습
____예제: 다대일-감정 분석
____예제: 다대다 - POS 태깅
__인코더-디코더 아키텍처 - seq2seq
____예제: 기계 번역을 위한 어텐션 없는 seq2seq
__어텐션 매커니즘
____예제: 머신 번역을 위한 어텐션이 있는 seq2seq
__요약
__참고문헌


6장. 트랜스포머
__아키텍처
____핵심 직관
______위치 인코딩
______어텐션
______셀프-어텐션
______멀티-헤드 (셀프-)어텐션
____어텐션을 계산하는 방법
____인코더-디코더 아키텍처
____잔류와 정규화 계층
____트랜스포머 아키텍처 개요
____훈련
__트랜스포머의 아키텍처
____트랜스포머 종류
______디코더 또는 자기회귀
______인코더 또는 오토인코딩
______Seq2seq
______멀티모달
______검색
____어텐션
______전체 대 희소
______LSH 어텐션
______지역 어텐션
__사전 훈련
____인코더 사전 훈련
____디코더 사전 훈련
____인코더-디코더 사전 훈련
____사전 훈련 과제의 종류
__대중적이고 잘 알려진 모델에 대한 개요
____BERT
____GPT-2
____GPT-3
____리포머
____빅버드
____트랜스포머-XL
____XLNet
____RoBERTa
____ALBERT
____StructBERT
____T5 및 MUM
____ELECTRA
____DeBERTa
____진화된 트랜스포머와 MEENA
____LaMDA
____스위치 트랜스포머
____RETRO
____패스웨이와 PaLM
__구현
____트랜스포머 참조 구현: 번역의 예
____허깅 페이스
______텍스트 생성
______모델 자동 선택 및 자동 토큰화
______명명된 개체 인식
______요약
______미세 조정
____TFHub
__평가
____품질
______GLUE
______SuperGLUE
______SQuAD
______RACE
______NLP-progress
____크기
______크다고 항상 더 좋지는 않다
____제공 비용
__최적화
____양자화
____가중치 가지치기
____증류
__일반적인 함정: 해야 할 일과 하지 말아야 할 일
____권장
____금지 사항
____트랜스포머의 미래
__요약


7장. 비지도학습
__주성분 분석
____MNIST 데이터셋에 PCA
____TensorFlow 임베딩 API
__K-평균 군집화
____TensorFlow에서의 K-평균
____k-평균 변형
__자기 조직화 지도
____SOM을 사용한 컬러 매핑
__제한된 볼츠만 머신
____RBM을 사용한 이미지 재구성
____심층 신뢰 신경망
__요약
__참고문헌


8장. 오토인코더
__오토인코더 소개
__바닐라 오토인코더
____TensorFlow Keras layers - 맞춤형 계층 정의
____오토인코더를 사용해 필기체 숫자 재구성
__희소 오토인코더
__디노이징 오토인코더
____디노이징 오토인코더를 이용한 이미지 정리
__스택된 오토인코더
____이미지의 노이즈 제거를 위한 컨볼루션 오토인코더
____Keras 오토인코더 예제: 문장 벡터
__가변 인코더
__요약
__참고문헌


9장. 생성 모델
__GAN이란 무엇인가?
____TensorFlow에서 GAN을 사용하는 MNIST
__심층 컨볼루션 GAN(DCGAN)
____MNIST 숫자를 위한 DCGAN
__몇 가지 흥미로운 GAN 아키텍처
____SRGAN
____CycleGAN
____InfoGAN
__GAN의 흥미로운 응용들
__TensorFlow로 CycleGAN 구현
__데이터 생성을 위한 흐름 기반 모델
__데이터 생성을 위한 확산 모델
__요약
__참고문헌


10장. 자기-지도학습
__선행 연구
__자기-지도학습
__자기 예측
____자기회귀 생성
______PixelRNN
______이미지 GPT(IPT)
______GPT-3
______XLNet
______WaveNet
______WaveRNN
____마스킹된 생성
______BERT
______스택 잡음 제거 오토인코더
______컨텍스트 오토인코더
______채색
____본질적 관계 예측
______상대적 위치
______조각 그림 퍼즐 풀기
______회전
____하이브리드 자기 예측
______VQ-VAE
_

출판사 서평

◈ 이 책에서 다루는 내용 ◈
◆ 텐서플로로 보편적인 GNN을 사용한 그래프 마이닝 과제 해결 방법
◆ 사전 학습 단계부터 평가하는 미세-튜닝 단계까지 트랜스포머의 세계 탐구
◆ 자기-지도학습을 적용한 자연어 처리, 컴퓨터 비전, 자동 신호 처리 방법
◆ TensorFlow Probability를 이용한 확률과 딥러닝 모델 병합
◆ 클라우드에서 모델을 훈련하고 텐서플로를 실제 환경에서 작동시키는 방법
◆ 텐서플로 2.x와 케라스 API를 통한 머신러닝과 딥러닝 모델 구축


◈ 이 책의 대상 독자 ◈
머신러닝 경험이 있는 데이터 과학자이거나 신경망에 어느 정도 노출된 AI 프로그래머라면 이 책이 TensorFlow를 사용한 딥러닝에 대한 유용한 시작점임을 알게 될 것이다. 딥러닝 쓰나미에 대한 관심이 높아지고 있는 소프트웨어 엔지니어라면 이 책이 해당 주제에 대한 지식을 넓힐 수 있는 기초 플랫폼이 될 것이다. 이 책을 읽으려면 Python에 대한 기본 지식이 필요하다.


◈ 이 책의 구성 ◈
1장은 머신러닝 및 딥러닝을 위해 Google에서 개발한 오픈 소스 라이브러리인 텐서플로의 기본 사항을 배운다. 또한 지난 몇 년 동안 놀라운 성장을 이룬 머신러닝의 두 가지 영역인 신경망과 딥러닝의 기초를 소개한다. 1장의 기본 목적은 기본적이지만 완전한 딥러닝 실습을 수행하는 데 필요한 모든 도구를 소개하는 것이다.
2장은 머신러닝 기술의 기본 작업인 회귀와 분류에 중점을 둔다. 텐서플로를 사용해 단순, 다중 및 다변량 회귀 모델을 구축하는 방법을 배운다. 또한 다중 클래스 분류 문제를 해결하기 위해 로지스틱 회귀를 사용한다.
3장은 MNIST 필기 문자를 높은 정확도로 인식하기 위해 딥러닝 ConvNet을 사용하는 방법을 다룬다. CIFAR 10 데이터셋을 사용해 10개의 카테고리로 딥러닝 분류기를 구축하고 ImageNet 데이터셋으로 1,000개의 카테고리로 정확한 분류기를 구축할 것이다. 또한 VGG16과 같은 대규모 딥러닝 네트워크와 InceptionV3와 같은 매우 깊은 네트워크를 사용하는 방법을 조사한다. 아울러 전이학습에 대한 논의로 마무리한다.
4장은 분산 표현과 단어 임베딩의 기원과 이론을 소개한다. 그다음 문장과 단락을 기반으로 하는 정적 단어 기반 임베딩보다 더 역동적이고 표현적인 단어 임베딩의 진행 상황을 차트로 설명한다. 또한 그래프의 노드 또는 웹 애플리케이션의 사용자 세션과 같이 단어가 아닌 시퀀스도 포함하도록 단어 임베딩의 아이디어를 확장할 수 있는 방법을 살펴본다. 다양한 종류의 단어 임베딩을 사용하는 여러 예 역시 포함한다.
5장에서는 순환 신경망을 다루며, 자연어 또는 시계열과 같은 시퀀스 데이터를 처리하는 데 최적화된 신경망의 중요한 아키텍처 하위 부류에 대해 설명한다. LSTM(Long Short-Term Memory) 및 GRU(Gated Recurrent Unit)와 같은 중요한 아키텍처를 설명하고 양방향 상태 및 일괄 처리 상태를 처리하도록 확장할 수 있는 방법을 보여준다. 또한 텍스트 생성, 감정 분석 및 품사 태깅과 같은 특정 작업에 대한 다양한 토폴로지와 함께 RNN을 사용하는 예를 소개한다. 또한 인코더-디코더 파이프라인에서 한 쌍의 RNN을 사용해 다양한 NLP 작업을 해결하는 인기 있는 seq2seq 아키텍처에 대해서도 설명한다.
6장에서는 전통적인 자연어 처리 분야를 혁신한 딥러닝 아키텍처인 트랜스포머를 다룬다. 먼저 가장 인기 있는 모델에 대한 심층 분석과 함께 아키텍처 및 다양한 범주의 트랜스포머에 대한 핵심 직관을 검토하는 것으로 시작한다. 그런 다음 Hugging Face 및 TensorFlow Hub와 같은 인기 있는 라이브러리와 바닐라 아키텍처를 기반으로 하는 구현에 중점을 둔다. 그다음 평가, 최적화 및 트랜스포머를 사용할 때 일반적으로 채택되는 몇 가지 모범 사례에 대해 간략하게 설명한다. 마지막 절은 트랜스포머를 사용해 NLP와 완전히 다른 영역인 컴퓨터 비전 작업을 수행하는 방법을 검토하는 데 전념한다. 이를 위해서는 어텐션(attention) 메커니즘에 대한 신중한 정의가 필요하다. 결국, “필요한 것은 어텐션이 전부다”. 그리고 관심의 핵심에는 벡터 간의 코사인 유사성 외에는 아무것도 없다.
7장에서는 비지도학습 모델에 대해 자세히 설명한다. PCA, k-평균 및 자체 구성 맵과 같은 클러스터링 및 차원 감소에 필요한 기술을 다룬다. 볼츠만(Boltzmann) 머신과 텐서플로를 사용한 구현에 대해 자세히 설명한다. 다루는 개념은 RBM(Restricted Boltzmann Machines) 구축으로 확장된다.
8장에서는 입력을 대상으로 재생성하려는 신경망 부류인 오토인코더에 대해 설명한다. 희소 오토인코더, 컨볼루션 오토인코더, 디노이징(denosing) 오토인코더와 같은 다양한 종류의 오토인코더를 다룰 것이다. 여기서는 잡음 제거 자동 인코더를 훈련해 입력 이미지에서 잡음을 제거한다. 오토인코더를 사용해 MNIST 숫자를 생성하는 방법을 보여준다. 또한 문장 벡터를 생성하기 위해 LSTM 자동 인코더를 구축하는 것과 관련된 단계도 다룬다. 마지막으로, 이미지를 생성하기 위해 가변 오토인코더를 구축하는 방법을 배운다.
9장에서는 생성적 적대 신경망(GAN)에 중점을 둔다. 먼저 첫 번째 제안된 GAN 모델로 시작해 MNIST 문자를 위조하는 데 사용한다. 또한 심층 컨볼루션 GAN을 사용해 유명인 이미지를 만드는 방법을 보여준다. 그리고 SRGAN, InfoGAN 및 CycleGAN과 같은 다양한 GAN 아키텍처에 대해 설명한다. 다양하고 멋진 GAN 애플리케이션도 다룬다. 마지막으로 겨울-여름 이미지를 변환하기 위해 CycleGAN의 텐서플로 구현으로 결론을 내린다.
10장에서는 컴퓨터 비전, 오디오 및 자연어 처리에서 자기-지도학습에 사용되는 다양한 전략에 대한 개요를 제공한다. 자기회귀 생성, 마스킹된 생성, 관계 예측 및 이러한 접근 방식의 하이브리드와 같은 전략을 통한 자기 예측을 다룬다. 또한 자기-지도학습을 위한 인기 있는 기술인 대조학습과 다양한 응용 분야의 다양한 구실 작업에 대한 응용을 다룬다.
11장에서는 Q-러닝 알고리듬과 벨만(Bellman) 방정식을 다루는 강화학습에 중점을 둔다. 할인된 보상, 탐색 및 활용, 할인 요소를 다룬다. 또한 정책 기반 및 모델 기반 강화학습에 대해 설명한다. 아타리(Atari) 게임을 플레이하기 위해 DQN(Deep Q-Learning Network)을 구축할 것이다. 마지막으로 정책 기울기 알고리듬을 사용해 에이전트를 교육하는 방법을 배운다.
12장에서는 확률론적 추론과 통계 분석을 수행하기 위해 텐서플로 위에 구축된 라이브러리인 텐서플로 확률을 소개한다. TensorFlow Probability를 사용해 합성 데이터를 생성하는 방법을 보여준다. 베이즈 네트워크를 구축하고 추론을 수행한다. 12장에서는 또한 불확실성, 우발적 및 인식적 개념과 훈련된 모델의 불확실성을 계산하는 방법을 소개한다.
13장에서는 기계학습 기술에 익숙하지 않은 도메인 전문가가 머신러닝 기술을 쉽게 사용할 수 있도록 하는 것을 목표로 하는 AutoML을 소개한다. 먼저 Google Cloud Platform을 사용해 실습을 진행하고 기본 사항에 대해 간략히 논의한 후 실질적인 실습 작업을 수행한다. 자동 데이터 준비, 자동 기능 엔지니어링 및 자동 모델 생성을 다룬다. 그런 다음 테이블, 비전, 텍스트, 번역 및 비디오 처리를 위한 여러 솔루션과 함께 오토케라스 및 Google Cloud AutoML을 소개한다.
14장에서는 딥러닝의 이면의 수학을 다룬다. 이 주제는 상당히 고급 과정이므로 실무자에게 반드시 필요하진 않다. 그러나 신경망을 다룰 때 “내부적으로” 어떤 일이 일어나고 있는지 이해하고자 한다면 읽어보길 권한다. 역사적 소개부터 시작해 미분과 그래디언트의 고등학교 수준의 개념을 검토하고 딥러닝 네트워크를 최적화하는 데 일반적으로 사용되는 그래디언트 디센트 및 역전파 알고리듬을 소개한다.
15장에서는 TPU에 대해 설명한다. TPU는 초고속 방식으로 신경망 수학 연산을 실행하기 위해 Google에서 개발한 매우 특별한 ASIC 칩이다. 연산의 핵심은 여러 내적(행*열)을 병렬로 계산하는 수축기 승수이므로 기본 딥러닝 작업의 계산을 가속화한다. TPU를 행렬 또는 텐서 작업에 초점을 맞춘 딥러닝을 위한 특수 목적의 보조 프로세서로 생각하라. 지금까지의 4세대 TPU와 추가 IoT용 Edge TPU를 검토할 것이다.
16장에서는 다른 딥러닝 프레임워크를 소개한다. Hugging Face, OpenAI의 GPT3 및 DALL-E 2를 살펴본다. 또 다른 인기 있는 딥러닝 프레임워크인 PyTorch를 소개한다. 또한 H2O.ai와 AutoML 모듈도 다룬다. 아울러 딥러닝 모델을 위한 ONNX 오픈 소스 형식에 대해서도 간략하게 설명한다.
17장에서는 그래프 신경망과 인기 있는 딥 그래프 라이브러리(DGL)를 특히 강조하면서 그래프와 그래프 기계학습을 소개한다. 먼저 GNN(및 DGL에서 사용 가능)에서 사용되는 일반적으로 사용되는 다양한 그래프 계층의 이론을 설명하고 노드 분류, 링크 예측 및 그래프 분류에 사용되는 GNN의 예를 제공한다. 또한 고유한 그래프 데이터셋으로 작업하고 그래프 계층을 사용자 지정해 새로운 GNN 아키텍처를 생성하는 방법도 보여준다. 그다음 이기종 그래프 및 시간 그래프와 같은 Graph ML 분야의 최첨단 발전을 다룬다.
18장에서는 훈련과 제품에서 최상의 모델을 얻기 위해 따라야 할 전략과 사례에 중점을 둔다. 여기서는 데이터 관련 사례와 모델 관련 사례라는 두 가지 관점에서 모범 사례를 설명한다.
19장에서는 텐서플로 생태계의 다양한 구성 요소를 설명한다. 사전 학습된 딥러닝 모델의 저장소인 TensorFlow Hub를 소개한다. 여기서는 바로 사용할 수 있는 데이터셋 모음인 텐서플로 데이터셋에 관해 설명한다. 또한 모바일 및 임베디드 시스템과 웹을 위한 프레