본문 바로가기
+ 펴낸 책

실체가 손에 잡히는 딥러닝, 기초부터 실전 프로그래밍

by 책만 2019. 6. 3.

실체가 손에 잡히는 딥러닝, 기초부터 실전 프로그래밍

기초 수학과 파이썬 코드를 따라만 하면 

신기하게 이해되는 신경망, 역전파, CNN 구현

아즈마 유키나가(我妻幸長) 지음 | 최재원 옮김

364쪽 | 26,000원 | 2019년 6월 18일 출간 | 180*235*18 | ISBN 9791189909024

판매처 [교보문고] [YES24] [알라딘] [영풍문고] [인터파크]  + 전국 교보문고 매장

전자책 판매처 [리디북스] [교보문고] [YES24] [알라딘] | ISBN 9791189909048 | PDF 포맷   

 

★ 정오표: https://www.onlybook.co.kr/entry/deeplearing-errata 

 독자문의: support (at) onlybook.co.kr

 

☆ 학교나 학원에서 저희 도서를 공식 교재로 채택하여 강의를 진행하시는 교수님/강사님께 제공 가능한 이 책의 강의 교안 자료가 준비되어 있습니다. (1) 성함, 연락처 (2) 강의처 (3) 강의 교과목 (4) 간단한 강의계획 (5) 교재 구매 계획 등을 정리하셔서 support@onlybook.co.kr 이메일로 보내주십시오. 내용 검토 후 제공해드리겠습니다.

 

  예제 소스코드 파일 다운로드:

DeepLearning_Examples.zip
1.82MB

 

딥러닝의 기초 지식과 수학부터 파이썬을 활용한 실전 프로그래밍 구현까지, 
한 권으로 모든 것을 끝내는 딥러닝 입문자를 위한 최고의 책!

지금까지 나왔던 다른 어떤 책들과도 달리, 딥러닝을 수식과 코드로서 매우 이해하기 쉽게 설명한다. 또한, 간결하고 이해하기 쉬운 예제 코드들이 하나 하나 모여 책의 마지막에 이르러 최종적으로 실전에서도 활용할 수 있는 완결된 딥러닝 코드를 완성함으로써, 독자가 성취감을 느끼며 끝까지 포기하지 않고 완독할 수 있다는 점은 이 책의 최대 강점이다.

이 책에서는 파이썬과 기초 수학부터 시작해 역전파(Backpropagation)와 컨볼루션 신경망(CNN)까지, 딥러닝의 필수 요소를 빠짐없이 자세하게 설명한다. 독자가 파이썬 프로그래밍을 직접 코딩하면서 차근차근 순서대로 공부해 나가다 보면 딥러닝의 기초를 완벽하게 습득할 수 있다.

이 책의 구성

1장 딥러닝이란

머신러닝과 인공지능, 딥러닝과의 관계에 대해 소개하며 그동안 인공지능이 걸어온 길을 간략하게 설명합니다. 저자가 뇌과학에 상당히 관심이 깊어 딥러닝을 뇌과학의 관점에서 바라보며 딥러닝과 뇌의 유사성에 대한 다양하고 흥미로운 이야기를 풀어 놓습니다.

2장 파이썬 개요

파이썬 문법과 주피터 노트북에 대한 핵심만 소개합니다. 여기서 핵심이라는 의미는 책 전체에 걸쳐 구현되는 딥러닝 코드에 필요한 사항에만 집중한다는 의미입니다. 따라서 당연히 파이썬 전체를 소개하는 책에 비해서는 다루는 범위가 좁습니다만, 책에 나오는 프로그래밍 코드를 따라가는 데 필요한 내용은 모두 설명하므로 파이썬에 익숙하지 않은 독자라도 단기 속성 과정을 배우는 것처럼 효과적입니다.

3장 딥러닝에 필요한 수학

2장과 마찬가지로 딥러닝을 이해하고 구현하는 데 필요한 핵심적인 수학만 소개합니다. 선형대수와 미분을 다루는데, 고교 과정을 이수한 독자들이라면 무리 없이 따라갈 수 있습니다. 이 부분은 눈으로만 읽지 말고 수능 공부할 때처럼 백지에 연필을 긁적여가며 수식을 따라 써 볼 것을 권장합니다. 선형대수는 파이썬 넘파이(NumPy)를 이용한 실습 코드를 제공하는데, 초보자라면 이 부분도 소홀히 하지 말고 반복적으로 연습하기 바랍니다.

