티스토리 뷰
요약문
한빛미디어의 혼공학습단 활동으로 박해선님의 ‘혼자 공부하는 머신러닝+딥러닝’을 공부했습니다. 수학 베이스는 어느 정도 있지만 머신러닝을 잘 몰라서 입문하고 싶은 분들에게 강력히 추천하는 책입니다. 책의 목적은 머신러닝 입문자에게 머신러닝의 감각을 훈련시키는 것입니다. 매 주제마다 흥미로운 실전 예시로 호기심을 유발하고, 간단한 코드를 통해 1차적인 결과물을 도출합니다. 그리고 발생할 수 있는 여러 문제들을 소개하고 해결책을 제시합니다. 용어 설명도 소홀히 하지 않고 지면을 적절히 사용했습니다. 책의 난이도는 고등학교 수학과 약간의 선형대수를 필요로 하는 정도입니다. 주제마다 기본 해결책을 설명하고 문제점 및 추가 해결책을 순서대로 제시하는 방식으로 되어 있어 강의 교재로도 훌륭하다고 생각합니다.
들어가며
본 글은 한빛미디어에서 진행한 혼공학습단 8기 활동 후기입니다. 박해선님의 ‘혼자 공부하는 머신러닝+딥러닝’을 공부하고 정리하여 블로그에 올리는 활동이었습니다. 2022년 7월 4일부터 7주간 진행됐으며, 8월 첫째주는 여름 휴가로 실제로는 6주간만 진행되었습니다. 책은 총 9장까지 있으나 활동은 7장까지만 진행됐습니다. 1주차는 1-2장을 공부했고 그 이후로는 한 주에 한 장씩 공부했습니다. 책은 제 돈으로 샀습니다. 본 후기를 통해 왜 지원했는지, 어떤 책이었는지, 어떤 점이 아쉬웠는지 등을 적어보고자 합니다.
저를 소개하자면
저는 수도권 소재 원격대학의 기계제어공학과에 교수로 재직 중입니다. 기계공학, 좀 더 세분화하면 메카트로닉스 분야를 전공했습니다. 가방끈이 길어질수록 공부/연구 분야는 좁고 깊어집니다. 메카트로닉스도 굉장히 넓은 분야이고 세부 분야마다 특징이 다르고 트렌드가 다릅니다. 저의 연구 주제는 하드웨어가 메인인지라 알고리즘이나 머신러닝/딥러닝보다는 장치를 어떻게 하면 잘 만들까에 초점이 맞춰집니다. 물론 최근에는 분야를 막론하고 머신러닝/딥러닝을 주제로 한 연구가 많아진 것은 사실입니다.
나에게 머신러닝이란
머신러닝을 처음 접한 것은 대학원 때 수강한 신경 회로망 수업이었습니다. 고백하자면 그때는 머신러닝이 뭔지도 몰랐습니다. 신경망과 머신러닝을 동의어라고 생각할 정도였으니까요. 그 뒤로도 한동안은 머신러닝에 관심을 두지 않았고, 관심을 두지 않아도 딱히 상관없는 직장 생활을 해왔습니다.
그리고 2016년에 알파고가 나왔습니다. 알파고의 원리 설명을 들어보니 대학원 때 배웠던 그 신경망이더군요. 갑자기 사회 전반에 걸쳐 머신러닝/딥러닝에 대한 관심이 폭발했습니다…만, 저는 거품이라 여겼습니다. 10년 전에, 그것도 대학원 강의로 들었던 내용이 갑자기 뜬다는 것 자체가 의아했거든요. 그런데 금방 꺼질 줄 알았던 거품이 생각보다 오래 가더군요. 이렇게 오래 가면 거품이 아닐지도 모른다는 생각이 들었습니다. 꺼지지도 터지지도 않는 거품의 단단한 표면은 무엇으로 만들어져 있을까? 호기심 많은 저도 궁금해졌습니다. 젊은 연구자들은 트렌드에 민감할 수밖에 없거든요. 사실 지금도 거품이 남아있다고 생각합니다. 그 거품엔 아마 이렇게 써있을 겁니다. ‘모든 문제를 해결할 수 있음’, ‘데이터만 주면 알아서 다 해줌’, ‘수학 몰라도 됨’
왜 지원했는가
유행과 함께 머신러닝/딥러닝 컨텐츠가 그야말로 홍수처럼 쏟아져 나왔습니다. 책, 유튜브, 웹페이지, 온/오프라인 강좌 등 나올 수 있는 모든 형태로 나왔습니다. 그리고 이것은 축복이자 재앙이었습니다. 도대체 뭐부터 봐야 할지 종잡을 수 없었습니다. 왜냐하면 사람마다 추천하는 게 달랐거든요. 이론가는 수학부터 봐야 한다고 말합니다. 실무자는 일단 서비스를 만들어야 한다고 말합니다. 전문가는 유튜브나 웹에 자료가 많으니 굳이 책이 필요하지 않다고 말합니다. 교육자는 기초부터 차근차근 다져야 하니 책을 사라고 말합니다. 정말 의견이 달라도 너무 달랐습니다.
그렇게 읽을 거리, 볼 거리와 사고 싶은 책만 잔뜩 쌓아두고 시작도 못하고 있던 차에 한빛미디어에서 메일이 왔습니다. 의자박약러 대환영이라니? 이런 이벤트는 일단 눌러봐야 합니다.
혼자 공부하는 머신러닝+딥러닝…? 제목이 익숙하다 싶었습니다. 메모하는 습관이 이럴 때 도움이 되더군요. Pega Devlog의 이제현 박사님께서 추천하신 책이었습니다. 책소개의 첫 문장을 읽으니 저에게 딱이다 싶었습니다.
이 책은 수식과 이론으로 중무장한 머신러닝, 딥러닝 책에 지친 ‘독학하는 입문자’가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. (yes24 책 소개 중)
역시 최재천 박사님 말처럼 첫 문장부터 때려야죠. 고민없이 일단 책부터 샀습니다.
모두에게 딱 맞는 책은 없을 겁니다. 배경지식의 수준에 따라, 사회적 역할에 따라, 공부의 목적에 따라, 공부 스타일에 따라, 심지어 완주에 필요한 끈기의 크기에 따라서도 사람마다 맞는 책은 다릅니다. 저는 선형대수학, 수치해석과 최적설계를 공부했고 실무에도 적용해봤지만 머신러닝은 제대로 공부해본 적이 없습니다. 그리고 일단 머신러닝의 다양한 주제를 맛보기로 공부하면서, 분야 전체의 맵이 그려지도록 도와주는 책이 필요했습니다. 바로 이렇게요.
기초 수학은 알지만, 머신러닝은 잘 모르고, 계통도 형태의 숲을 보면서 내가 어디쯤에서 뭘 공부하고 있는지 한눈에 보기를 좋아하는 저에게 스타터로서 딱 맞는 책이라는 생각이 들었습니다. 그리고 역시, 기대를 저버리지 않았습니다. 제 책장에는 사놓고 보니 생각보다 어려워서 잘 안 펼치게 되던 이론서가 몇 권 있는데, 이 책을 보고 나서 다시 펼쳐보니 확실히 눈에 들어오더군요.
어떤 책이었나
머신러닝 감각 훈련
이 책의 목적은 명확합니다. 독자로 하여금 머신러닝의 아이디어에 익숙해지게 만드는 것입니다. 그래서 매 챕터가 흥미로운 실전 예시로 시작합니다.
- k-최근접 이웃 분류: 생선의 길이와 무게로부터 생선을 구별할 수 있을까?
- k-최근접 이웃 회귀: 생선 길이로부터 무게를 예측할 수 있을까?
- 로지스틱 회귀: 생선의 크기 치수로부터 어떤 생선인지 확률을 계산할 수 있을까?
- 트리 알고리즘: 와인의 종류를 스무고개처럼 간단한 질문의 연속으로 맞출 수 있을까?
- 군집 알고리즘: 과일 이미지만 보고 같은 과일끼리 묶을 수 있을까?
- 딥러닝: 이미지를 이용한 패션잡화의 분류를 로지스틱 회귀보다 더 잘 할 수 있을까?
즉 ‘주어진 문제 유형에는 어떤 알고리즘이 적절한지’에 대한 감각을 훈련시키기에 좋은 책입니다. 그렇다고 수박 겉핥기에 그치지 않습니다. 저 같은 입문자에게는 단 세 줄이라도 결과를 보여주는 코드를 돌려보는 경험이 중요합니다. 성취감에서 오는 긍정적 피드백이랄까요? 몇 줄의 코드로 일단 처음부터 끝까지 한번 돌려보고, 발생할 수 있는 문제와 해결책을 하나하나 짚어줍니다. 전반적으로 문제 제시 – 간단한 코드 소개 – 발생 가능한 문제점 소개 – 해결책 제시 – 발생 가능한 다른 문제점 제시 – 해결책 제시…의 형태를 따르고 있습니다. 그래서 나중에는 하나의 문제를 풀기 위해 꽤 긴 코드가 만들어집니다. import sklearn으로 시작해서 마지막에 그럴싸한 결과물까지 나오면 꽤 뿌듯합니다.
용어의 중요성
입문자에게 특히 중요한 것이 용어입니다. 전문가가 지식의 저주에 걸리면 하기 쉬운 실수 중 하나가 용어를 설명하지 않는 것입니다. 본인은 너무나 잘 알고 있는 개념과 용어를 설명 없이 사용하기도 하며, 간혹 용어를 제대로 설명하려면 지면이 많이 필요하니 건너뛰기도 합니다. 분량과 완성도의 균형은 늘 어려운 법이죠. 이 책을 칭찬하고 싶은 또 다른 이유가 용어 설명을 소홀히 하지 않았다는 점입니다. 과하지도 않고 딱 필요한 만큼만 분량을 할애했습니다. 부족하다 싶으면 독자가 직접 찾아보면 됩니다.
책의 난이도
책의 난이도는 앞에서 말했듯이 수학을 아주 모르지는 않는 머신러닝 입문자에게 적절한 수준입니다. 고등학교 수학과 약간의 선형대수가 이 책을 제대로 이해하는 데에 필요한 최소 사전 지식이라 생각합니다. 하지만 이왕이면 회귀분석, 더 나가면 최적화 개념까지 알고 있다면 훨씬 높은 이해도로 읽을 수 있습니다. 예를 들어, 회귀분석을 알고 있다면 3장을, 최적화의 기본 개념을 알고 있다면 4장을 소설책 읽듯이 읽을 수 있습니다. 수학을 전혀 몰라도 머신러닝의 감각은 익힐 수 있을지 모르겠습니다만, 아는 만큼 보인다고 할까요? 챕터 내에서 난이도의 변동이 심하지 않다는 점도 칭찬하고 싶은 부분 중 하나입니다.
강의 교재로의 활용
이 책은 강의를 하는 분들께도 추천하고 싶은 책입니다. 제가 이 책을 공부하면서 계속 생각한 것이 있습니다. ‘이 책 내용 그대로 한 학기 강의해도 되겠는데?’ 사회적 역할에 따라 알맞은 책이 다르다고 앞에서 말했었죠. 저에게는 교육자라는 사회적 역할이 있습니다. 사람마다 교육의 방식이 다르겠습니다만, 저는 항상 동기부여motivation를 중요시합니다. 무작정 코드부터 들이밀기보다는 ‘이런 문제는 어떻게 풀면 좋을까?’라면서 궁금증을 유발하는 방식을 좋아합니다. 여기에 ‘왜’까지 추가되면 금상첨화겠죠. 각 챕터의 구성을 보면, 우선 문제 제시를 통해 호기심을 유발하고, 어떻게 풀 것이며 어떤 알고리즘을 쓰면 되는지를 소개합니다. 앞서 나왔던 알고리즘과의 비교를 통해 왜 문제마다 적절한 알고리즘이 다른지도 설명합니다. 그리고 어떤 문제점이 생길 수 있는지, 왜 생기는지, 어떻게 해결할 수 있는지도 차근차근 서술합니다. 여기에 귀여운 그림들도 한몫 했습니다. 강의 해보신 분들은 그림이 얼마나 중요한 지 아실 겁니다. 제가 제 블로그에 매주 7,000자가 넘는 분량으로 내용을 정리한 것도 나중에 강의로 만들기 위함이었습니다. 언젠가 기회가 생기면 좋겠네요.
그 외 - 잠재적 독자분들께
이 책을 공부할 때 저자 박해선 님의 유튜브 강의를 같이 보면 많은 도움을 얻을 수 있습니다. 텍스트만으로는 잘 이해되지 않는 내용이 영상으로 바로 이해될 때가 있거든요. 간혹 책에 없는 내용을 말해주시기도 합니다. 다만 전체 18시간이라는 분량의 압박이 조금 있습니다. 그래서 저는 1.5배속으로 봤습니다.
공부하실 때 공식 문서를 항상 옆에 끼고 계셔야 합니다. 분량 문제로 다 싣지 못한 디테일들이 공식 문서에 자세히 나와 있습니다. 간혹 버전에 따라 다르게 동작하는 경우도 있습니다. (예: SGDClassifier의 loss 파라미터)
넘파이와 판다스를 몰라도 책을 따라갈 수 있습니다. 물론 알면 더 좋습니다. 저는 넘파이는 알고 판다스는 몰랐지만 큰 어려움은 없었습니다.
책이 총 581페이지이니 적다고는 할 수 없습니다. 다만 이보다 두꺼워지면 완주율은 떨어지고 가격은 올라가며, 이보다 얇아지면 덜어내기 아쉬운 부분을 많이 덜어내야 했을 것 같습니다.
저자분의 블로그에 가면 많은 자료를 보실 수 있습니다. 특히 머신러닝/딥러닝 로드맵이 대박입니다. 꼭 들어가보세요!
아쉬웠던 점은
아쉬웠던 점도 몇 가지 있어서 간단히 적어보고자 합니다. 우선 수학적으로 조금은 더 깊게 들어갔어도 되지 않았을까 합니다. 머신러닝은 일상의 언어, 수학의 언어, 프로그래밍 언어의 아름다운 하모니입니다. 세 언어가 서로의 부족한 부분을 보완해주면 단일 언어로는 얻을 수 없는 수준으로 이해도를 증폭시킬 수 있습니다. 이 책에서는 수학의 언어가 다른 두 언어에 비해 무대에 오른 시간이 너무 짧았습니다. 그래서 별도의 자료를 검색하는 데에 꽤 많은 시간이 필요했습니다. 이 정도 책을 제대로 이해할 독자라면 수학이 조금 더 나와도 괜찮지 않았을까 하는 아쉬움이 조금 있었습니다. 아마 분량 문제가 있었지 않았나 싶습니다.
또 하나는, 소챕터가 끝날 때마다 두세 페이지로 요약하며 마무리를 짓는 부분입니다. 본문에는 언급되지 않은 것이 이 요약에 나올 때가 있습니다. 약간 당황스러운 점이었는데, 개정판이 나온다면 수정되면 좋겠습니다.
혼공학습단 활동도 살짝 아쉬운 점이 있었습니다. 같은 책을 공부하는 사람들끼리 좀 더 활발한 교류의 장이 열렸으면 했습니다만, 책 제목처럼 정말 혼자 공부하다 끝난 느낌입니다. 저는 개인적으로 같이 공부하는 분들과 토론하며 책을 봤는데, 혼공학습단 멤버들끼리도 더 많은 얘기를 나눌 수 있었다면 좋았을 것 같습니다.
맺으며
저 같은 의지박약러에게는 역시 약간의 강제성이 필요합니다. 본 책과 혼공학습단 활동을 통해 머신러닝의 개념이 머리 속에 구축된 듯 하여 정말 좋은 공부가 되었습니다. 저의 주 연구 분야는 하드웨어이지만 개인적으로는 소프트웨어와 컴퓨터 과학에 관심이 많습니다. 이 책을 통해 다양한 공부를 위한 기초를 다질 수 있었습니다. 머신러닝 입문을 빠르고 쉬우면서도 제대로 하고 싶으시다면 이 책 ‘혼자 공부하는 머신러닝+딥러닝’을 강력히 추천 드린다는 말씀을 드리며 후기를 마치겠습니다. 고맙습니다.
'혼공머신' 카테고리의 다른 글
[혼공머신] 8장. 이미지를 위한 인공 신경망 (0) | 2022.09.05 |
---|---|
[혼공머신-번외편] 패션 MNIST의 레이블명을 데이터셋에서 가져오기 (0) | 2022.09.04 |
[혼공머신] 7장. 딥러닝을 시작합니다 (2) | 2022.08.21 |
[혼공머신] 6장. 비지도 학습: 비슷한 과일끼리 모으자! (0) | 2022.08.14 |
[혼공머신] 5장. 트리 알고리즘: 화이트 와인을 찾아라! (0) | 2022.07.31 |