정석으로 배우는 딥러닝

텐서플로와 케라스로 배우는 시계열 데이터 처리 알고리즘

기초부터 응용까지, 이론에서 구현까지!

이 책은 딥러닝과 신경망에 관한 예비 지식 없이도 학습해 나아갈 수 있도록 기본적인 내용부터 이론과 구현에 관해 상세하게 설명합니다. 구현에는 파이썬의 딥러닝용 라이브러리인 텐서플로(1.0)와 케라스(2.0)를 사용합니다.

이 책은 단순 퍼셉트론부터 시작해서 다층 퍼셉트론, 심층 신경망, 순환 신경망 등 다양한 기법에 관해 설명합니다. 취급할 데이터의 종류에 따라 생각해야 할 과제도 다르므로 이에 맞춰 네트워크를 변화시키며 학습을 진행합니다. 이 책에서 배운 이론만 잘 알고 있으면 앞으로 어떤 딥러닝 기법이 나와도 금방 이해하고 능숙하게 사용할 수 있을 것입니다. 그리고 자신이 직접 새로운 모델을 고안해 낼 수도 있을 것입니다.

★ 이 책에서 다루는 내용 ★

  • 신경망의 이론을 학습하는 데 필요한 수학 지식
  • 파이썬 개발 환경을 구축 및 파이썬 라이브러리를 사용법
  • 신경망 기본형과 심층 신경망(딥러닝) 학습
  • 시계열 데이터 처리를 위한 RNN 학습과 응용

 

도서 상세 이미지

스고모리 유우스케

Gunosy와 READYFOR의 창업 멤버이다. 덴츠와 구글의 뉴욕 지사에서 근무했고 주식회사 정보의료의 창업에 참가했다. 의료 분야에서 인공지능이 크게 활용되도록 노력하고 있으며, 동경대 초빙 강사를 역임하고 있다. 'Deep Learning Java 프로그래밍 심층학습의 이론과 구현'(임프레스 출판사, Packt Publishing: Java Deep Learning Essentials)의 저자이다.

김범준

일본 호세이대학 경영학부를 졸업했다. 대학 시절 취미로 프로그래밍을 시작한 것을 계기로 이 업계에 발을 들여놓게 됐으며, 한국과 일본에서 임베디드 시스템과 게임 관련 회사에서 개발 프로젝트를 진행했다. 번역서로는 《러닝스쿨! 파이썬 교과서》 《유니티 UI 디자인 교과서》 《머신러닝 이론 입문》 《모던 C 언어 프로그래밍》 《따라 하면서 배우는 유니티 3D 입문》이 있으며, 저서로는 《만들면서 배우는 OS커널의 구조와 원리》 《뇌를 자극하는 하드웨어 입문》이 있다.

감수자

손민규

