[리뷰] 머신러닝 디자인 패턴



한빛미디어 출판사의 "머신러닝 디자인 패턴(발리아파 락슈마난, 세라 로빈슨, 마이클 먼 저/맹윤호, 임지순 역)"를 읽고 작성한 리뷰입니다.

표지


머신러닝 솔루션 구축을 위한 설계, 학습, 배포, 파이프라인, 서빙 등 워크플로 단계별 머신러닝 디자인 패턴을 30가지 유형으로 정리한 책이다.

프로그래밍 세계의 디자인 패턴과 마찬가지로 머신러닝의 제품화 또한 분야별 다양한 전문가들이 애용하는 디자인 패턴을 잘 숙지하여 활용한다면 잘못된 설계 및 구현으로 인한 시행착오를 줄일 수 있는 것은 물론 잘 고민된 패턴 덕분에 추후 유연한 확장성을 가질 수 있다.

문제는 머신러닝 솔루션이 출시된 역사가 매우 짧아 고수마다 개발하는 패턴이 제 각각이고 쉽게 공유되지 않아 나같은 초보자들이 참고할 만한 책을 찾기가 어려웠는데 구글 클라우드 플랫폼을 운영하는 저자들이 분야별 전문가들의 노하우를 30개 유형의 패턴으로 정리하여 드디어 참고할만한 서적이 생겼다는 점을 가장 큰 장점으로 소개할 수 있을듯 하다.

책에 소개된 30개의 패턴은 머신러닝 솔루션 구축에 필요한 거의 전 과정의 고민이 담겨있다. 데이터, 문제, 학습 등 모델 중심의 패턴부터 서빙, 평가, 워크플로, 파이프라인 등 인프라 중심의 패턴 그리고 의사결정을 위한 업무 운영을 위한 패턴까지 소개되어 있다.

책에 소개된 워크플로 단계별 30가지 패턴은 아래 그림에 잘 정리되어 있다. 전체정리

8장 말미에는 데이터 유형에 따라 흔히 사용되는 일반적인 패턴이 소개되기에 이미 실무에서 진행 중인 프로젝트가 있다면 해당 내용을 먼저 참조하는 것이 책의 빠른 이해를 위해 도움이 될 것 같다. 30가지의 패턴이 다루는 범위가 워낙 방대하기에 처음부터 읽어도 당장 필요로 하지 않는 것들은 망각되기 쉬워 학습 효율이 떨어질 수 있다.

예를 들면 컴퓨터 비전의 경우 책에 소개된 패턴 중 일반적으로 사용되는 유형은 리프레이밍, 중립 클래스, 멀티모달, 전이 학습, 임베딩, 멀티라벨, 캐스케이드, 2단계 예측으로 소개하고 있다.

이 중 개인적으로는 실무에서 고민했던 문제의 해결책인 멀티모달 패턴이 반가웠다. 깊이 있는 내용은 아니지만 머신러닝 업무를 진행한 적이 있는 이라면 누구나 한 번쯤은 고민해 볼만한 문제 중 하나이다.

예를 들어 책의 아래 이미지 예시와 같이 이미지와 tablular 데이터가 함께 입력으로 들어와 특정 값을 예측해야 하는 경우 이를 어떤 방식으로 결합하여야 하는지에 대해 고민하는 문제일 경우 멀티모달이 제시하는 패턴을 활용하면 절반 이상의 고민은 해결되는 셈이다. 멀티모달

각각의 소개된 패턴은 먼저 상황별 문제가 소개된다. 머신러닝 솔루션화에 있어 어떤 문제가 있는지 먼저 소개한 후 이를 해결하기 위한 방법으로 각 패턴을 소개한다.

이어서 패턴의 상세한 원리가 소개되고 그럼에도 발생할 수 밖에 없는 트레이드 오프는 무엇인지 소개하며 제시된 패턴의 개선을 위한 사용상의 유의점과 여지를 남겨둔다.

패턴 소개 마지막 부분에는 실질적으로 구현을 위한 Tensorflow, Keras의 API의 핵심 코드가 소개되며 빅쿼리 예시문도 자주 소개된다.

예를 들면 임베딩의 경우 텐서플로는 layers.Embedding 코드를 활용하고 특징 교차 생성 시 빅쿼리의 경우 ML.FEATURE_CROSS 코드를 활용한다는 식으로 예제 코드가 등장한다.

