티스토리 뷰

Hobby/Book

[Book] 핸즈온 비지도 학습

생각많은 소심남 2020. 8. 20. 20:41

(해당 포스트에서 소개하고 있는 "핸즈온 비지도 학습" 책은 한빛미디어로부터 제공받았음을 알려드립니다.)

 흔히 머신러닝의 학습 방법을 크게 3가지로 지도 학습(Supervised Learning), 비지도 학습(Unsupervised Learning), 강화 학습(Reinforcement Learning)으로 나눠서 설명한다. 나도 전문가는 아니지만 내가 이해한 대로 간단히 설명하면, 지도 학습은 말그대로 학습시키고자 하는 모델에게 데이터와 답을 같이 알려줌으로써 데이터와 답간의 상관관계를 학습시키고, 이를 기반으로 접하지 못한 데이터에 대한 예측이나 분류 작업을 할 수 있게끔 하는 학습 방법이고,  강화학습은 아무 것도 정의되어 있지 않은 모델을 알지 못하는 환경에서 자유롭게 탐험도 하면서, 내면적으로 그 환경에 포함되어 있는 다이나믹스를 이해하는 학습 방법으로 알고 있다. 그래서 강화학습을 통하면, 사용자가 만든 모델은 그 환경에서 가장 최적화된 정책을 학습할 수 있게 된다. 

 그러면 설명하지 않은 비지도 학습이 남게 되는데, 비지도 학습은 지도학습과는 다르게 주어진 데이터에 대한 답이 없다. 그래서 뭔가 예측하고, 분류를 하는게 목적이 아니라 데이터가 가진 특성을 이해하여 비슷한 데이터끼리 묶어준다던가, 혹은 일상적인 데이터 중에서 비정형적인 데이터(혹은 outlier)를 구분시켜주는데 많이 활용한다. 그래서 뭔가 모델에게 지도하는 형태가 아닌, 모델 스스로가 특징을 이해할 수 있게끔 도와주는 알고리즘들이 이 비지도학습에 속한다. 이번에 소개하는 책는 이 "비지도 학습"에 관한 다양한 알고리즘과 scikit-learn 및 여러 알고리즘에 포함된 비지도 학습 알고리즘의 사용법에 대한 설명을 담았다.

그림 1. 핸즈온 비지도 학습

 사실 시중에 나온 대부분의 머신러닝/딥러닝 관련 책들은 대부분 이 주제에 대해서 담고 있다. 대부분의 책들이 흔히 많이 알려진 데이터(MNIST나 CIFAR-10, Iris 등)을 가지고, 이를 비지도/지도 학습 등을 통해서 학습시키고, 이에 담긴 의미를 전달하면서 내용을 개진한다. 그런데 사실 이런 인공지능 공부를 해본 사람이나 안해본 사람이나 알다시피 인공지능 기술이 엄청나게 광범위하다는 것을 알고 있고, 얇은 책으로는 이런 내용을 전부 담을 수 없다는 것을 알고 있을 것이다. (그래서 보통은 논문으로 이해하고, github에 있는 코드로 직접 구현하는 공부 방식을 많이 추천하는 것 같다) 그래서 아무리 두꺼운 책이라도, 시중에 나와있는 책만 가지고는 지도학습 잠깐, 비지도학습 잠깐 깊이 있게 다룰 수 없다는게 개인적인 생각이다. 특히 비지도 학습 관련 책은 시중에 나온게 거의 없다... 개인적으로는 이런 생각이 많이 들어서 뭔가 하나의 학습에 특화된 책이 나오면 좋겠다 싶었는데, 이 책은 그런 입장에서는 비지도 학습을 활용할 수 있는 방법을 눈으로 볼 수 있는 입장에서는 마음에 들었다.

 좀더 자세하게 살펴보면, 이 책에서는 다음 주제에 대해서 다루고 있다.

  • Clustering과 이를 평가하기 위한 평가지표 사용법
  • Dimesionality Reduction 알고리즘
  • AutoEncoder의 종류들
  • Abnormality Detection
  • 비지도 학습을 통한 feature engineering
  • 지도 학습과 비지도 학습을 조합한 준지도 학습(Semi-supervised Learning)
  • GAN (Generative Adversarial Network)
  • RBM(Restricted Boltzmann Machine)과 DBN(Deep Belief Network)

 이 책에서 뽑을 수 있는 부분은 자세한 동작원리보다는 마치 비지도학습을 받는 모델처럼 사람도 예제 코드나 데이터셋을 살펴보면서 어떤 부분에서 활용하고, 응용할 수 있는지를 스스로 이해하는 것에 초점을 맞춘 것 같다. 그래서 책에 각 알고리즘의 동작 원리가 자세하게 설명되어 있다기 보다는 실행한 결과로부터 어떤 insight을 얻을 수 있는지 설명이 잘 되어 있고, 이에 따라 구현하는 부분이 순차적으로 이어져 있다. 그래서 각 장의 처음부터 따라가다 보면서 구현하다 보면 설명하고자 한 알고리즘에 대해 이해할 수 있어서 좋았던 것 같다.

 다만 아쉬운 점이라면, 원서가 나온 시점에서 tensorflow 1.x대로 구현되어 있어서 그런지 책의 내용은 tensorflow와 keras로 구현되어 있다는 부분이다. (물론 tensorflow 2.x에서 keras가 내장되어 쉽게 변환이 가능하다. 그리고 원저자 github에서도 tf 2.x로 변환한 jupyter notebook을 공유하고 있다.)

 아마 비지도 학습에 관심을 갖고, 현업에 적용해보고자 하는 사람이라면, 시중에 나와있는 여타 책보다도 이 책이 구미가 땡기지 않을까 싶다. 


책관련 참고 링크:

머신러닝
 
파이썬을 활용한 머신러닝 쿡북
크리스 알본 저/박해선 역
 
핸즈온 머신러닝
오렐리앙 제롱 저/박해선 역
 
핸즈온 비지도 학습
안쿠르 A. 파텔 저/강재원,권재철 공역
 
예스24 | 애드온2
댓글