티스토리 뷰

(해당 포스트에서 소개하고 있는 "파이썬으로 완성하는 비지도 학습 알고리즘" 책은 BJ퍼블릭으로부터 제공받았음을 알려드립니다.)

 

파이썬으로 완성하는 비지도 학습 알고리즘

파이썬으로 완성하는 비지도 학습 알고리즘 부제 비감독 모형과 텐서플로 2를 이용한 전처리 기법의 머신러닝 구현 저자 송동근 출간/배본가능일 2021년 12월 31일 정가 34,000원 페이지 560쪽 판형

bjpublic.tistory.com

얼마전에 학생들 멘토링을 해주다가 나온 아이디어가 영화에 나온 음악을 분위기별로 clustering해서 추천시스템에 활용할 수 있을까 하는 생각이 나오길래, 도움을 준 적이 있다. 그냥 딱 생각했을때 흔히 잘 아는 Thomas Newman이나 Hans Zimmer 같은 감독은 딱 들으면 이 감독 음악이다 라는 것이 느껴지지만, 이게 정확히 데이터로 나오지는 않기 때문에 해당 감독의 음악과 여러 영화음악을 섞어서 비슷한 음원끼리 clustering을 해주고, 이 기반으로 가장 유사한 음원의 영화를 추천해주면 어떨까 했었던 것이다. 물론 음악마다 정확한 레이블이 지어져 있지는 않았지만, Spotify API를 사용하면 해당 음원의 템포나 악기 사용 비율 등의 정보는 얻어올 수 있기 때문에 해당 데이터를 기반으로 clustering을 수행하면 되지 않을까 싶어서 가이드를 해줬는데, 그래도 학생들이 나름 멋진 아이디어를 구현해서 프로젝트로 제출했었다.

아는 사람들은 알겠지만 비지도 학습은 지도 학습처럼 정답이 주어진 상황이 아닌, 정답이 주어지지 않은 상황에서 어떠 패턴이나 경향성, 의미를 도출하고자 하는 것이기 때문에 조금 어려운 영역이긴 하다. 지도학습은 적어도 모델한테 암기라도 시킬 수 있겠지만, 비지도 학습은 그런게 어렵기 때문이다. 사람도 정답이 주어지지 않은 상태에서 직관만 가지고 의미를 도출하지만, 이에 기반하는 근거는 그 사람의 경험이기 때문에 이를 모방한 모델을 만드는게 쉽지 않다. 이런 학습은 그래서 보통 이상치 탐지나, 군집화, 차원 축소등에 많이 활용되는 듯 하다.

이번 포스트에서 소개할 책도 이 비지도 학습을 중점적으로 살펴본 책이다. 사실 이전에 소개한 책 중에 "핸즈온 비지도학습"(한빛미디어)가 있었는데, 해당 책이 비지도학습의 다양한 예제들을 직접 코딩해보면서 살펴보는 책이라면, 이 책은 비지도 학습에서 다뤄지는 여러 지표들과 그 이론적인 배경이 조금 더 가미되서 설명된 책이다. 생각보다 코드와 그 결과에 대한 설명이 상세하게 되어 있는 편이라 분량이 제법 많다.(547p) 특히 군집화(clustering)에 대한 내용은 책의 약 1/3을 차지할 만큼 자세하게 되어있다. 앞에서 소개한 프로젝트 이야기를 다시 하자면, 빠르게 결과를 확인하기 위해서 가장 간단한 K-means clustering에 elbow method를 사용해서 적절한 k값을 찾고, 유사도 측정을 하는 방법으로 euclidean distance를 사용했었는데, 사실 원체 내가 알고 있는 배경지식이 적어서 그랬었다. 뭔가 조언을 하는 입장에서 다양한 이론 설명이 덧붙여졌으면 좋았으련만 하는 아쉬움이 있었는데, 이 책에 조금 그런 아쉬움을 채워줄 수 있는 내용들이 들어 있었다. 그리고 책의 의도 중의 하나가 "최대한 해석이 용이한 코드를 사용했다"는 점인데, 생각보다 데이터를 정제하는 부분과 알고리즘을 구현하는 코드에 대한 설명이 잘 되어 있어 현업에서 데이터를 다룰때 비슷한 기법을 적용하기 좋겠다는 생각이 들었다.

다만, 책을 읽으면서도 아쉬움이 드는 부분도 일부 있었다. 앞에서 언급한 것처럼 군집화에 대한 내용이 책의 1/3만큼을 차지할만큼 내용이 자세히 들어있긴 하지만, 상대적으로 다른 비지도학습 주제 (차원 축소나 물론 지금은 잘 활용되는 주제는 아니지만 RBM 같은 것)의 비중이 낮아서, 해당 내용을 찾는 독자한테는 기대에 못 미칠 수 있다. 또한 출판사에서 제공하는 코드가 그냥 압축파일로 묶여있어서, 관리가 되지 않는 부분도 조금 그랬다. 분명 내용이 궁금한 사람은 구현 코드도 보면서 책 구매를 고려할텐데...

사실 비지도 학습 관련 책들이 많이 나와있지 않아, 뭘보면 조금 도움을 받을 수 있을까 고민하던 사람한테는 이 책은 어쩌면 가뭄의 단비와도 같은 책이다. 저자의 경험을 바탕으로 내용 전개와 코드 설명이 되어 있기 때문에 아마 기본적인 이론을 알고 접근하는 사람한테는 책을 보면서 "저자가 이런 부분을 고민하면서 작성했구나"라는 것을 느낄 수 있고, 어떻게 보면 이 책의 장점이라고 본다. 나 또한 그냥 온라인 강의만으로 수박 겉핥기 식으로 비지도 학습을 공부한 입장이라 책에서 저자가 설명한 내용이 이해하는데 도움이 되었다. 그런 입장에 있던 사람들이 이 책을 읽었을때 도움을 받았으면 하는 생각이 든다.


참고로 비지도학습 관련해서 관심있는 사람은 Berkeley에서 Pieter Abbeel 이 강의한 Deep Unsupervised Learning 강의도 들어보면 좋을듯하다.

 

CS294-158-SP20 Deep Unsupervised Learning Spring 2020

About: This course will cover two areas of deep learning in which labeled data is not required: Deep Generative Models and Self-supervised Learning. Recent advances in generative models have made it possible to realistically model high-dimensional raw data

sites.google.com

 

댓글