서브메뉴

본문

텐서플로우 2와 케라스를 이용한 고급 딥러닝 (DL, GAN, VAE, 심층 RL, 비지도 학습, 객체 감지 및 분할 등 적용)
텐서플로우 2와 케라스를 이용한 고급 딥러닝 (DL, GAN, VAE, 심층 RL, 비지도 학습, 객체 감지 및 분할 등 적용)
저자 : Rowel Atienza
출판사 : DK로드북스
출판년 : 2021
ISBN : 9791196965655

책소개

최근 4차 산업혁명 시대를 맞이하여 인공지능을 포함한 빅데이터, 로봇, 자율주행자동차,
드론, 5G 등의 기술 발전에서 소프트웨어에 대한 중요성이 점점 더 높아지고 있다. 특히 소프트웨어를 이용한 인공지능(AI) 분야에 대한 적용 및 활용 기술의 개발이 활발하게 이루어지고 있다. 따라서 인공지능, 기계 학습, 심층 학습, 강화 학습 분야의 기술 개발을 위해 파이썬 등과 같은 다양한 프로그램 언어들이 개발되어 사용되고 있는데, 그중에서 심층 학습은 컴퓨터 비전, 음성 인식, 자연어 처리 및 이해 분야에서 놀랄만한 발전을 거듭해 왔다.
앞으로도 심층 학습은 비전 기반의 감지 및 인식, 자율 주행, 에너지 절약, 신약 개발, 금융 및 마케팅 분야의 애플리케이션에서 심층 학습 알고리즘이 많이 적용될 것으로 예상하고 있다. 따라서, Tensorflow와 Keras를 이용한 고급 심층 학습 프로그래밍을 익히고자 하는 국내 개발자들에게 많은 도움이 될 좋은 책이라 생각되어 번역하게 되었다.
이 책을 통해 Tensorflow 2에서 Keras API를 이용하여 구현한 코드를 샘플을 차례대로 배우게 되면 개발자가 구현하고자 하는 애플리케이션 개발에 적용할 수 있는 능력을 키울 수 있을 것으로 판단된다. 이 책에는 다음과 같은 내용이 차례대로 설명되어 있다.

ㆍ 심층 학습의 기본 개요로서 최적화, 정규화, 손실 함수, 레이어와 네트워크의 핵
심 개념
ㆍ 심층 신경망 구조인 Resnet와 DensNet, 함수형 API
ㆍ 입력 데이터의 잠재 표현을 다루는 오토인코더 네트워크 구조
ㆍ 생성적 적대 신경망(GAN)의 기본 개념과 DCGAN, CGAN
ㆍ 향상된 GAN에서 개선된 알고리즘과 WGAN, LSGAN, ACGAN
ㆍ 풀어진 GAN, 교차-도메인 GAN
ㆍ 변분 오토인코더에 대한 기본 개념과 와 CVAE, β-VAE
ㆍ 심층 강화 학습과 Q-learning 기본 개념
ㆍ 강화 학습에서 의사결정을 위해 정책을 학습하는 신경망
ㆍ 객체 감지, 시멘틱 분할, 상호 정보를 이용한 비지도 학습
위의 내용을 텐서플로우 2의 kerasAPI 또는 tf.keras로 구현한 코드도 함께 제시되어 있다.
따라서 기본 개념과 실제 코드 구현을 통하여 학습하게 되면 실제 개발자가 해결하고자 하는 문제들에 대해서도 적용이 가능할 것으로 생각된다. 나름은 전문 용어들을 표준에 맞추어 번역하려고 노력하였지만 부족한 점이 많으리라 생각된다. 혹 미흡한 부분을 지적해 주시면 다음 기회에 더 좋은 내용이 되도록 노력하겠다. 이 책을 통하여 기계 학습 및 심층 학습을 이용한 애플리케이션 알고리즘 개발에 조금이나마 도움이 되었으면 한다.
[교보문고에서 제공한 정보입니다.]