4장 신경망

딥러닝의 배경 이론인 신경망을 소개합니다. 신경망의 원리, 뉴런(노드)으로 구성된 층(layer)의 연결 관계, 순전파와 역전파, 가중치와 편향(바이어스), 활성화 함수 등의 핵심 내용을 친절한 코드와 함께 설명합니다. 특히 신경망에서 가중치와 편향의 역할과 영향력을 실제 코드로 보여주는 부분은 매우 인상적입니다.

5장 역전파

역전파(Backpropagation)는 신경망에서 출력 결과와 실제 값의 오차를 줄여나가는 과정입니다. 이 과정에서 필요한 경사 하강법과 아다그라드(Adagrad), 아담(Adam)과 같은 다양한 최적화 알고리즘을 수식과 코드를 이용해 설명합니다.

6장 딥러닝 구현

딥(deep)이라는 단어 그대로 신경망에 층을 많이 쌓아 데이터를 깊이 학습하는 것이 딥러닝입니다. 이렇게 층을 많이 쌓으면 신경망의 성능이 좋아지지만 과적합, 기울기 소실과 같은 여러 문제도 발생합니다. 이런 문제들을 유명한 붓꽃(Iris) 데이터를 통해 실제로 해결하는 과정을 코드로 제시하기 때문에 직관적으로 이해하기 쉽습니다.

7장 컨볼루션 신경망(CNN)

이 책의 최종 목표지점입니다. 딥러닝이 혜성처럼 등장한 것도 이미지 인식 대회였듯이 이미지 분류 작업에서 딥러닝은 탁월한 성과를 내고 있습니다. 7장에서는 앞에서 배웠던 모든 내용을 다 활용하고, 이미지 처리에 필요한 컨볼루션, 필터, 채널, 배치사이즈까지 고려한 실용적인 프로그래밍 코드를 완성하는 단계입니다. 다른 장(章)에 비해 분량이 가장 많아 학습하는 동안 지칠 수도 있지만 모든 내용을 끈기 있게 따라가면 손글씨 숫자 이미지를 거의 정확하게 분류하는 딥러닝의 마술을 스스로 구현하고 이해하게 되며 이때까지의 고생을 한번에 보상받을 수 있을 것입니다.

8장 그 밖의 딥러닝 기술

최신 딥러닝 기술을 소개합니다. 현재 딥러닝이 어느 수준까지 발전했고 딥러닝의 미래가 어떤 모습일지 짐작할 수 있는 내용으로 채워져 있습니다. 기본 수준을 넘어서 더 높은 단계로 도약하기 위해 필요한 안내서 같은 느낌으로 매우 유익한 내용입니다.

이 책의 주요 특징

  • 딥러닝 프레임워크를 사용하지 않고 딥러닝의 알고리즘을 파이썬 프로그래밍 코드로 구현
  • 딥러닝을 구현하는 데 꼭 필요한 만큼의 핵심 파이썬 문법
  • 파이썬과 수치연산 라이브러리 넘파이(NumPy)를 이용한 프로그래밍 기초 지식
  • 미분, 선형대수 등 신경망을 이해하는 데 필요한 기초 수학 이론과 수식 코딩 원리
  • 단계별 실습을 통해 최종적으로 컨볼루션 신경망(CNN)을 구현하고 응용하는 목표에 도달
  • 독자들이 스스로 응용하고 더 수준 높은 코드로 발전할 수 있는 완전한 파이썬 코드 제공
  • 인간 뇌의 동작과 대응시킴으로써, 딥러닝의 작동 방식을 직관적으로 이해하기 쉽게 설명
  • 최신 딥러닝의 발전 현황과 미래에 대한 구체적인 기술과 사례 소개

