Top

텐서플로로 구현하는 딥러닝과 강화학습 [초보자도 쉽게 배우는]

  • 원서명Deep Learning with TensorFlow: Delve into neural networks, implement deep learning algorithms, and explore layers of data abstraction with the help of this comprehensive TensorFlow guide (ISBN 9781786469786)
  • 지은이잔카를로 자코네(Giancarlo Zaccone), 레자울 카림(Rezaul Karim), 아메드 멘시(Ahmed Menshawy)
  • 옮긴이정사범
  • ISBN : 9791161750682
  • 33,000원
  • 2017년 10월 30일 펴냄
  • 페이퍼백 | 396쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

텐서플로를 이용해 딥러닝 프로그램을 개발하는 방법을 알려주는 소개서다. 이 책을 통해 다음과 같은 내용을 배울 수 있다.

■ 딥러닝의 역사적 발전 과정
■ 최신 텐서플로 1.3과 GPU 컴퓨팅을 이용한 딥러닝 프로그램 개발 과정
■ 텐서플로를 사용해 데이터를 로드, 처리, 변환하는 방법
■ 이미지나 텍스트를 포함한 실제 데이터 집합에 텐서플로를 사용해 CNN, RNN을 구현하는 방법
■ 딥러닝 모델의 성능을 평가하는 방법
■ 강화학습에 대한 기술적 개요 및 구현 방법
■ 케라스에 대한 개요 및 사용 방법

이 책에서 다루는 내용

■ 딥러닝의 역사적 발전 및 진보와 함께 머신 러닝에 대해 학습
■ 최신 텐서플로 1.x를 사용한 딥 머신 지능과 GPU 컴퓨팅
■ 공용 데이터 집합에 액세스하고 텐서플로를 사용한 데이터 로드, 처리 및 변형
■ 이미지, 텍스트 등을 비롯한 실제 데이터 집합에 텐서플로 사용
■ 딥러닝 모델의 성능을 평가하는 방법
■ 확장 가능한 객체 탐지 및 모바일 컴퓨팅을 위한 딥러닝 사용
■ 강화 학습 기법을 탐색해 데이터를 신속하게 학습시키는 방법
■ 딥러닝 연구와 응용의 활발한 분야 탐색

이 책의 대상 독자

개발자, 데이터 분석가 또는 복잡한 수치 계산에 대한 배경 지식이 부족하지만, 딥러닝이 무엇인지 알고 싶어하는 딥러닝 애호가를 위해 작성됐다. 이 책은 딥러닝을 통해 실제 경험을 쌓기 위한 빠른 가이드를 원하는 초보자에게 큰 도움이 될 것이다. 컴퓨터 하드웨어 및 알고리즘에 대한 기본 인식을 비롯해 컴퓨터과학 기술 및 기술에 대한 기본지식이 있는 것으로 간주돼 하나의 언어로 프로그래밍하는 초보적인 수준을 전제로 한다. 초급 선형 대수학 및 미적분학 수준의 수학 능력이 필요하다.

이 책의 구성

