머신러닝 실무 프로젝트 2판(2022.03.10)
책의 앞머리에서 밝히는 바대로 어느 정도 실무를 하는 사람 입장에서 읽어보면 좋을 책이다.
팁도 일본인 저자들이 그렇듯이 꽤 상세하게 곁들여져 있어서 참고하기도 괜찮다.
확실히 이런 쪽은 방법이나 이론, 논문 등을 공부하고 습득하는 것도 중요하다. 그런데 또 동등하게 중요한게 하나의 실험을 통해 유의미한 결과를 활용한다는 측면에서 봐보자. 그 실험을 어떻게 설계하고 유지하며 좋은 결과를 내기 위해서 지속적으로 필요한 부분은 무엇인지 또한 중요하다. 이런 경우 이미 툴이나 기본적인 이론은 알고 있고, 이를 실무에 더 잘 활용하기 위해서는 또 그 부분에 대한 팁이나 다른 회사나 팀은 문제를 어떻게 해결하였는가가 궁금할 때가 있다. 정답은 없기 때문에 막힌 부분에 대한 참고를 통해 자기가 처한 상황에 더 나은 해답을 찾는 데에 길잡이가 될 수도 있기 때문이다. 그런 점에서 이런 책이 도울 수 있는 부분이 있다.
읽으면서 내가 막연히 막혔던 부분에서 떠오른 고민들이 텍스트로 적혀있어서 공감되는 부분이 있었다. 그리고 책 중간중간 삽입된 도표도 내용을 이해하는 데에 도움이 될 만큼 적절하게 삽입되어 있었다. 확실히 이론만 읽고 공부할 때보다 실무가 같이 적힌 내용을 읽는 것을 더 선호하는 타입이라는 걸 이번 기회에 다시 느꼈다. 실무에서 사용하는 툴들이 언급되면서 전체 그림을 그려주니까 내가 어디에 있는지도 파악하기 쉬웠고 연관되어서 도전해볼 만한 업무 부분 또한 찾기에 용이했다. 이곳저곳에서 들리던 데이터 관련 툴들도 책에서 어느 부분에 속하는지 분류된 정리 내용으로 살피니까 큰 그림으로 구조화하기도 좋았다. 몇 개 궁금한 데이터 툴이 눈에 보여 이 책은 몇 번 더 보기로 했다. 지금 하고 있는 일에도 적용할 부분이 보였다.
관리라는 측면에서 ML 또한 예외는 아니다. 여기 또한 인프라가 날로 중요해지고 있다. 획기적인 ML알고리즘은 소수의 실리콘밸리 박사님들에게 토스하고 잘 운영하는 법을 배우는 게 더 실무적이라고 생각한다.
책의 6장 지속적인 머신러닝을 활용을 위한 기반 구축하기 에 나온 내용도 공감이 갔다. 만약 들어오는 데이터의 성격이 바뀌거나 로직을 바꿔야 한다면.. 그리고 그런 상황이 '빈번하게' 일어난다면 어떻게 할 것인가? 이를 위해서 기민한 머신러닝 인프라가 필요하다. ML은 한번 만들고 끝이 아니다. 데이터가 살아있는 한 실험 또한 계속 업데이트 되어야 한다. 소프트웨어와 같으면서도 다른 맥락에서 말이다. 사실 그래서 이 6장이 실무적으로는 굉장히 중요하지 않나 생각한다. '지금 잘 하고 있나'를 평가하는 것은 실험에서도, 그리고 실험 이후에서도 매우 중요한 부분이다. 조금 시간이 지나다 보니까 이 6장의 내용을 재미있게 잘 읽을 수 있었다.
그리고 2부에서 머신러닝 실무 프로젝트를 통해 실제 문제를 어떻게 해결하는지에 대한 일본인 저자의 사고를 따라갈 수 있었다. 확실히 실무는 경험자가 어떤 생각으로 어떻게 문제를 해결하는가 그 관점을 참고할 수 있다는 것에서 장점이 있다.
1부 머신러닝 실무 노하우
- 운영 시스템의 머신러닝 제품 보완책
우수 실무 사례 : Rules of Machine Learning : Best Practices for ML Engineering
머신러닝 서비스를 성공시키기 위한 역할
- 도메인 지식을 가진 사람 : 의외로 많은 academic 수준에서 ML 초기에 놓치기도 하는데 생각보다 여기가 안되서 문제를 잘 해결하지 못하는 경우가 많다. 모든 문제의 원형은 이 도메인으로부터 나왔다.
- 통계나 머신러닝을 잘 아는 사람 : 머신러닝을 하려면 당연하겠다.
- 데이터 분석 인프라를 만드는 엔지니어링 역량을 가진 사람 : 이것도 참 정리를 잘했는데 결국엔 도시의 기반을 다지기 위해서는 하수도 시설 관리, 전기 시설관리 등이 중요하듯이 여기도 똑같다. 이런 기본시설 정비공들이 우수해야 성공할 수 있다.
- 실패 리스크를 책임지는 책임자 : ML로 실험할 사람, 실험 장비를 구비해줄 사람, 문제가 포함된 산업의 특징을 아는 사람만 있으면 이들은 모두 문제를 아주 잘 풀 수 있는 드림팀이다. 하지만 이 모든 것을 하나로 아우를 책임자가 필요한 법. 헤드의 부재는 생각보다 심각할 때가 있다. 일단 ML로 문제를 해결해야 되는지 여부부터 확인해줄 수 있어야겠다.
4장. 기존 시스템에 머신러닝 통합하기
- 배치 처리에서 학습을 수행하는 세 가지 예측 패턴과 실시간 처리 패턴
1. 배치 처리로 학습과 예측, 예측 결과를 DB에 저장하고 서비스를 제공
: 실시간으로 처리하지 않아도 되는 ML문제인 경우에 편리하게 할 수 있다. 그리고 웹 애플리케이션 언어와 다른 언어로 설계하기 좋은 구조다.
2. 배치 처리로 학습, 실시간 처리로 예측, 예측 결과를 API 경유로 제공
:웹 등의 클라이언트에서 예측 결과를 이용할 때 API를 통해 실시간으로 처리한다. 간단하게 테스트하려면 구글, 애저, 아마존 등의 머신러닝 서비스를 이용하면 된다. 여기서 ML DevOps 의 역할이 한번 언급된다.
3. 배치 처리로 학습, 최종단 클라이언트에서의 실시간 처리로 예측
: 학습모델을 클라이언트에서 이용할 수 있는 크기로 최적화해서 변환한다. 텐서플로가 파이썬 API도 제공하지만 모바일로는 텐서플로 라이트를 활용하면 된다. 모델관리, 배포 등에 신경써야 된다.
4. 실시간 처리로 학습, 예측, 서비스를 제공
: 실시간 처리로 해야 하는 문제들(슬롯 머신 알고리즘, 실시간 추천) 이 아니라면 배치처리로 학습하고 최적화는 추가 학습으로 하는 것을 권유한다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."