[Review] Hands-On Machine Learning with Scikit-Learn & TensorFlow

lrg 이 책의 번역을 시작한지 벌써 6개월이 훌쩍 넘어가 버렸습니다. 개인적인 핑계가 없는 것은 아니지만, 그럼에도 불구하고 이렇게 오랜 시간이 걸린 것은 번역 작업이 어떤 병렬화도 불가능한 노동 집약적인 일이기 때문일 것입니다 🙂 작업이 거의 마무리되어 가는 시점에 원서 전체에 대한 리뷰와 작업에 대한 기록을 위해 글을 남깁니다.

이 책은 500페이지가 넘어 두툼한 편이고, Scikit-Learn 라이브러리를 사용한 머신러닝Machine Learning텐서플로TensorFlow를 사용한 딥러닝Deep Learning 파트 두 부분으로 크게 나누어 집니다(실제 최근 프랑스어 판은 두 권의 책으로 출판되었다고 합니다). 분량만으로 비교했을 때에도 약간 딥러닝 쪽에 더 무게를 두고 있습니다. 간간히 Scikit-Learn과 텐서플로를 함께 다루고 있는 책들이 있는데, 아마도 딥러닝만을 설명하기엔 머신러닝 개념이 꼭 필요하기 때문인 것 같습니다. 물론 텐서플로만 다루는 책이더라도 도입부에 회귀와 분류 모델을 간단히 텐서플로로 만들어 봄으로써 머신러닝에 대한 개념을 다루고 진행하는 것이 일반적입니다. 이 책은 두 라이브러리를 모두 다루고 있으며 유사한 책 중에서는 가장 포괄적이고 세세한 내용을 담고 있습니다. 또 이론서와 실용서의 중간 형태라고 볼 수 있습니다. 수식없이 코드만 있지 않고, 코드는 없고 이론만 늘어 놓지도 않습니다.

작업을 시작하고 나서 7월, 10월에 원서의 내용이 크게 개정되었습니다. 주로 딥러닝 파트였으며, 원서의 여러가지 오류 때문이기도 하지만 아마도 이 분야의 변화가 빠른 것도 한 몫 했을 것입니다. 바뀐 부분을 PDF로 받았는데 책으로 옮겨 적기에는 너무 양이 많아 출력해서 책에 오려 붙이고 작업을 진행했습니다. 그 외에도 괴장히 많은 에러타가 있고, 아직 컨펌되지 않은 에러타도 남아 있습니다(에러타가 많이 발견되었다는 것은 그 만큼 높은 인기를 반증합니다). 최근에는 에러타와 개정판에도 언급되지 않은 변경사항이 사파리온라인에서 발견되어 저의 멘탈을 붕괴 직전까지 몰고 가기도 했습니다. 😦

이 책이 다른 책과 구별되는 한 장을 고르라고 한다면 저는 2장을 선택할 것 같습니다. 2장은 회귀 모델을 사용해 머신러닝 프로젝트의 준비에서부터 런칭까지 모든 단계를 짚어가고 있습니다. 이 책에는 특성 공학feature engineering에 대한 장을 따로 할당하지 않았는데 2장에서 이런 부분이 다소 해소됩니다. 다른 책에서도 프로젝트 운영에 대한 가이드라인이 다소 포함되어 있기도 하지만, 여기에서처럼 실제 프로젝트를 진행하듯이 자세히 기술되어 있지는 않습니다. 이런 부분은 저자의 프로젝트 경험을 엿볼 수 있는 좋은 사례인 것 같습니다.

이 책은 구성상 독특한 점이 두 가지가 있습니다. 첫째는 다른 책들과는 달리 샘플 코드 전체를 싣지 않고 있는 것입니다. 비교적 많은 주제에 대해 상세히 논하고 있기 때문에 만약 코드를 모두 썼다면 이보다 훨씬 더 두꺼운 책이 되었을 것입니다. 설명을 위해 꼭 필요한 코드 부분만 실었으며 전체 코드는 깃허브github.com의 주피터 노트북Jupyter Notebook을 참고하도록 안내하고 있습니다. 둘째, 각 장의 끝에 연습문제를 포함하고 있습니다. 그렇다고 이 책이 대학 교재스러운 편집 구성을 가지는 것은 아닙니다. 일반 컴퓨터 과학 도서에서 연습문제를 가진 경우는 드물기 때문에 신선하기도 하고 저자의 노력을 느낄 수 있습니다. 연습문제는 크게 본문의 내용을 질문하는 것과 실습을 하는 것, 두 종류로 나누어 집니다. 내용에 대한 질문의 답은 책의 부록에 실려 있습니다. 실습 문제는 깃허브의 장별 주피터 노트북 말미에 포함되어 있습니다. 다만 아직 모든 연습문제의 답이 올려져 있지 않고 점진적으로 추가되고 있습니다. 번역서가 출간될 쯤에는 깃허브의 주피터 노트북의 내용도 모두 한글로 번역되어 제공됩니다. 추후 업데이트되는 연습문제도 함께 번역이 될 것입니다.