출판사 서평

최근 4차 산업혁명 시대를 맞이하여 인공지능을 포함한 빅데이터, 로봇, 자율주행자동차,

드론, 5G 등의 기술 발전에서 소프트웨어에 대한 중요성이 점점 더 높아지고 있다. 특히 소프트웨어를 이용한 인공지능(AI) 분야에 대한 적용 및 활용 기술의 개발이 활발하게 이루어지고 있다. 따라서 인공지능, 기계 학습, 심층 학습, 강화 학습 분야의 기술 개발을 위해 파이썬 등과 같은 다양한 프로그램 언어들이 개발되어 사용되고 있는데, 그중에서 심층 학습은 컴퓨터 비전, 음성 인식, 자연어 처리 및 이해 분야에서 놀랄만한 발전을 거듭해 왔다.

앞으로도 심층 학습은 비전 기반의 감지 및 인식, 자율 주행, 에너지 절약, 신약 개발, 금융 및 마케팅 분야의 애플리케이션에서 심층 학습 알고리즘이 많이 적용될 것으로 예상하고 있다. 따라서, Tensorflow와 Keras를 이용한 고급 심층 학습 프로그래밍을 익히고자 하는 국내 개발자들에게 많은 도움이 될 좋은 책이라 생각되어 번역하게 되었다.

이 책을 통해 Tensorflow 2에서 Keras API를 이용하여 구현한 코드를 샘플을 차례대로 배우게 되면 개발자가 구현하고자 하는 애플리케이션 개발에 적용할 수 있는 능력을 키울 수 있을 것으로 판단된다. 이 책에는 다음과 같은 내용이 차례대로 설명되어 있다.



? 심층 학습의 기본 개요로서 최적화, 정규화, 손실 함수, 레이어와 네트워크의 핵

심 개념

? 심층 신경망 구조인 Resnet와 DensNet, 함수형 API

? 입력 데이터의 잠재 표현을 다루는 오토인코더 네트워크 구조

? 생성적 적대 신경망(GAN)의 기본 개념과 DCGAN, CGAN

? 향상된 GAN에서 개선된 알고리즘과 WGAN, LSGAN, ACGAN

? 풀어진 GAN, 교차-도메인 GAN

? 변분 오토인코더에 대한 기본 개념과 와 CVAE, β-VAE

? 심층 강화 학습과 Q-learning 기본 개념

? 강화 학습에서 의사결정을 위해 정책을 학습하는 신경망

? 객체 감지, 시멘틱 분할, 상호 정보를 이용한 비지도 학습

위의 내용을 텐서플로우 2의 kerasAPI 또는 tf.keras로 구현한 코드도 함께 제시되어 있다.

따라서 기본 개념과 실제 코드 구현을 통하여 학습하게 되면 실제 개발자가 해결하고자 하는 문제들에 대해서도 적용이 가능할 것으로 생각된다. 나름은 전문 용어들을 표준에 맞추어 번역하려고 노력하였지만 부족한 점이 많으리라 생각된다. 혹 미흡한 부분을 지적해 주시면 다음 기회에 더 좋은 내용이 되도록 노력하겠다. 이 책을 통하여 기계 학습 및 심층 학습을 이용한 애플리케이션 알고리즘 개발에 조금이나마 도움이 되었으면 한다.



| 이 책의 대상 |

이 책은 심층 학습의 고급 주제들을 더 깊이 이해하길 원하는 기계 학습 엔지니어들과 학생들을 대상으로 한다. Keras로 구현한 코드로 각 설명을 보충하였다. 특히, 텐서플로우 2의 Keras API 또는 tf.keras를 이용하였다. 이 책은 이론을 Keras 코드로 구현하는 방법에 대해 이해하길 원하는 독자들을 위한 것이다. 이론을 이해하는 것 외에도, 코드 구현은 기계 학습을 실제의 문제들에 적용함에 있어 어려운 작업 중 하나이다.