1장, ‘텐서플로 시작하기’에서는 2~10장에서 찾아봐야 하는 몇 가지 기본 개념에 대해 설명한다. 1장에서는 머신 러닝과 딥러닝 아키텍처에 대해 소개할 것이다. 마지막으로 소위 Deep Neural Networks라고 불리는 딥러닝 아키텍처를 소개한다. 딥러닝 아키텍처는 망의 깊이 측면에서 일반적으로 알려진 단일 은닉층 신경망과는 다르다. 즉, 패턴 인식의 다단계 프로세스에서 데이터가 통과하는 노드 계층의 수가 많다. 1장에서는 딥러닝 아키텍처에 대한 비교 분석을 한다. 여기에는 대부분의 딥러닝 알고리즘이 진화한 모든 신경 네트워크가 요약돼 있다.
2장, ‘텐서플로를 처음으로 살펴보기’에서는 텐서플로 1.x의 주요 기능 및 내용을 다룬다. 계산 그래프, 데이터 모델, 프로그래밍 모델 및 텐서보드(TensorBoard)로 시작한다. 2장의 마지막 부분에서는 단일 입력 뉴런(Single Input Neuron)을 구현해 텐서플로가 실제로 작동하는 것을 볼 수 있다. 마지막으로 텐서플로 0.x에서 텐서플로 1.x로 업그레이드하는 방법을 살펴본다.
3장, ‘피드 포워드 신경망 텐서플로 사용하기’에서는 피드 포워드 뉴럴 네트워크에 대해 자세히 설명한다. 3장은 기본 아키텍처를 사용해 많은 응용 프로그램 예제를 구현하므로 매우 실용적이다.
4장, ‘컨볼루션 신경망(Convolutional Neural Network)’에서는 딥러닝 기반 이미지 분류기의 기본 블록인 CNN 네트워크를 소개한다. CNN 네트워크의 두 가지 예를 개발해볼 것이다. 첫 번째 예제는 고전적인 MNIST 숫자 분류 문제이며, 두 번째 예제의 목적은 일련의 얼굴 이미지에 대한 네트워크를 학습해 감정적인 스트레칭을 분류하는 것이다.
5장, ‘텐서플로 오토인코더’에서는 최적화 입력 패턴을 변형하기 위해 설계하고 학습시킨 오토인코더(autoencoder) 네트워크를 설명한다. 따라서 입력 패턴의 성능 저하나 불완전한 버전이 있는 경우, 원래 패턴을 얻을 수 있다. 5장에서는 몇 가지 응용 프로그램 예제로 작동하는 오토인코더 프로그램을 볼 수 있다.
6장, ‘순환 신경망(Reverse Neural Networks)’에서는 다양한 길이의 데이터를 처리하도록 설계된 기본 아키텍처를 설명한다. 순환 신경망은 다양한 자연어 처리 작업에 널리 사용된다. 텍스트 처리 및 이미지 분류 문제는 6장에서 구현한다.
7장, ‘GPU 컴퓨팅’에서는 GPU 컴퓨팅을 위한 텐서플로 기능을 보여준다. 이 장에서는 텐서플로를 사용해 GPU를 처리하는 몇 가지 기술을 살펴본다.
8장, ‘고급 텐서플로 프로그래밍’에서는 케라스(Keras), Pretty Tensor, TFLearn 같은 텐서플로 기반 라이브러리에 대한 개요를 설명한다. 각 라이브러리에 관련된 응용 프로그램 예제를 통해 주요 기능을 설명할 것이다.
9장, ‘텐서플로를 사용한 고급 멀티미디어 프로그래밍’에서는 텐서플로를 사용해 멀티미디어 프로그래밍의 일부 고급 기술 및 새로운 측면을 다룬다. 텐서플로를 사용해 안드로이드에서 확장할 수 있는 객체 탐지 및 심층 학습을 위한 심층 신경망을 예제로 들어 설명한다. 논의를 좀 더 구체화하기 위해 예제로 가속 선형 대수(XLA)와 케라스를 논의할 것이다.
10장, ‘강화 학습(Reinforcement Learning)에서는 RL 기본 개념을 다룬다. 가장 보편적인 강화 학습 알고리즘 중 하나인 Q-learning 알고리즘을 경험할 것이다. 더욱이 텐서플로에서 사용할 수 있는 강화 학습 알고리즘을 개발하고 비교해보기 위한 툴킷인 OpenAI gym 프레임워크를 소개한다.

저자/역자 소개

지은이의 말

