아이디어에서부터 완성된 제품까지, 강력한 머신러닝 애플리케이션 구축 과정 배우기
한빛미디어
번역서
판매중
아이디어가 현실이 되는, 나만의 머신러닝 애플리케이션 구현하기
머신러닝 기반 애플리케이션을 설계, 구축, 배포하는 과정에 필요한 모든 기술을 설명하는 책이다. 초기 아이디어가 제품으로 개발되기까지의 과정을 머신러닝 에디터 예제 프로젝트를 통해 순서대로 배운다. 데이터 과학자, 소프트웨어 엔지니어, 제품 관리자가 머신러닝 애플리케이션을 단계별로 구현하는 데 필요한 도구와 실무에서 맞닥뜨리게 되는 도전 과제와 모범 사례를 살펴본다. 유용한 코드와 친절한 그림, 업계 리더와의 인터뷰를 통해 실용적인 머신러닝 개념을 터득해 본인만의 머신러닝 애플리케이션을 자신 있게 구현해보자.
대상 독자
주요 내용
부별 요약
추천사
머신러닝에서 가장 어려운 부분인 문제 정의, 모델 디버깅, 배포를 건너뛰는 책은 너무나 많습니다. 하지만 이 책은 이런 문제에 초점을 맞춰 이야기를 풀어갑니다. 이 책을 읽으면 아이디어에 불과했던 프로젝트를 큰 영향을 발휘하는 애플리케이션으로 만들 수 있습니다.
_알렉산더 구드, Intuit 데이터 과학자
머신러닝 모델을 도입하는 방법, 잘못되기 쉬운 부분과 특별히 주의해야 할 사항에 대한 실용적인 조언을 찾고 있다면 바로 이 책이 답입니다. 10년 전에 이 책을 읽었더라면, 교훈을 찾아 헤매던 시간을 단축할 수 있었을 겁니다.
_루카스 텐서, 트위치 ML 수석 매니저
[저자] 에마뉘엘 아메장
수년간 머신러닝 기반 제품을 만들었고, 현재는 스트라이프(Stripe)에서 머신러닝 엔지니어링을 담당하고 있습니다. 그전에 인사이트 펠로의 AI 책임자로 150개 이상의 머신러닝 프로젝트를 이끌었습니다. 집카(Zipcar)의 데이터 과학자로 온디맨드 예측과 머신러닝 모델을 제품 환경에 배포하는 것을 돕는 프레임워크와 서비스를 만들었습니다. 파리쉬드(Paris-Sud) 대학교에서 AI 석사 학위를 받았고 동 대학교 대학원에서 엔지니어링 석사 학위를 받았습니다. ESCP에서 경영학 석사 학위를 받아 머신러닝과 비즈니스를 아우르는 배경지식을 가지고 있습니다.
[역자] 박해선
기계공학을 전공했으나 졸업 후에는 줄곧 코드를 읽고 쓰는 일을 했다. 지금은 머신러닝과 딥러닝에 관한 책을 집필하고 번역하면서 소프트웨어와 과학의 경계를 흥미롭게 탐험하고 있다. 『혼자 공부하는 머신러닝+딥러닝』(한빛미디어, 2020)과 『Do it! 딥러닝 입문』(이지스퍼블리싱, 2019)을 집필했고, 『케라스 창시자에게 배우는 딥러닝(개정 2판)』(길벗, 2022), 『핸즈온 머신러닝(2판)』(한빛미디어, 2020)을 포함한 다수의 머신러닝 책을 우리말로 옮겼다.
[PART I 올바른 머신러닝 접근 방법 모색]
CHAPTER 1 제품의 목표를 머신러닝 문제로 표현하기
1.1 어떤 작업이 가능한지 예상하기
1.2 머신러닝 에디터 설계
1.3 모니카 로가티: 머신러닝 프로젝트의 우선순위 지정하기
1.4 마치며
CHAPTER 2 계획 수립하기
2.1 성공 측정하기
2.2 작업 범위와 문제점 예상하기
2.3 머신러닝 에디터 계획하기
2.4 규칙적인 향상 방법: 간단하게 시작하기
2.5 마치며
[PART II 초기 프로토타입 제작]
CHAPTER 3 엔드투엔드 파이프라인 만들기
3.1 가장 간단한 프로토타입
3.2 머신러닝 에디터 프로토타입
3.3 워크플로 테스트하기
3.4 머신러닝 에디터 프로토타입 평가
4.5 마치며
CHAPTER 4 초기 데이터셋 준비하기
4.1 반복적인 데이터셋
4.2 첫 번째 데이터셋 탐색하기
4.3 레이블링으로 데이터 트렌드 찾기
4.4 데이터를 활용한 특성 생성과 모델링
4.5 로버트 먼로: 데이터를 찾고, 레이블링하고, 활용하는 방법
4.6 마치며
[PART III 모델 반복]
CHAPTER 5 모델 훈련과 평가
5.1 가장 간단하고 적절한 모델
5.2 모델 평가: 정확도를 넘어서
5.3 특성 중요도 평가
5.4 마치며
CHAPTER 6 머신러닝 문제 디버깅
6.1 소프트웨어 모범 사례
6.2 데이터 흐름 디버깅: 시각화와 테스트
6.3 훈련 디버깅: 모델 학습하기
6.4 일반화 디버깅: 유용한 모델 만들기
6.5 마치며
CHAPTER 7 분류기를 사용한 글쓰기 추천
7.1 모델로 추천 만들기
7.2 모델 비교하기
7.3 추천 생성하기
7.4 마치며
[PART IV 배포와 모니터링]
CHAPTER 8 모델 배포 시 고려 사항
8.1 데이터 고려 사항
8.2 모델링 고려 사항
8.3 크리스 할랜드: 배포 실험
8.4 마치며
CHAPTER 9 배포 방식 선택
9.1 서버 측 배포
9.2 클라이언트 측 배포
9.3 연합 학습: 하이브리드 방법
9.4 마치며
CHAPTER 10 모델 안전장치 만들기
10.1 실패를 대비하는 설계
10.2 성능 설계
10.3 피드백 요청
10.4 크리스 무디: 데이터 과학자에게 모델 배포 권한 부여
10.5 마치며
CHAPTER 11 모니터링과 모델 업데이트
11.1 모니터링의 역할
11.2 모니터링 대상 선택
11.3 머신러닝을 위한 CI/CD
11.4 마치며
머신러닝 아이디어 생각만 하고 있었다면?
지금 바로 애플리케이션 개발에 힘을 실어줄 강력한 한 방!
머신러닝이 점점 더 활발하게 다양한 제품에 사용되면서, 새로운 제품 개발에 대한 아이디어가 번쩍번쩍 샘솟는 분들이 많을 겁니다. 생각에만 그치지 않고 아이디어를 실제 애플리케이션으로 구현하고 싶은데 어떤 것부터, 어디서부터 시작해야 할지 모르겠다면 바로 이 책을 펼쳐보세요. 대부분의 머신러닝 책이 알고리즘과 라이브러리 설명에 중점을 두는 것과 달리, 이 책은 머신러닝 기반의 애플리케이션 아이디어가 실제 애플리케이션으로 구현되는 모든 과정을 살펴봅니다. 실무자가 실제로 애플리케이션을 구현할 때 필요한 도구와 마주하게 될 도전 과제를 살펴보고, 업계 리더 4명의 생생한 경험이 담긴 인터뷰를 통해 유용한 팁을 얻어 본인만의 스킬을 쌓아가세요. 이 책을 읽고 나면 본인만의 머신러닝 애플리케이션을 구현하는 과정의 첫 삽을 자신 있게 뜰 수 있을 겁니다.
안녕하세요 괴짜 개발자 namedboy 입니다.
여러분은 머신러닝을 얼마나 활용해 보셨나요?
저는 항상 머신러닝에 대해서 얘기를 하다보면 지식의 한계 지점을 느낍니다.
그만큼 제가 머신러닝에 대해 모르기도 하고 어떤식으로 머신러닝을 구상해야 할지 어렵기 때문일 겁니다.
머신러닝을 제대로 돌리기 위해서는 모델을 알아야 하고 그것을 또 배우는데 시간이 필요하고 그것을 잘 알지 못하면 또 머신러닝을 실행하지 못해서 어려운 것도 있습니다.
그런면에서 이 책에선 그런 모델을 먼저 가르쳐줍니다. 모델을 알고 나면 머신러닝을 설계하고 계획하고 수립해서 실제로 해볼 수 있습니다.
한걸음 나아가는 셈이죠.
전반적으로 머신러닝에 필요한 부분들을 계획하고 실제로 돌려볼 수 있도록 가이드가 되어 있습니다.
더구나 요즘은 클라우드 서비스에서 충분히 머신러닝을 돌려볼 수 있기 때문에 모델을 알게 되고 데이터셋을 정리해서 계획을 세우고 배포를 하는 것을 더 쉽게 잘 할 수 있게 됩니다.
이 리뷰 내용은 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
책의 내용이 궁금하다면 [이곳]을 통해 확인할 수 있습니다.
머신러닝에 대해 공부한 사람이나 관련 분야에 종사하시는 분은 아시겠지만
머신러닝 관련 엔지니어와 데이터 사이언티스트에게 머신러닝을 구축한 후 제품을 구축하는 것과
관련된 책은 정말 찾아보기 어렵습니다.
실제로 이전에 프로젝트 과정에서 머신러닝 모델을 만들고 모델 웹앱을 구성해서 배포하기까지
관련된 자료를 구글링하고 다큐멘터리를 참고해서 구축했던 기억이 나네요!
하지만 완벽하지 않음을 느꼈고, 더 알아가고 싶기도 해서 이 책을 제공받게 되었습니다.
관련 경험이 있는 만큼 이 책이 어떻게 구성되었을지, 어떤 것을 가르치고 있을지 정말 궁금했어요.
그리고 다시 한 번 느꼈지만, 한빛미디어는 어쩜 이런 책들을 찍어내죠..? 역시 이번에도 엄지척입니다!
성장하는 머신러닝 엔지니어, 데이터 사이언티스트에게 도움이 될 책
우선 저자 역시 이 책이 머신러닝을 구축한 후의 과정을 소개한 책은 없었고,
머신러닝 구축 이후의 책이 필요하다는 생각에서 출발을 했습니다.
저자가 이에 대한 필요성을 느꼈고, 이를 기반으로 출발했기 때문에 더욱 신경 쓰지 않았을까 생각됩니다.
실제로 종사하며 생각하고 느꼈던 것에 대해 선배가 조언을 해주시듯 친절하게 설명을 담아내고 있어
정말 많은 도움이 될 것 같습니다.
단순히 제품을 구축하는 방법 뿐 아니라,
제품을 구축하기 이전에 머신러닝의 문제들을 풀어나가는 방법,
모델을 만들어 나갈 때 계획을 세우고 성능을 측정하고 문제점을 예상하고 대응하는 방법,
더불어 어떤 모델을 사용하고 어떤 특성들을 뽑아내야 하는지 등
중요하지만 어디에서 듣기 힘든 조언과 꿀팁들을 만날 수 있습니다.
머신러닝을 배웠는데 좀 더 공부하고 싶다라는 생각이 드는 분들도 도움이 많이 될 것 같습니다.
이것으로 끝나지 않았다!
이 책이 분명 머신러닝 애플리케이션 구축에 관한 책인데,
파이프라인을 만들고, 디버깅을 하는 방법, 추천 모델 만드는 법,
배포와 배포 후 모니터링 및 모델 업데이트에 관련된 부분도 다루고 있습니다.
저는 A/B 테스트에 대해서도 궁금했는데, 심지어 이 책에 A/B 테스트도 다루고 있어 굉장히 광범위하게 다루고 있기도 합니다. 하지만 광범위하다고 내용이 허술하진 않은 것 같습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
벌써 두번째 도서다.
이번에 리뷰할 책은 <머신러닝 파워드 애플리케이션>으로, 표지에서 기술하고 있듯 머신러닝 관련된 아이디어부터 완성된 제품까지의 과정을 '머신러닝 보조 글쓰기 애플리케이션'이라는 구체적인 사례를 통해서 그리고 있는 책이다.
CHAPTER 1 제품의 목표를 머신러닝 문제로 표현하기
CHAPTER 2 계획 수립하기
CHAPTER 3 엔드투엔드 파이프라인 만들기
CHAPTER 4 초기 데이터셋 준비하기
CHAPTER 5 모델 훈련과 평가
CHAPTER 6 머신러닝 문제 디버깅
- 전통적인 소프트웨어 모범 사례와 달리 머신러닝의 특성에 특화된 사례를 소개한다. 데이터 흐름 - 훈련 - 일반화의 순서로 디버깅한다.
CHAPTER 7 분류기를 사용한 글쓰기 추천
- 머신러닝 에디터 프로젝트상에서 7.1 모델로 추천 만들기 -> 7.2 모델 비교하기 -> 7.3 추천 생성하기를 수행하는 과정을 다룬 파트다. 추천 만들기에선 모델 없이 할수 있는 것 / 특성 통계 사용하기 등의 방법을 소개한다. 다음으로 모델 비교하기 에서는 핵심 측정 지표를 사용해서 모델들을 평가하고, 마지막으로 이를 바탕으로 어떻게 추천을 생성하는지를 다룬다.
CHAPTER 8 모델 배포 시 고려 사항
- 모델을 배포할때 고려해야할 사항으로 8.1 데이터 고려 사항, 8.2 모델링 고려 사항을 다루는 챕터다. 데이터 고려 사항은 데이터 소유권과 데이터 저장에 관한 책임에 대한 파트고, 모델링 고려 사항은 모델이 원치 않는 방향으로 편향될 경우를 최소화하기 위해 고려해야할 사항을 다룬다.
CHAPTER 9 배포 방식 선택
- 다양한 배포 방식에서 9.1 서버 측 배포, 9.2 클라이언트 측 배포, 9.3 연합 학습: 하이브리드 방법을 다루고, 각 방식의 장단점을 다루는 파트다.
CHAPTER 10 모델 안전장치 만들기
- 아무리 좋은 모델이라도 데이터에 따라선 실패할 수도 있는데 이런 실패에 대비한 안전장치를 만드는 방법에 대해서 다루는 파트다. 10.1 실패를 대비하는 설계 - 10.2 성능 설계 - 10.3 피드백 요청의 순서로 전개된다.
CHAPTER 11 모니터링과 모델 업데이트
- 머신러닝 모델을 모니터링할때 유념해야하는 요소를 설명하는 파트다. 11.1 모니터링의 역할 - 11.2 모니터링 대상 선택 - 11.3 머신러닝을 위한 CI/CD의 순서로 전개된다.
- AI관련 스타트업에서 백엔드 개발자로 일하면서 너무 ML 모델에 무지하고, 이로 인해 모델을 어떻게 서빙해야할지에 대해서 궁금한 부분이 많았다. 이 책을 신청했던 것도 이런 작업 환경에서 기인한 것인데 전반적으로 머신러닝 프로젝트가 어떻게 설계되는지에 대해서 알 수 있었다. 개인적으로 가장 유용했던 파트는 챕터 9 배포 방식 선택인데 현재는 서버측 배포를 주로 활용하고 있는데 다른 방식에 대해서도 참고가 되었다.
<머신러닝 파워드 어플리케이션>은 아이디어에서 완성된 제품까지, 강력한 머신러닝 애플리케이션을 구축하는 과정을 다룹니다.
구체적인 예시로는, 인터넷 커뮤니티에 질문을 올릴 때 좋은 답변을 받을 수 있도록,
작성자의 질문 텍스트를 더 좋은 답변으로 수정할 수 있도록 조언을 제시하는 애플리케이션을 만듭니다.
- 문자 개수 높이세요
- 어휘 다양성 높이세요
- 쉼표 빈도 높이세요
- 부사 빈도 높이세요
같이 말입니다.
책은 위 기능을 하는 머신러닝 애플리케이션을 만들기 위해서 거쳐야 하는 과정을 어렵지 않게, 차근차근 설명해나갑니다.
먼저 제품의 목표를 머신러닝 문제로 표현하기 위해 제품을 설계하는 방법과,
이를 간단하게 시작할 수 있도록 여러 가지 조언을 제시합니다.
다음으로는 초기 프로토타입을 제작하는 방식을 설명하며 이를 평가하는 방법까지 설명합니다.
이어서 데이터셋을 준비하는 방법, 데이터셋을 탐색하고 특성을 생성하는 법을 다루고,
모델을 반복 훈련하며 평가하고 상황에 따라 어떤 모델이 알맞은지, 모델 배포 시 고려할 사항은 무엇인지에 대한 내용으로 구성됩니다.
페이지가 진전됨에 따라, 책에 소개된 '글쓰기 추천 모델'도 점점 개선됩니다. 책을 읽으면서 '나도 할 수 있겠다'란 생각이 들고, 어서 데이터셋을 모으고 코드를 따라 치고 싶어서 손이 간질간질했습니다.
수년간 머신러닝 기반 제품을 만들고, 2년간 데이터 과학자와 머신러닝 엔지니어들에게 멘토링을 해온 저자인 만큼,
머신러닝 모델을 만들고 훈련시키는데에 있어 간과해서는 안될 팁이 책 사이사이에 가득합니다.
놓치면 안 되겠다 싶은 항목마다 밑줄을 그으며 읽었는데, 밑줄을 안 그은 페이지가 없을 정도였네요..! ㅎㅎ
몇 가지 꼽아서 옮겨보자면,
등이 있습니다.
또한 이 책이 좋았던 이유 중의 하나는, 데이터에 대한 편향의 위험성을 여러 차례에 걸쳐 설명하고 이를 피할 수 있는 방법을 제시하기 때문입니다.
인간의 편견 그대로 배웠다, 혐오 내뱉는 AI '이루다 쇼크'
AI 판단, 다시 고려해 봐야 하는 이유...다양한 AI 편향성 논란
지난 10월 아마존은 2014년부터 비밀리에 개발해온 인공지능(AI) 채용 시스템을 폐기했다고 밝혔다. 프로그램을 테스트해 본 결과 여성차별 문제가 나타나 자체 폐기한 것이다.
문제는 개발한지 약 1년이 지난 2015년에 불거졌다. AI가 경력 10년 이상 남성 지원자 서류만 고용할 후보로 제시하기 시작한 것이다. 심지어 ‘여성’이라는 단어가 들어가기만 해도 감점요소로 분류했다.
위 사례에서 보듯이 AI는 인간의 편견이 그대로 담긴 데이터셋을 학습하며 편견을 배웁니다.
책에서는
- 전이 학습이 편향을 유발할 수 있다는 것(데이터셋을 주의 깊게 정제하더라도, 위키백과 전체에서 사전 훈련된 모델을 사용한다면 성별 편향이 그대로 옮겨질 수 있다는 것)
- 편향된 데이터셋은 편향된 머신러닝 모델을 만든다는 것
- 이런 데이터셋에서 훈련된 편향된 머신러닝 모델은 재앙에 가까운 결과를 만들 수 있다는 것
을 지적하는데 그치지 않고,
'모델의 공정성을 위해 Fairness Constraints: Mechanisms for Fair Classification 논문에서 소개된 p% 규칙을 사용하여 편향을 정량화하고, 모델이 편향되지 않도록 특성을 계속 살펴야 한다'라는 해결책을 제시하는 점이 흥미로웠습니다.
다음에 머신러닝 모델을 만들 때 해당 논문을 참고하고 p% 규칙을 사용해 봐야겠습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
기존 애플리케이션 개발과 머신 러닝을 적용한 애플리케이션 개발의 차이를 알 수 있습니다.
전통적인 프로그래밍 방식과 다른 머신 러닝이 가지는 속성을 어떻게 애플리케이션에 녹여내고, 반영할 수 있는지 전체 과정을 보여줍니다.
머신러닝이 애플리케이션에서 없어서는 안 되는 무거운 상황을 가정하지 않습니다. 애플리케이션의 기본 기능에 영향을 미치지 않으면서 사용자에게 도움을 줄 수 있는 기능을 목표로 합니다.
마치 쇼핑몰 사이트에서 상품을 조회할 때, 페이지 아래에 나열되는 같이 구매한 상품 기능처럼 사용자에게 부가 정보를 제공하는 기능을 만들어가는 과정으로 진행합니다.
장점
생각보다 코드가 많지 않습니다. 중심을 코딩보다 개발에 두고 있음을 알 수 있습니다.
다양한 이미지를 통해 이해를 돕고 있습니다. 현재 하는 작업이 어떤 역할이며 무엇을 하고 있는지 글로 풀어 알려주면서 적재적소에 이미지를 배치하여 정리해 줍니다. 작업이나 개념 사이 관계나 하고자 하는 바를 이미지로 보여주므로 설명만으로는 이해하기 어려운 부분에 쉽게 다가가게 합니다.
각 장마다 마무리에서 그 단원의 내용을 정리합니다. 생각보다 많은 도움이 됩니다. 책을 통해 프로그램 개발의 전체 사이클을 살피고자 하기 때문에, 특정 부분을 깊이 파고들기보다 각 장은 전체 개발 단계 가운데서 한 부분씩 맡고 있습니다. 그래서 알리고자 하는 목표가 있습니다. 마무리에서 해당 장의 목표를 위해 무엇을 다루었고 설명했는지 정리합니다.
느낌
머신러닝을 애플리케이션에 적용하는 게 어떤 것인지 감을 잡을 수 있습니다. 머신러닝을 배운 뒤 어떻게 활용할지 막막한 경우, 개발은 하지만 머신러닝과 엮으려면 어디서부터 손을 대야할지 알 수 없을 때, 머신러닝을 적용하여 개발하면서 단계별로 놓친 건 없는지 확인할 때 모두 유용하다고 생각합니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
추천 대상:
한줄평: 데이터 수집, 전처리, 학습 … 이제 이걸 가지고 뭘 하지?
“머신러닝에 대해 배운다” 라고 하면 대부분의 커리큘럼은 갖가지 알고리즘과 그 작동 방식에 대해 배우는 것부터 시작한다. 가장 간단한 형태의 모델부터 최신의 복잡한 구조의 모델까지 훑고, 토이 데이터셋으로 실습까지 진행한다. 머신러닝이라는 기술을 구현하기 위한 대략적인 지식을 얻게 되었다면, 그 다음에는 이 질문이 떠올라야 한다.
“그럼 이제 이걸 가지고 뭘 하면 되지?”
머신러닝, 딥러닝, 인공지능이라는 신박한 기술이 소개되어 사람들을 매료시키던 시대는 이제 지났다고 할 수 있다. 기술은 실제로 사용이 되어야 그 가치가 있는 것과 마찬가지로 머신러닝 모델 또한 사용자에게 서비스가 될 때 진정한 가치가 있다. 우리는 지금 이 기술을 활용한 제대로 된 제품을 만들어 내야 하는 시기에 있다.
머신러닝 파워드 애플리케이션 은 책 제목 그대로 머신러닝 기술에 기반한 제품(서비스)를 만들기 위한 내용을 담고 있다. 따라서, 현업에서 머신러닝 기술을 연구하는 단계가 아닌, 실제로 적용한 비즈니스 진행시켜야 하거나, 머신러닝 엔지니어로서 취업/이직을 고려하는 사람에게 적합하다. 단, 이 책은 머신러닝에 대한 기본적인 개념이 잡혀 있다는 것을 전제로 하고 있기 때문에, 초심자에게는 권하지 않는다. (머신러닝 개발자와 커뮤니케이션이 자주 발생하는 기획자는 업무에 참고할 만 하다.)
머신러닝 파워드 애플리케이션 은 머신러닝 기반 제품을 만들기 위한 아주 좋은 가이드북이다. 책에서 참고할 수 있는 내용들은 다음과 같다.
이 책은 기본적으로 다양한 예시를 들어 머신러닝 기반 제품이 만들어지는 과정을 설명한다. 따라서 읽는 사람에 내용의 흐름이 약간은 혼란스러울 수 있다. 일반적인 내용만 파악하더라도 실제로 만들고자 하는 서비스를 구현하는데에는 충분히 참고할 수 있는 책이기 때문에, 예시와 예제 코드에 너무 집중할 필요는 없다고 생각한다.
또한 위에서 서술한 바와 같이 머신러닝의 기초적인 내용은 다루지 않기 때문에, 어느 정도 개념이 잡힌 상태에서 읽는 것을 권장한다.
+) 현업 CTO / 머신러닝 엔지니어 / 데이터 사이언티스트 들의 인터뷰는 피가 되고 살이 되는 조언들이 담겨있으니 꼭 읽어보자 !!
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
머신러닝/딥러닝을 공부하면서 들었던 생각은, "내가 하는 이 작업이 과연 쓸모있는 일일까?"라는 것이었다. 단순히 현업에서 당면한 문제를 해결하기 위해서 머신러닝/딥러닝을 이용할 수는 있지만, 당장 문제를 해결하는 것과 전체적인 '서비스'를 만드는 것은 조금 다른 이야기인 것 같다. 서비스를 만드는 과정 속에서 머신러닝과 딥러닝 기법을 이용하는 것이 포함되는 것이고, 고객이 만족하는 서비스를 제공하는 것은 그것보다 더 큰 범위의 이야기를 만들어가는 것일테니 말이다.
그런 의미에서 에마뉘엘 아메장의 "머신러닝 파워드 애플리케이션"은 "머신러닝을 이용한 서비스"를 위한 학습 지침서가 될 수 있을 것 같다. 게다가 믿고보는 박해선님의 수준높은 번역으로 리뷰하는 시간동안 많은 것들을 배울 수 있었다.
본문에서 참조한 헨리크 크나베르크님의 삽화는 직관적으로 서비스를 개발할때 어떠한 관점으로 개발해야 하는지 이해하게 해주었던 것 같다. "최소기능제품(Minimum Viable Product, MVP)"을 빠르고 정확하게 구현해서 작더라도 한 사이클을 구현한 후에 이에 살을 덧붙여가는 방식이 고객의 요구를 잘 반영할 수 있는 방법이라는 것을 배울 수 있었다.
전체 서비스의 파이프라인을 구축하면서 '병목'지점을 찾아 개선하고, 데이터 수집과 준비부터 시작해서 핵심적인 ML 모델 개발과 고객에게 보여질 UI에 이르는 전체적인 과정을 빠르게 개발하고 개선하며 서비스의 완성도를 높여가는 것의 중요성을 배울 수 있었다.
아직 나만의 서비스를 완전히 구축해보지는 못했지만, 이 책을 벤치마킹하며 이미지 데이터 분석관련된 서비스를 토이프로젝트로 개발해봐야겠다. 본문에서 사용한 예제가 개인적으로는 친숙하지 않은 텍스트 데이터를 사용한 것이 조금은 아쉬우면서도, 한편으로는 텍스트 데이터를 다루는 것도 훑어볼 수 있었던 시간이었다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
머신러닝관련 애플리케이션을 구축하는 경험을 담은 책입니다. 저자는 다양한 머신러닝 프로젝트를 진행한 경험이 있는 것 같군요.
저자는 일반적인 애플리케이션 개발 과정과 근본적으로는 같지만 머신러닝 애플리케이션 개발 과정에서 다른 점이 어떤 부분인지 다양한 경험을 통해서 얻어낸 통찰을 쏟아 내고 있습니다.
- 경험적으로 해결책을 정의할 수 없는 문제에 적합한 시스템을 만들 때 특히 머신러닝이 유용합니다. ( 27쪽 )
- 비슷한 모델이나 데이터셋으로 만든 공개된 모델을 찾아보세요 ( 61쪽 )
- 머신러닝처럼 변화가 많은 분야에서는 기존의 방법을 잘 활용하는 것이 중요합니다. ( 62쪽 )
- 머신러닝은 반복적인 과정입니다. 모델이 어떻게 실패하는지 확인하는 것이 가장 성능을 빠르게 높이는 방법입니다. ( 67쪽 )
- 아직 필요하지 않는 것을 만들려는 충동을 억제하는 일입니다. ( 68쪽 )
- 방향을 잘못 잡으면 비용 손실이 매우 큽니다. ( 75쪽 )
- 전략이 세워진 후에 큰 데이터셋으로 사이즈를 늘리는 것이 합리적입니다. ( 93쪽 )
- 테스트 커버리지가 높으면 애플리케이션이 잘 동작한다는 강한 확신을 줄 수 있습니다. ( 176쪽 )
- 전체 훈련 세트를 전달하고 모델의 성능이 제품의 목표를 위해 정의한 요구 사항에 도달한다면 다음 단계로 이동해도 괜찮습니다. ( 193쪽 )
- 모든 데이터셋은 편향되어 있다는 가정에서 출발해 이 편향이 모델에 얼마나 영향을 미칠지 추정해야 합니다. ( 231쪽 )
저는 미래에 대한 두려움, 호기심 같은 것 때문에 몇년전 부터 머신러닝이나 딥러닝에 대한 책들을 읽고 있는데요. 지금까지 책을 읽으면서, 느낀건, '정말 대단한 기술이라는 것'과, '이걸 어떻게 애플리케이션으로 만들어 내는지'에 대한 의문이었습니다.
그러나 이 책을 읽으면서, 머신러닝 또는 딥러닝 애플리케이션을 어떻게 만들어 나가는지 전반적인 과정을 이해할 수 있었던 것 같아서 좋았습니다.
게다가, 저자가 일반적인 애플리케이션 개발 과정이라 말하는 MVP나 KISS와 같은 개념들은 정말 많은 생각을 하게 했습니다. 사실 맞는 이야기 인데 그 일반적인 과정이 우리 주변에서는 잘 지켜지지 않고 있는 경우가 많기 때문입니다.
( 특히 헨릭 크니버그의 블로그 내용을 인용하는 부분은 인상정이었습니다. https://blog.crisp.se/2016/01/25/henrikkniberg/making-sense-of-mvp )
머신러닝이나 딥러닝 분야는 아직도 활발하게 발전하고 있는 분야이기 때문에, 책도 많지만 조금만 깊이 공부하려고 하면 논문도 많이 봐야 하는 것 같습니다. 이런 경우 이렇게 한꼭지 정리해주는 책은 상당히 큰 도움이 됩니다.
그런 의미에서 이 책은 직접 머신러닝/인공지능 분야에 뛰어드는 개발자에게 도움이 될 것 같습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
머신러닝 구축의 핵심인
1. 주어진 특성에 맞는 올바른 머신러닝 방법 선택,
2. 모델의 오류와 데이터 품질 문제 분석,
3. 모델의 결과를 검증하여 제품의 품질 보장
위의 일련의 과정들을 안내하고 있다.
제품 아이디어에서 프로토타입 배포까지 전체 과정을 다루고 있기에
코딩 경험과 머신러닝 기초 지식을 가지고
머신러닝 기반 제품을 구축하는 방법을 배우는데 안성맞춤이다.
머신러닝 제품을 성공적으로 사용자에게 제공하려면
제품의 요구 사항을 머신러닝 문제로 표현하고, 적절한 데이터를 수집하고, 여러 모델을 효율적으로 반복하고, 결과를 검증하고, 견고한 방법으로 배포해야 한다.
1. 올바른 머신러닝 접근 방법 모색: 머신러닝 분야는 넓고 제품의 목표를 달성하기 위한 다양한 방법이 존재한다. 주어진 문제를 위한 최상의 방법은 성공 기준, 가용 데이터, 문제의 복잡성과 같은 많은 요소에 따라 달라진다. 이 단계의 목표는 올바른 성공 기준을 설정하고 적절한 초기 데이터셋과 모델을 찾는 것이다.
2. 초기 프로토타입 제작: 모델링 작업을 하기 전에 먼저 엔드투엔드 프로토타입을 만든다. 이 프로토타입은 머신러닝을 사용하지 않고 제품의 목표를 달성하는 것이 목적이다. 또한 최상의 머신러닝 적용 방법을 결정하는 데 도움이 된다. 프로토타입이 구축되면 머신러닝의 필요성을 알 수 있고 모델 훈련을 위해 데이터 수집을 시작할 수 있다.
3. 모델 반복: 데이터셋이 준비되면 모델을 훈련하고 단점을 평가할 수 있다. 이 단계의 목표는 오류 분석과 구현 사이를 오가며 반복하는 것이다. 이 반복 루프의 속도를 높이는 것이 머신러닝 개발 속도를 높이는 최상의 방법이다.
4. 배포와 모니터링: 모델이 좋은 성능을 내면 이제 배포를 할 단계이다. 배포된 후에 예상치 못한 이유로 종종 모델이 실패하는 경우가 있기 때문에 모델의 오류를 완화하고 모니터링 하는 방안을 마련하는 것 또한 아주 중요하다.
책의 목차는 아래와 같다.
이제 책의 예제를 따라가며 사용자가 글을 더 잘 쓰도록 돕는 '머신러닝 보조 글쓰기 애플리케이션' 을 구축해 볼 차례이다!
[나의 한줄 추천사]
머신러닝 어플리케이션의 전체 Life Cycle 경험하고 싶다면 이책을 보라
[책 추천 이유]
머신러닝 어플리케이션을 만들기 위해서 아이디어 부터 구현 배포 후 관리까지 중요 포인트를 “머신러닝 에디터” 어플리케이션 머신러닝 구축 "파이프라인" 만들어 보면서 뜬구름 잡지 않고, 직접 체험해 볼 수 있게끔 구성되어 있다. 무엇보다도 "박해선" 님이 옮기 셨기 때문에 믿고 봐도 된다.
[내가 찾고자 했던 질문들]
1.모델 실패를 감지하는 하는 방법은?
- 모델의 신뢰도 출력이 정확한지 여부를 추정한다.
분류모델 같은 경우 신뢰로를 추정하는데 사용할 수 있는 확률을 제공한다. 확률이 잘 보정되어 있다면, 모델이 불확실하게 판단하는 샘플을 감지하여 이 샘플의 결과를 사용자에게 제공할지 결정할 수 있다.
- 메인 모델이 실패할 것 같은 샘플을 감지하는 또 다른 모델을 만든다.
"필터링 모델"을 만들어서 앞단에서 메인 모델을 타기전에 다른 방법으로 처리할지에 대해서 판단하여 오류를 최소화시킨다.
2.모델의 재학습 주기는?
- 대부분의 모델은 일정수준의 성능을 유지하기 위해 정기적으로 업데이트해야 한다. 모델이 더 이상 최신이 아니어서 재학습이 필요할 때를 "정확도 모니터링"이 감지할 수 있다. "정확도"가 일정부분이 떨어지고 있다면, 재학습이 필요한 시점이므로, 정확도 임계치 모니터링을 통해 정할 수 있다.
3.수정된 모델을 안전하게 평가하는 방법은?
- 현재의 모델을 일단 유지하면서, 동시에 수정된 모델도 같이 추론하는 "Shadow mode" 로 모델을 배포한다. 하나의 쿼리로 "기존모델", "수정모델" 동시에 추론시키고, "기존모델"의 로그와 "수정모델"의 로그를 비교 평가하여 "수정모델"을 사용할지 결정하는 방법이 있다.
4.데이터 학습할 때 고려해야할 질문들은?
- 사용하고 있는 데이터를 어떻게 수집했나요?
데이터 소유권 문제 (유럽 GDPR 규정), 데이터 편향
- 이 데이터셋으로부터 모델이 어떤 가정을 만든나요?
- 이 데이터셋이 유용한 모델을 만들기에 충분한 대표성을 띠고 있나요?
테스트 세트에 모든 사용자의 유형을 대표하는 샘플을 포함해야한다.
- 훈련한 모델이 어떻게 잘못 사용될 수 있나요?
피드백 루프에 빠질 수 있다.
- 예상하는 모델의 사용 범위는 무엇인가요?
5.좀더 알고 싶다면?
https://github.com/hundredblocks/ml-powered-applications
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
작년에 출간 소식을 접했을 땐 막연히 박해선 역자님의 신간이 출시 되었네 한 번 읽어봐야겠다라고 생각했던 책이었습니다. 출간 이벤트 때 책과 연이 닿지 않았고, 당장 필요한 책은 아니어서 찜 목록에 잠들어 있었습니다. 3월 리뷰 도서 리스트에서 다시 만났을 때도 제목만 보고 뭐 서빙 도구들을 연결하고, 연구와는 다른 접근법이 필요하다 정도의 상투적인 내용이지 않을까 지레짐작하며 희망 도서 3권 중 한 권으로 선택했습니다. 택배 파업으로 다소 늦게 선정 된 도서를 받았고, 책을 머릿말과 베타리더들의 추천사를 읽으면서 내가 짧은 식견으로 책을 섣불리 판단하고 만나지 못 할 뻔 한것을 깨달았습니다.
책의 부제는 완성된 제품까지
를 이야기하면서 상품으로 완성돼가는 머신러닝
모델을 이야기하고 있습니다. 이 책을 꼭 제품이나 서비스 구축을 위해서가 아니라 머신러닝을 이제 막 시작한 프로그래머, 좀 더 깊게 부딪히려는 초보 연구자 등 다양한 스펙트럼의 사람들에게 필요하단 생각이 들었습니다.
파트 1의 제목인 올바른 머신러닝 접근 방법 모색
은 이 분야에 종사하는 모두가 알아야하는 내용이라고 생각합니다. 이 전 글들에서 한 두 번 언급한 내용이지만 2016년 알파고 이 후 인공지능/머신러닝
관심도가 수직 상승해 이제는 비전공자도 단어 정도는 익숙해진게 지금의 20년대입니다. 투자와 관심이 늘었지만, 머신러닝이 단 하나의 만능열쇠인줄 알고 사용하거나 요구하는 경우가 아직도 너무 많습니다. 전통적인 방식이 성능과 리소스 면에 우수하지만 인공지능을 써야만 한다면서 때로는 너무 과한 리소스와 복잡도를 감수하는 경우가 있습니다. 혹자는 NLP는 다 같은 언어 모델이라고 생각해 저 모델로 저건 되는데 이건 못 할게 뭐 있냐면서 분류와 기능을 구분짓기를 어려워 하기도 합니다. 제가 인공지능을 처음 배울 때 교수님 강조 하셨던 것은 이 문제를 인공지능이 아닌 다른 방법으로 풀 수 있는지 먼저 고민해라
이었습니다.
제품화하는 것은 연구 단계와는 다른 치열함을 가지고 있습니다. 때로는 연구보다 더 엄격하고 깐깐한 잣대를 들이밉니다. 돈을 받고 누군가에서 재화를 제공하는 일은 그렇습니다. 그래서 이 책에서 다루고 있는 내용은 단순히 점수가 잘 나오는 모델을 만드는 법이 아니라 당장 사용할 수 있게 단단하게 쌓여 올려가는 과정을 다룹니다. 단순히 모델 가중치를 어떻게 웹으로 보여주고 이걸 서비스하는 방법이 아니라 서비스를 위한 데이터를 어떻게 수집하고, 검증하고 모델을 그에 맞춰 발전시켜가는 방법을 다루고 있습니다. 연구는 하나의 지표에서만 성능이 잘 나와도 괜찮은 경우가 있습니다. 속도는 다소 떨어져도 정확도가 높은 모델, 같은 정확도로 경량화 된 모델 등등 연구 초점에 따라 중요시 여기는 포인트들이 다르고 해당 포인트들만 만족시키면 됩니다. 하지만 서비스 되는 모델들은 이렇게 연구실에게 만들어지고 다듬어진 모델들을 곧장 쓰기에는 여러문제에 봉착합니다. 그러한 문제를 어떻게 접근해서 풀어갈지 푼 이후에는 이제 파이프라이닝을 하고 모니터링까지 모델을 서비스에 적합하게 만들어 낸 이후 서비스를 최소 단위에서부터 점차 키워나가고 있습니다.
이 책은 연구와 서비스를 위한 모델은 어떻게 다르며, 머신러닝이라는 풀이법을 어떻게 들고 접근해야하는지 나누고 있습니다. 저는 이 책을 인공지능 분야에 종사하는 모두가 읽어보면 좋겠다고 생각합니다. 연구와 서비스는 분명 결이 다르고, 누가 더 힘들고 어려운 일을 하냐는 판가름 낼 수 있는 영역은 아닙니다. 연구의 성과가 있기에 서비스를 위해 튜닝과 재설계가 가능하고, 여러 모델들의 집합체이기 때문에 제 글의 일부 표현 때문에 연구자 분들에게 상처가 되지 않았으면합니다.
난이도: 중
추천대상: 인공지능 및 머신러닝 종사자 전반
한빛미디어 2022 도서 서평단 "나는 리뷰어다"
의 일원으로 도서를 제공받아 작성한 리뷰입니다.
그러나 머신러닝 프로젝트를 설계하고 진행한다면 (모델링 이상으로 프로젝트 배포와 운영까지), 그 내용을 다루는 블로그 글은 거의 찾아보기 힘들 것입니다.
이와 관련해서 도움을 줄 수 있는 책이 머신러닝 파워드 애플리케이션이고, 책도 두껍지 않아서, 1주일이면 충분히 읽고, 프로젝트를 빌드해 볼 수 있는 책이라 생각합니다.
추가로 프로젝트 운영에 관해 함께 언급되어 있는 논문들도 책에 포함되어 있고, 전문가들의 Q&A 내용도 있어, 보다 현업에서 프로젝트를 어떻게 리딩해 나가는지에 대한 내용들을 함께 확인할 수 있습니다.
* 해당 리뷰는 한빛 미디어 "나는 리뷰어다" 활동을 위해서 책을 제공받아 작성된 서평입니다.
이 책은
머신러닝 모델의 동작 방식과 관련된 자료는 많지만, 머신러닝 서비스에 대한 내용을 다룬 자료는 별로 없는데,
아이디어를 머신러닝 서비스(어플리케이션)으로 구축하는 전반적인 과정을 다루고 있는 책이다.
어떤 사람이 이 책을 보면 좋을까?
비지니스적인 문제를 머신러닝으로 해결하고 싶은분께 이 책을 추천한다. 어떤 문제의 경우 머신러닝이 적합한지를 다루고 있으며, 머신러닝을 학습한 후 프로토타입을 거쳐 실제 고객들에게 서비스 되는 전체 흐름과 배포 이후 모니터링하는 전체 과정을 설명하고 있다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
만약 여러분이 직접 만든 추천 시스템 Machine Learning Model을 여러 사람들에게 서비스하고 싶다면 ?
여러분들은 다양한 Dataset으로 훌륭한 Data Preprocessing을 할 수 있고, 훌륭한 직감을 가지고 있으며 훌륭하게 여러분의 Model을 Tuning 할 수 습니다.
수 없이 많은 .fit()을 호출하면서 Accuracy / ROC-AUC 등의 지표를 보면서 더욱 나은 성능이 나올 수 있도록 Model을 만들 수 있는 능력이 있습니다.
하지만, 여러분들이 훌륭하게 동작하는 Model을 만들 수 있는 능력이 있다고 하더라도, 그 Model을 이용하여 실제 서비스를 구축하는 것은 완전히 다른 문제입니다.
거대한 서비스에 Machine Learning Model을 적용하는 것은 다양한 능력이 필요합니다. Machine Learning 자체에 대한 능력뿐만 아니라, 전체적인 서비스가 작동하는 방식에 대한 이해도 요구됩니다.
서비스가 필요로 하는 Machine Learning Model이 무엇인지에 따라서 어떤 방식의 Machine Learning 기법을 선택할 지, 실제 적용시에 오류와 실제로 수집되는 Data를 바탕으로 Model을 어떻게 Update할 지와 같은 다양한 문제는 매우 어려운 문제들입니다.
여러분들이 이런 문제를 고민하고 있거나, 실제로 Machine Learning Model을 서비스에 적용해야 한다면 이 책을 추천드립니다.
시중에는 Machine Learning / Deep Learning 자체를 다루는 훌륭한 책은 매우 많이 있습니다.
하지만, Machine Learning / Deep Learning을 이용해서 만든 Model을 실제로 서비스에 적용할 수 있도록 도움을 줄 수 있는 책들은 거의 없습니다.
이 책은 Machine Learning Model을 서비스에 적용하기 위한 모든 과정을 설명해 줍니다.
관련된 예제 Code들과 오랜 경험을 가진 저자의 조언을 함께 할 수 있기 때문에 목표 달성에 큰 도움이 될 것입니다.
필자는 이 책을 통하여, 다양한 실제 경험을 바탕으로 실질적인 서비스 구축에 도움이 되는 Know-How를 전수하고 있습니다.
또한, 실제로 Model을 서비스에 적용해 가는 과정을 예제 Project를 통해서 설명하고 있습니다.
최근 YouTube를 통해 광고를 하고 있는 ‘Grammarly’와 유사한 구현해 가는 과정을 설명해 줍니다.
이 책은 다음과 같은 독자분들에게 추천드립니다.
Part I에서는 우리가 구현하고 실제 적용하고자 하는 서비스에 대해서 구체적으로 어떤 기준으로 성공/실패를 판별할지와 최초의 Dataset은 어떻게 선택하고 모을지에 대한 초기 계획을 결정하는데 도움을 줄 수 있는 여러 조언들이 실려있습니다.
서비스에 처음 Machine Learning을 적용하려고 한다면, 과연 이 작업이 Machine Learning 기법 적용이 적합한지부터 판단해야 할 것입니다.
기존의 전통적 Programming 방식을 사용중이고 이미 훌륭한 성능을 내고 있는데, Machine Learning을 적용해야 하는지에 대한 고민부터 Machine Learning 적용한다면 분류(Classification) 문제인지 회귀(Regression) 문제인지 등을 판단해야 합니다.
또한, Machine Learning을 적용하려면 Data는 어떻게 수집하며 어떤 종류의 Data가 필요한지에 대한 고민을 반드시 해야할 것 입니다.
Baseline Model의 성능 평가 방법에 관한 고민도 하여야 할 것입니다.
Part I에서는 위와 같이, Machine Learning을 서비스에 적용하기 위한 최초의 고민들에 대한 실질적이고 유용한 정보를 얻을 수 있습니다.
Part II에서는 실제 Machine Learning을 사용하지 않고 Prototyping을 하는 방법에 대해서 이야기합니다.
Prototype에서 Machine Learning을 사용하지 않는 이유는 Prototype때 Machine Learning을 사용하지 않는 것이 오히려 가장 적합한 Machine Learning Model을 선택하는데 도움이 되기 때문입니다.
이번 Part에서는 Prototyping에 대한 기본적인 규칙 및 기본적인 Data Preprocessing 작업에 대한 Know-How를 공유합니다.
대부분의 Machine Learning / Deep Learning 관련 교육이나 책에서는 최초부터 깔끔하게 Preprocessing을 거친 Dataset이 제공이 되고, Model 그 자체에 교육이 집중됩니다.
하지만, 현실적으로 Data 준비에 굉장히 많은 시간과 노력이 들어갑니다. 이 책은 다른 교육이나 책에서 간과한 이런 부분들에 대해서 현실적인 도움을 줍니다.
Part III에서는 앞에서 Prototype으로 모은 Data를 바탕으로 실제 적용할 Model을 Train시키고 성능을 높이는 과정을 설명합니다.
Machine Learning / Deep Learning Model의 선택 / 구현 / 측정 / 분석의 반복에 대해여 설명하고 Know-How를 공유합니다.
최초 Model 선택시에 어떤 사항들을 고려해야 하는지, 최초 시도 Model 구현시에 어떤 open source library or framework을 이용하여 빠르게 구현해야 하는지와 이런 선택에서 실제 배포시에 고려해야 할 것이 있는지 등과 같이 Model 관련 중요 사항에 대해서 이야기 합니다.
또한, Model 뿐만 아니라 Model 만큼 중요한 Data 생성 방법 및 주의 사항들에 대해서도 이야기합니다.
이 Part에서 가장 중요하다고 할 수 있는 부분은 Model의 Debugging입니다.
사실 이 부분은 Machine Learning / Deep Learning Model 책이나 교육에서도 잘 다루지 않는 부분이라고 생각합니다. 그 이유는 고려해야할 사항들이 워낙 많고 영향을 미치는 변수들이 많기 때문에 어떤 것이 정답이라고 단정적으로 말하기 어렵기 때문일 것입니다.
이 책은 성능에 영향을 줄 수 있는 다양한 요소들을 설명해주며 실질적 Debugging 방법을 공유합니다.
Part IV에서는 Train된 Model을 실제 서비스에 적용하는 방법에 대해서 다룹니다.
Model 자체는 훌륭할지 모르지만, 적용 방법에 따라서 실패하는 경우도 있으니, 이 Part에서는 실무에서의 범할 수 있는 오류를 줄이고, Model이 잘 작동하는지 Monitoring하는 방법에 대해서 다룹니다.
배포 방식에 따른 고려사항들, Server / Client 고려 사항
Data 수집시에 고려해야할 사항 ( 윤리적 문제 / 소유권 문제 )
Model이 잘못된 동작을 하고 있을 때 대처 방안
모니터링에 관련해서도 어떤 요소를 모니터링 할 것인가와 같은 이야기를 하게 된다.
또한, Update된 Data로 성능이 좋아진 Model을 어느 시점에 재배포를 할 것인지 그리고 어떤 방식으로 재배포를 할 것인가에 대한 이야기를 하게 된다.
이 책은 Machine Learning Model을 실제 서비스에 적용하고는 싶은데, 어디서부터 무엇을 어떻게 해야 할 지 막막한 분들에게 단비같은 책입니다.
다만, 이 책에 담겨있는 모든 내용들을 모두 자신의 것으로 만들기 위해서는 다방면에 대한 지식이 필요하다는 것이 조금 부담스러울수는 있지만, 저자가 다년간 쌓은 Know-How를 얻을 수 있다면 충분히 도전해 볼 가치가 있다고 본다.
목차
[PART I
올바른 머신러닝 접근 방법 모색
]
CHAPTER 1
제품의 목표
를
머신러닝 문제로 표현
하기
CHAPTER 2
계획 수립
하기
[PART II
초기 프로토타입 제작
]
CHAPTER 3
엔드투엔드 파이프라인
만들기
CHAPTER 4
초기 데이터셋 준비
하기
[PART III
모델 반복
]
CHAPTER 5
모델 훈련과 평가
CHAPTER 6 머신러닝 문제
디버깅
CHAPTER 7
분류기
를 사용한
글쓰기 추천
[PART IV
배포와 모니터링
]
CHAPTER 8
모델
배포 시 고려 사항
CHAPTER 9
배포 방식
선택
CHAPTER 10
모델 안전장치
만들기
CHAPTER 11
모니터링
과
모델 업데이트
본문
예제 코드는 파이썬 사용하며, 깃허브로 코드 제공
머신러닝 에디터를 직접 구현해보는 등
유용한 예제 수록
코드와 그림
풀컬러
구성
현업 기술자들의 인터뷰를 통한 실용적인 조언 수록
책의 특징
1. 아이디어에 불과했던 프로젝트를 실제 애플리케이션으로 구현 할 수 있습니다.
2. 머신러닝 모델을 도입하는 방법, 잘못되기 쉬운 부분과 특별히 주의해야 할 사항에 대한 실용적인 조언이 수록되어, 해당 문제로 인한 시간 소모를 줄일 수 있습니다.
추천 독자
1. 프로그래밍 경험과 머신러닝 기초 지식을 가진 누구나
2. 데이터 과학자, 머신러닝 엔지니어로 현업에 종사하는 개발자
3. 코딩은 모르지만 데이터 과학자와 함께 일해야 하는 직군
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
아이디어가 현실이 되는, 나만의 머신러닝 애플리케이션 구현하기.
사실 이 책을 고른 배경에는 옮긴이가 박해선님이었던 것도 이유가 컸다. 워낙 AI 관련 도서를 많이 번역하시고, 혼공머신이라는 책도 냈던 분이라 기본적으로 책에 대한 궁금증이 생겼다.
이 책에서는 머신러닝의 기본 지식을 자세히 설명하기 보다는 머신러닝 기반 애플리케이션을 구축하기 위해 필요한 단계별로 실용적인 가이드를 제공하고 있다. 그러므로 이 책은 독자가 이미 프로그래밍에 어느 정도 익숙하다고 가정하고 있으며 주로 python을 이용한 예제 코드를 제공한다.
이 책은 머신러닝에 대한 전체적인 흐름을 볼 수 있는 책이다. 머신러닝 공부를 하다보면 그래서 개념도 어느정도는 알겠고 실습도 해본 적이 있는데, 이걸 뭐 어떻게 활용하라는거야?라는 의문이 든적이 있었다면, 이 책이 그에 대해 조금이나마 도움을 줄 수 있을 것 같다.
* 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
처음에는 도서명을 보고 '머신러닝'을 배운다는 것은 알겠는데 구체적으로 무엇을 배우는 것일까 의문점이 들었다. 그리고 머신러닝하면 굉장히 어렵다는 인상도 있어서 이름이 생소한 만큼 내용도 꽤 어렵지 않을까라는 두려움도 있었다. 그런데 막상 책을 펼쳐보니 생각했던 것과는 전혀 다른 인상이었다. 우선 머신러닝이 무엇인지도 설명하지만 가장 인상 깊었던 것은 머신러닝이 모든 것의 해법이 될 수는 없다는 것이었다. 다른 머신러닝 책들을 보면 딥마인드의 알파고 마냥 적용만 하면 안되는 것이 없다는 지나친 기술을 향한 낙관론만 설파하기 때문에 나에게는 신선한 것으로 다가 왔던 것이다. 그래서 시도하는 프로젝트가 먼저 머신러닝에 맞는 유형인지를 파악하고, 만약 적합하다면 어떤 모델을 써야할지도 신중하게 선택해야 한다는 것이다.
그리고 그냥 글로만 설명해서는 이해가 가지 않는 내용을 독자들이 아주 쉽게 이해할 수 있도록 그림과 도형 등 시각화로 표현했는데 금방 해당 용어가 의미하는 바를 머리로 체득할 수 있었다. 예를 들어 '바운딩 박스', '분할 마스크'가 각각 무엇인지와 차이점은 무엇인가를 고양이 그림을 통해 쉽게 설명하였다. 굳이 구구절절한 문장이 필요 없는 것이다.
결론적으로 말하면 이 책은 머신러닝을 이용한 애플리케이션을 개발하기 위해 필요한 모든 것을 담고 있는 책이다. 그래서 앞서 언급했지만 과연 머신러닝에 적합한 것인지 설명하는 것처럼 애플리케이션을 제작하기 위해 반드시 검토해야할 사항을 처음 부분부터 2부 전까지 페이지를 할애하였다. 즉, 직접 파이썬으로 구현해보는 머신러닝의 각종 모델, 유형은 조금 진도가 나가야 진행이 되지만 이 '기획'이라는 단계를 절대 소홀히 하지 않고 저자가 큰 심혈을 기울였구나라는 것을 느낄 수 있었다.
이 책에서는 머신러닝을 이용한 애플리케이션을 개발하기 위해 필요한 것을 담았다고 했으니 그 예제로 어떤 가상의 프로젝트를 제시했을 것이다. 그것이 바로 머신러닝 에디터이다. 글을 쓸 때 고쳐야 할 점을 머신러닝이 미리 학습한 모델을 통해 제안을 제공해주는 것이다. 그렇다보니 다른 머신러닝 책들과 차별화된 점이 있었는데 '테스트', '디버깅' 같은 내용을 다루었던 것이다. 이러한 내용은 소프트웨어를 개발할 때 반드시 거쳐야 하는 필수 단계이므로 단순히 머신러닝이 아니라 머신러닝을 이용한 소프트웨어를 개발하기 위한 과정에서는 반드시 설명이 필요한 것이다. 책 후반부에 '배포'와 '모니터링'이 포함되는 이유도 바로 그 때문이다.
이 책이 도움을 줄 수 있는 독자 층으로는 '머신러닝'을 공부하시거나 관심이 있으신 분들이다. 그러나 그냥 데이터 분석을 위해 통계적 도구로 사용하려는 사람보다는 정말 머신러닝 기능을 적용한 소프트웨어를 만드는 사람들에게 더 유용할 것으로 보인다. 머신러닝을 사용해서 큰 수익 얻을 수 있는 주가를 추천해주는 애플리케이션을 만드는 사람이 있다고 해보자. 그런 분들에게 매우 큰 도움이 될 것이다. 단지 기술적 활용 뿐만 아니라 각각의 단계에서 고민하고 생각해봐야 하는 것을 제시해주니 애플리케이션 제작에 좋은 지침서가 될 것이라 확신한다.
머신러닝 파워드 애플리케이션은 머신러닝 모델을 장착한 실용적인 애플리케이션을 만드는 방법을 다루는 책입니다. 머신러닝의 도움을 받을 수 있는 실용적인 문제를 식별하고 이런 문제를 위해 성공적인 솔루션을 제공해주고 있습니다. 또한 고수준의 제품 목표에서부터 시작해 머신러닝을 활용해 결과를 만들어내는 도전적인 작업을 완수할 수 있도록 돕고 있습니다.
이 책은 파이썬을 사용하기 때문에 파이썬에 대한 기본 문법을 알고 있으면 많이 도움이 됩니다. 또한 머신러닝 알고리즘의 내부 동작을 다루지는 않기 때문에 기본적인 머신러닝 개념을 알고 있다는 전제하에 씌여진 책이라고 보면 됩니다
머신러닝 애플리케이션을 배포하기 위해서는 1. 올바른 머신러닝 접근 방법 모색, 2. 초기 프로토타입 제작, 3. 모델 반복, 4. 배포와 모니터링의 과정을 거칩니다. 이 책에서는 이 4단계의 과정을 모두 다루고 있습니다.
1. 올바른 머신러닝 접근방법을 모색하기 위해 먼저 제품의 목표를 머신러닝 문제로 표현하는 방법에 대해 다룹니다. 또한 어떻게 계획을 수립하는지에 대해서 다루고 있습니다.
2. 초기 프로토타입 제작하는 방법을 다루기 위해 엔드투엔드 파이프라인 만드는 방법과 초기 데이터셋을 준비하는 방법을 다룹니다.
3. 모델 반복의 과정을 위해 모델 훈련과 평가, 머신러닝 문제 디버깅, 분류기를 사용한 글쓰기 추천에 대한 내용을 다룹니다.
4. 배포와 모니터링 과정을 위해 모델 배포 시 고려 사항, 배포 방식 선택, 모델 안정장치 만들기, 모니터링과 모델 업데이트에 대해 다룹니다.
300 페이지가 조금 안되는 분량에 많은 내용을 다루고 있습니다. 코드는 꼭 필요한 부분만이 포함되었고, 어려운 개념을 쉽게 설명하기 위해 그래프, 표, 그림을 많이 첨부하였습니다. 하지만 개발 환경을 다루는 부분과 기본적인 모델에 대한 알고리즘에 대한 내용을 다루지 않아 약간 아쉽습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
옛 속담에 '구슬이 서 말이라도 꿰어야 보배'라는 말이 있는데, 인공지능 분야야 말로 이 말에 딱 맞는 예라 할 수 있다. CNN, GAN, LSTM, 미디어파이프 등 다양한 패턴이나 알고리즘에 대해 아무리 많이 알고 있다고 해도 이것들을 제대로 응용하지 못한다면, 아무 쓸모없기 때문이다.
하지만 그 응용 방법을 배울 기회가 적다는 근본적인 문제가 있다. 현재 인공지능 애플리케이션들이 많이 등장하고 있지만, 인공지능이 모든 프로그램에 적용되는 것이 아니다 보니, 인공지능 프로젝트에 참여할 기회가 많은 편은 아니다. 그리고 인공지능 분야는 경험에 따른 노하우 능력 차이가 워낙 커서 소위 초짜의 진입 장벽이 높다. 결국 해본 사람이 계속하게 되는 빈익빈 부익부 상태가 되고 있다.
실무 개발 기회가 적다고 암울해질 필요는 없다. 다행스럽게도 에마뉘엘 아메장의 저서, '머신러닝 파워드 애플리케이션'을 통해, 누구나 머신러닝 애플리케이션 프로젝트에 함께하며 얼마든지 노하우를 쌓을 수 있는 기회를 얻을 수 있다.
이 책은 머신러닝 프로그램 개발 처음부터 끝까지 모든 과정을 담았다. 사용자가 글을 더 잘 쓰도록 돕는 문장 추천하는 '머신러닝 에디터'를 개발하겠다는 단순한 아이디어 상태부터 시작해서, 이 개발 목표를 머신러닝 문제로 어떻게 표현할지 맨 먼저 검토해보고, 초기 계획에 맞춰, 가장 간단한 프로토타입을 만들어 본다. 그리고 데이터를 어떻게 구하고, 가공과 테스트는 어떻게 할지 점진적으로 구체화하며, 모델도 만들어 보고, 디버깅, 배포와 모니터링도 하며 머신러닝 애플리케이션을 완성한다.
전체적인 개발 과정을 보고 있으면, 저절로 애자일 개발방법론이 떠오른다. 머신러닝 애플리케이션 개발도 동일한 과정이 적용되는 것이다. 다만 기존에 프로그래밍 관련 책과는 다르게, '머신러닝 파워드 애플리케이션'에서는 파이썬 코드가 나오긴 하지만 코딩 자체 비중은 적다. (전체적인 코드 분석은 깃허브를 통해 독자가 스스로 해야 한다) 거의 대부분이 머신러닝 애플리케이션 실제 개발에 관련된 내용이다.
어떤 데이터가 유용한지, 데이터를 벡터화하고 군집 클러스터를 만들고 테스트하는 법, 학습 시에 발생할 수 있는 문제들, 어떤 사이트가 도움이 되고, 오픈 데이터, 오픈 소스 사용법, 방법에 따른 장점과 단점 등 기존의 인공지능 책에서 보지 못한 실무에 유용한 조언들을 가득 담고 있다. 심지어 저자의 경험 이야기만으론 부족했는지, 링크드인 외에 다양한 AI 전문 기업의 지인들의 견해와 노하우도 Q&A 방식으로 독자에게 알려주고 있다.
그리고 이것을 박해선 번역자도 제대로 한 몫 하며 거들고 있다. 곳곳에 옮긴이 주석을 달아서, 책 원본에 부족하거나, 추가로 설명하고자 하는 것들을 마구마구 담은 것이다. 역자의 이런 노고가 좀 더 완성도 높고, 독자에게 도움이 되는 '머신러닝 파워드 애플리케이션'을 만들었다 생각한다.
그런데 '머신러닝 파워드 애플리케이션'은 인공지능 이론을 가르쳐 주는 책이 아니다. 어디까지나 실무 개발 방법을 다룬 책이다. 그만큼 쉬운 책이 아닌 것이다. 적어도 중급서 이상으로 파이썬은 기본으로 알고 있어야 하고, 인공지능에 관련된 지식도 갖추고 있어야 한다. 책 자체의 설명은 어렵지 않으나, 일반적인 수준의 머신러닝 관련 내용은 자세한 설명 없이 이야기하고 있으므로 모르는 부분이 있다면, 주석을 참고해서 일일이 찾아 볼 필요가 있다. 인덱스까지 포함 303쪽의 그리 많아 보이지 않은 분량의 책이지만, 저자가 참고하라는 거, 주석, 내가 모르는 파트 같은 거 다 찾아가며 보면, 절대 작은 분량이 아니다.
머신러닝 프로그램의 잘못된 결과는 데이터의 문제, 모델링의 문제, 학습의 문제 등에서 발생한다. 그렇기 때문에 저자는 아파트 임대 예약이나 환자 희귀 질병 예측 같은 예를 들어가며 발생할 수 있는 여러 조건과 문제 상황에 대해 말하고, 개선 또는 해결 방법을 말하고 있다.
인공지능 관련 책을 보면 다들 느끼겠지만, 인공지능은 1+1=2처럼 딱 떨어지는 게 아니고, 대충 2쯤 된다 그런 느낌을 받는다. 2가 정답이지만, 학습을 잘못하면, 3이나 1이 나와 잘못된 결과를 얻을 수 있는 것이다. (물론 연산을 인공지능으로 구현하진 않을 것이다. 그냥 예다.) 2라는 정답이 간단해 보여도, 인공지능에서는 이것을 제대로 도출하는 것이 개발자의 노하우이자, 능력인 것이다. 그러기 때문에 책에 나온 저자의 경험과 조언은 시행착오를 줄이고, 제대로 된 결과를 얻는데 많은 도움이 되는 것이다.
'머신러닝 파워드 애플리케이션'처럼 실무 측면에서 머신러닝을 다룬 책은 이번에 처음 접한다. 실제 머신러닝 애플리케이션을 어떻게 개발하는지 확실히 엿보고 배울 수 있는 책이었다. 머신러닝 실무를 배운다는 생각으로 봐도 좋겠지만, 책 구성 상, 저자와 함께 프로그램을 한 단계 한 단계 올라가며 만들어 본다는 느낌으로 보면 더 현실감을 느끼며 볼 수 있을 거 같다. 이 책이 모든 머신러닝 작업에 표준이 되지는 않겠지만, 적어도 개인적으로는 머신러닝 프로그램을 개발하게 된다면, PC 옆에 두고, 자주 보며, 참고할 거 같다.
21세기의 연금술로 떠오른 ML이 현실적으로 적용된다면 이 책에서 소개하는 방법을 숙지하는 것도 좋다.
책의 현업자들이 지적하는 대로 ML을 반드시 모든 분석 프로젝트와 앱 서비스에 넣어야 될 필요는 없다. 뭔가 그 연금술의 멋져보이는 면에 현혹되어 한 삽으로 뜨면 해결될 걸 굳이 포크레인으로 뜨는 무리는 하지 말자는 거다.
사실 ML은 요 근 몇 년간 이론 중심적으로 많이 홍보된 게 사실이다. 그걸 전공한 석박이 강의를 해서 그럴 수도 있지만 ML서비스를 만드는 것에 관심이 있는 사람이 그 모든 이론을 꿰고 연구급의 이해력을 갖춰야 되는 건 아니라고 본다. 그저.. 잘 만들어진 알고리즘을 잘 갖다붙이는 정도만 해도 될 것 같다(이게 쉽다는 건 아님).
그 유명한 박해선 님이 번역한 거라 그런지 옮긴이 특유의 주석이 많고 책을 이해하는 데 도움이 된다.
이젠 좀 나오는 책들이 현실적으로 DS, ML을 적용한 사례를 많이 보여줌. 그래서 좋다고 생각한다.
현실의 문제는 데이터를 '갖고오느냐!!'부터 시작한다. 저자도 이 부분을 언급하고 있음. 실제로 공장자동화 이런 부분은 데이터 협조도 안되는 경우가 많음. 갠적으론 그렇기 때문에 이런 전체적인 플로우로 데이터 분석 및 그 주변 작업? 을 소개하고 갈쳤으면 어떨까.
다음은 주요 내용 정리.
머신러닝을 해결할 수 있는 문제는 무엇인가?
- 완벽한 규칙이 존재하는 도메인은 ML을 사용할 필요가 없다. 예) 세금 앱
- 명확한 논리가 존재하는 문제는 ML을 사용하지 않아도 된다.
- 정답이 있는 지도 학습 -> 정답이 없는 비지도 학습의 경우 일부 현업자는 부정적인 의견을 공유한 적이 있다.
알고리즘을 구현하기 전에 할 것
- 직접 알고리즘이 되어보기
: 데이터를 사용하지 않고 사전 지식으로 원하는 답을 만드는 방법을 정의해보기
-> 이렇게 하는 이유: 기준 모델을 빨리 구현하고 모델을 평가하는 척도로 사용하기 위해. 즉 부분에 매몰되지 않을 수 있음.
ML 프로젝트에서 초점을 맞춰야 할 곳
: 성능 병목. 간단한 모델부터 시작해서 전체 파이프라인 디버깅. 즉 목표 Y값이 간단하고 쉬운 단계부터 예측하는 모델로 시작해보는 거다. 의외로 많은 문제가 이런 간단한 모델에서 끝날 수도 있음
전체 파이프라인 구축 후 성능 병목을 찾을 떄
: 했다치고 결과 상상하기. 즉 이 프젝을 완료했을 때 내가 SNS나 기사에 어떻게 발표할 건지. 도움이 되었는지를 생각해보라. -> 배포에 필요한 노력을 낮추도록 인프라를 구축하는 게 도움이 됨.
raw data를 들여다보기
: raw data를 들여다보는 것은 항상 옳다. 수동으로 읽어보기-> data literacy가 생각나는 대목.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
이 책을 읽기 위해 필요한 것!
프로그래밍 능력, 파이썬 기본지식, 머신러닝 기본개념!
초심자를 위한 책은 아니라고 생각한다.
지금 까지 수많은(?) 책을 읽고 예제를 돌리고 데이터를 대입하며 ..
어쩌라고!! 하고 좌절한 사람들에게 필요한 책이다.
머신러닝의 기본인 데이터를 다루는 방법에 대하여 코딩과 함께 설명해준다.
이 얼마나 친절한가?!
머신러닝은 데이터와의 싸움이다. 올바른 데이터 셋을 구성하고 정제하고 테스트하고 다시 분석하는 무한 반복의 굴레의 어디쯤 원하는 결과가 있다.
우린 이미 충분히 성능좋고 멋진 라이브러리가 많다.
이젠 데이터에 충분히 집중해.볼 필요가 있다.
이 책은 왜 좋은 데이터가 필요한지 어떻게 좋은 데이터를 만들고 사용하는지를 알려준다.
What이 아닌 Why와 그 답인 How에 대한 친절한 지도서다.
왜 결과가 원하는 것과 달랐는지 머리를 싸맸다면 이제 이 책을 읽고 원하는 데이터를 고르고, 이미 있는 데이터를 읽고 재활용 해보자 문제 해결을 위해 구체적으로 무엇을 해야하는지 잘 알려주고 있다고 생각한다.
머신러닝을 이용하여실용적인 애플리케이션을 제작하고자 하는 이들에게 좋은 지침이 될만한 책이 출간되었다. 바로 ‘머신러닝 파워드 애플리케이션 (원제:Building Machine Learning Powered Applications)’. 머신러닝의 인기만큼 머신러닝을 소개하고, 모델 만들고 훈련시키는 방법을 다룬 책들은 많지만, 머신러닝을 이용하여실제 애플리케이션을 구축하는 과정에 대해 제대로 설명하고 있는 안내서를 찾기는 쉽지 않다. 이 책은머신러닝을 이용한 애플리케이션을 만들고 배포하고자 할 때, 프로젝트의 진행에 따라 무엇을 고민해야할지에 대한 실용적인 가이드를 해주고 있다.
저자에 따르면아이디어로부터 머신러닝 애플리케이션 배포를 하는 전체 과정은 다음의 4단계로 이루어진다고 한다.
1. 올바른 머신러닝 접근방법 모색
2. 초기 프로토타입 제작
3. 모델 반복
4. 배포와 모니터링
첫 단계인 ‘올바른 머신러닝 접근방법 모색’에서는 제품의 목표를 달성하기 위한올바른 성공 기준을 설정하고, 적절한 초기 데이터셋과 모델을 찾는 것이 중요하다. 두번째 단계인 ‘초기 프로토타입 제작’은 모델링 작업에 앞서 머신러닝을 사용하지 않고 제품의 목표를 달성하는 엔드투엔드 프로토타입을 제작한다. 이 프로토타입은 최상의 머신러닝 적용방법을 결정하는 데 도움이 된다. 다음의‘모델 반복’ 단계는 모델을 훈련하고 평가하면서 점진적으로오류를 분석하고 모델을 다듬어나가는 과정이다. 마지막 ‘배포와모니터링’ 단계는 학습된 모델을 이용하여 적절한 방식을 통해 배포하는 과정에 대한 것으로, 모델의 오류를 완화하고 모니터링하는 방법을 다룬다.
이책의 전체적인 구성 역시, 저자가 제시한 4단계를 따르고있다. 각 단계에 필요한 내용과 개념을 보다 효과적으로 전달하기 위해,머신러닝 보조 글쓰기 애플리케이션인 ‘머신러닝 에디터’를만들어가는 과정을 담고 있다. 이 책의 예제로 등장하는 머신러닝 에디터는 사용자가 글을 더 잘 쓰도록돕는 시스템, 특히 더 좋은 질문을 쓰도록 도와주는 것을 목표로 한다.예제프로젝트를 통해 실전과 같은 고민을 해 볼 수 있고, 예제코드는 깃허브에서 받아볼 수있다.
또한, 책의 전반에 걸쳐 머신러닝 전문가와의 인터뷰및 조언이 포함되어 있는데, 실제 애플리케이션을 구축하고 서비스하면서 얻은 다양한 노하우 및 실용적인충고를 담고 있다.
*한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
※ 한빛미디어 2021 도서 서평단 "나는 리뷰어다"의 일원으로 도서를 제공받아 작성한 리뷰입니다.
Author: 에마누엘 아메장 지음 / 박해선 옮김
출판사: 한빛 미디어
Score /5: ⭐️⭐️⭐️⭐️⭐️
[이 책의 대상 독자]
시중에는 많은 머신러닝 책이 있다. 그 중에서도 특정 알고리즘이나 특정 프레임워크에 초점이 맞춰져 있는 책이 많은 것도 사실이다. 그렇게 특정 프레임워크에 대한 부분을 읽고 나면 남는것은 생각보다 많지 않다.
그런 의미에서 이 책을 보면 전체 사이클을 진행하면서 해당 과정을 이해할 수 있다.
나는 머신러닝에 대해서는 초보자이므로 일단은 가벼운 마음으로 이 책을 보기 시작했다. 이 책에서 내가 느낀 부분은
해당 책이 '정말 친절하다' 라는 것이다. A에서 Z까지 가는 과정을 정말 상세하고도 이해하기 쉽게 풀어 냈다. 소위 술술 읽히는 책이 이 책이 아닐까 한다.
이 책은 전체적인 머신러닝 사이클을 배울 수 있으므로 처음 배우는 사람이나 아니면 실무에서 고생하고 있는 실무자도 모두 하나의 레퍼런스로 삼기에 충분한 책이다.
※ 이 책은 한빛 미디어의 지원으로 작성된 글입니다
프로그래밍 언어를 배우기 시작하면 보통 해당 언어로 “Hello World”를 출력해보면 접근하듯, 머신러닝을 처음 배우면 대부분 mnist의 숫자 분류나 iris 붓꽃 분류를 해보며 코드를 작성하기 시작한다. 그리고 여러가지 알고리즘과 모델에 대해 배우고 시행 착오를 거치며 하이퍼 파라미터 튜닝을 하곤 한다. 하지만 언제나 그렇듯 실제 업무에선 이 단계들만 신경쓰는 거 만으론 부족하다. (4대 천왕 중 한 명인 앤드류 응 교수의 발언 덕분에 좀 나아지긴 했지만) 여전히 많은 사람들에게 경시당하는 데이터 수집 및 라벨링부터, 지속적인 운영을 위한 배포와 모니터링까지 하나의 “application”으로 동작하기 위해 더 많은 단계를 신경써야 한다.
이 책은 대부분의 사람들이 관심을 갖고 해보길 원하는 알고리즘과 모델에만 집중하지 않고 “application”의 관점에서 단계별로 어떤 부분을 신경써야 하는지 초보자들에게 알려주는 일종의 machine learning관점의 software engineering 책이라는 생각이 든다. 일부 사람들에게는 책의 분량에 비해 코드가 적어서 실망할 수도 있겠지만, 조교수로 시작해서 기업의 AI 책임자가 되면서 느낀 문제점 때문에 이런 전체적인 관점에서 머신러닝을 이야기하는 책을 쓰지 않았을까 하는 생각이 들었고, 개인적으로는 지금 재직하는 회사에서도 비슷한 문제를 가진 개발자들을 볼 수 있어서, 실무에서도 필요하고 도움이 되는 책이란 생각이 들었다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다
본 책의 머리말에도 적혀있는데, 이 책은독자가 프고그래밍에 어느정도 익숙하다는 가정하에 쓰여져 있고, 제예재코드는 주로 파이썬을 사용하여 설명하고 있다. 파이썬과 R을 전문적이진 않지만 바이오 분야의 전공자로서 그나마 조금 다루고 사용해볼 수 있었따.
[PART I 올바른 머신러닝 접근 방법 모색]
CHAPTER 1 제품의 목표를 머신러닝 문제내용 로 표현하기
CHAPTER 2 계획 수립하기
[PART II 초기 프로토타입 제작]
CHAPTER 3 엔드투엔드 파이프라인 만들기
CHAPTER 4 초기 데이터셋 준비하기
[PART III 모델 반복]
CHAPTER 5 모델 훈련과 평가
CHAPTER 6 머신러닝 문제 디버깅
CHAPTER 7 분류기를 사용한 글쓰기 추천
[PART IV 배포와 모니터링]
CHAPTER 8 모델 배포 시 고려 사항
CHAPTER 9 배포 방식 선택
CHAPTER 10 모델 안전장치 만들기
CHAPTER 11 모니터링과 모델 업데이트
이 책은 실용적인 머신러닝에 대해 다루고 있다. 검색엔진, 소셜 플랫폼 추천 시스템, 번역 서비스, 사진에서 얼굴 감지 시스템 등 다양하게 사용되고 있는 머신러닝을 배울 수 있고, 활용 예제코드가 수록되어 있다.
머신서링의 전체 과정에 대해 이 책에서는 아래의 단계로 소개하고 있다.
1. 올바른 머신러닝 접근 방법 모색
2. 초기 프로토 타입 제작.
3. 모델 반복
4. 배포와 모니터링
머신러닝의 반복 루프는 분석, 접근방법 선택, 수현, 측정을 통해 이루어 진다.
머신러닝에서는. 모델 파이프라인 성능이 나쁘다면 모델의 품질 때문인지, 버그 때문인지 알수 있는 가장 좋은 방법은 점진적인 방식을 따르는 것이며, 데이터 흐름부터 시작해서 훈련능력, 마지막으로 일반화 추론의 디버깅을 진행하는 것이다.
위와 같은 내용들이 다양한 예제들과 함께 실용적으로 쓰여진 책으로 머신러니에 대해 상당한 전문 지식이 있어야 소화가 가능한 책이다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
머신러닝 파워드 애플리케이션
지음: 에마뉘엘아메장 / 옮김: 박해선
저자 에마뉘엘아메장은 한국어판 서문에서 데이터 과학자와 머신러닝 엔지니어가 이 분야에서 성공하는데 필요한 실용적인 기술을 배울 수 있도록 멘토링을 했었다.
2년간의 멘토링을 마친 후 이 책 『Building Machine Learning Powered Appliction』(오라일러 2020)을 집필했다.
멘토링을 하면서 머신러닝 모델의 작동방식 가르치는 과정은 많지만 머신러닝을 제품에 사용하는 방법에 초점을 맞춘 자료는 부족하다는 것을 깨닫고 멘토링 과정에서 배운 교훈을 실리콘밸리를 넘어, 더 많은 사람들과 공유하기 위해 이 책을 썼다고 했다.
저자는 책 출간하고 1년후에 프랑스어, 중국어로 번역되고 한국어로도 번역되게 되었다며
이 책에 담긴 도구와 조언이 다양한 사람들에게 유용하다는 사실에 정말 기쁘다며, 독자들의 의견과 질문이 있다면 언제든 연락 바란다고 했다.
이 책은 저자가 말했듯이
• 머신러닝을 사용해 실용적인 애플리케이션 만들기
• 실용적인 머신러닝
• 기술적이고 실용적인 사례연구
• 실제 비즈니스 애플리케이션을 다루고 있다
머신러닝 전체 과정을 다루고 있다.
멘토링 과정의 경험을 통해 머신러닝 적용의 어려운 문제들을 해결하면서 터득한 4가지에 중점을 두고 있다.
올바른 머신러닝 접근 방법 모색
주어진 문제를 풀기 위한 최상의 방법은 성공기준, 가용 데이터, 문제의 복잡성과 같은 많은 요소에 따라 달라진다.
이 단계의 목표는 올바른 성공기준을 설정하고 적절한 초기 데이터 셋과 모델을 찾는 것이다.
초기 프로토 타입 제작
모델링 작업을 하기 전에 먼저 앤드투앤드 프로토 타입을 만든다.
이 프로토 타입은 머신러닝을 사용하지 않고 제품의 목표를 달성하는 것이 목적이다. 또한 최상의 머신러닝 적용방법을 결정하는 데 도움이 된다. 프로토 타입이 결정되면 머신러닝 필요성을 알수있고 모델 훈련을 위해 데이터 수집을 시작할 수 있다.
모델 반복
데이터 셋이 준비되면 모델을 훈련하고 단점을 평가할 수 있다. 이 단계의 목표는 오류 분석과 구현 사이를 오가며 반복하는 것이다.
이 반복 루프와 속도를 높이는 것이 머신러닝 속도를 높이는데 최상의 방법이다.
배포와 모니터링
모델이 좋은 성능을 내면 배포를 위해 적절한 방법을 선택해야 한다.
배포된 후에 예상치 못한 방식으로 종종 모델이 실패한다.
이 책은 제시한 4가지를 중심으로 다양한 머신러닝 적용사례를 제시하고 문제해결의 어려웠던 부문을 잘 설명하고 있다.
4차 산업혁명 시대를 맞이하여 산업계에서는 디지털 변환이 확산되고 있다. 금융, 마케팅, 제조 등의 산업현장의 디지털 혁신 과정에서 머신러닝 기술 적용이 늘어나고 있다.
현재 머신러닝 개발에 종사하고 있는데 문제해결에 어려움이 있다면, 무엇이 문제인지 고민하지 말고 일독을 통하여 문제해결의 실마리를 발견할 수 있는 기회가 되기를 바란다.
또한, 머신러닝 분야에 관심을 갖고 있다면 필독서로 추천한다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
[도서 소개]
머신러닝 기반 애플리케이션을 설계, 구축, 배포하는 과정에 필요한 모든 기술을 설명하는 책이다. 초기 아이디어가 제품으로 개발되기까지의 과정을 머신러닝 에디터 예제 프로젝트를 통해 순서대로 배운다. 데이터 과학자, 소프트웨어 엔지니어, 제품 관리자가 머신러닝 애플리케이션을 단계별로 구현하는 데 필요한 도구와 실무에서 맞닥뜨리게 되는 도전 과제와 모범 사례를 살펴본다. 유용한 코드와 친절한 그림, 업계 리더와의 인터뷰를 통해 실용적인 머신러닝 개념을 터득해 본인만의 머신러닝 애플리케이션을 자신 있게 구현해보자.
[대상 독자]
- 프로그래밍 경험과 머신러닝 기초 지식을 가진 누구나
- 데이터 과학자, 머신러닝 엔지니어로 현업에 종사하는 개발자
- 코딩은 모르지만 데이터 과학자와 함께 일해야 하는 직군
[주요 내용]
- 제품의 목표를 정의하고 머신러닝 문제를 설정합니다.
- 첫 번째 엔드투엔드 파이프라인을 빠르게 만들어 초기 데이터셋을 획득합니다.
- 머신러닝 모델을 훈련, 평가하고 성능 병목을 해결합니다.
- 제품 환경에 모델을 배포하고 모니터링합니다.
[추천평]
머신러닝에서 가장 어려운 부분인 문제 정의, 모델 디버깅, 배포를 건너뛰는 책은 너무나 많습니다. 하지만 이 책은 이런 문제에 초점을 맞춰 이야기를 풀어갑니다. 이 책을 읽으면 아이디어에 불과했던 프로젝트를 큰 영향을 발휘하는 애플리케이션으로 만들 수 있습니다.
-알렉산더 구드(Intuit 데이터 과학자)
머신러닝 모델을 도입하는 방법, 잘못되기 쉬운 부분과 특별히 주의해야 할 사항에 대한 실용적인 조언을 찾고 있다면 바로 이 책이 답입니다. 10년 전에 이 책을 읽었더라면, 교훈을 찾아 헤매던 시간을 단축할 수 있었을 겁니다.
-루카스 텐서(트위치 ML 수석 매니저)
[서평]
머신러닝 파워드 애플리케이션은 머신러닝 기반 애플리케이션을 사용하는 목적과 만드는 방법 까지 배울수 있다. 파트 1에서는 올바른 머신러닝 접근 방법에 대해서 설명 하고 있다. 먼저 어떤 작업이 가능 한지 예상을 하고 작업 범위와 문제점에 대해서 예상을 하며 계획을 수립하는걸 배운다. 파트2에서는 초기 프로토타입 제작에 대해서 배웁니다. 먼저 End To End 파이프라인 만들기를 합니다. 가장 쉬운 프로토타입을 만들고 워크플로 테스트를 합니다. 초기 데이터셋을 준비하고 레이블링으로 데이터 트렌드를 찾고 데이터를 활용한 특성 생성과 모델링을 합니다. 파트3에서는 모델 훈련과 평가 그리고 머신러닝 문제 디버깅, 분류기를 사용한 글쓰기 추천 모델을 만드는걸 배웁니다. 파트4에서는 모델 배포시 고려되는 사항에 대해서 배우고 서버, 클라이언트 배포등 하이브리드 방법까지 학습 합니다. 마지막으로 모니터링과 머신러닝을 위한 CI/CD 모델 업데이트 구축하는 방법을 학습합니다.
머신러닝 파워드 애플리케이션은 처음 아이디어에서 부터 머신러닝 애플리케이션 개발/배포까지 모든 과정을 배울수 있는 책으로 기존의 레거시 앱을 어떻게 머신러닝 애플리케이션으로 만드는지 굼궁한 독자라면 많은 가장 좋은 참고서가 될것이라 생각합니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
머신러닝 관련 학습 경험이 거의 없는 상태로 입문서와는 거리가 먼 책을 수령하게 되어 약간 당황스럽기는 했지만, 책이 다루고 있는 전반적인 내용의 흐름을 바탕으로 서평을 작성하기로 했습니다.
이 책의 모토는 아이디어에서 시작해 완성한 애플리케이션을 배포하는 단계까지 머신러닝 전체 과정을 다루는 것이라 생각합니다. 아이디어에 맞는 올바른 머신러닝 접근 방법, 초기 프로토타입 제작, 모델링 및 반복, 배포와 모니터링까지 넓은 범위의 내용을 순차적으로 다루고 있습니다.
이 책에서는 개념을 설명하는 과정에서 '머신러닝 에디터'라는 머신러닝 기반 글쓰기 보조 프로그램 예제를 제작하는 방식을 활용합니다. 이를 통해 텍스트 데이터를 다루는 것에 익숙해질 수 있으며, 실용적인 제품을 만드는 과정을 직접 경험할 수 있습니다.
단순히 책에서 다루는 예제의 제작 환경만을 다루는 것이 아닌, 다양한 조건에서 어떠한 접근 방식을 취하는 것이 유리한지, 어떤 방향으로 모델을 작성하거나 학습을 진행해야 할 지 모두 고려하여 기술하고 있습니다.
한줄평
AI 장인이 되고 싶다면 읽어야 할 책으로 매우 적합하다. 머신러닝을 조금은 아는데 파이프라인 설계나 이런 부분에 있어 경험적으로 부족하다면 이 책은 그 길에 좋은 길잡이가 될 것이다. 저자의 깊고 다양한 경험, 그리고 ML의 권위자의 인터뷰로 꽉찬 이책은 부족한 경험을 채워주고 마치 선배가 AI를 잘가르쳐준다는 느낌을 준다.
난이도
이 책의 난이도는 중급에서 고급이다. 기본적인 머신러닝에 대한 이해도는 있어야 이 책을 제대로 수용이 가능하다.
재질 / 쪽수 / 가격
매트지 / 304 / 27000원
장점
일단 컬러라서 너무나 좋다. 책이 너무나 아름답다는 느낌을 준다.
내가 책을 읽을 때 중요시 여기는 부분은 그거 어디 인터넷에서 퍼온글로 이루어진게 아닌 저자의 경험이 녹아들어가있는가이다.
근데 이 책은 그부분에 있어서 완벽하다. 해당 글은 다음과 같다.
- 경험적으로 해결책을 정의할 수 없는 문제에 적합한 시스템을 만들 때 특히 머신러닝이 유용하다.
- 가장 좋은 방법은 기존의 결과를 이해하하고 재현해보는 것입니다.