본문 바로가기

book

핸즈온 머신러닝

모든 분야에서 Bible처럼 불리우는 책이 있습니다.머신러닝, 딥러닝에 관심이 있거나 업무에 활용하시는 분들은 이책을 들어보셨고 대부분 이책을 통해서 학습을 하시지 않았을까 생각합니다.이번에 같은 이름으로 [3판]이 나왔습니다. 기존 2판과 어떤점이 다른지는 뒤에서 설명드리겠습니다.책의 부제에서도 나와있는것 처럼 사이킷런, 케라스, 텐서플로2을 기술요소를 주로 사용하고 있고, google vertex등을 이용하는 부분도 뒤에 언급드리겠습니다.

책의 두께가 있다보니, 분철을 별도로 하지 않아도 기본적으로 책의 구성이 아래와 같이 되어 있습니다.

 

2판을 가지고 계신 독자분이 있으시면, 3판에서는 어떤 부분이 달라졌는지 가장 궁금하지 않으실까 합니다.

상세 변경 사항 : https://github.com/ageron/handson-ml3/blob/main/CHANGES.md 

아래 글에서도 있듯이, 최근에 별도의 책의 주제로도 출간되는, 그레이디언트 부스팅, 트랜스포머스 등 새로운 기술이 언급되는 부분은

이 책을 통해서, 최신의 기술을 사용하고 학습 할수 있습니다.

 

 

■ 대상독자 / 소개

·  이 책은 머신러닝에 관해 아는것이 거의 없다고 가정하고 내용이 구성됩니다. 그래서 독자 대상은 모든분들이 되실거 같습니다.

·  박해선님의 번역관련 책은 대부분 해당 git에서 쉽게 jupyter 노트북 형태로 제공되어서, 쉽게 동작을 살펴볼수 있습니다.

    https://github.com/rickiepark/handson-ml3

·  1부에서는 <머신러닝>에 대해서 설명하고 주로 사이킷런을 이용합니다.

·  2부에서는 <신경망과 딥러닝>에 대해서 설명하고 주로 텐서플로와 케라스을 이용합니다.

 

 

■ 1부 : 머신러닝에서 다루는 주제

·  기본적인 머신러닝의 개념

·  분류 / 모델훈련 / 서포트 벡터 머신 / 결정 트리 / 앙상블학습과 랜덤 포레스트 / 차원 축소 / 비지도 학습에 대해서 다룹니다.

·  보통 머신러닝의 다양한 기법을 학습하였지만, 실제 업무에서 어떻게 활용할지 모를때 좋은 사례가 제시됩니다.

이것을 기반으로 사용기법의 흐름을 잡고, 적용할 수 있는 기준선이 될것 같습니다. 

 

·  머신러닝의 종류에 대해서 

    - 훈련 지도 학습(지도, 비지도, 준지도, 자기지도, 강화학습)

    - 실시간으로 점진적인 학습을 하는지 아닌지 (온라인 학습과 배치 학습)

    - 사례기반 학습과 모델 기반 학습

에 대해서 항목별로 설명을 합니다. 예전에는 보통 개인적으로 지도, 비지도, 강화학습 보통 3가지 카테고리로 구성해서 설명하였는데 이 책에서는 좀 더 다양한 종류로 분리해서 범주를 소개합니다.

머신러닝의 첫 개념은 데이터를 어떻게 바라보는 관점이 매우 중요한데, 좋은 구성 같습니다.

 

준지도 학습 설명 그림

·  머신러닝 수행시, 보통 고민하게 되는 나쁜 데이터 사례에 대해서 정의합니다.

아래의 항목은 머신러닝을 잘 수행했지만, 실제 active의 결과값이 예측치와 다른 경우 주로 고민하게 되는 부분입니다. 아래 사항을 알고 있다면, 시행착오를 줄일수 있다고 생각합니다.

 - 충분하지 않은 양의 훈련 데이터

 - 대표성 없는 훈련 데이터

 - 낮층 품질의 데이터

 - 관련없는 특성

 - 훈련 데이터 과대 적합

 - 훈련 데이터 과소 적합

 

 

# 2장에서는 "머신리닝 프로젝트 처음부터 끝까지" 라는 내용으로 보통 머신러닝의 회귀, 포레스트 특정 기법하는 관점보다는 전체적으로 처음 머신러닝을 업무에 적용해보고 싶을때의 막막함을 해소하고, 서비스에 적용하려고 할때 전체적인 process와 흐름 및 데이터를 수집하고, 가공하고 학습 이후에 무엇을 해야 할지 순차적으로 설명되어 지는 과정으로 되어 있어서 프로젝트를 하시는 경우 따라해야 할 기준선을 제공합니다. 뒤로 갈수록 검증검증, 튜닝, 테스트, 런칭, 모니터링, 유지보수에 대한 항목으로 구성되어 있어서 크게 흐름을 파악하기 좋은 부분입니다. 이론적인 것 뿐만이 아니라, 코드를 통해서 검증하는 예시도 포함되어 있습니다.

 

 

# 3장 "분류" 에서는 가장 보편적으로 사용하는 MNIST (70,000개의 작은 숫자 이미지) 데이터 셋을 통해서 학습합니다.

사이킷런을 통해서 이미지 분류를 진행합니다. 사이킷런의 SGDClassifier클래스를 이용해서 확률적 경사 하강법(SGD) 분류기로 시작해봅니다. 이 분류기는 매우 큰 데이터셋을 분류하는데 효율적으로 처리합니다. cross_val_score()함수를 통해서 모델을 평가합니다.

 