Scikit-Learn을 이용해서는 회귀, 분류에 대한 기본 내용으로 시작해서 서포트 벡터 머신Support Vector Machine, 결정 트리Decision Tree, 앙상블emsemble, 차원 축소Dimensionality Reduction까지 다룹니다. 아무래도 ‘파이썬 라이브러리를 활용한 머신러닝‘처럼 머신러닝 파이프라인의 모든 부분을 다루기엔 지면이 부족합니다. 하지만 다루는 모델의 이론(수식)을 충분히 설명하고 예제 코드를 병행하고 있습니다. 텐서플로를 사용해서는 기본 인공 신경망과 텐서플로에 대한 소개를 먼저 시작합니다. 그리고 심층 신경망을 학습하기 위해 당면한 문제들을 해결하는 여러가지 방법을 소개합니다. 모델 재사용, 여러가지 최적화 알고리즘, 초기화, 규제 등입니다. 보통 GPU나 분산처리 부분은 딥러닝 책의 말미에 나오는 경우가 많은데 이 책에서는 합성곱Convolution 신경망 보다도 먼저 나오고 비중이 비교적 큽니다. 그 다음 합성곱 신경망Convolution Neural Networks에서 합성곱, 패딩, 스트라이딩에 대한 설명 뿐만 아니라 LeNet-5, AlexNet, GooLeNet, ResNet 구조를 상세히 설명하고 있습니다. 순환 신경망Recurrent Neural Networks에서는 직접 간단한 RNN 연산을 만들어 보면서 순환 신경망에 대한 이해를 돕고 있으며, LSTM, GRU와 기본적인 기계번역 RNN 구조까지 설명하고 있습니다. 그 다음 오토인코더Autoencoder, 강화학습Reinforcement Learning을 다루는 장으로 이어집니다.

아래 장별 제목을 옮겨 놓았습니다. 책에 관련하여 궁금한 점이나 리뷰, 추천사에 의향이 있으시면 언제든지 댓글이나 메일 주세요. 앗 그리고 새해 복 많이 받으세요! 🙂

  1. 한눈에 보는 머신러닝
  2. 머신러닝 프로젝트 시작부터 끝까지
  3. 분류
  4. 모델 훈련
  5. 서포트 벡터 머신
  6. 결정 트리
  7. 앙상블 학습과 랜덤 포레스트
  8. 차원 축소
  9. 텐서플로 시작하기
  10. 인공 신경망 소개
  11. 심층 신경망 훈련
  12. 다중 머신과 장치를 위한 분산 텐서플로
  13. 합성곱 신경망
  14. 순환 신경망
  15. 오토인코더
  16. 강화학습
  • 연습문제 정답
  • 머신러닝 프로젝트 체크 리스트
  • SVM 쌍대 문제
  • 자동 미분
  • 인기 있는 다른 인공 신경망 구조

