ML/AI/SW Developer

머신러닝 프로젝트 라이프 사이클

0. 강의 소개

지금까지 이전 스테이지에서 다양한 문제를 갖고 다양한 모델들을 통해서 해결을 하는 과정은 충분히 연습하셨을 것 같습니다. 하지만 실제로 회사에서 머신러닝을 프로젝트를 진행할때는 어떤 프로세스를 따르게 될까요?
이번 강의에서는 문제정의를 시작으로 조금 더 실무적인 관점에서 머신러닝 프로젝트의 전체 과정을 훑어보는 시간을 갖도록 하겠습니다.

1. 머린러닝 프로젝트 Flow

1.1 문제 정의의 중요성

  • 앞으로 겪을 일은 대부분 문제로 정의 가능
  • 문제를 잘 풀기 위해선 문제를 정의하는 것이 매우 중요함
  • E.g 저는 사람들을 행복하게 만들고 싶어요
    • 어떤 사람들을 대상으로?
    • 행복의 정의는 뭔가?
  • How보다 Why에 집중하자!
  • 문제 정의란?

      1. 본질을 파악하는 과정
      2. 해결해야 하는 문제는 무엇이고 그 문제를 해결하면 무엇이 좋을까? 어떻게 해결하면 좋을까?
    

1.2 현상 파악

  • 어떤 일이 발생하고 있는가?
  • 해당 일에서 어려움은 무엇인가?
  • 해당 일에서 해결하면 좋은 것은 무엇인가?
  • 추가적으로 무엇을 해볼 수 있을까?
  • 어떤 가설을 만들어 볼 수 있을까?
  • 어떤 데이터가 있을까?

1.3 구체적인 문제 정의

  • 무엇을 해결하고 싶은가?
  • 무엇을 알고 싶은가?
  • 앞선 현상을 더 구체적으로 명확한 용어로 정리
  • 당장 진행할 수 있는 설명을 늘리는 방식 사용
    • 설명을 늘리는 방식 = 룰 베이스 => 당장의 문제 해결
    • 추천 = 알고리즘 개발 => 문제 해결의 또 다른 방법
  • 현상을 계속 쪼개고, 그 문제를 기반으로 어떤 어려움을 겪고 있는지 파악
    • 데이터로 할수 있는 일을 만들어서 진행,
    • 알고리즘 접근이 최상은 아니라는 방법을 제시할수도 있어야함 -> 간단한거 부터!

1.4 프로젝트 설계

  • 문제 정의 / 최적화할 Metric 선택 / 데이터 수집, 레이블 확인 / 모델 개발 / 모델 예측 결과를 토대로 Error Analysis. 잘못된 라벨이 왜 생기는지 확인
  • 이후, 다시 모델 학습 / 더 많은 데이터 수집 / 다시 모델 학습
  • 최근 다시 성능이 떨어진다…
    • 모델을 다시 학습 / 모델 배포
    • 최적화할 Metric을 수정
  • 문제의 타당성 확인
    • 필요한 데이터의 종류와 기존 모델이 있는가?
    • 머신러닝이 최적의 솔루션이 아닐 수 있음
  • 머신러닝이 사용면 좋은 경우
    • 패턴: 학습할 수 있는 패턴인가?
      • 패턴이 없다면 학습 불가능
      • E.g 주가 예측에서, 가격이 완전 무작위 변동이라 믿으면 모델을 만드는 것이 불필요
    • 목적함수: 학습을 위한 목적함수를 만들 수 있는가?
      • 머신러닝 알고리즘은 유용한 패턴을 학습하거나 노이즈를 패턴으로 학습하는 경우도 존재
      • 지도 학습은 정답 레이블과 예측 결과의 차이로 정의됨
    • 목잡성: 패턴이 복잡해야함
      • 주소 검색문제 -> 굳이 머신러닝을 사용할 필요가 없음
      • 집값 예측 -> 다양한 변수와 요인이 존재 복잡함
    • 데이터 존재 여부: 데이터가 존재하거나 수집할 수 있어야함
      • 데이터가 없으면 모델을 만들 수 없음
    • 반복: 사람이 반복적으로 실행하는 경우
      • 작업의 반복 -> 패턴
  • 머신러닝이 사용되면 좋지 않은 경우
    • 비윤리적 문제
    • 간단한 문제
    • 좋은 데이터가 없는 문제
    • 한번의 오류가 치명적인 문제
    • 시스템이 내리는 모든 결정이 설명 가능해야하는 경우
    • 비용 효율적이지 않은 경우

