Do it! 딥러닝 입문

공지: 홍대 머신러닝 스터디에서 <Do it! 딥러닝 입문> 스터디를 진행합니다! 

x9791163031093

Do it! 정직하게 코딩하며 배우는 딥러닝 입문’은 제가 쓴 첫 번째 책입니다.

여러 권의 머신러닝, 딥러닝 책을 번역하면서 배웠던 장점을 최대한 살리고 독자로서 아쉬웠던 점을 보완하려고 노력했습니다. 책 뿐만 아니라 수 많은 논문, 블로그, 질문-답변, 깃허브 코드, 동영상 등을 통해 배웠습니다. 이런 자료가 없었다면 아무것도 할 수 없었을 것입니다. 지식을 나눠주신 모든 분들께 깊이 감사드립니다.

입문서로서 이론과 코드를 적절히 안배하려고 노력했습니다. 선형 회귀부터 순환 신경망까지 역전파 알고리즘을 유도하는 과정을 그림과 수식으로 안내합니다. 그다음 파이썬으로 직접 구현하면서 수식을 이해할 수 있도록 돕습니다. 마지막으로 텐서플로를 사용하여 실전 사례를 맛볼 수 있도록 꾸몄습니다. 이 모든 작업을 아무런 설치 없이 브라우저만 사용하여 진행할 수 있습니다. 수식과 개념을 설명하기 위해 많은 그림을 넣었습니다. 훌륭한 일러스트로 채워주신 이지스퍼블리싱 출판사에 감사드립니다.

이미 많은 입문서가 있지만 독자들에게 기초적인 내용을 올바르게 전달하고 싶었습니다. 한 번 쓰고 마는 책이 아니라 꾸준히 좋은 내용을 계속 채워 넣겠습니다. 이 책을 통해 성공적으로 딥러닝에 입문하시길 응원합니다! 감사합니다!


목차

01 딥러닝을 소개합니다
02 최소한의 도구로 딥러닝을 시작합니다
03 머신러닝의 기초를 다집니다 ― 수치 예측
04 분류하는 뉴런을 만듭니다 ― 이진 분류
05 훈련 노하우를 배웁니다
06 2개의 층을 연결합니다 ― 다층 신경망
07 여러 개를 분류합니다 ― 다중 분류
08 이미지를 분류합니다 ― 합성곱 신경망
09 텍스트를 분류합니다 ― 순환 신경망


  • 온라인/오프라인 서점에서 판매중입니다. [교보문고] [Yes24]
  • 328페이지, 19,800원 –> 17,820원, 전자책: 13,000원
  • 이 책에 실린 코드는 깃허브에 있습니다.
  • 이 책의 코드는 numpy 1.16.3, scikit-learn 0.21.2, TensorFlow 2.0.0rc1/rc2, TensorFlow 2.0.0에서 테스트되었습니다.

이 페이지에서 책의 에러타와 라이브러리 버전 변경에 따른 바뀐 점들을 계속 업데이트 하겠습니다. 구글 그룹스의 머신러닝/딥러닝 도서 메일링 리스트에 가입하시면 책의 에러타나 수정사항을 자동으로 수신할 수 있습니다.

이 책에 대해 궁금한 점이나 오류가 있으면 이 페이지 맨 아래 ‘Your Inputs’에 자유롭게 글을 써 주세요. 또 제 이메일을 통해서 알려 주셔도 되고 구글 그룹스 머신러닝/딥러닝 도서 Q&A에 글을 올려 주셔도 좋습니다.

감사합니다! 🙂