이 책의 독자 대상

  • 머신러닝, 인공지능, 딥러닝에 대해 막연한 관심을 갖고 있지만 어떤 책으로 시작해야 좋을지 고민하는 학생 및 일반인, 타 분야의 개발자 등 이 분야에 입문하고 싶어하는 완전 초보자
  • 딥러닝에 대한 대략적인 개념은 알고 있으나 딥러닝의 역사와 이론적 배경, 수학적 논리를 더 구체적이고 자세하게 이해하고 싶은 사람
  • 딥러닝 알고리즘을 수식으로 명확하게 이해하고 이를 프로그래밍 코드로 구현하고 싶은데 이 모든 과정을 한 권의 책으로 해결하고 싶은 사람
  • 실용적인 딥러닝 코드를 작성해 업무나 현장에서 바로 적용해보고 더 높은 수준의 딥러닝을 구현하고 싶은 개발자

지은이 아즈마 유키나가 我妻 幸長

‘인간과 AI의 공존’을 미션으로 하는 주식회사 SAI-Lab의 대표이사로, AI 관련 교육과 연구 개발에 종사하고 있다. 토후쿠대학 대학원 이학연구과 수료 후 이학박사(물리학)를 취득했다. 인공지능(AI), 복잡계, 뇌과학, 특이점(singularity) 등에 관심이 많으며 프로그래밍/AI 강사로서 지금까지 오프라인에서 1000명 이상, 온라인에서는 2만 명에 가까운 인원을 지도했다. 세계 최대 교육 동영상 플랫폼인 유데미(Udemy)에서 ‘처음 시작하는 파이썬’, ‘실전 데이터과학과 머신러닝’, ‘모두의 딥러닝’, ‘모두의 AI 강좌’ 등을 강의하고 있다. 엔지니어로도 일하면서 VR, 게임, SNS 등 분야를 불문한 다양한 애플리케이션을 개발했다.

한국에 계신 독자 여러분께,
저의 책 『실체가 손에 잡히는 딥러닝, 기초부터 실전 프로그래밍』에 관심을 가져주셔서 감사합니다. 이 책은 지금까지 나왔던 다른 어떤 책과는 달리 딥러닝을 매우 이해하기 쉽게 설명하는 책이라 자부합니다. 일본에서는 2018년 8월에 출간된 이후 지금도 많은 독자분이 읽고 있습니다.
딥러닝으로 대표되는 인공지능 기술은 전 세계인의 관심을 끌고 있으며 여러 기업과 공공기관에서 다방면에 걸쳐 활용 방법을 모색하고 있습니다. 그러나 대다수 사람들은 여전히 딥러닝이 배우기 어려운 분야라고 생각합니다. 이러한 장벽을 허물기 위해 이 책에서는 프로그래밍 언어 파이썬과 기초 수학부터 시작해 컨볼루션 신경망까지, 딥러닝에 필수적인 요소를 빠짐없이 자세하게 설명했습니다. 차근차근 순서대로 공부해 나가다 보면 딥러닝의 기초를 확실하게 습득할 수 있도록 구성했습니다.
오늘날 인공지능은 배울 만한 가치가 가장 큰 기술 중 하나이며, 기술적인 측면뿐만 아니라 미래에 대한 상상력을 기르기 위한 교양으로서도 의미가 큽니다. 한국에 계신 독자분들이 이 책을 통해 인공지능에 대한 자신만의 생각을 기를 수 있다면 저자로서 매우 기쁘겠습니다. 그럼 모두 저와 함께 딥러닝의 세계를 탐험해 봅시다!

옮긴이 최재원

일본 게이오 대학원을 졸업하고 아주대 대학원에서 학습분석(Learning Analytics)으로 박사 학위를 취득했다. 대학 졸업 후 7년간 디지털 엔터테인먼트 업계에서 3D 영상, 게임, VR 프로듀서로 종사했고 대학원 진학 후 데이터 사이언스를 연구했다. 대학에서 통계와 데이터 사이언스 과목을 강의했으며 현재는 아주대학교 교수학습개발센터/평가인증센터에서 교육•학습 데이터 분석 업무를 담당하고 있다. XGBoost, 딥러닝, 문항반응이론(IRT), 지식공간(Knowledge Spaces) 등의 알고리즘을 이용한 학습부진 위험학생 조기 예측, 적응형 학습(adaptive learning) 등을 연구 중이다. 번역서로 『디지털 게임 교과서』(2012), 『유니티 입문』(2012), 『데이터 시각화, 인지과학을 만나다』(이상 에이콘출판, 2015), 『대학혁신을 위한 빅데이터와 학습분석』(시그마프레스, 2019)이 있으며, 전자책으로 출간된 『VR, 가까운 미래』(리디북스, 2016)를 집필했다. 

