케라스 창시자에게 배우는 딥러닝
단어 하나, 코드 한 줄 버릴 것이 없다!
창시자의 철학까지 담은 딥러닝 입문서
케라스 창시자이자 구글 딥러닝 연구원인 저자는 ‘인공 지능의 민주화’를 강조한다. 이 책 역시 많은 사람에게 딥러닝을 전달하는 또 다른 방법이며, 딥러닝 이면의 개념과 구현을 가능하면 쉽게 이해할 수 있게 하는 데 중점을 두었다. 1부에서는 딥러닝, 신경망, 머신 러닝의 기초를, 2부에서는 컴퓨터 비전, 텍스트, 시퀀스, 생성 모델을 위한 딥러닝 같은 실전 딥러닝을 설명한다. 이외에도 딥러닝을 언제 적용하는지, 한계는 무엇인지...
이 책은 케라스 창시자인 프랑소와 숄페의 저서로, 케라스에 입문하거나 케라스로 처음 딥러닝을 경험하려는 사람들에게 좋습니다...(중략)...한 가지 특이한 점은 단순하게 내용을 나열하거나 사전식으로 늘어놓는 것이 아니라 어떠한 과제를 제시하고 그 과제를 해결하는 과정에서 케라스 코드와 함께 딥러닝 구현 방법을 설명합니다.
-추천사 중...-
본 책은 딥러닝을 처음 배우고나 이해의 폭을 넓히가조 하는 모든 독자층을 위한 도서이다. 머신러닝 기술자, 소프트웨어 엔지니어, 학생들까지 많은 것을 배울 수 있다. 그에 맞게 이 책은 크게 1부와 2부로 구성되어 있다. 1부는 딥러닝을 이론적으로 소개하고 있다. 딥러닝의 배경, 정의, 머신 러닝과 신경망을 시작하는 데 필요한 모든 개념이 들어가 있다.
1장: AI, 머신 러닝, 딥러닝에 관한 핵심 사항과 배경지식
2장: 딥러닝을 배우기 위한 기초 개념에 대해 배운다. 텐서, 텐서 연산, 경사 하강법, 역전파에 대해 배운다.
3장: 신경망에 필요한 딥러닝 프레임워크인 케라스를 소개하고, 딥러닝 컴퓨터 설정, 예제등을 배운다. 회귀 작업을 위한 간단한 신경망을 학습시킬 수 있고 학습 과정에 어떤 일이 일어났는지 확실히 이해할 수 있다.
4장: 대표적인 머신 러닝 작업 흐름을 배운다. 흔히 나타나는 문제와 해결책도 소개한다.
2부는 컴퓨터 비전과 자연어 처리 분야의 실용적인 딥러닝 애플리케이션에 대해 자세히 다룬다.
5장: 이미지 분류에 알맞은 실용적인 컴퓨터 비전 예제를 배운다.
6장: 텍스트와 시계열과 같은 시퀀스 연속 데이터를 처리하기 위한 기술에 대해 배운다.
7장: 최고 수준의 딥러닝 모델을 구축해본다.
8장: 이미지와 텍스트를 생성할 수 있는 딥러닝 생성 모델을 소개한다.
450페이지에 달하는 이 책은 딥러닝, 머신러닝, 인공지능을 케라스라는 프레임워크를 이용해 쉽고 재미있게 설명해주고 있다. 데이터를 준비하고, 전처리하며, 모델을 구성하고, 훈련된 데이터를 검증하는 일반적인 과정부터 시작해, CNN, RNN, LSTM과 같은 신경망 종류도 배운다.
한 가지 내용을 집어서 살펴보자. 딥러닝에서는 그래디언트 소실 문제가 존재한다. 흔히 심층 신경망을 학습시키기 위해 사용되는 알고리즘에 역전파 알고리즘이 있는데, 이는 출력 손실에서 얻은 피드백 신호를 하위 층에 전파하는 알고리즘이다. 이 때 피드백 신호가 계속 깊은 층을 통과해 전파되면 신호가 아주 작아지거나 완전히 사라질 수 있다. 이렇게 신경망이 학습되지 않는 문제는 그래디언트 소실(vanishing gradient)문제라고 한다.
딥러닝에서 모든 것은 벡터라고 한다. 모두가 기하하적인 공간에 놓은 하나의 포인트인거이다. 이러한 다차원 벡터를 흔히 텐서라 불리며, 이러한 텐서의 공간에서 각 텐서를 연결해 연산을 수행하는 것이 텐서플로우(Tensorflow) 프레임워크의 핵심 구조이다. 한 마디로 마술 같다. 데이터가 가진 의미를 벡터와 기하학 공간으로 변환해 특정 공간에서 다른 공간으로 매핑하는 복잡한 기하하적 변환을 차근차근 학습한다. 원본 데이터에 있는 모든 형태의 관계를 찾기 위해 충분한 고차원 공간이 필요하게 되는 이유이다.
4장 머신 러닝의 기본 요소에서 과대적합(overfitting)과 과소적합(underfitting)에 대해 설명하고 있다. 머신 러닝에서는 항상 이러한 문제가 발생하게 되는데 상황에 따라 어떻게 해결해야 하는지 잘 설명해주고 있다. 과대적합을 막는 가장 단순한 방법으로는 모델의 학습 파라미터 수를 줄이는 것이다. 그 외에도 가중치 규제를 두어 네트워크의 손실 함수에 큰 가중치로 연관된 비용을 추가한다. 그 외에 훈련하는 동안 무작위로 층의 일부 출력 특성을 제외시키는 드롭아웃을 추가하는 방법이 있다. 이러한 방법 모두 그래프와 개념 그림, 코드와 함께 상세하지만 어렵지 않게 설명해주고 있다.
개인적으로 지금까지 읽어본 책 중에서 가장 '역주'가 많은 책이지 않나 싶다. 매 페이지마다 1개 이상의 역주가 있을 만큼 번역자의 꼼꼼함이 돋보이는 책이다. 보충 설명이 필요하거나 혼동될 수 있는 부분을 잘 정리해주고 있어 독자들이 읽기에 많은 도움이 된다.
부록에서는 예제를 실행하기 위해 구축해야할 설정 및 프로그램 설치등 환경 구성에 관한 부분을 친절히 설명해주고 있다. 끝으로 이 책은 쉽고 알차고, 예제까지 배울 수 있는 훌륭한 딥러닝 및 인공지능 기본서이다. 개념부터 실전 예제까지 꾸준히 공부하며 차근차근 완성해 나가보자!
'Book review' 카테고리의 다른 글
[서평]일의 정도(성공학, 리더십) (0) | 2018.12.02 |
---|---|
[서평]챌린지 컬처 (0) | 2018.11.27 |
[서평]한 권으로 먼저 보는 2019년 경제 전망 (0) | 2018.11.18 |
생활을 변화시키는 인공지능 (0) | 2018.11.15 |
처음 시작하는 개발자를 위한 첫 나의 안드로이드 (0) | 2018.11.13 |