책 초반에 머신러닝 직군에 대해서도 다룬 부분이 마음에 들었다.
개인적으로 참고하는 베트남 출신 개발자 또한 이와 관련한 ebook을 작성한 적이 있다. 그만큼 데이터 도메인에서 직군을 나누고 어떤 직군으로 들어가느냐는 중요하다. 또 어떤 면에서는 시작하는 포지션이 중요하기도 하다. 그 개발자가 책을 집필하면서 했던 말은 소프트웨어 개발자로 시작해서 ML로 옮기는 편이 ML에서 시작해서 소프트웨어 개발자로 넘어가는 것보다 쉽다는 것이었다. 그러니까 개발자에게 ML을 가르치는 것은 쉽지만 ML'만'을 배운 사람에게 개발을 가르치는 것은 어렵다는 것이다. 비슷한 맥락의 얘기를 어떤 현업 ML엔지니어 또한 한 걸 영상 제목으로 본 적도 있다.
이 책에서도 데이터 과학 팀이 규모가 작을수록 데이터 엔지니어를 했다가 데이터 과학 쪽으로 다뤄 실험에 참여도 했다가 결국에는 머신러닝 엔지니어로 모델을 프로덕션으로 옮기는 역할을 수행할 수 있다고 적었다. 동감하는 바이다.
일반적인 코드에도 디자인 패턴이 중요하듯이 머신러닝 또한 공통적으로 뽑아낼 수 있는 패턴들이 중요하다.
책 앞머리에도 옮긴이가 이 ML디자인 패턴의 중요성에 대해 잘 설명해놓았다. 이젠 어느 정도의 ML 과도기가 끝난 듯 하므로 ML디자인 패턴을 적극 활용해 업무에 참고하는 것이 좋겠다.
책은 크게 5개 파트의 디자인 패턴으로 나뉜다. 데이터 표현, 문제 표현, 모델 학습, 탄력성, 재현성.
그러니까 무작정 맨땅에 헤딩식으로 ML을 배웠을 떄 나타나는 각종 상황들을 아예 유형화해놓은 책이라고 할까. 그래서 그런지 직접 ML 코드를 작성해본 사람이라면 공감갈 내용들이 많이 나와있다. 혹은 처음 ML을 배우려고 하는 사람이라면 ML디자인패턴을 참고해서 처음부터 하게 될 여러 삽질을 방지할 수도 있겠다.
그리고 문제를 푸는 방식의 모범 답안이나 생각의 전환 등을 참고할 때도 좋겠다. 회귀 문제라고 해서 꼭 회귀로만 풀어야 되는 것이 아니라 분류로도 풀 수 있다는 것을, 그리고 그렇게 함으로써 얻을 이익 등에 대해서도 잘 알 수 있다.
또 각 디자인 패턴별 구체적 상황 또한 제시하고 있어 어떤 데이터와 상황일 때 어떤 ML을 만들어야 되는지, 그리고 주의할 사항은 무엇인지에 대해서도 아주 자세히 참고할 수 있겠다.
책을 읽다가 몇몇 부분은 굉장히 익숙한 내용이 나올 수도 있는데 그런 경우라면 과감히 넘기고 다른 새로운 상황을 습득하는 데에 중점을 둬도 좋겠다. 사실상 ML을 공부하는 것과 실전에 활용하는 것은 다른 부분이 많다. 만약 이미 잘 사용하고 있는 디자인 패턴 내용이라면 다른 새로운 패턴과 발상을 배우는 것도 좋은 선택이다.
파트별 주요 키워드를 조금 정리해봤다.
1. 데이터 표현
특징 해시-FARM_FINGERPRINT() *빅쿼리에서 사용할 수 있는 함수
특징 교차-ML.FEATURE_CROSS() *빅쿼리에서 사용할 수 있는 함수
2. 문제 표현
리프레이밍-회귀 문제를 분류 문제로, 분류 문제를 회귀 문제로 간주
앙상블
캐스케이드-특정 예외사항에 대한 대비 모델까지 완성되어야 하는 경우.
예를 들어 역의 자전거 비축 비용을 추정하기 위해 샌프란시스코의 자전거 대여소와 반납소 사이의 거리를 예측한다고 하면 4시간보다 길게 대여하는 비정상적인 데이터 사용자와 짧게 대여하는 사용자간 행동이 아주 다르기 때문에 ML 설계 또한 이 2 상황을 모두 포함할 수 있어야 한다. 그렇다면 먼저 일반적인(단거리) 상황인지, 장거리 상황인지를 먼저 분류하고 각각을 모델로 만드는 편이 낫다.
중립클래스
3. 모델 학습
체크포인트
전이 학습(transfer learning)
4. 탄력성
스트레이트리스 서빙 함수
연속모델 평가
5. 재현성
브리지 스키마
워크플로 파이프라인
특징 저장소
책 마지막 부분에 각 ML디자인 패턴의 주요 용어와 하는 역할을 간단하게 도식화한 자료가 있는데 책 전체 내용을 정리하기에 유용해 보인다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
'IT리뷰' 카테고리의 다른 글
SRE를 위한 시스템 설계와 구축(2022.01.03) (0) | 2022.02.23 |
---|---|
머신러닝을 활용한 웹 최적화(2021.06.07) (0) | 2021.12.26 |
머신러닝 파워드 애플리케이션(2021.09.06) (0) | 2021.10.24 |
처음 배우는 플라스크 웹 프로그래밍(2021.08.30) (0) | 2021.09.22 |
파이썬으로 웹 크롤러 만들기(2019.03.29) (0) | 2021.08.22 |
댓글