Dive into Deep Learning
Dive into Deep Learning

이 책의 사용 방법

우리는 모델 만들기부터 모델 학습, 그리고 컴퓨터 비전 및 자연어 처리에 대한 응용까지 딥러닝의 모든 것들에 대해서 전반적인 소개를 하는 것을 목표로 합니다. 알고리즘의 원리만을 설명하는 것이 아니라, Apache MXNet을 이용해서 직접 구현하고 운영하는 것까지 보여줄 것입니다. 이 책의 각 절은 Jupyter 노트북, 텍스트, 공식, 이미지, 코드, 그리고 수행 결과로 구성되어 있습니다. 이를 통해서 이 책을 직접 읽는 것뿐만 아니라, 직접 수행하면서 상호적인 학습 경험을 할 수 있을 것 입니다. 하지만, 이 책을 여러분에게 딥러닝에 대한 소개를 제공하는 것이기 때문에, 더 많은 것을 알고 싶다면, 연구 커뮤니티들에서 제공하는 툴박스, 컴파일러, 예제들, 튜터리얼, 그리고 소스 코드를 활용하는 것을 추천합니다. 그럼 여행을 시작해봅시다.

대상 독자

이 책은 딥러닝을 배우고자 하는 대학교 학부생, 엔지니어, 연구원 그리고 특히 딥러닝을 실제 문제에 적용하고자 하는 사람들을 대상으로 하고 있습니다. 모든 개념을 기초부터 설명하고 있기 때문에, 딥러닝이나 머신 러닝에 대한 배경지식이 없어도 됩니다. 딥러닝 기술이나, 응용을 설명할 때 수학이나 프로그래밍을 사용하지만, 기본적인 선형대수, 미적분, 확률 그리고 기초 Python 프로그래밍과 같은 기초적인 것들만 알고 있으면 충분합니다. 부록에서는 이 책에서 다루는 대부분의 수학을 포함하고 있으니 필요한 경우 참고하시기 바랍니다. 이 책은 소개서이기 때문에, 수학적으로 깊이 들어가는 것보다는 직관과 아이디어에 더 비중을 두고 있습니다. 흥미를 갖은 독자들은 많은 훌륭한 책들을 통해서 더 자세한 것들을 배울 수 있습니다. 예를 들면, Bela Bollobas의 Linear Analysis는 선형대수와 함수분석을 아주 자세하게 다루고 있고, All of Statistics은 통계에 대한 아주 훌륭한 가이드입니다. 만약 Python을 사용해보지 않았다면, Python tutorial을 참고하면 좋습니다. 물론, 수학적인 내용만 관심있다면, 프로그래밍 부분은 생략하면서 읽어도 됩니다. 물론 반대의 경우도 그렇습니다.

내용 및 구성

이 책은 크게 세 파트로 구성되어 있습니다.

  • 첫번째 파트는 전제조건과 기본사항들을 다룹니다. 1장에서는 딥러닝에 대한 소개 와 이 책에 대한 활용 방법을 설명합니다. 딥러닝 맛보기 장에서는 이 책의 코드를 어디서 받을 수 있고 어떻게 실행하는지 등과 같은 딥러닝 핸즈온에 필요한 것들을 이야기합니다. 만약 시간이 없거나 딥러닝의 가장 기본적인 개념과 기법들만을 배우고자 한다면, 이 파트만 읽어도 충분합니다.
  • 두번째 파트인 다음 세 장은 최신 딥러닝 기법들을 다룹니다. 딥러닝 계산은 딥러닝 연산의 다양한 주요 요소들을 설명하면서, 더 복잡한 모델 구현을 위한 기본을 다질 수 있도록 합니다. 다음 장은 Convolutional Neural Networks인데, 이는 최근 몇년동안 컴퓨터 비전에서 성과를 거두고 있는 딥러닝 기술입니다. 그리고 순서가 있는 데이터를 처리하는데 일반적으로 사용되는 Recurrent Neural Networks를 다룹니다. 여러분은 이 두번째 파트를 읽으면서 최근 딥러닝 기술을 이해할 수 있을 것입니다.
  • 마지막 파트는 확장성, 효율성과 응용을 다룹니다. 딥러닝 모델을 학습시키는데 사용되는 다양한 Optimization Algorithms을 설명한 후, 정규화와 같이 딥러닝 연산 Performance에 영향을 주는 중요한 요소들에 대해서 살펴봅니다. 9장과 10장은 컴퓨터 비전과 자연어처리에서 사용되는 딥러닝의 응용에 대해서 알아봅니다. 이 파트는 여러분의 관심에 따라서 선택적으로 읽어도 됩니다.

