- 머신러닝 실무 프로젝트: 실전에 필요한 머신러닝 시스템 설계, 데이터 수집, 효과 검증 노하우 도서 요약
- 문제를 정의한다.
- 머신러닝을 사용하지 않는 방법은 없는지 검토한다.
3. 시스템을 설계한다.- 사용할 알고리즘을 선택한다.
5. 특징과 정답 데이터, 로그를 설계한다.- 데이터를 전처리한다.
- 학습을 수행하고 파라미터를 튜닝한다.
- 시스템에 통합한다.
일괄 학습과 순차 학습의 차이는 학습 도중 최적화하는 방법의 차이, 그리고 한 번에 다루는 데이터 덩어리의 크기 차이.
예측 단계는 학습 단계에서 적용한 학습 방식이나 처리 방법과 상관없이 배치 처리와 실시간 처리가 모두 가능하다.
학습을 수행할 때는 배치 처리를 적용하는 편이 시행착올르 줄이는데 유리하다.
모놀리식 웹 애플리케이션에서 예측 처리를 통합하고 예측 결과 자체는 라이브러리의 API를 통해 구한 다음, 이 결과를 웹 애플리케이션에서 이용한다.
예측을 수행하는 부분을 별도 API 서버에 맡기는 패턴.
학습이 배치 처리로 이뤄진다는 점은 다른 패턴과 같지만, 예측 결과는 실시간으로 처리되어 API 를 통해 웹 애플리케이션에 전달된다. HTTP 나 RPC 요청의 응답으로 예측 결과를 전달하는 API 서버를 둔다는 점이 특징이다.
API 서버를 직접 구현하고 이 서버 앞에 로드밸런서를 두어 부하에 따라 예측 서버를 늘리거나 줄이는 구조가 필요하다.
퍼블릭 클라우드의 매니지도 서비스인 애저 머신러닝 이나 아마존 머신러닝 처럼 예측 처리용 서비스가 포함된 플랫폼을 이용하는 방법도 있다.
예측 모델을 오브젝트 스토리지 에 저장하고 API 서버는 도커 이미지로 만들어 일레스틱 컨테이너 서비스나 구구르 쿠버네티스 엔진을 통한느 방식으로도 규모확장이 손쉬운 환경을 구축할 수 있다.
웹 애플리케이션에 적용하기 가장 유리한 패턴으로 가장 먼저 시도할 방법으로 무난한 방법으로 소개된다.
학습 모델을 일괄 학습한 다음, 이 모델로 예측까지 배치 처리하고 그 결과를 DB 에 저장해 둔다.
웹 애플리케이션과 머신러닝 시스템은 순전히 DB만을 경유해 정보를 공유하니 구현 언어가 서로 달라도 무방하다.
실시간 처리로 학습해야 하는 경우는 어떤 상황인가?
실시간 추천의 경우 파라미터를 실시간을 갱신해야 한다.
이런 경우 입출력 데이터를 메시지 큐 등을 활용하여 주고받는다.
하지만 분류나 회귀 같은 작업에서 모델을 그렇게 즉각적으로 갱신해야 하는 일을 많지 않으므로 모델을 비교적 짧은 간격으로 갱신해야 한다면, 그 간격 동안 쌓인 데이터만을 배치 처리로 학습하되, 최적화에는 추가 학습이 가능한 미니배치 학습을 적용해보는것이 좋다.
참고 할 만한 아키텍처:
책 정보
- 아리가 미치아키, 나카야마 신타, 니시바야시 다카시, 『머신러닝 실무 프로젝트』, 한빛미디어(2018), 4.기존 시스템에 머신러닝 통합하기
0: https://github.com/OryxProject/oryx
1: http://jubat.us/ja/