최신 버전의 텐서플로를 사용한 딥러닝의 핵심 개념을 소개한다. 텐서플로란 2011년에 출시된 수학, 머신 러닝 및 딥러닝 구현을 위한 구글의 오픈 소스 프레임워크다. 이후 텐서플로는 학계와 연구에서 업계로 널리 채택돼 최근에는 가장 안정적인 버전 1.0이 통합 API로 출시됐다. 텐서플로는 첨단 아키텍처를 구현하고 연구하는 데 필요한 유연성을 제공하는 동시에 사용자가 수학적인 세부 사항이 아닌 모델 구조에 집중할 수 있도록 한다. 독자는 실습모델 구축, 데이터 수집 및 변환 등을 통해 딥러닝 프로그래밍 기술을 배우게 될 것이다.

지은이 소개

잔카를로 자코네(Giancarlo Zaccone)

과학 및 산업 분야에서 10년 이상의 연구 프로젝트를 관리한 경험을 보유하고 있다. 미국 국립 연구 회의(National Research Council)인 C.N.R의 연구원으로 일하면서 병렬 컴퓨팅 및 과학 시각화와 관련된 프로젝트에 참여했다.
현재 우주 및 방위 분야의 소프트웨어 시스템을 개발 및 유지 관리하는 컨설팅 회사의 시스템 및 소프트웨어 엔지니어다.
『Python Parallel Programming Cookbook』(Packt, 2015)과 『텐서플로 入門』(에이콘, 2016)의 저자다.
https://it.linkedin.com/in/giancarlozaccone에서 그를 팔로우할 수 있다.

레자울 카림(Rezaul Karim)

알고리즘 및 데이터 구조, C / C ++, 자바(Java), 스칼라(Scala), R 및 파이썬(Python)과 스파크(Spark), 카프카(Kafka), DC/OS, 도커(Docker), 메소스(Mesos), 하둡(Hadoop) 및 맵리듀스(MapReduce)와 같은 빅데이터 기술에 중점을 두면서 연구 개발 분야에서 8년 이상의 경력을 쌓았다. 머신 러닝, 심층 학습, 시맨틱 웹, 빅데이터 및 생물 정보학 분야 연구에 관심을 두고 있다. 『Large Scale Machine Learning with Spark』(Packt, 2016)의 저자다.
현재 아일랜드의 데이터 분석 센터에서 근무하는 소프트웨어 엔지니어이자 연구원이다. 또한 골웨이에 있는 아일랜드 국립대학교(National University of Ireland)의 박사 후보자며, 컴퓨터 공학 학사 및 석사 학위를 취득했다. 데이터 분석 센터에 입사하기 전에는 삼성전자에서 리드 소프트웨어 엔지니어로 일하면서 한국, 인도, 베트남, 터키, 방글라데시 등 전 세계에 분산돼 있는 삼성 R&D 센터에서 일했다. 또한 경희대학교 데이터베이스 연구소의 연구 조교로 근무했다. 그는 한국에 있는 BMTech21 Worldwide에서 R&D 엔지니어로 일했고 그 전에는 방글라데시 다카의 i2SoftTechnology에서 소프트웨어 엔지니어로 일했다.

아메드 멘시(Ahmed Menshawy)

아일랜드 더블린(Dublin)의 트리니티 대학(Trinity College)에서 연구 엔지니어로 근무하고 있다. 머신 러닝 및 자연어 처리(NLP) 분야에서 5년 이상의 경력을 쌓았고, 컴퓨터 과학 석사 학위를 취득했다. 이집트 카이로의 헬완 대학교(Helwan University) 컴퓨터 과학과에서 조교로 경력을 쌓기 시작했다. 머신 러닝, 이미지 프로세싱, 선형 대수학, 확률 및 통계, 데이터 구조, 컴퓨터 과학을 위한 필수 수학 등과 같은 몇 가지 고급 머신 러닝 및 자연어 처리 과정을 가르쳤다. 다음으로 이집트에 있는 IST 네트웍스(IST Networks)의 산업 연구 및 개발 연구소에서 연구 과학자로 합류해 연구 업무를 수행했다. 아랍어 텍스트 음성을 위한 최첨단 시스템을 구현하는 데 관여했다. 결과적으로, 그 회사의 머신 러닝 전문가였다. 이후에 그는 골웨이 아일랜드 국립대학교의 데이터 분석 센터(Insight Center for Research)에 예측 분석 플랫폼(Predictive Analytics Platform) 구축 연구 보조원으로 참여했다. 마지막으로 더블린 대학교 트리니티 대학 리서치 엔지니어로 ADAPT 센터에 합류했다. ADAPT에서의 주된 역할은 ADAPT 내에서 수행된 연구에 기반을 둔 머신 러닝과 자연어 처리 기술을 사용한 프로토타입 및 응용 프로그램 작성이었다.