각각의 패턴을 특정 상황마다 그대로 따라 하는 것만으로도 훌륭한 지침서이지만 역으로 설계 단계에서 놓치는 부분이 없는지 고민을 위한 체크리스트 용도로도 제 격이라는 생각이 든다.

축적된 노하우의 역사가 다른 분야에 비해 비교적 짧은 머신러닝 솔루션 프로젝트는 아는 만큼만 보이는 함정에서 벗어나는 것이 매우 중요하다고 생각한다.

예를 들면 나 같은 경우 다양한 입력값에 유연하게 대비하기 위한 스테이트리스 서빙이나 트랜스폼 패턴의 존재 조차 몰랐다. 아마도 이런 패턴을 숙지하지 않고 아는 수준 정도로 개발하였다면 각 패턴마다 소개된 문제 혹은 트레이트 오프 부분에 영락없이 걸려 세월만 낭비하고 있었을 것이다.

그 외에도 워크플로 파이프라인, TPU Strategy 등의 분산 전략, 체크포인트 저장 전략 등의 패턴은 어렴풋이는 알고 있었지만 이 책 덕분에 보다 확실히 알 수 있게 되어 앞으로의 업무에 많은 도움이 될 것 같다.

특히 책 한 권으로 비즈니스 및 의사 결정까지 커버해 보려는 저자들의 꼼꼼함이 돋보였다. 7장에는 주로 책임과 관련된 패턴들이 등장하는데 이 영역은 개발 자체보다는 의사결정에 보다 초점을 맞춘 듯 하다.

물론 29 유형의 XAI 패턴의 경우 설명 가능한 AI를 위한 코드나 API들이 소개되긴 하지만 이는 궁극적으로 의사 결정을 위한 중요한 수단이 된다. 또한 30 유형의 공정성 렌즈 패턴의 경우도 편향으로 발생하는 차별적인 부분의 위험 회피를 위해 노력한다.

8장에서 개발을 위한 파이프라인과 완전 자동화된 프로세스가 분리되어 소개된 점도 많은 참고가 되었다. 은근히 헷갈렸던 부분인데 알기 쉽게 잘 정리되어 있다. 개발
자동화

지금까지 30가지 유형의 패턴을 일일이 다 정리하기에는 무리가 있어 개인적으로 필요로 했던 내용들을 중심으로 리뷰를 진행해보았다.

머신러닝을 입문부터 공부했던 독자라면 아마도 2 ~ 4장에 등장하는 패턴은 비교적 익숙할 것이다. 앞서 언급한 대로 모델이나 학습 중심의 패턴이 모여 있기 떄문이다. 임베딩, 앙상블, 전이학습, 하이퍼파라미터튜닝 파트는 따로 패턴을 읽지 않아도 대부분의 독자분들이 잘 숙지하고 있을 거라 생각한다.

그렇지만 그 중에서도 유용한 과대적합, 특징해시, 멀티모달, 특징교차 등 겪어본 적 없는 신선한 패턴도 상당수 등장하고 있다.

5 ~ 7장에 등장하는 패턴은 그간 입문서에 잘 소개되지 않은 부분으로 아마도 이 책을 표지나 제목만으로 구매하려 했던 독자라면 원하는 내용이 대부분 이 파트에 실려있을거라 생각한다.

스테이트서 서빙, 배치 서빙, 2단계 예측(모바일 등 엣지를 위한 버전 별도 운영), 키 기반 예측, 워크플로 파이프라인, 특징 저장소, 모델 버전 관리 등의 패턴은 특히 데이터 및 머신러닝 엔지니어 혹은 솔루션 개발자에게 매우 큰 도움이 될 것이다.

책의 수준은 다소 높다. 적어도 Python 프로그래밍, 자료구조 및 알고리즘, 머신러닝의 입문지식 및 기본 알고리즘 정도는 알고 있어야 이해에 큰 무리가 없을듯 하다.

엔지니어 분들은 물론 프로젝트를 총괄자나 의사결정권자도 전체 흐름을 파악하기에 매우 좋은 책이라는 생각이 든다.

앞서 언급했듯 머신러닝 패턴을 다루는 책은 워낙 희귀함에도 불구하고 이 책은 알기 쉽게 잘 정리되어 있고 비교적 짧은 용량 대비 실전에 적용하는데 무리가 없는 파급력을 갖고 있다고 본다. 머신러닝의 제품화를 꿈꾸는 모든 이에게 추천하고 싶다.







© 2019.04. by theorydb

Powered by theorydb