1.5 목표 설정, 지표 결정

  • 프로젝트의 목표
    • Goal: 프로젝트의 일반적인 목적, 큰 목적
    • Objectives: 목적을 달성하기 위한 세부 단계의 목표
  • 목표 설정시 데이터까지 확인
    • 데이터에 레이블이 없을 수 있음
    • 정확히 찾으려는 데이터가 없는 경우, 여러가지 시나리오를 고려
      • 라벨이 있는 데이터가 존재 -> 바로사용
      • 유사 라벨이 있는 데이터 -> 유사 라벨 활용
      • 라벨이 없는 데이터 -> 직접 레이블링 or 비지도 학습 방법 탐색
      • 데이터가 아예 없는 경우 -> 수집 방법 부터 고민
  • Multiple Objective Optimization
    • 최적화 하고 싶은 것이 여러가지가 있는 경우
      • 단일 모델로!
        • 두 로스를 결합하고, 그 loss를 최소화하기 위한 모델을 학습
        • 두 로스를 결합하기 위한 하이퍼파라미터 조절 필요
      • 2개의 모델(각각의 loss 최소하)
        • 모델을 재학습하지 않아도 두 모델의 영향도 변경 가능
    • Objective가 여러개인 경우 분리하는 것이 좋음
      • 학습하기 쉬워야함 -> 하나의 objective를 최적화하는 것이 더 쉬움
      • 모델을 재학습 하지 않도록 모델을 분리
      • 유지보수 일정이 서로 다를 수 있음
  • 제약조건
    • 일정, 예산, 사람, 기술적 제약, 윤리적 이슈
    • 성능
      • Baseline: 새로 만든 모델을 무엇과 비교할 것인가?
      • Treshold: 확률값으로 class가 바뀌는 기준은?
      • Perfomance trade-off: 속도는 빠른데 성능이 떨어짐 vs 성능은 높은데 속도가 느림
      • Confidence Measurement: Falase Negative가 있어도 괜찮은가?
  • 베이스라인, 프로토 타입
    • 모델이 더 좋아졌다고 판단할 수 있는 Baseline이 필요
      • 꼭 모델일 필요는 없음
      • 자신이 모델이라 생각하고 어떻게 분류할지 Rule Base 규칙 설계
    • 간단한 모델부터 시작하는 이유
      • 어떻게든 모델의 위험을 낮추는 것이 목표가 되어야 함
      • 가장 좋은 방법은 최악의 성능을 알기 위해 허수아비 모델로 시작하는 것
      • 초기엔 단순하게 사용자가 이전에 선택한 행동을 제안할 수도 있고, 추천 시스템에선 제일 많이 구매한 것을 추천할 수도 있음
    • 유사한 문제를 해결하고 있는 SOTA 논문 파악해보기 => 우리의 문제에선 어떤 시도를 해볼 수 있을까?
  • Metric Evaluation
    • 앞선 문제를 해결할 경우 어떤 지표가 좋아질까?를 고민해야 함
    • 이 부분은 작게는 모델의 성능 지표(RMSE)일 수 있고, 크게는 비즈니스의 지표일 수 있음(고객의 재방문율, 매출 등)

1.6 Action(모델 개발 후 배포 & 모니터링)

  • 앞서 정의한 지표가 어떻게 변하는지 파악하기
  • 현재 만든 모델이 어떤 결과를 내고 있는가?
  • 잘못 예측하고 있다면 어떤 부분이 문제일까?
  • 어떤 부분을 기반으로 예측하고 있을까?
  • Feature의 어떤 값을 사용할 때 특히 잘못 예측하고 있는가?

1.7 추가 원인 분석

  • 새롭게 발견한 상황을 파악해 어떤 방식으로 문제를 해결할지 모색
  • 그 과정에서 앞서 진행한 과정을 반복

2. 비즈니스 모델

2.1 비즈니스 모델 파악하기

  • 회사에서 중요한 것 = 비즈니스
    • 즉, 비즈니스에 대한 이해가 높으면 문제 정의를 더 잘 할 수 있다.
  • 비즈니스 파악하기
    • 1) 회사의 비즈니스 파악하기
    • 2) 데이터를 활용할 수 있는 부분은 어디인가? (Input)
      • 데이터가 존재한다면 어떤 데이터가 존재하는가?
      • 데이터로 무엇을 할 수 있을까?
      • 해당 데이터는 신뢰할만한가? 데이터 정합성은 맞는가? 레이블이 잘 되어있는가? 계속 받을 수 있는가?
      • 다양한 팀에 있는 분들과 직접 인터뷰하는 것도 좋은 방법 무엇을 해볼 수 있을까?
      • 왜 해야하는가?
    • 3) 모델을 활용한다고 하면 예측의 결과가 어떻게 활용되는가? (Output)
      • 고객에게 바로 노출(추천, 얼굴 필터 등) => 더 좋은 가치 제공 / 매출 증대
      • 내부 인원이 수동으로 진행해야 하는 업무를 자동화할 수 있음

3. Special Mission

  1. 부스트캠프 AI Tech 혹은 개인 프로젝트를 앞선 방식으로 정리해보기
  2. 실제로 회사에서 한 일이 아니더라도, 특정 회사에서 활용했다고 가정하거나 아예 크게 문제 정의해서 구체화해보기
  3. 이 모델이 회사에서 활용되었다면 어떤 임팩트를 낼 수 있었을까? 고민해서 정리해보기!
  4. 직접 일상의 문제라도 하나씩 정의하기

Reference

  • AI boot camp 2기 서빙 강의