옮긴이의 말

2016년 알파고의 등장과 더불어 인공지능, 신경망과 관련된 내용이 인터넷은 물론 미디어를 통해 회자되고 있다. 특히 딥러닝, 강화 학습은 전문가가 아니라도 어떤 의미를 갖는지 알 수 있을 정도로 일반적인 용어가 됐다. 당연히 이러한 분야의 책들도 다양하게 출간돼 여러 독자들에게 환영 받고 있다.
초기에 딥러닝, 강화 학습과 같은 최신 인공지능 분야에 대한 정보는 해외 원서나 저널, 웹 사이트를 통해 접할 수 있었기 때문에 일반인들이 정보를 접하기에는 한계가 있었다. 다행히도 최근에는 이 분야에 계신 분들의 노력으로 한글로 저술된 책이나 인터넷 매체를 통해 관련 정보를 좀 더 쉽게 접할 수 있게 됐다. 그만큼 우리나라에서도 이 분야에 대한 관심이 높아졌고 중요하게 생각하고 있다는 방증이 아닐까 생각한다.
이 책은 딥러닝, 강화 학습 등을 다루고 있지만 이론적인 내용을 다루기보다는 텐서플로를 이용한 구현 방법을 주요 내용으로 하고 있다. 따라서 이론적인 설명을 기대하고 이 책을 선택하는 독자보다는 간단한 이론을 포함한 구현을 배우고 싶어하는 독자들에게 좀 더 유용할 것이라고 생각한다. 원서의 초기 버전이 출간되었을 때에는 현 텐서플로 버전인 1.3이 공개되기 이전이었지만, 깃허브(github)에 최신 버전에 대한 코드가 올라와 있어서 이를 반영해 수정했다. 또한 오류로 의심되는 일부분에 대해서는 원저자에게 문의해 확인한 내용을 실었다.
여러모로 원저자가 의도한 내용을 정확하게 반영하고자 노력했지만, 오류가 있다면 모든 책임은 번역자인 나에게 있다고 볼 수 있다. 책을 읽는 중에 질문사항이 생기면 이메일이나 에이콘출판사 편집 팀으로 연락주기 바란다.

옮긴이 소개

정사범

산업공학을 전공했고, 의사 결정과 최적화 방법론에 관심이 많다. 다양한 데이터를 R과 파이썬으로 분석해본 경험이 있다. 세상에 존재하는 다양한 데이터를 이용해 여러 가지 문제를 해결하는 일을 하고 있다. 다양한 책과 현장 경험을 통해 데이터 수집, 정제, 분석, 보고 방법에 대한 지식을 얻는 것에 감사하고 있다. 에이콘출판에서 출간한 『RStudio 따라잡기』(2013), 『The R book(Second Edition) 한국어판』(2014), 『예측 분석 모델링 실무 기법』(2014), 『데이터 마이닝 개념과 기법』(2015), 『파이썬으로 풀어보는 수학』(2016), 『데이터 스토리텔링』(2016), 『R에서 객체 지향 프로그래밍 사용하기』(2016), 『파이썬 프로그래밍 개론』(2016), 『산업인터넷(IIOT)과 함께하는 인더스트리 4.0』(2017)을 번역했다.

목차

