본문 바로가기
:: Notes/Books

[Book] 케라스 창시자에게 배우는 딥러닝

by 메모밍 2019. 7. 11.

 기존에 텐서플로우를 이용하여 몇가지 문제를 딥 러닝으로 풀어본 바 있으나, 최근 여러 컨퍼런스에서 케라스를 이용하여 진행한 결과물을 보니 굳이 모든 문제에 텐서플로우를 적용하려 고집할 필요가 없다는 것을 느꼈다. 오히려 문제를 해결하는데 있어 기술적인 접근성을 낮추어 더 빠르게 결과를 만들어 낼 수 있는 하나의 훌륭한 수단이 될 것으로 생각하고 호시탐탐 케라스를 공부해 볼 기회를 노리던 중 본 책을 접했다.

 

들어가며, 이 책은 딥 러닝을 처음부터 배우거나 이해의 폭을 넓히 고자 하는 모든 사람을 위해 썼습니다. 머신 러닝 기술자나 소프트웨어 엔지니어, 대학생에 상관없이 이 책에서 배울 점이 있을 것입니다.

 책 첫 머리 부터 마음에 들었다. 누구나 상관없이 이 책에서 배울 점이 있을꺼라잖나. 서적이 넘처나는 세상인 요즘 내가 원하는 주제에 대해 배울 수 있는 한 권을 고르는 일은 정말 쉽지않다. 만약 이 글을 보고 있는 당신이 케라스를 접할 요량이라면 이 책은 자신 있게 추천 할 만한 책이다. 역자가 추천하는 대상 독자는 아래와 같다.

 

머신 러닝과 딥 러닝을 시작하려는 파이썬 프로그래밍 경험자를 위한 책 입니다.

  • 케라스 프레임 워크를 배우기 시작하는 딥 러닝 전문가라면 가장 좋은 케라스 단기 특강이 될 것입니다.
  • 이론적 배경을 가지고 딥 러닝을 공부하는 대학원생 이라면 실용적인 측면을 배우고, 심층 신경망에 대한 직관을 키우고, 핵심 모범 사례와 친숙해 질 것 입니다.

 기본적으로 파이썬 문법에 대한 설명은 배제 되어 있으므로 파이썬을 알고 있다는 가정 하에 책을 진행한다. 파이썬에 대한 기본 문법한 알고 있다면 본 책에 나오는 과정들을 진행하는데 아무런 문제가 없을 것이다.

책은 총 2부로 구성되어 있으며, 1부는 딥러닝에 대한 개념과 소개를, 2부는 실용적인 딥러닝 어플리케이션이 예제와 함께 다루어져있다.

 

1부 ::

  • 1장 - AI, 머신러닝, 딥러닝에 관한 핵심 사항과 배경 지식을 소개합니다.
  • 2장 - 딥러닝을 배우기 위해 필요한 기초 개념을 소개 합니다. 텐서, 텐서 연산, 경사 하강법, 역전파 등입니다. 이 장에서 첫 번째 신경망 예제가 시작됩니다.
  • 3장 - 신경망을 시작하기 위해 필요한 모든 것을 설명합니다. 이 책에서 사용할 딥 러닝 프레임 워크인 케라스 소개, 딥 러닝 컴퓨터 설정 가이드, 자세한 설명을 담은 기초적인 3개의 딥 러닝 예제가 있습니다. 이 장을 마치면 분류와 회귀 작업을 위한 간단한 신경망을 훈련 시킬 수 있고, 훈련 과정의 이면에서 어떤 일이 일어나는지 확실히 이해할 수 있습니다.
  • 4장 - 대표적인 머신 러닝 작업 흐름을 배웁니다. 또 흔히 나타나는 문제와 해결 책을 소개 합니다.

2부 ::

  • 5장 - 이미지 분류에 초점을 맞추어 실용적인 컴퓨터 비전 예제를 다양하게 둘러봅니다.
  • 6장 - 텍스트와 시계열 같은 시퀀스 데이터를 처리 하기 위한 기술을 연습합니다.
  • 7장 - 최고 수준의 딥 러닝 모델을 구축하기 위한 고급 기술을 소개합니다.
  • 8장 - 이미지와 텍스트를 생성 할 수 있는 딥 러닝 모델인 생성 모델을 소개합니다. 이따금 놀랄 만한 예술적인 결과가 만들어 집니다.
  • 9장 - 이 책을 통해 배운 것을 다시 리뷰 합니다. 또 딥 러닝의 한계를 이해하고 미래 가능성을 탐색합니다.

 책을 고를 때 목차를 보면 그 책에 대한 다양한 정보를 빠르게 알 수 있는데, 각 장에 대한 설명만 봐도 실한 내용으로 꽉꽉 차 있다는 느낌을 받을 수 있다. 더 나아가 빨리 읽어서 이 안에 들어있는 지식들을 내 것으로 만들고 싶다는 생각까지 들게 하는 목차 구성이라고 생각한다.

1부를 찬찬히 읽다 보면 역자가 재미있는 이야기를 해주는 듯한 느낌을 받을 수 있다. 어려울 수 있는 전문 용어 대신 천천히 풀어쓰는 방식으로 설명하고 있으며, 만약 짚고 넘어가야 하는 용어가 나온다면 기본부터 상세하게 설명하는 방식을 채택했기 때문일 것이다.

 

 "프로그래머가 직접 만든 데이터 처리 규칙 대신 컴퓨터가 보고 자동으로 이런 규칙을 학습 할 수 있을까?"