·  모델에 대해서 선형회귀 부터 진행합니다. 모델에 대해서 훈련시키는 방법중에 1) 닫힌상태 방정식 2) 경사 하강법의 경우가 있습니다.

선형회귀을 통하여 정규방식식을 통한 해석적인 방법, 계산복잡도, 경사하강법(GD)를 통해서 최적의 해법을 찾을수 있는 최적화 알고리즘을 이용합니다. 경사하강법은 매우 중요하기 때문에, 이 책에서도 다양하게 설명하고 있습니다. 배치경사 하강법, 확률적 경사 하강법, 미니배치 경사 하강법에 대해서 추가적으로 구성되어 있습니다.

 

·  SVM이라고 불리우는 서포트벡터 머신의 내용은 5장에 설명되어집니다. 선형, 비선형분류, 회귀, 특이치 탐지에서도 사용 할 수 있는 다목적 머신러닝 모델입니다. SVM은 중소규모의 비선형 데이터셋(수백에서, 수천개의 샘플), 특히 분류작업에서 장점을 가집니다.

다양한 분류를 그림을 잘 구성되어 있습니다. SVM을 분류가 아닌 회귀에 적요하는 내용도 설명되어 집니다.

 

·  머선러닝중에 트리는 이해관계자에게 가시적으로 설명이 쉬운 알고리즘은 결정트리가 있다. 분류와 회귀 작업 그리고 다중 출력작업까지가능한 머신러닝 알고리즘 입니다. 또한 매우 복잡한 데이터셋도 학습할수 있는 강력한 알고리즘입니다.

최근에는 자주 사용하는 랜덤 포레스트(7장) 의 기본 구성요소이기도 합니다. 결정트리을 DecisionTreeClassifier를 통해서 훈련합니다.

 

회귀에 대한 문제는 DecisionTreeRegressor를 통해서 실습합니다. 우리가 일반적으로 알고 있는 tree의 의사결정은 아래 그림처럼 결정됩니다.

 

·  차원축소를 통한, 수백만 샘플중에 다양한 특성으로 인한 훈련이 느려지는 현상을 대처하기 위한 방법등이 소개됩니다. 매드폴드 학습,  주성분 분석등이 8장에 구성되어 있고, 9장에서는 비지도 학습 중 군집, k-평균 알고리즘, DBSCAN등의 내용으로 구성되어 있습니다. 

 

 

■ 2부에서는 신경망과 딥러닝에 대한 내용으로 구성되어 있습니다.

· 신경망은 딥러닝의 핵심입니다. 인공지능의 시작인 퍼셉트론에 대한 이론적인 부분, tanh, ReLu함수 둥이 소개됩니다. 

인공 신경망을 만들고, 훈련하고 조금더 복잡한 심층 신경망을 훈련해봅니다. 심층 신경망의 출력층이 멀어질수록 그레이디언트가 점점 작아지거나 커지는 현상에 대해서 해결방법을 알아봅니다. 

·  12장에서 텐서플로의 구조 및 사용법, 타입변환/변수/다른 데이터구조, 사용자 정의, 주로 사용하는 함수에 대해서 설명되어 있습니다.

·  13장에서 대용량 데이터셋을 이용하기 위해서는 텐서플로 자체의 데이터 로드 및 전처리 API인 tf.data를 사용합니다. 멀티스레드와 큐를 사용하여, 여러 파일에서 동시에 읽고, 샘플을 셔플링하거나 배치로 만드는 등의 작업을 수행할수 있습니다. 

프로토콜 버퍼를 이용해서 텐서플로에서 사용하는 다양한 내용이 있습니다.

·  합성곱 신경망은 14장에 소개 됩니다. CNN약어로 사용되는데, 시각분야에 국한되지 않고, 음석인식, 자연어처리 (NLP)와 같은 다른 작업에서도 많이 사용됩니다. 해당 부분은 케라스를 통해서 실습을 진행합니다. 

CNN에 가장 중요한 구성요소인 합성곱 층에 대해서 자세히 설명합니다.

합성층 이후에, 풀링 층에 대해서 설명하고, 케라스로 구현을 합니다. Lenet-5, alexNet, GoogLeNet, VGGNet, ResNet, Xception, SENet 등에 대해서 다양한 합성곱층을 알수 있습니다. 

·  RNN(네트워크 순환 신경망)에 대해서 살펴보고 역전파하여 네트워크를 훈련하는 내용으 15장에 설명되어집니다.

RNN훈련하고, 시계열 예측을 진행합니다.

 

·  대규모 텐서플로우 모델 훈련과 배포를 위해서, 다양한 예시가 제공됩니다.

Docker컨터네너에서 TF서빙 실행하기, REST-API를 이용하는 방법, gRPC API로 TF 서빙에 쿼리하기, 구글클라우드에 버텍스AI를 활용해서 배포하는 실습하는 내용도 있어서, 새로운 내용이 포함되어서 관련 내용이 궁금하셨으면 도움이 많이 됩니다.

매장의 마지막에 연습문제가 제공 되고 있어서, 개념을 다시 잡을수 있고, 3부 부록에서 연습문제 정답도 있지만 부록 B,C,D,E에 있는 내용은 하나의 별도 책으로 낼 정도로 일반 책에서 다루지 않는 내용이 포함되어 있습니다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."