이 책의 구성은 다음 그림과 같습니다. 화살표는 선행되어야하는 관계를 의미합니다. 만약 빠른 시간안에 딥러닝의 기본적인 개념과 기법들을 배워야한다면, 1장~3장만 읽으면됩니다. 더 심도있는 내용을 원하면, 그 다음 3장(4장~6장)을 읽으세요. 마지막 4장은 독자의 관심에 따라서 옵션입니다.

Book structure

코드

이 책은 모든 절에 동작하는 코드를 포함하고 있습니다. 코드들을 수정하고 다시 수행해서 결과에 어떤 영향을 미치는지도 확인할 수 있습니다. 이렇게 한 이유는 딥러닝에서 상호적인 학습 경험이 중요하다는 것을 알아냈기 때문입니다. 아쉽게도 딥러닝은 이론적으로 잘 이해되지 않고 있습니다. 그렇기 때문에, 많은 논의들은 코드를 수행해서 얻은 경험에 많이 의존하고 있습니다. 글로 설명하는 것은 최선의 노력을 해도 모든 자세한 것들을 다루기에 충분하지 않을 수 있습니다. 이론적인 진전이 더 만들어지면 그 때는 이런 상황이 좋아질 것을 기대하지만, 지금은 독자들이 코드를 바꾸고, 결과를 관찰하고, 전반적인 과정을 요약하는 것을 통해서 이해도를 높이고, 직관을 키우시길 바랍니다.

이 책의 코드는 Apache MXNet을 기반으로 합니다. MXNet은 딥러닝을 위한 오픈소스 프레임워크입니다. 이는 AWS(Amazon Cloud Services)가 선호하는 프레임워크이며, 많은 대학과 회사에서 사용되고 있습니다. 이 책의 모든 코드는 MXNet 1.2.0을 이용해서 테스트 되었으나, 딥러닝의 빠른 발전으로 어떤 코드는, 이후 MXNet 버전에서는 이 책의 인쇄버전의 코드가 잘 작동하지 않을 수 있습니다. 하지만, 온라인 버전은 계속 최신을 유지할 것입니다. 만약 그런 경우를 만난다면, “Installation and Running” 를 참고해서 코드와 실행환경을 업데이트하세요. 그리고, 불필요한 반복을 피하기 위해서, 이 책에서 자주 import 되거나 자주 참조되는 함수, 클래스 등은 d2l 패키지에 넣었습니다. d2l 패키지의 버전은 1.0.0 입니다. 포함된 함수와 클래스에 대한 자세한 내용은 “d2l package index”에 있습니다.

이책은 MXNet 소개서로 활용될 수도 있습니다. 코드를 사용한 주요 목적은 텍스트, 이미지, 공식과 더불어 딥러닝 알고리즘을 배우는 또 다른 방법을 제공하는데 있습니다. 이 책은 각 모델과 알고리즘의 실제 데이터에 대한 실제 영향을 이해하기 위해서 인터엑티브한 환경을 제공합니다. 딥러닝 알고리즘의 구현에 대한 자세한 내용을 설명하기 위해서 MXNet 모듈의 기본적인 기능 - ndarray, autograd, gluon 등 - 만을 사용합니다. 여러분의 연구나 업무에서 다른 딥러닝 프레임워크를 사용하는 경우에도, 이 코드는 딥러닝 알고리즘에 대한 이해를 높이는데 도움이 될 것이라고 기대합니다.

토론(Forum)

이 책의 내용에 대한 논의 포럼은 discuss.mxnet.io 에 있습니다. 이 책의 어느 부분이던지 질문이 있을 때는, 각 절 끝에 있는 QR 코드를 스캔해서 논의에 참여할 수 있습니다. 이 책의 저자와 MXNet 개발자들이 포럼에 자주 방문하고 참여하고 있습니다.

문제

  1. 이 책의 논의 포럼 discuss.mxnet.io 에 계정을 생성하세요.
  2. 여러분의 컴퓨터에 Python을 설치하세요.

Scan the QR Code to Discuss

image1