728x90

안녕하십니까, 간토끼입니다.

 

오늘은 한빛미디어의 <나는 리뷰어다 2021>의 일환으로 받은 머신러닝 디자인 패턴에 대한 서평을 작성해보도록 하겠습니다.

 

디자인 패턴(Design Patterns)이란 무엇일까요?

컴퓨터 과학을 자주 접하시는 개발자 분들이라면 누구나 한번쯤 들어보셨을 키워드일텐데요.

바로 소프트웨어 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로,  과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적해 이름을 붙인 후 재이용하기 좋은 형태로 묶어서 정리한 것을 말합니다.

즉 특정한 상황에서 구조적인 문제를 해결하는 방식을 설명해주는데요.

그렇기에 이 책은 '머신러닝(Machine Learning)'이라는 영역의 특정한 상황에서 나타나는 여러 구조적인 문제를 해결할 수 있도록 가이드라인이 되어주는 책입니다.

간단하게 소개해보며 서평을 시작해보겠습니다.


Q. 이 책은 어떤 책인가요?

서론에서 밝힌 바와 같이 우리가 머신러닝을 적용하면서 맞닥뜨릴 수 있는 다양한 문제들을 해결할 수 있도록 디자인 패턴에 대해 다루는 책입니다.

머신러닝을 적용하다보면 분명 이론책에서 다루는 것처럼 깔끔하고 완만한 문제들만 접하지 않습니다.

책 속의 가공된 데이터가 아닌 현실의 거친 데이터는 경험이 없는 사람이라면 전처리부터 애를 먹을 수도 있고,

예제 데이터에선 모델링시 성능이 항상 높게 나왔는데, 이런 거친 데이터로는 잘 가공하지 않는다면 형편없는 결과가 나올 수도 있겠죠.

 

이러한 상황에서는 개념 수준에 그치는 원론적인 내용이 아닌, 실질적으로 문제를 해결할 수 있는 방법에 대해 알아야합니다.

예를 들어 딥러닝에 대해 막연히 알고 있던 독자가 실제 이미지 데이터를 이용해 개체를 분류하는 모델을 만들고자 할 때,

이미지 데이터를 어떻게 접근해야할지 막막해하고 있다면 다음 챕터가 도움이 되겠죠.

이미지 데이터 분석에 최적화된 CNN 아키텍처를 이용할 수 있도록, 이미지를 2차원 행렬로 접근할 수 있게 도와주고,

나아가 Max Pooling 등 효율적으로 구조화할 수 있도록 가이드라인을 제공하는 것처럼요!

물론 이 예시는 매우 노멀한 예시이므로, 다른 예시를 들어보죠.

 

만약 분류 문제에 접근할 때 특정 카테고리의 샘플 수가 매우 적어서 고민하고 있는 상황을 가정해보죠.

예를 들어 특정 병의 양성 환자와 음성 환자를 분류하는 모델을 만든다고 가정했을 때, 양성 환자의 비율이 음성 환자에 비해 극단적으로 적다면 어떻게 될까요?

막말로 모든 환자를 음성으로 분류해버린다고 하더라도 모델의 정확도는 높게 출력되는 역설적인 상황이 발생하겠죠.

이때 이 책에서 업샘플링에 대한 정보를 알게 된다면 적은 샘플의 개수를 인위적으로 만들어내어 클래스 불균형 문제를 해결할 수 있는 SMOTE 알고리즘을 위 문제에 적용할 수 있겠죠.

그렇게 한다면 훨씬 멋진 모델을 만들어낼 수 있을 것입니다!


Q. 그럼 누구에게 추천하는 책인가요?

위에서 소개한 것처럼 이 책은 머신러닝을 아예 모르는 분들에게 추천하는 책이 아닙니다.

바로 머신러닝을 직접 적용해보면서 여러 문제에 맞닥뜨릴 분들에게 추천하는 책이죠.

실제로 이 책의 저자는 독자가 머신러닝과 데이터 처리에 대한 사전 지식을 가졌다고 가정하고 있습니다.

그러므로 입문서에 나올 법한 개념들의 소개는 찾아볼 수 없죠.

 

특히 디자인 패턴을 다루고 있는 만큼, 머신러닝 엔지니어들에게 적합한 책입니다.

이 책은 순서대로 읽을 필요도 없고, 전반적으로 훑어보면서 도움이 필요한 특정 부분을 더 깊게 읽으며 필요한 부분을 발췌하고 실무에 적용하면 되는 책입니다.

 


Q. 이 책의 장점은 무엇인가요?

이 책의 장점은 불필요한 내용(입문서 등에서 찾아볼 수 있는 진부한 개념 설명)이 싹 빠지고, 오로지 필요한 내용만 찾아서 발췌할 수 있도록 정리된 카탈로그같은 책입니다.

이러한 책이 좋은 점은 불필요하게 다 읽을 필요가 없습니다.

본인이 필요한 부분만 찾아서 적용하면 되기 때문이죠.

 

그리고 제가 접하지 못한 다양한 상황에서의 해결책도 많이 수록되어있다는 것도 장점 중 하나인데요.

예를 들어 '유용한 과대적합'이라는 챕터가 굉장히 인상적이었습니다.

통상적으로 데이터 과학에서 과대적합은 '유용한' 이란 키워드와 매치가 되지 않는데요.

왜냐하면 과대적합을 하게 되면 Training Set에 최적화돼있기 때문에, Test DataSet에서 좋은 성능을 낼 수 없기 때문입니다. 즉 머신러닝 모델의 목표는 새롭고 보이지 않는 데이터에 대해 일반화할 수 있는 예측을 수행하는 것이기 때문이죠.

 

그러나 기후 과학, 계산 생물학, 계산 금융 등 물리적 또는 동적 시스템을 시뮬레이션하는 상황에서는 모든 관측치에 유한한 가능성이 있다고 가정할 수 있으므로 머신러닝ㄹ 시스템을 위해 전체 입력 공간으로 구성된 학습 데이터셋을 만들 수 있다고 합니다.

즉 이런 상황에서는 가능한 모든 입력이 테이블로 작성되었기 때문에 샘플 데이터가 샘플이 아닌 모집단이 됩니다.

그러므로 모집단을 분석하는 것이기 때문에 과대 적합이 유용한 상황이 되는 거죠!

 

그래서 이 '가능한 모든 입력'을 테이블로 만드는 과정을 소개하기 위해 '몬테카를로 방법(Monte-Carlo Method)'를 제안하는 등 새로운 접근 방식들을 찾아볼 수 있습니다.

흥미롭지 않나요?

 

 

정리하자면 이 책은 머신러닝을 다루면서 맞닥뜨릴 상황을 해결할 수 있도록 가이드라인을 제안하는 카탈로그같은 소중한 책입니다.

특히 저자의 풍부한 실무 경험이 이 책의 구성을 다채롭게 만들었다는 점이 매력적일 수 있겠습니다.

 

감사합니다.

잘 읽으셨다면 게시글 하단에 ♡(좋아요) 눌러주시면 감사하겠습니다 :)

(구독이면 더욱 좋고, 광고도 한번씩 눌러주시면 더더욱 좋습니다 ^_^)

 

 

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

 

 


- 간토끼(DataLabbit)

- University of Seoul

- Economics & Data Science

 

728x90

+ Recent posts