<나는 리뷰어다> 머신러닝 실무 프로젝트

Review

Featured image

Table of Contents


서평

머신러닝을 기반으로 프로젝트를 수행하는 것은 여러가지 어려움이 존재합니다. 실제로 모델을 개발해서 서비스에 배포하기 위해서는 데이터 수집, 데이터 검증과 모델 개발과 같이 여러가지 복잡한 단계들을 관리하고 파이프라인으로 구축해야 합니다. 아래 그림과 같이 Google에서도 실제 머신러닝 모델은 머신러닝 시스템에서 차지하는 비중이 5%밖에 되지 않는다고 할 정도로 모델 이외에도 고려할 요소가 많습니다.

Untitled

그럼 머신러닝 시스템을 구축하기 위해서는 어떠한 과정들이 필요하고, 고려해아 할 요소들은 어떤 것들이 있을까요?

Untitled

책에서는 머신러닝을 실무에 사용하기 위해서는 우리가 어떠한 요소들을 고려하고 어떻게 효율적으로 사용해야 하는 가에 초점을 맞추고 알기 쉽게 설명합니다. 1부에서는 머신러닝 프로젝트를 수행하기 위해 알아야 할 지식과 실제 사례 연구를 기반으로 정리가 된 2부로 구성되어있습니다.

흥미롭게도 책의 초입에서는 머신러닝을 사용하지 않는 방법부터 설명합니다. 머신러닝 실무 프로젝트를 위한 책이 머신러닝을 사용하지 않는 방법부터 검토한다는 점은 흥미로울 수 밖에 없습니다!! 머신러닝을 사용하는 시스템을 구축할 때는 데이터 의존관계, 위와 같은 복잡한 파이프라인의 구축, 개발과 운영사이의 간극등을 통해 어려움을 겪습니다. 따라서 우리가 프로젝트를 수행하는데 있어서 실제로 머신러닝을 사용하는 것이 적합한 문제인지를 판단하는 과정은 필요합니다. 특히 이에 대한 저자의 문구가 인상적이었습니다.

머신러닝을 하고자 시작한 프로젝트라도 필요하지 않다면 머신러닝을 사용하지 않는 결정을 내리는 것을 두려워하지 말자. 머신러닝에 적합한 문제인지 확인한 후, MVP를 만들어 최소한의 콘셉트를 검증해 시스템 설계를 진행하자.

머신러닝이 적합한 문제에 대해서 저자는 아래와 같은 조건을 만족해야 한다고 합니다.

이를 통해 머신러닝이 적합한 문제라고 판단되었다면 아래와 같은 프로젝트 진행사항을 따르게 됩니다.

  1. 비즈니스 문제를 머신러닝 문제로 정의
  2. 논문을 중심으로 유사한 문제 리서치
  3. 시스템 설계를 고려
  4. 특징량, 훈련데이터와 로그를 설계
  5. 실제 데이터를 수집하고 전처리하는 과정
  6. 탐색적 데이터 분석과 알고리즘 선정
  7. 시스템 통합
  8. 예측 정확도 및 비즈니스 지표를 모니터링

머신러닝 알고리즘을 선정한 후, 검증 데이터에 대한 결과를 평가하는 과정은 데이터 과학자들에게는 익숙한 과정일 것으로 생각합니다. 일반적으로 회귀 문제에서 RMSE, 분류 문제에서는 Recall/Precision 과 같은 평가지표들을 사용하게 됩니다. 하지만 이는 머신러닝을 평가하는 지표일 뿐이지, 실제 비즈니스의 KPI와의 관계는 별개입니다. 두 지표의 차이를 항상 의식하고 예측 모델의 평가 지표 향상에만 몰두하지 않도록 주의해야 합니다.

특히 머신러닝을 이용한 결과가 비즈니스에 영향을 얼마나 미쳤는지를 판단하기 위해 온/오프라인에서 어떻게 A/B 테스트를 설계하고 수행하는지를 저자의 친절한 예시를 통해 설명하고 있어 이해하는데 있어서도 어렵지 않았습니다.

위와 같은 일련의 단계를 거친 후, 효과가 검증된 머신러닝 모델을 시스템에 통합하는 것은 데이터과학자들에게는 어려운 일입니다.

이는 데이터과학자의 KPI는 분석결과에서 도출한 후 액션이나 높은 정확도의 예측 모델을 사용한 매출 개선등으로 빠른 반복 주기의 시행착오를 중시하는 반면, 유지보수서성이나 재사용이 높은 코드를 만드는 것은 우선순위가 낮기 때문입니다. 또한 생성된 예측 모델을 실제 운영환경에 배포하고 예측 API서버를 통해 결과를 반환하는 구조는 안정성을 높이고 유지보수성이 높은 애플리케이션의 작성등은 데이터 과학자에게 어려우며 책임을 느끼지 못합니다.

따라서 전문 분야에 집중할 수 있도록 방법을 표준화하고 손십게 서빙할 수 있는 구조를 만들게 된다면, 운영환경에 쉅게 배포할 수 있으며, 과학자가 직접 애플리케이션 서버를 만들거나 최신 모델을 이용한 예측 결과를 시스템에 서빙할 수 있습니다.

이를 서빙뿐만 더 넓은 분야로 확장시킨 것이 MLOPS라고 할 수 있습니다. MLOPS는 ML 시스템 개발(dev)와 ML 시스템 운영(ops)의 통합을 목표로 하는 ML 엔지니어링 문화 및 방식이며 이를 통해 통합, 테스트, 출시, 배포, 인프라 관리를 비롯한 ML 시스템 구성의 모든 단계에서 자동화 및 모니터링을 지원할 수 있습니다.

하지만 머신러닝 인프라를 구축한다는 것은 매우 어려우며, 팀에서의 기술 스택이나 환경, 구성원의 스킬셋에 따라 선택할 수 있는 설계가 달라질 수 있습니다. 또한 조직이나 운영 목적에 따라 필요한 요소도 달라져 모든 조직과 상황을 동시에 만족시킬 수 있는 머신러닝 인프라는 존재하지 않습니다.

인프라를 구축하는 목적은 장기적인 시스템의 유지를 위해서이고, 이를 위해서는 모델을 자동으로 재학습해 제공하는 지속적인 학습이 중요합니다. 신속한 시행착오를 거치는 실험 주기와 운영 환경에서의 출시 주기의 거리를 줄여 투자한 머신러닝 시스템으로 지속적인 비즈니스 가치를 만들어 낼 수 있도록 해야 합니다.

모델 중심에서의 머신러닝을 다루는 것에서 더 나아가 이를 시스템적으로 도입하기 위해서 따르는 어려움과 그에 대한 해결책들을 다루고 있는 점이 인상깊었습니다. 물론 이 책을 읽는다고 바로 실무에 머신러닝을 활용한다는 것은 쉽지 않습니다. 하지만 이를 위해 단계별로 고려해야 할 요소가 무엇이고, 저자의 실제 경험 사례들을 바탕으로 성공적인 비즈니스를 위해서 중요한 개념과 테크닉등을 배워나갈 수 있습니다. 머신러닝을 기반으로 프로젝트를 수행하시는 누구라도 한 번쯤은 읽어봐야 할 책이라고 생각합니다.

* 한빛미디어 [나는 리뷰어다] 활동을 위해서 책을 제공받아 작성된 서평입니다.