[Review] Hands-On Machine Learning with Scikit-Learn & TensorFlow”에 대한 34개의 생각

  1. 정혜민

    본문 내용 중
    “작업을 시작하고 나서 7월, 10월에 원서의 내용이 크게 개정되었습니다. 주로 딥러닝 파트였으며, 원서의 여러가지 오류 때문이기도 하지만 아마도 이 분야의 변화가 빠른 것도 한 몫 했을 것입니다. 바뀐 부분을 PDF로 받았는데 …”
    라는 부분을 보면 원서 내용이 많이 바뀐 것을 알 수 있는데, 그럼 원서도 2번째 개정판이 나온 상태 인가요? 아니면 4월 중으로 나오는 한글 번역판에서 원서의 개정 내용을 알 수 있는 것인가요?

    좋아요

    응답
    1. 박해선 글의 글쓴이

      안녕하세요. 원서는 1st Edtion 5th Release가 된 상태입니다. 보통 에디션이 바뀔때 개정판이라 부르고 새로운 책으로 출판되는 것 같습니다. 제가 글에서 언급한 것은 릴리즈입니다. 당연히 번역판에는 최신 릴리즈와 에러타가 모두 반영됩니다. 그 이후에 수정되거나 추가되는 내용도 블로그를 통해 계속 업데이트 하겠습니다. 관심 가져 주셔서 감사드립니다. 편안한 저녁 되세요. 🙂

      좋아요

      응답
    1. 박해선 글의 글쓴이

      관심주셔서 감사드립니다. 출판사에서 열심히 준비하고 계시니 곧 만나 보실 수 있을 거에요. 부디 맘에 드시길 바라겠습니다. 🙂

      좋아요

      응답
    1. 박해선 글의 글쓴이

      출판사에서 답변이 왔는데요. 아마도 “사이킷런과 텐서플로를 활용한 머신러닝, 딥러닝 실무” 정도가 될 것 같다고 합니다. 🙂

      좋아요

      응답
  2. 안재형

    초기버전을 원서로 사서 읽어봤었는데, 정말 내용이 알차고 도움이 많이 되었던 책이었는데, 한국어로 출판된다니 너무 기쁘네요! 개정된 내용이 무엇일지도 궁금하고 ‘파이썬 라이브러리를 활용한 머신러닝’ 책도 너무 훌륭했어서 너무 기대가 됩니다!

    좋아요

    응답
    1. 박해선 글의 글쓴이

      안녕하세요. 책을 기대해 주신다니 저도 기쁘네요. 🙂 책 전반에 걸쳐 수정사항이 많았는데 주로 11장 훈련 알고리즘, 12장의 분산처리, 16장의 강화학습 부분이 많이 바뀌었습니다. 대부분은 오류나 명확하지 않은 설명때문이었습니다(그런데 정작 고치겠다고 하고는 원서 최신 pdf에는 빠트린 것도 있다는 ㅠ.ㅠ). 번역서는 에러타와 원서에 아직 반영되지 않은 오류를 모두 반영하고 주석도 꼼꼼히 챙겨 넣었습니다. 편집이 거의 마무리 단계일텐데 어찌 나올지 저도 굉장히 궁금하네요.ㅎ 출간되면 모쪼록 맘에 드시길 바랄께요!

      좋아요

      응답
  3. 방규환

    안녕하세요! 학교에서 머신러닝 강의를 듣고 있는 대학생입니다. 이번에 수업교재가 이 책인데요.. 아무래도 원서로 공부하다보니 어려움이 많습니다..!!

    혹시 번역본 출판이 언제로 예정되어있는지 알 수 있을까요!?

    좋아요

    응답
    1. 박해선 글의 글쓴이

      안녕하세요. 이 책 원서를 수업 교재로 사용하신다니 왠지 반갑네요. 🙂 번역서는 4월안에 출간될 것으로 예상되는 데요. 출판사에 한번 문의해 보고 다시 말씀드리겠습니다!

      좋아요

      응답
  4. 어!이사람아

    출판일이 4/27로 정해졌군요^^
    원서 1쇄를 읽었는데 워낙 좋아서 후배 사주려하는데 마침 번역본이 나오네요 다행입니다.!
    실례가 안된다면 출판사를 여쭤봐도 될련지요??

    좋아요

    응답
    1. 박해선 글의 글쓴이

      1쇄를 읽으셨다니… ㅠ.ㅠ 저도 1쇄를 가지고 번역을 시작했는데 나중에 바뀐 부분이 너무 많아 책이 너덜 너덜해져 버렸습니다. ㅎ

      좋아요

      응답
  5. 량주

    저희 스터디에서 이책으로 스터디를 시작하기로 결정 했는데, 번역 작업이 이루어지고 있다는 소식에
    5월이 되기 전에 되도록 발매일에 맞춰서 빨리 구매하고 싶은데요. 혹시 어느쪽으로 구매 준비를 하면 될 지 알려 주실 수 있을까요?
    감사합니다~

    좋아요

    응답
    1. 박해선 글의 글쓴이

      안녕하세요. 출판사에서 27일로 발매일을 정했는데요. 대부분 온라인 서점에는 그 전에 예약 판매가 시작될 것 같습니다. 예약 주문을 하면 27일부터 배송 받으실 수 있을 것 같아요. 아마 이게 가장 빠른 방법일 것 같습니다. 저도 출간일이 되어야 받아 볼 수 있거든요. 예약 판매가 시작되면 블로그에 포스트를 올리겠습니다. 🙂

      좋아요

      응답

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.