머신러닝과 인공지능에 대한 기본적인 배경 지식을 갖추고 딥러닝의 수학적인 논리 전개를 정확하게 이해하면서 이를 파이썬으로 구현하는 과정은 결코 쉽지 않습니다. 머신러닝과 딥러닝은 이론을 이해하는 것 못지 않게 직접 구현해보며 공부하는 것이 매우 중요하기 때문입니다. 
그동안 딥러닝을 처음 접하는 독자들을 대상으로 하는 훌륭한 국내서와 번역서들이 많이 출간되었지만 이론과 실습의 균형이라는 측면에서 조금은 아쉬운 면이 있었습니다. 딥러닝을 구성하는 이론을 다양하게 설명하는 데 치중하는 느낌도 들고, 쉬운 이해를 강조하다 보니 실전 프로그래밍에서 필요한 요소들이 많이 생략된 경우도 있었습니다. 예제로 제시되는 파이썬 코드는 체계적으로 구조화되지 못해 독자들이 직접 전체 딥러닝 코드를 구현하려고 하면 여전히 막막하다는 생각이 드는 경우도 많았을 것이라고 생각합니다. 이러한 이유로 『실체가 손에 잡히는 딥러닝, 기초부터 실전 프로그래밍』은 기존 책들과는 뚜렷이 차별되는 매력과 장점이 돋보입니다. 저자가 서문에서 “직접 손을 움직여가며 공부할 수 있도록” 저술했다고 밝혔듯이, 독자가 파이썬 프로그래밍을 직접 코딩하면서 딥러닝을 명확하게 이해하고 익힐 수 있게 구성되었다는 점이 이 책만의 탁월한 장점입니다.
간결하고 이해하기 쉬운 예제 코드들이 하나 하나 모여 책의 마지막에 이르면 최종적으로는 실전에서도 활용할 수 있는 완결된 딥러닝 코드를 완성하게 됩니다. 이런 코드를 차근차근 따라하며 실습하다 보면 딥러닝을 직관적이고 구체적으로 이해할 수 있습니다. 이처럼 간결하고 이해하기 쉬운 예제 코드는 물론, 딥러닝의 배경 이론과 수학적인 전개 과정에 대한 설명도 불필요한 군더더기 없이 매우 깔끔합니다.이 책에서는 독자가 최종 단계인 ‘컨볼루션 신경망(CNN)’(7장)을 스스로 구현할 수 있도록 아무런  딥러닝 프레임워크를 사용하지 않고 레고 블록을 쌓듯이 한 단계씩 기본적이고 핵심적인 내용을 세심하게 설명하며 이끌어갑니다.
모든 장(章)의 내용은 체계적이고도 유기적으로 서로 연결되어 있습니다. 앞에서 배운 사항을 뒤에서 적용하고, 지금 배우는 내용이 앞에서 배운 것과 어떻게 연결되는지, 어느 부분에서 배웠는지를 친절하게 상기시킵니다. 그렇게 그물처럼 촘촘히 연결된 책의 내용을 1장부터 끝까지 좇아가다보면 어느샌가 딥러닝의 실체가 눈앞에 선명하게 드러납니다. 한마디로 이론과 실습이 절묘하게 조화된 훌륭한 책이라고 생각합니다.번역하는 내내, 이 책은 마치 결승선을 향해 망설임 없이 질주하는 경주마 같다고 느꼈습니다. 아마 독자들도 책을 읽는 동안 경주마 위에 올라타 장애물을 하나씩 뛰어넘어 마침내 목표점을 통과하는 것과 같은 짜릿한 성취감을 맛볼 수 있을 것이라고 생각하며, 또 그렇게 될 수 있기를 진심으로 응원합니다.

차례

[1장] 딥러닝이란