Outputs (aka. errata)

  1. (p212, p213) 텐서플로 2.0.0 RC1 버전이 릴리스되었습니다. p212 맨 아래 설치 문장을 다음과 같이 바꾸어 주세요.
    !pip install tensorflow-gpu==2.0.0-rc2

    p212 중간에 출력되는 텐서플로 버전을 2.0.0-rc1에서 2.0.0-rc2로 바꾸어 주세요.

  2. (p212, p213) 텐서플로 2.0 버전이 릴리스되었습니다. p212 맨 아래 설치 문장을 다음과 같이 바꾸어 주세요.
    !pip install tensorflow-gpu==2.0.0

    p212 번호 2 아래 첫 번째 문장에서 “텐서플로는 2019년 9월에 2.0 RC 버전이 릴리스되었습니다”를 “텐서플로는 2019년 10월에 2.0 버전이 릴리스되었습니다”로 바꾸어 주세요. 중간에 출력되는 텐서플로 버전을 2.0.0-rc2에서 2.0.0으로 바꾸어 주세요.

  3. (p93) 페이지 아래에서 5번째 줄에 “양수와 음수가 섞여 있음을“을 “양수로 이루어져 있음을“로 정정합니다.(이*학 님)
  4. (p170) 첫 번째 문장에서 “신경망 알고리도즘으로“를 “신경망 알고리즘으로“로 정정합니다.(이*학 님)
  5. (p124) fit 메서드 아래 네 번째 줄에서 np.random.seed(42) 라인이 들여쓰기가 잘못되어 있습니다. 다음과 같이 정정합니다.(박*규 님)
    def fit(self, x, y , epochs=100):
        ...
        self.w_history.append(self.w.copy())
        np.random.seed(42)
        for i in range(epochs):
            ...
  6. (p188) 페이지 위쪽 코드 중 dual_layer 객체를 다음과 같이 random_init_net으로 정정합니다.(박*규 님)
    plt.plot(random_init_net.losses)
    plt.plot(random_init_net.val_losses)
  7. (p230) 두 번째 정확도 그래프를 그리는 코드에서 plt.ylabel('loss')plt.ylabel('accuracy')로 정정합니다. 그래프의 범례에 있는 ‘train_loss‘, ‘val_loss‘도 ‘train_accuracy‘, ‘val_accuracy‘로 정정합니다.(박*규 님)
  8. (p130) 페이지 중간의 코드에서 layer2.score(X_val_scaled, y_val)layer2.score(x_val_scaled, y_val)로 정정합니다.
  9. (p53) 아래에서 3번째 줄에 ‘경사 하강법(gradientdescent)에 대해 배웁니다’를 ‘경사 하강법(gradient descent)에 대해 배웁니다’로 정정합니다.
  10. (p110) SingleLayer 클래스의 add_bias() 메서드를 삭제합니다.(Sir* B 님)
  11. (p106) 페이지 중간 소제목 “손실 함수의 결괏값 조정해 저장 기능 추가하기”를 “손실 함수의 결괏값 저장 기능 추가하기”로 바꿉니다.
  12. (p177) 페이지 아래쪽 수식에서 \frac{\partial L}{\partial W_2} = \frac{\partial L}{\partial Z_2}= \frac{\partial Z_2}{\partial W_2}를 \frac{\partial L}{\partial W_2} = \frac{\partial L}{\partial Z_2} \frac{\partial Z_2}{\partial W_2}로 정정합니다.
  13. (p183) 페이지 맨 마지막 수식에서 \frac{\partial L}{\partial Z_2}\frac{\partial Z_2}{\partial A_1} = \frac{\partial A_1}{\partial Z_1}을 \frac{\partial L}{\partial Z_2}\frac{\partial Z_2}{\partial A_1} \frac{\partial A_1}{\partial Z_1}로 정정합니다.
  14. (p248) 페이지 아래쪽 코드에서 배열 x 값이 잘못되었습니다.(ps*3 님)
    x = np.array([[1, 2, 3, 4],
                  [5, 6, 7, 8],
                  [9, 10, 11, 12]])

    가 아니고

    x = np.array([[1, 2, 3, 4],
                  [5, 6, 7, 8],
                  [9, 10, 11, 12],
                  [13, 14, 15, 16]])

    이어야 합니다.

  15. (p171) 페이지 중간 테이블에서 2행, 1열의 가중치가 w_{21}이 아니고 w_{12}입니다.(ph**oh 님)
  16. (p315) summary() 메서드의 출력에서 임베딩 층의 출력 크기가 (None, None, 8)이 아니고 (None, None, 32)입니다. 파라미터의 갯수는 8000이 아니고 32000입니다. 비슷하게 lstm 층의 출력 크기는 (None , 1)이 아니고 (None, 8)입니다. 파라미터 갯수는 40이 아니고 1312입니다. 마지막 dense 층의 출력 파라미터의 갯수는 2에서 9로 바뀌어야 합니다. Total params와 Trainable params의 수치는 8,042에서 33,321로 바뀌어야 합니다.(ph**oh 님)
  17. (p314) LSTM 셀의 세 번째 공식 \text{C} = \text{F} \times \text{I}\text{C} = \text{F} + \text{I}로 정정합니다.
  18. (p258) 첫 번째 코드 블럭에서 f_out = tf.reshape(p_out1, [x.shape[0], -1]) 코드를 f_out = tf.reshape(p_out, [x.shape[0], -1]) 로 정정합니다.(Ju**n 님)

 


Your Inputs

 

 

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.