본문 바로가기

책읽기

[머신러닝 파워드 애플리케이션](에마뉘엘 아메장 著, 박해선 譯, 2021)

  • 조금은 낚인 기분
    • 책을 중간쯤 넘어갔을 때 남은 페이지를 확인해보고 든 생각이다.
    • 사실 이 책의 출간 소식을 듣고, 제목만 보고 기대했던 내용은 이랬다.
      1. 웹/앱에 머신러닝을 탑재하는 방법
      2. 지속적인 학습으로 성능을 유지할 수 있는 파이프라인을 구축하고 운영하는 법
      3. 한 발 더 나간다면, 웹/앱 사용자 행동으로부터 데이터를 수집하는 법
    • 올해 맡은 업무 중 하나는 데이터 수집과 웹 배포.
    • 여기에 머신러닝 어플리케이션을 하나씩 얹을 계획이라 이런 실용서가 몹시 필요하다.
    • 어쩌면 내 수요가 눈을 가려버렸는지도 모르겠다.
    • 하지만 이건 내 일방적인 기대였고, 책은 문제가 없다. 
    • 한편으로는 무게중심을 데이터에 놓는 것이 중요하다는 것을 다시 한번 깨닫게 해준다.

 

  • 이 책의 구성
    • 이 책은 머신러닝 애플리케이션을 개발하며 어떤 고민을 해야 하는지 체계적으로 알려준다.
    • 이 문제를 머신러닝으로 해결하는 것이 맞는지부터 시작해서,
    • 데이터를 어떻게 수집하고 처리할지,
    • 모델을 어떻게 훈련하고 평가하고 디버깅할지,
    • 그리고 무엇보다 MVP(minimum viable product)를 만들고 단계적으로 키워가는 법이 담겨 있다.

 

  • 머신러닝은 거들 뿐
    • 수록된 구루들의 인터뷰와 모범 사례를 보면 내가 3년 전 고민끝에 내린 결론을 다시 한번 확인하는 느낌.
      1. "생각을 잘 해야 한다" - 여기서 생각은 당면한 코드나 알고리즘이 아니다.
        • 문제 정의 자체가 제대로 되어야 하고,
        • 문제를 넓은 시야로 보면서 걸림돌을 찾아내야 하지만
        • 한편으로는 저 걸림돌을 제거하는데 시간을 투자해야 하나? 를 고민해야 한다.  
        • 손자병법에서는 싸우지 않고 이기는 것을 상선(上善)이라고 한다.
        • 코딩을 하지 않고도 문제를 푸는 길이 있다면 그 길로 가면 된다.
      2. "동작이 빨라야 한다" - 여기서 동작은 아이디어의 구현, 결국 대부분 코딩능력이다.
        • 아무리 아이디어가 좋아도 손발이 느리면 말짱 헛생각이다.
        • 특히 MVP로부터 진화시키는 과정은 수많은 시행착오를 당연시해야 한다.
        • 아이디어가 생기자마자 시스템에 옮기지 못하면 지연이 누적되는 건 피할 수 없다.
        • hwp, ppt를 붙들면 코딩을 못하고, 이 기간이 몇 주가 되는 건 순식간이다.
        • 본업과 무관한 자기만의 과제를 만들어 진행하는 것을 side project라고 한다.
        • 구글이 20% 시간을 투자하라고 푸시하는 대상이기도 하고, 데이터를 다루는 이들의 필수품이다.
        • 본업이 잠시 코딩을 놓아도 개인은 실력을 갈고 닦을 수 있고 아이디어와 인맥이 샘솟기 때문이다.
      3. "모니터링: 개념 탑재와 시각화 능력이 중요하다" - 길을 잘 가고 있는지를 확인해야 한다.
        • 피터 드러커의 명언, "측정할 수 없다면 관리할 수 없고 관리할 수 없으면 개선도 없다."이 있다.
        • 좋은 모델은 예측이건 분류건 일을 잘 하는 모델이다.
        • 좋은 모델을 만들려면 현재 모델을 개선시켜야 하는데, 어디를 개선할 지를 정확히 알아야 한다.
        • 그러자면 적절한 측정지표(metric)가 필요하고, 현황을 그림으로 그려야 한다.
        • 어떨 때 어떤 metric을 쓸 지는 개념에서 나오고
        • 적확한 시각화 방법을 선택하는 능력은 개념과 코딩 능력에서 나온다.
        • 황무지에서 길을 잃은 채로 열심히 가면 굶어 죽을뿐이다.
    • 이런 조건들이 갖춰진 뒤에야 머신러닝을 한다.
    • 머신러닝 파이프라인도 처음에는 최소한으로, 돌아가게만 짜고 필요에 의해 하나씩 붙인다.
    • 물론 텐서플로(케라스)나 파이토치같은 머신러닝 프레임워크 사용 능력도 코딩 기본기에 속한다.
    • 이 길을 가고 있는 사람이라면, 내게 부족한 것이 무엇인지를 끊임없이 묻고 파악해서 메워야 한다.

 

  • 숙제를 받은 느낌
    • "이 책을 따라서 하면 머신러닝 애플리케이션을 만들 수 있겠지"라는 기대를 가지고 읽기 시작했지만,
    • "이 책을 따라서 머신러닝 애플리케이션을 만들려면 참 많은 능력이 필요하구나"라는 사실을 깨달았다.
    • 지금 당장도 익숙치 않은 웹 애플리케이션을 만드느라 서버 구축과 관리부터 몸으로 배우는 중이다.
    • 그 중에서도 머신러닝의 핵심은 역시 데이터.
    • 이 책의 80% 가량이 데이터 이야기다.

 

  • 저자의 말에 깊이 공감하며 오늘도 데이터를 주무른다.
    • "대부분의 소프트웨어와 다르게 머신러닝 코드는 겉으로는 올바르게 작동하지만 완전히 잘못된 결과를 출력할 수 있습니다. 위와 같은 도구 - 일반 소프트웨어 품질 관리 도구 - 와 팁을 대부분의 머신러닝 코드에 적용할 수 있지만 일반적인 문제를 진단하는 데 충분하지 않다는 의미입니다. (...) 머신러닝 프로그램은 그냥 실행하는 것이 전부가 아니라 정확한 예측 결과를 만들어야 하기 때문입니다."
    • "데이터 작업을 재미있는 모델링을 하기 전에 수행해야 하는 따분한 일이라 생각하기 쉽습니다. 하지만 모델은 데이터에서 트렌드와 패턴을 추출하는 방법을 제공할 뿐입니다. 사용할 데이터가 모델이 예측하기 충분한 패턴을 담고 있는지 확인해야 합니다(그리고 두드러진 편향이 내재되어 있는지 체크해야 합니다). 이것이 데이터 과학의 핵심 작업입니다(사실 모델 과학자라고 부르지 않고 데이터 과학자라고 부르는 것을 보면 알 수 있습니다)."

 

※ 한빛미디어 2021 도서 서평단 "나는 리뷰어다"의 일원으로 도서를 제공받아 작성한 리뷰입니다.