1.1  지능이란 무엇인가

1.2  인공지능(AI)

1.3  머신러닝

1.4  신경망

1.5  딥러닝 개요

1.6  인공지능과 딥러닝의 역사

__1.6.1  제1차 인공지능 전성기: 1950년대~1960년대

__1.6.2  제2차 인공지능 전성기: 1980년대~1990년대 후반

__1.6.3  제3차 인공지능 전성기: 2000년대 이후

 

[2장] 파이썬 개요

2.1  파이썬을 사용하는 이유

2.2  아나콘다와 주피터 노트북 활용

__2.2.1  아나콘다 다운로드

__2.2.2  아나콘다 설치

__2.2.3  주피터 노트북 실행

__2.2.4  주피터 노트북 사용

__2.2.5  노트북 종료

2.3  파이썬 문법

__2.3.1  변수와 변수형

__2.3.2  연산자

__2.3.3  리스트

__2.3.4  튜플

__2.3.5  딕셔너리

__2.3.6  if문

__2.3.7  for문

__2.3.8  while문

__2.3.9  내포

__2.3.10  함수

__2.3.11  변수의 범위

__2.3.12  클래스

2.4  넘파이

__2.4.1  넘파이 임포트

__2.4.2  넘파이 배열

__2.4.3  배열을 생성하는 다양한 함수

__2.4.4  reshape를 이용한 형태 변환

__2.4.5  배열 연산

__2.4.6  브로드캐스트

__2.4.7  원솟값에 접근

__2.4.8  슬라이싱

__2.4.9  축과 transpose 메소드

__2.4.10  넘파이의 함수

2.5  맷플롯립

__2.5.1  모듈 임포트

__2.5.2  그래프 생성

__2.5.3  그래프 디자인

__2.5.4  산포도 표시

__2.5.5  이미지 표시

 

[3장] 딥러닝을 위한 수학

3.1  수학 기호

__3.1.1  시그마(Σ)로 총합계 표시

__3.1.2  자연상수 e

__3.1.3  자연로그 log

3.2  선형대수

__3.2.1  스칼라

__3.2.2  벡터

__3.2.3  행렬

__3.2.4  텐서

__3.2.5  스칼라와 행렬의 곱셈

__3.2.6  각 원소 간의 곱셈

__3.2.7  행렬 곱

__3.2.8  행렬 전치

3.3  미분

__3.3.1  상미분

__3.3.2  미분법의 기본 공식

__3.3.3  연쇄법칙

__3.3.4  편미분

__3.3.5  전미분

__3.3.6  다변수의 연쇄법칙

3.4  정규분포

 

[4장] 신경망

4.1  신경세포 네트워크

4.2  신경세포의 모델화

4.3  뉴런의 네트워크화

4.4  회귀와 분류

__4.4.1  회귀

__4.4.2  분류

4.5  활성화 함수

__4.5.1  계단 함수

__4.5.2  시그모이드 함수

__4.5.3  tanh

__4.5.4  ReLU

__4.5.5  Leaky ReLU

__4.5.6  항등 함수

__4.5.7  소프트맥스 함수

4.6  신경망 구현

__4.6.1  단일 뉴런 구현

__4.6.2  가중치와 편향의 영향

__4.6.3  신경망 구현

__4.6.4  각 층의 구현

__4.6.5  신경망(회귀)

__4.6.6  신경망의 표현력

__4.6.7  신경망(분류)

 

[5장] 역전파

5.1  학습 규칙

__5.1.1  헵의 규칙

__5.1.2  델타 규칙

5.2  역전파란?

5.3  훈련 데이터와 테스트 데이터

5.4  손실 함수

__5.4.1  오차제곱합

__5.4.2  교차 엔트로피 오차

5.5  경사 하강법

__5.5.1  경사 하강법 개요

__5.5.2  기울기 구하는 방법

__5.5.3  출력층 기울기

__5.5.4  출력층에서 입력값 기울기

__5.5.5  은닉층 기울기

__5.5.6  기울기를 구하는 식 정리

__5.5.7  회귀 문제에서 기울기 구하는 방법

__5.5.8  분류 문제에서 기울기 구하는 방법