어쩌면 이 간단한 질문에서 지금의 머신러닝, 딥러닝이 출발한게 아닐까 하는 생각을 하며 읽었던 1부는 우리가 머신러닝, 딥러닝을 구현 하고자 할 때 알아 두어야 할 것들을 담백하게 담아 냈다는 느낌이 든다.

 

 요즘 화두가 되고 있는 머신러닝이나 딥러닝이 마치 모든 문제를 풀 수 있는 마스터 키인 것 처럼 소개 되는 경우가 종종 있는데 역자는 이러한 부분들을 세세한 근거를 들어가며 각각을 재 정의해 줌으로써 읽는 이로 하여금 스스로 생각해 볼 수 있는 여지를 준다.

그렇게 정신없이 1부를 읽다 보면 어느새 케라스 예제 코드를 만난다. 물론 역자는 1부 에서는 케라스를 본격적으로 학습하는 단계가 아니니 간단히 눈으로만 보고 지나가고 뒷 쪽 단계에서 설치부터 자세하게 설명 해놓은 부분이 있으니 그때 따라 하는 걸 추천한다고 하지만 그럴 수 있나 ! 바로 서버에 Keras를 설치해서 예제를 진행 해보았다.

 

 내가 사용하는 랩탑은 Macbook Pro로 케라스를 돌릴 수 있는 GPU가 없다. 앞부분의 간단한 예제는 CPU 만 가지고도 돌릴 만 한 예제이나 뒷부분 부터는 GPU가 있어야지만 상식적인 시간내에 돌려볼 수 있는 예제가 많았기에 GPU가 달려있는 서버에 Jupyter Notebook을 설치하여 Remote Build를 하는 환경을 구축한 후 진행 했다.

 

 맨 처음 접해 보는 예제는 MNIST Dataset 중 가장 유명한 손글씨 분류하기 예제로, 케라스를 처음 접하는 유저들에게 '이러한 방식으로 사용 됩니다' 정도의 경험을 주기 위한 차례이다. 상세한 설명과 함께 구성 되어 있는 챕터는 뒷쪽으로 넘어가면 볼 수 있다.

 

 

여기서 사용된 손실 함수(loss function)과 옵티마이저 등은 뒷쪽에서 보다 상세한 설명이 이어진다. 지금은 케라스 맛보기 정도로 이해하자.

 

 

 정확도 95%를 갖는 이미지 분류 모델을 몇 줄 만에 완성했다. 같은 작업을 Tensorflow로 한다면 조금 더 긴 작업의 코드가 필요할 것이다. 케라스의 강점은 직관력과 심플함에 있는게 아닐까.

 

 실제로 데이터 셋을 출력 해보면 위와 같은 이미지로 구성 되어 있음을 볼 수 있다. 위의 이미지는 train dataset에 있는 숫자 5를 손글씨로 쓴 이미지로 우리의 모델은 약 95%의 정확도로 이러한 이미지들을 실제 숫자와 매핑 시킬 수 있는 모델로 훈련이 된 것이다.

 

 이 다음 이어지는 차례는 앞에서 잠깐 접했던 예제에 대한 설명을 하기 위해 필요시 되는 개념들을 소개로 이어진다. 각각의 요소들의 이름과 개념을 상세히 소개 하고 헷갈릴 수 있는 개념들은 한번 더 설명하고 있다. 또한 실제 다른 데이터가 들어왔을 때 해당 데이터를 다루는 방법들을 예제와 함께 보여주고 있어 기존에 접했던 MNIST Data 외에도 유연하게 대처 할 수 있도록 하는 방안을 제시해준다.

 

 그렇게 계속해서 케라스의 기본적인 개념과 딥 러닝의 구성 요소들에 대해 듣다가 보면 앞서서 코딩 했던 약 스무줄 남짓한 코드들이 어떤 식으로 연결되어 있는지가 머리 속에 그려지게 된다. 실제로 앞의 코드를 하나하나 뜯어 보면서 해당 라인에 어떤 원리가 들어있는지 말해주고 있어 전체적인 그림을 그리는데 큰 도움을 준다.

 

 뒤부터는 본격적으로 여러 예제 들을 통한 딥러닝 과정을 케라스로 구현하게 되는데, 자세한 다른 예제 소스 코드는 적지 않을 것이다. 영화 리뷰 분류하기, 뉴스 기사 분류하기, 주택 가격 예측하기 등등이 수록 되어있다. 이러한 예제를 접한 후 보다 나은 신경망을 구축하기 위한 여러 방법들을 추가적으로 알아보는 챕터로 이어져 만들어놓은 내 모델을 보다 성능이 좋은 모델로 구현하고 싶은 마음이 저절로 든다.

 

 그 후에는 실전 딥 러닝 예제 파트로 넘어가 예제로 주어지는 이쁜(?) 데이터 셋이 아닌 보다 현실적인 데이터를 가지고 딥 러닝을 구현하는 부분이 나오는데 책에 나와있는 코드를 활용하여 실제 나만의 프로젝트를 진행할 수 있을 정도로 다양한 데이터를 함께 다루고 있다.

 

 뒷부분을 볼 수록 앞서 소개한 내용들은 이 책에 담겨있는 내용의 일부분에 불과하다는 생각이 든다. 파이썬 기본적인 문법을 알고 있는 상태에서 케라스를 접해 보고자 한다면, 딥 러닝에 대해 아무것도 모르는 상태에서 책을 한권 추천 받고 싶다면 이 책은 상당히 추천 할만 한 서적이다. 또한 딥 러닝에 대한 기본 개념만 아는 상태에서 조금더 다양한 예제를 접하고 싶거나, 텐서 플로우 등의 다른 툴을 사용하다 케라스를 접해 보고자 할 때에도 훌륭히 참고 할 수 있을 것이다. 자세한 설명과 다양한 예제를 가진 케라스 서적을 찾고 있다면 '케라스 창시자에게 배우는 딥러닝'은 좋은 선택이 될 것이다.

댓글0