목차
  • 1장. 딥러닝 시작하기
    • 머신 러닝 소개
      • 지도 학습
      • 비지도 학습
      • 강화 학습
    • 딥러닝이란 무엇인가?
      • 인간의 뇌는 어떻게 작동하는가?
      • 딥러닝의 역사
      • 적용 분야
    • 신경망
      • 생물학적 뉴런
      • 인공 신경 세포
    • 인공 신경망은 어떻게 학습하는가?
      • 역전파 알고리즘
      • 가중치 최적화
      • 확률적 경사 하강
    • 신경망 구조
      • 다층 퍼셉트론
      • DNN 구조
      • 컨벌루션 뉴럴 네트워크
      • 제약 볼츠만 머신
    • 오토인코더
    • 순환 신경망
    • 딥러닝 프레임워크 비교
    • 요약

  • 2장. 텐서플로 살펴보기
    • 일반 개요
      • 텐서플로 1.x의 새로운 기능은 무엇인가?
      • 텐서플로는 사람들이 사용하는 방식을 어떻게 변화시켰는가?
      • 텐서플로 설치 및 시작하기
    • 리눅스에서 텐서플로 설치하기
      • 플랫폼에 어떤 텐서플로를 설치해야 하는가?
    • NVIDIA에서 GPU로 텐서플로를 실행하기 위한 필요 요건
      • 단계 1: NVIDIA CUDA 설치
      • 단계 2: NVIDIA cuDNN v5.1+ 설치
      • 단계 3: CUDA 컴퓨팅 기능 3.0+ 이 있는 GPU 카드
      • 단계 4: libcupti-dev 라이브러리 설치
      • 단계 5: Python(또는 Python3) 설치
      • 단계 6: PIP(또는 PIP3) 설치 및 업그레이드
      • 단계 7: 텐서플로 설치
    • 텐서플로 설치 방법
      • pip로 텐서플로 설치하기
      • virtualenv로 설치하기
    • 윈도우에서 텐서플로 설치하기
      • 소스를 이용해 설치하기
      • 윈도우에 설치하기
      • 텐서플로 설치를 테스트하기
    • 계산 그래프
    • 왜 계산 그래프가 중요한가?
      • 계산 그래프로 신경망 표현하기
    • 프로그래밍 모델
    • 데이터 모델
      • 랭크
      • 구조
      • 데이터 유형
      • 변수
      • 텐서 가져오기
      • 피드
    • 텐서보드
      • 텐서보드는 어떻게 작동하는가?
    • 단일 입력 뉴런 구현하기
    • 단일 입력 뉴런에 대한 소스 코드
    • 텐서플로 1.x로 마이그레이션
      • 업그레이드 스크립트를 사용하는 방법
      • 제안
      • 수작업 코드 업그레이드 방법
      • 변수
      • 요약 함수
      • 단순화한 수학 변형
      • 기타 변경 사항
    • 요약

  • 3장. 순방향 신경망에 텐서플로 사용하기
    • 순방향 신경망 소개
      • 순방향 및 역전파
      • 가중치와 바이어스
      • 전이 함수
    • 자필 숫자의 분류
    • MNIST 데이터 집합 살펴보기
    • 소프트맥스 분류기
      • 가시화
    • 텐서플로 모델을 저장하고 복구하는 방법
      • 모델 저장하기
      • 모델 복구하기
      • 소프트맥스 소스 코드
      • 소프트맥스 로더 소스 코드
    • 5층 신경망 구현
      • 가시화
      • 5층 신경망 소스 코드
    • ReLU 분류기
    • 가시화
      • ReLU 분류기 소스 코드
    • 드롭아웃 최적화
      • 가시화
      • 드롭아웃 최적화를 적용한 소스 코드
    • 요약

  • 4장. 컨볼루션 신경망에 텐서플로 사용하기
    • CNN 소개
    • 컨볼루션 뉴럴 네트워크 구조
      • CNN 모델 - LeNet
    • 첫 번째 CNN 구축
      • 손으로 쓴 분류기의 소스 코드
      • CNN으로 감정 인식하기
      • 감정 분류기 소스 코드
      • 여러분이 보유한 이미지로 모델 테스트하기
      • 소스 코드
    • 요약

  • 5장. 텐서플로 오토인코더 최적화하기
    • 오토인코더 소개
    • 오토인코더 구현하기
      • 오토인코더에 대한 소스 코드
    • 오토인코더 견고성 개선하기
    • 노이즈 제거 오토인코더 구축하기
      • 노이즈 제거 오토인코더 소스 코드
    • 컨볼루션 오토인코더
      • 인코더
      • 디코더
      • 컨볼루션 오토인코더 소스 코드
    • 요약

  • 6장. RNN 순환 신경망
    • RNN 기본 개념
    • RNN 실행 메커니즘
    • RNN의 펼쳐진 버전
    • 그레이디언트 소멸 문제
    • LSTM 네트워크
    • RNN을 이용한 이미지 분류기
      • RNN 이미지 분류 프로그램의 소스 코드
    • 양방향 RNN
      • 양방향 RNN 소스 코드
      • 텍스트 예측
      • 데이터 집합
      • 혼잡도
      • PTB 모델
      • 예제 실행하기
    • 요약

  • 7장. GPU 연산
    • GPGPU 연산
    • GPGPU 역사
    • CUDA 구조
    • GPU 프로그래밍 모델
    • 텐서플로 GPU 설정
      • 텐서플로 업데이트
    • 텐서플로 GPU 관리
      • 프로그래밍 예제
        • GPU 계산을 위한 소스 코드
    • GPU 메모리 관리
    • 복수 GPU 시스템에서 단일 GPU 할당
      • 소프트 배치로 GPU에 대한 소스 코드
      • 복수 GPU 사용하기
      • 복수 GPU 관리를 위한 소스 코드
    • 요약

  • 8장. 고급 텐서플로 프로그래밍
    • 케라스 소개
      • 설치
    • 딥러닝 모델 만들기
    • 영화 평론 내용에 근거한 감정 분류
      • 케라스 무비 분류 프로그램의 소스 코드
    • 컨볼루션층을 추가하기
      • 컨볼루션층을 갖는 영화 분류기에 대한 소스 코드
    • Pretty Tensor
      • 층 연결
        • 일반 모드
        • 순차 모드
        • 분기 및 조인
    • 숫자 분류기
      • 숫자 분류기용 소스 코드
    • TFLearn
      • TFLearn 설치
    • 타이타닉 생존 예측기
      • 타이타닉 분류기 소스 코드
    • 요약

  • 9장. 텐서플로를 이용한 고급 멀티미디어 프로그래밍하기
    • 멀티미디어 분석 소개
    • 가변적인 객체 감지를 위한 딥러닝
      • 병목
      • 재학습 모델 사용
    • 가속화한 선형 대수학
      • 텐서플로의 주요 강점
      • XLA를 통한 Just-In-Time 컴파일
        • JIT 컴파일
        • XLA의 존재와 장점
        • XLA의 후드 작업
        • 여전히 실험적인 상태다
        • 지원 플랫폼
        • 보다 실험적인 자료
    • 텐서플로와 케라스
      • 케라스는 무엇인가?
      • 케라스의 효과
      • 비디오 질문 응답 시스템
        • 실행 불가능한 코드!
    • 안드로이드에서 딥러닝
      • 텐서플로 데모 예제
      • 안드로이드 시작하기
        • 구조 요구 사항
        • 사전 빌드한 APK.
        • 데모 실행
        • 안드로이디 스튜디오로 구현하기
        • 좀 더 시도해본다 - Bazel로 구축하기
    • 요약

  • 10장. 강화 학습
    • 강화 학습의 기본 개념
    • Q-러닝 알고리즘
    • OpenAI Gym 프레임워크 소개
    • frozenlake-v0 구현 문제
      • frozenlake-v0 문제에 대한 소스 코드
    • 텐서플로를 사용한 Q-러닝
    • Q 러닝 신경망 소스 코드

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안