■이 책의 특징

1장. “Keras와 함께 고급 심층 학습 소개”에서는 최적화, 정규화, 손실 함수, 기본적인 레이어들 및 네트워크의 핵심 개념과 tf.keras로 이에 대한 구현을 다룬다. 이 장은 심층 학습과 순차형 API를 이용하는 tf.keras에 관한 리뷰를 제공한다.



2장. “심층 신경망”에서는 tf.keras의 함수형 API를 다룬다. 널리 사용되는 두 개의 심층 신경망 아키텍처인 ResNet과 DensNet을 설명하고 함수형 API를 이용하여 tf.keras로 구

현한다.



3장. “오토인코더”에서는 입력 데이터의 잠재 표현을 다루는데 일반적으로 사용되는 오토인코더(autoencoder)라고 하는 네트워크의 구조를 다룬다. 오토인코더의 두 가지 예제 어플리케이션인 노이즈 제거와 채색을 설명하고 tf.keras로 구현한다.



4장. “생성적 적대 신경망(GAN)”에서는 최근 심층 학습의 발전된 중요한 기법 중 하나이다. GAN은 실제처럼 보이는 합성된 데이터를 생성하는데 사용된다. 이 장은 GAN의 기

본 개념을 설명한다. GAN의 두 가지 예제인 DCGAN과 CGAN을 설명하고 tf.keras

로 구현한다.



5장. “향상된 GAN”에서는 기본 GAN을 개선한 알고리즘을 다룬다. 이 알고리즘은 GAN 훈련의 어려운 점을 해결하고 합성 데이터의 품질을 개선한다. WGAN, LSGAN 및 ACGAN을 설명하고 tf.keras로 구현한다.



6장. “풀어진 표현 GAN”에서는 GAN으로 생성된 합성 데이터의 속성을 제어하는 방법에 대해 설명하다. 잠재 표현을 풀면 속성을 제어할 수 있다. 표현을 푸는 두 기법인 InfoGAN과 StackedGAN을 설명하고 tf.keras로 구현한다.



7장. “교차-도메인 GAN”에서는 일반적으로 교차-도메인 변환이라고 알려진, 하나의 도메인에서 다른 도메인으로 이미지를 변환하는 GAN의 실제적인 어플리케이션을 다룬다. 교차-도메인 GAN으로 널리 사용되는 CycleGAN을 설명하고 tf.keras로 구현한다. 이 장은 채색 및 스타일 변환을 수행하는 CycleGAN을 설명한다.



8장. “변분 오토인코더(VAE)”에서는 DL에서 또 하나의 중요한 주제를 설명한다. GAN과

유사한 VAE는 합성 데이터를 생성하는데 사용되는 생성 모델이다. GAN과는 달리, VAE는 변분 추론에 적합한 디코딩이 가능한 연속의 잠재 공간에 중점을 둔다. VAE와 이것의 변형인 CVAE 및 β-VAE를 설명하고 tf.keras로 구현한다.



9장. “심층 강화 학습”에서는 강화 학습과 Q-learning의 기본 개념을 설명한다. 이산 행동 공간에 대한 Q-learning을 구현하는 두 가지 기법인 Q-table 업데이트와 Deep Q-Networks (DQN)를 설명한다. OpenAI Gym 환경에서 파이썬을 이용한 Q-learning과 tf.keras의 DQN의 구현을 보여준다.



10장. “정책 경사 방법”에서는 강화 학습에서 의사 결정을 위해 정책을 학습하는 신경망을 사용하는 방법에 대해 설명한다. 네 가지 방법인 REINFORCE, 기준치를 갖는 REINFORCE, Actor-Critic 및 Advantage Actor-Critic을 설명하고 tf.keras와 OpenAI Gym 환경에서 구현한다. 이 장에서 보여주는 예제는 연속의 행동 공간에 대한 정책 경사 방법을 설명한다.