5.6  최적화 알고리즘

__5.6.1  최적화 알고리즘 개요

__5.6.2  확률적 경사 하강법

__5.6.3  모멘텀

__5.6.4  아다그라드

__5.6.5  RMSProp

__5.6.6  아담

5.7  배치 사이즈

__5.7.1  에포크와 배치

__5.7.2  배치 학습

__5.7.3  온라인 학습

__5.7.4  미니 배치 학습

5.8  행렬 연산

__5.8.1  행렬의 형식

__5.8.2  행렬을 이용한 순전파

__5.8.3  행렬을 이용한 역전파

5.9  회귀 문제에서의 역전파 구현

__5.9.1  회귀 예(sin 함수의 학습)

__5.9.2  출력층 구현

__5.9.3  은닉층 구현

__5.9.4  역전파 구현

__5.9.5  역전파 구현 전체 코드(회귀)

__5.9.6  실행 결과

5.10  분류 문제에서의 역전파 구현

__5.10.1  분류 사례(소속 영역 학습)

__5.10.2  각 층의 구현

__5.10.3  역전파 구현 전체 코드(분류)

__5.10.4  실행 결과

 

[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.2.6  데이터 전처리

__6.2.7  드롭아웃

6.3  붓꽃 품종 분류

__6.3.1  붓꽃 데이터 세트

__6.3.2  훈련 데이터와 테스트 데이터

__6.3.3  신경망 구성

__6.3.4  학습에 관련된 각 설정

6.4  딥러닝 구현

__6.4.1  데이터 입력과 전처리

__6.4.2  각 층의 구현

__6.4.3  신경망 구축

__6.4.4  미니배치법 구현

__6.4.5  정답률 측정

__6.4.6  붓꽃 데이터 품종 분류를 위한 전체 코드

__6.4.7  실행 결과

__6.4.8  과적합 방지를 위한 대책

__6.4.9  아다그라드 구현

__6.4.10  드롭아웃 구현

__6.4.11  과적합 방지 대책의 결과

__6.4.12  품종 분류

 

[7장] 컨볼루션 신경망(CNN)

7.1  컨볼루션 신경망(CNN)의 개요

__7.1.1  시각 처리 체계

__7.1.2  CNN 구조

__7.1.3  컨볼루션 층

__7.1.4  풀링층

__7.1.5  전결합층

__7.1.6  패딩

__7.1.7  스트라이드

__7.1.8  CNN 학습

__7.1.9  변수 정리

7.2  im2col과 col2im

__7.2.1  im2col과 col2im의 개요

__7.2.2  im2col 알고리즘

__7.2.3  간단한 im2col 구현

__7.2.4  배치와 채널을 고려한 실전 im2col 코드

__7.2.5  col2im 알고리즘

__7.2.6  col2im 구현

7.3  컨볼루션층 구현

__7.3.1  구현 개요

__7.3.2  순전파

__7.3.3  역전파

7.4  풀링층 구현

__7.4.1  구현 과정 개요

__7.4.2  순전파

__7.4.3  역전파

7.5  전결합층 구현

7.6  컨볼루션 신경망 구현

__7.6.1  사용 데이터 세트

__7.6.2  구축할 신경망

__7.6.3  CNN 코드

__7.6.4  실행 결과

__7.6.5  컨볼루션층의 시각화

__7.6.6  컨볼루션층 효과

7.7  더 깊은 신경망

__7.7.1  신경망 구축

__7.2.2  실행 결과

 

[8장] 그 밖의 딥러닝 기술

8.1  순환 신경망(RNN)

__8.1.1  RNN의 개요

__8.1.2  LSTM

__8.1.3  GRU

8.2  자연어 처리

__8 2.1  형태소 분석

__8.2.2  단어 임베딩

8.3  생성 모델

__8.3.1  생성적 적대 신경망(GAN)

__8.3.2  VAE

8.4  강화학습

__8.4.1  강화학습 개요

__8.4.2  심층 강화학습

8.5  GPU 활용

__8.5.1  GPU란

__8.5.2  딥러닝에서 GPU 활용

8.6  딥러닝 프레임워크

8.7  딥러닝의 미래

 

댓글