소니 반도체에서 데이터 분석을 활용한 알고리즘 및 시스템 개발 업무를 담당했다. 사원을 대상으로 통계 알고리즘 강의를 진행한 경험이 있으며, 현재는 삼성전자에서 관련 데이터 분석 업무를 담당하고 있다. 일본 큐슈대학교에서 인공지능의 한 분야인 Reinforcement Learning 알고리즘 개발로 박사학위를 받았으며 관심분야는 Reinforcement Learning, Neural Network, Genetic Algorithm 등 Machine Learning Algorithm을 활용한 시스템개발이다.

  • ▣ 01장: 수학 지식 준비
    • 1.1 편미분
      • 1.1.1 도함수와 편도함수
      • 1.1.2 미분 계수와 편미분 계수
      • 1.1.3 편미분의 기본 공식
      • 1.1.4 합성함수의 편미분
      • 1.1.5 레벨 업 전미분
    • 1.2 선형대수
      • 1.2.1 벡터
      • 1.2.2 행렬
    • 1.3 정리
    •  
  • ▣ 02장: 파이썬 준비
    • 2.1 파이썬 2와 파이썬 3
    • 2.2 아나콘다 배포판
    • 2.3 파이썬 기초
      • 2.3.1 파이썬 프로그램 실행
      • 2.3.2 데이터형
      • 2.3.3 변수
      • 2.3.4 데이터 구조
      • 2.3.5 연산
      • 2.3.6 기본 구문
      • 2.3.7 함수
      • 2.3.8 클래스
      • 2.3.9 라이브러리
    • 2.4 NumPy
      • 2.4.1 NumPy 배열
      • 2.4.2 NumPy로 벡터, 행렬 계산
      • 2.4.3 배열과 다차원 배열 생성
      • 2.4.4 슬라이스
      • 2.4.5 브로드캐스트
    • 2.5 딥러닝을 위한 라이브러리
      • 2.5.1 TensorFlow
      • 2.5.2 케라스(Keras)
      • 2.5.3 씨아노(Theano)
    • 2.6 정리
    •  
  • ▣ 03장: 신경망
    • 3.1 신경망이란?
      • 3.1.1 뇌와 신경망
      • 3.1.2 딥러닝과 신경망
    • 3.2 신경망이라는 회로
      • 3.2.1 단순한 모델화
      • 3.2.2 논리회로
    • 3.3 단순 퍼셉트론
      • 3.3.1 모델화
      • 3.3.2 구현
    • 3.4 로지스틱 회귀
      • 3.4.1 계단함수와 시그모이드 함수
      • 3.4.2 모델화
      • 3.4.3 구현
      • 3.4.4 (레벨업) 시그모이드 함수와 확률밀도함수, 누적분포함수
      • 3.4.5 (레벨업) 경사하강법과 국소최적해
    • 3.5 다중 클래스 로지스틱 회귀
      • 3.5.1 소프트맥스 함수
      • 3.5.2 모델화
      • 3.5.3 구현
    • 3.6 다층 퍼셉트론
      • 3.6.1 비선형 분류
      • 3.6.2 모델화
      • 3.6.3 구현
    • 3.7 모델 평가
      • 3.7.1 분류에서 예측으로
      • 3.3.2 예측을 평가
      • 3.7.3 간단한 실험
    • 3.8 정리
    •  
  • ▣ 04장: 심층 신경망
    • 4.1 딥러닝 준비
    • 4.2 학습시킬 때 발생하는 문제점
      • 4.2.1 경사 소실 문제
      • 4.2.2 오버피팅 문제
    • 4.3 효율적인 학습을 위해
      • 4.3.1 활성화 함수
      • 4.3.2 드롭아웃
    • 4.4 구현 설계
      • 4.4.1 기본 설계
      • 4.4.2 학습을 가시화한다
    • 4.5 고급 기술
      • 4.5.1 데이터를 정규화하고 웨이트를 초기화한다
      • 4.5.2 학습률 설정
      • 4.5.3 얼리 스탑핑(조기 종료)
      • 4.5.4 배치 정규화
    • 4.6 정리
    •  
  • ▣ 05장: 순환 신경망
    • 5.1 기본 사항
      • 5.1.1 시계열 데이터
      • 5.1.2 과거의 은닉층
      • 5.1.3 Backpropagation Through Time
      • 5.1.4 구현
    • 5.2 LSTM
      • 5.2.1 LSTM 블록
      • 5.2.2 CEC·입력 게이트·출력 게이트
      • 5.2.3 망각 게이트
      • 5.2.4 핍홀 결합
      • 5.2.5 모델화
      • 5.2.6 구현
      • 5.2.7 장기 의존성 학습 평가 - Adding Problem
    • 5.3 GRU
      • 5.3.1 모델화
      • 5.3.2 구현
    • 5.4 정리
    •  
  • ▣ 06장: 순환 신경망 응용
    • 6.1 Bidirectional RNN
      • 6.1.1 미래의 은닉층
      • 6.1.2 전방향·후방향 전파
      • 6.1.3 MNIST를 사용한 예측
    • 6.2 RNN Encoder-Decoder
      • 6.2.1 Sequence-to-Sequence 모델
      • 6.2.2 간단한 Q&A 문제
    • 6.3 Attention
      • 6.3.1 시간의 웨이트
      • 6.3.2 LSTM에서의 Attention
    • 6.4 Memory Networks
      • 6.4.1 기억의 외부화
      • 6.4.2 Q&A 문제에 적용
      • 6.4.3 구현
    • 6.5 정리
    •  
  • ▣ 부록
    • A.1 모델을 저장하고 읽어 들인다
      • A.1.1 텐서플로에서의 처리
      • A.1.2 케라스에서의 처리
    • A.2 텐서보드(TensorBoard)
    • A.3 tf.contrib.learn
  • 106쪽, 5번째 줄

    확률을 표현하는 함수로는 확률밀도확률가 있습니다.

    ==>

    확률을 표현하는 함수로는 확률밀도함수가 있습니다.

  • 120쪽, 본문 4번째 줄

    $ _{k}^{argmin}{y}{_n}{_k} = _{k}^{argmin}{t}{_n}{_k} $

    ==>

    $ _{k}^{argmax}{y}{_n}{_k} = _{k}^{argmax}{t}{_n}{_k} $

  • 128쪽, 4번째 줄

    입력층과 출력층 사에에 이번에 추가된

    ==>

    입력층과 출력층 사이에 이번에 추가된

  • 139쪽, 표 3.9를 아래 내용으로 대체

    표 3.9

  • 197쪽, Glorot and Bengio 2010 문헌[7]의 두 번째 수식

    np.sqrt(3.0 / (n_in + n_out)) * np.random.normal(size=shape)
    

    ==>

    np.sqrt(2.0 / (n_in + n_out)) * np.random.normal(size=shape)
    
  • 199쪽, 식 (4.51)과 식 (4.53)의 마지막 항

    $ +\gamma\Delta\theta^{(t-1)} $

    ==>

    $ +\gamma\Delta{v}^{(t-1)} $

  • 199쪽, 식 (4.52)와 식 (4.54)

    $ \theta^{(t)} = \theta^{(t-1)} - v^{(t)} $

    ==>

    $ \theta^{(t)} = \theta^{(t-1)} + v^{(t)} $

  • 211쪽, 식 4.88

    $ = \frac {\partial E}{{\partial}x_i} \cdot \frac {1}{\sqrt{\sigma^2_\mathscr{B}+\epsilon}}+\frac {\partial E}{\partial \sigma ^ 2 _\mathscr{B}} \cdot \frac {2(x_i - \mu _\mathscr{B})}{m} + \frac {\partial E}{\partial \mu _\mathscr{B}} \cdot \frac {1}{m} $

    ==>

    $ = \frac {\partial E}{{\partial}\hat x_i} \cdot \frac {1}{\sqrt{\sigma^2_\mathscr{B}+\epsilon}}+\frac {\partial E}{\partial \sigma ^ 2 _\mathscr{B}} \cdot \frac {2(x_i - \mu _\mathscr{B})}{m} + \frac {\partial E}{\partial \mu _\mathscr{B}} \cdot \frac {1}{m} $

  • 226쪽, 본문 첫 번째 줄

    $ t-\tau+1 $개가 되므로

    ==>

    $ t-\tau $개가 되므로

  • 244쪽, 식 5.40

    $ =\frac{\partial {E}}{{\partial}c(t)}\odot \frac{c(t)}{{\partial}f(t)} $

    ==>

    $ =\frac{\partial {E}}{{\partial}c(t)}\odot \frac{{\partial}c(t)}{{\partial}f(t)} $

  • 247쪽, 본문 1번째 줄

    식 5.97에 집약돼 있고 ==> 식 5.53에 집약돼 있고

  • 247쪽, 본문 3번째 줄

    식 5.97은 ==> 식 5.53은

  • 247쪽, 각주 1번째 줄

    식 5.97은 ==> 식 5.53은

  • 249쪽, 식 5.73

    $ =e_a(t)\odot \sigma ^ \prime(\hat a(t)) $

    ==>

    $ =e_a(t)\odot f ^ \prime(\hat a(t)) $

  • 250쪽, 3번째 줄

    $ {e}_{s}(t) $를 구해본 것은 다음과 같습니다.

    ==>

    $ {e}_{c}(t) $를 구해본 것은 다음과 같습니다.

  • 256쪽, 본문 4번째 줄

    각각 $ \tilde {h}(t) $에 곱해지고

    ==>

    각각 $ h(t - 1) $와 $ \tilde {h}(t) $에 곱해지고