11장. “객체 감지”에서는 컴퓨터 비전, 객체 감지 또는 식별 그리고 이미지의 위치 파악에 대한 가장 일반적인 어플리케이션 중 하나를 설명한다. SSD라고 하는 멀티-스케일

객체 감지 알고리즘의 핵심 개념을 설명하고 tf.keras를 이용하여 단계별로 구현한다.

데이터셋 수집과 레이블링에 대한 기법을 예를 들어 설명한다. 그 후, 데이터셋을 이용하여 tf.keras로 SSD의 훈련과 평가를 구현한다.



12장. “시멘틱 분할”에서는 컴퓨터 비전, 시멘틱 분할 또는 이미지에서 각 픽셀에 대해 객체 클래스를 식별하는 것에 관한 또 다른 일반적인 어플리케이션을 설명한다. 분할의 기본 개념을 설명한다. 그 다음에, 좀 더 자세히 시멘틱 분할을 설명한다. FCN이라고 하는 시멘틱 분할 알고리즘의 구현 예제를 tf.keras를 이용하여 구축하고 평가한다. 이전 장에서 수집된 동일한 데이터셋을 이용하지만 시멘틱 분할을 위해 다시 레이블링 한다.



13장. “상호 정보를 이용한 비지도 학습”에서는 DL이 인간의 레이블링에 깊이 의존한다면, 왜 발전하지 못하는지 살펴본다. 비지도 학습은 인간의 레이블링을 필요로 하지 않는

알고리즘에 중점을 둔다. 비지도 학습을 이루기 위한 효과적인 기법 중 하나는 상호

정보(MI, Mutual Information)의 개념에 대한 이점을 활용하는 것이다. MI를 최대화 하도록, tf.keras를 이용하여 비지도 클러스터링/분류를 구현하고 평가한다.
[알라딘에서 제공한 정보입니다.]

목차정보

1장 Keras를 이용한 고급 심층 학습 소개

1. 왜 Keras가 완벽한 심층학습 라이브러리 인가? 4

Keras와 텐서플로우 설치하기 5

2. MLP, CNN, RNN 8

MLP, CNN, 그리고 RNN의 차이점 8

3. 멀티레이어 퍼셉트론(MLP) 9

MNIST 데이터셋 10

MNIST 숫자 분류기 모델 13

MLP와 Keras를 이용하여 모델 구축하기 17

정규화 20

출력 활성화 및 손실 함수 21

최적화 24

성능 평가 29

모델 요약 30

4. 합성곱 신경망(CNN) 33

합성곱 35

풀링(Pooling) 연산 37

성능 평가 및 모델 요약 38

5. 순환 신경망(RNN) 40

6. 요점 정리 46

7. 참고자료 47



2장 심층 신경망

1. 함수형 API 52

두 개의 입력과 하나의 출력을 갖는 모델 생성하기 55

2. 심층 잔차 네트워크(ResNet) 62

3. ResNet v2 73

4. 조밀하게 연결된 합성곱 네트워크(DenseNet) 77

CIFAR10으로 100-레이어 DenseNet-BC 구축하기 81

5. 요점 정리 84

6. 참고자료 85



3장 오토인코더

1. 오토인코더의 원리 90

2. Keras를 이용한 오토인코더 구축하기 93

3. 노이즈 제거 오토인코더(DAE) 104

4. 자동 채색 오토인코더 110

5. 요점 정리 118

6. 참고자료 119



4장 생성적 적대 신경망(GAN)

1. GAN의 개요 123

GAN의 원리 125

2. Keras로 DCGAN 구현하기 131

3. 조건부(conditional) GAN 142

4. 요점 정리 153

5. 참고자료 153



5장 향상된 GAN

1. Wasserstein GAN 158

거리 함수 158

GAN의 거리 함수 161

Wasserstein 손실 사용하기 164

Keras를 이용한 WGAN 구현 169

2. Least-squares GAN(LSGAN) 177

3. 보조 분류기(Auxiliary Classifier) GAN(ACGAN) 182

4. 요점 정리 196

5. 참고자료 196



6장 풀어진 표현 GAN

1. 풀어진 표현 200

InfoGAN 202

Keras로 InfoGAN 구현 206

InfoGAN의 생성자 출력 218

2. StackedGAN 221

Keras로 StackedGAN 구현 222

StackedGAN의 생성자 출력 240

3. 요점 정리 244

4. 참고자료 244



7장 교차-도메인 GAN

1. CycleGAN의 기본 개념 248

CycleGAN 모델 251

Keras를 이용한 CycleGAN 구현 258

CycleGAN의 생성자 출력 276

MNIST의 CycleGAN 및 SVHN 데이터셋 279

2. 요점 정리 286

3. 참고자료 287



8장 변분 오토인코더(VAEs)

1. VAE의 기본 개념 292

변분 추론 294

핵심 방정식 294

최적화 296

재매개변수화 기법 297

디코더 테스트 298

Keras의 VAE 298

CNN을 이용한 AE 308

2. 조건부 VAE (CVAE) 315

3. -VAE 풀어진 잠재 표현을 갖는 VAE 323

4. 요점 정리 327

5. 참고자료 327



9장 심층 강화 학습

1. 강화 학습(RL)의 기본 개념 332

2. Q 값 335

3. Q-learning 예제 337

파이썬에 의한 Q-Learning 343

4. 비결정론적 환경 351

5. 시간차 학습(Temporal-difference learning) 352

OpenAI Gym에서 Q-learning 352

6. 심층 Q-Network(DQN) 359

Keras에서 DQN 363

Double Q-learning (DDQN) 371

7. 요점 정리 375

8. 참고자료 376



10장 정책 경사 방법

1. 정책 경사 정리 380

2. 몬테 카를로(Monte Carlo) 정책 경사(REINFORCE) 방법 383

3. 기준치를 갖는 REINFORCE 방법 387

4. Actor-Critic 방법 393

5. Advantage Actor-Critic(A2C) 방법 397

6. Keras를 이용한 정책 경사 방법 401

7. 정책 기울기 방법들의 성능 평가 420

8. 요점 정리 427

9. 참고자료 427



11장 객체 감지

1. 객체 감지 432

2. 앵커 박스 435

3. 정답 앵커 박스 442

4. 손실 함수 450

5. SSD 모델 아키텍처 454

6. Keras에서 SSD 모델 아키텍처 458

7. Keras에서 SSD 객체 459

8. Keras에서 SSD 모델 464

9. Keras에서 데이터 생성기 모델 468

10. 예제 데이터셋 472

11. SSD 모델 훈련 473

12. 비-최대값 억제(NMS) 알고리즘 475

13. SSD 모델 검증 479

14. 요점 정리 487

15. 참고자료 487



12장 시멘틱 분할

1. 분할 492

2. 시멘틱 분할 네트워크 495

3. Keras의 시멘틱 분할 네트워크 498

4. 예제 데이터셋 505

5. 시멘틱 분할 검증 507

6. 요점 정리 511

7. 참고자료 512



13장 상호 정보를 이용한 비지도 학습

1. 상호 정보 516

2. 상호 정보와 엔트로피 518

3. 이산 확률 변수의 상호 정보 극대화에 의한 비지도 학습 521

4. 비지도 클러스터링을 위한 인코더 네트워크 525

5. Keras에서 비지도 클러스터링 구현 529

6. MNIST를 이용한 검증 542

7. 연속 확률 변수의 상호 정보 최대화에 의한 비지도 학습 543

8. 이변량 가우시안의 상호 정보 추정 545

9. Keras에서 연속 확률 변수를 이용한 비지도 클로스터링 552

10. 요점 정리 561

11. 참고자료 562
[알라딘에서 제공한 정보입니다.]