ML 프로젝트 라이프 사이클

-·2022년 1월 10일
0

강의정리 - MLOps

목록 보기
3/18
post-custom-banner

이 글은 네이버 부스트캠프 ai tech의 변성윤 강사님 강의영상을 정리한 글입니다.
문제나, 잘못된 점이 있다면 말씀해주세요 ! :)

프로젝트 설계
머신러닝 프로젝트 과정 - 현실

  • 문제정의
  • 최적화할 metric 선택
  • 데이터 수집, 레이블 확인
  • 모델 개발
  • 모델 예측 결과를 토대로 Error Analysis, 잘못된 라벨이 왜 생기는지 확인
  • 다시 모델 학습
  • 더 많은 모델 학습
  • 더많은 데이터 수집
  • 다시 모델 학습
  • 2달전 테스트 데이터에선 성능이 좋지만 어제 데이터엔 성능이 좋지 않음
  • 모델을 다시 학습함
  • 모델 배포
  • 최적화할 Metric이 실제로 잘 동작하지 않아 Metric을 수정
  • 다시시작?!..

"문제 정의후, 프로젝트의 설계를 최대한 구체적으로 하는것이 좋구나 !"

  • 미리 많은 것을 대비한 상황 vs 대비하지 않은 상황
    프로젝트를 하실때 이거에 대해서 최대한 고려해볼 수 있는건 최대한 작성해보고
    이러한 것들은 중요하겠구나, 이런것들은 지금 단계에서 고려하지 않아도 되겠구나를 구분하기.

프로젝트 설계

문제 정의에 기반해서 프로젝트 설계

  • 해결하려고 하는 문제 구체화

  • 머신러닝 문제 타당성 확인

  • 목표설정, 지표 결정

  • 제약조건(Constraint & Risk)

  • 베이스라인, 프로토타입

  • 평가(Evaluation)방법 설계

프로젝트 설계 - 머신러닝 문제 타당성 확인

  • 머신러닝 문제를 고려할 때는 얼마나 흥미로운지가 아니라 제품, 회사의 비즈니스에서 어떤 가치를 줄 수 있는지 고려해야함.

  • 머신러닝 문제는 결국 데이터로부터 어떤 함수를 학습하는것.

  • 머신러닝 문제 타당성 평가하기: 복잡도를 평가하는 방법은 필요한 데이터의 종류와 기존 모델이 있는지 살펴보기.
    -- 머신러닝은 모든 문제를 해결할 수 있는 마법의 도구가 아님.
    -- 머신러닝으로 해결할 수 있는 문제지만 머신러닝 솔루션이 최적이 아닐수도 있음.

머신러닝이 사용되면 좋은 경우
-패턴 : 학습할 수 있는 패턴이 있는가?
-- 복권은 가능한가? X
-- 생성되는 방식에 패턴이 없다면 학습할 수가 없음
-- 주식 가격에서 가격이 완전히 무작위라고 믿으면 모델을 만드는게 불필요함.
데이터를 탐색해서 패턴을 발견하면 진행

  • 목적함수 : 학습을 위한 목적 함수를 만들 수 있어야 함
    -- 머신러닝 알고리즘은 유용한 패턴을 학습하거나 노이즈를 패턴으로 학습하는 경우도 존재
    -- 지도학습은 정답레이블과 예측 결과의 차이로 정의할 수 있음

  • 복잡성: 패턴이 복잡해야 함
    -- 주소 검색 문제 -> 우편번호에 기반해서 정렬되어 있으면 머신러닝이 필요하지 않음.
    -- 집가격을 예측할 경우 복잡한 패턴이 필요할 수 있음 : 동네의 평균 가격, 공원 유무, 침실 수, 건축 연식, 학교 수, 자연 재해 등.

  • 데이터 존재 여부 : 데이터가 존재하거나 수집할 수 있어야함.
    -- 학습할 데이터가 없으면 프로젝트 진행 전에 데이터 수집부터 진행해야함.
    -- 데이터가 없다면 룰베이스 알고리즘을 만든 후, 데이터 수집 계획부터 수립

  • 반복: 사람이 반복적으로 실행하는 경우
    -- 사람은 반복에 능숙함. 아이에게도 고양이 사진을 보여주고 고양이를 알아보게 할 수 있음
    -- 업이 반복 => 패턴
    -- 사람의 노동력을 줄일 수 있는 관점

머신러닝이 사용되면 좋지 않은 경우

  • 비윤리적인 문제
    -- 인종차별, 성차별, 이루다 등.
  • 간단히 해결할 수 있는 경우
    -- 굳이 머신러닝이 필요 없음
  • 좋은 데이터를 얻기 어려울 경우
    -- 머신러닝을 할 수가 없음, 하더라도 좋은 패턴을 찾기 힘듬
  • 한번의 예측 오류가 치명적인 결과를 발생할 경우
    -- 택시가격을 예측해서 고객한테 줬는데 1억이 예측됐다. 단거리였는데 1억이 부과되면 몹시 치명적. 후처리를 해주거나 머신러닝이 사용되는게 맞는가 확인해야됨
  • 시스템이 내리는 모든 결정이 설명 가능해야 할 경우
    -- explainable AI ! 모든 결정을 설명해야한다면 머신러닝을 쓰는게 더 어려울 수도 있다.
  • 비용 효율적이지 않은 경우
    -- 사람의 시간이나 인프라 GPU머신 등에 비용효율적이지 못하다면 굳이 사용안해도 됨.

프로젝트의 목표

  • Goal : 프로젝트의 일반적인 목적, 큰 목적
  • Objectives: 목적을 달성하기 위한 세부 단계의 목표(구체적인 목적)

예를 들어, 랭킹 시스템에서 고객의 참여를 최대화 하고 싶은 Goaldl dlTsms ruddn

Objectives

  • NSFW(NotSafeForWork)컨텐츠 필터링을 통해 사용자에게 불쾌감을 줄임
  • 참여에 따른 게시물 랭킹 선정: 사용자가 클릭할 가능성이 있는 게시물 추천

그러나 참여를 위해 최적화를 하면 윤리적인 의문이 존재할 수 있음
=> 극단적으로 클릭을 유도할 자극적인 컨텐츠를 노출할 수 있음(Netflix 소셜 딜레마)

더 건전한 뉴스피드를 만들고 싶음.

새로운 Goal: 극단적인 견해와 잘못된 정보의 확산을 최소화하며 사용자의 참여를 극대화하는 목표

새로운 Objectives

  • NSFW 컨텐츠 필터링
  • 잘못된 정보 필터링
  • 품질에 따른 게시물 랭킹 선정 : 좋은 품질인 게시물
  • 참여에 따른 게시물 랭킹 선정 : 사용자가 클릭할 가능성이 있는 게시물

목표를 설정하며 데이터를 확인해야 함( 지표와 연결되는 내용이기 때문)

  • 데이터셋이 레이블링이 되지 않은 경우도 존재

  • 데이터 소스 찾아보기
    -- 부정거래 탐지 : 부정거래자와 정상 거래자의 거래내역, 계정 정보 등을 알아야 함
    -- 적발되지 않으면 모름. 적발된다면 이미?!.. 어렵다..

  • 정확히 찾으려는 데이터가 없는 경우가 있어서 여러가지 시나리오를 고려하는 것이 좋음
    -- Label을 가진 데이터가 있는 경우 => 바로 사용
    -- 유사 Label을 가진 데이터가 있는 경우 => 음악 스트리밍 서비스에서 노래 재생, 건너뛰기 기록은 선호도를 예측하기 위한 유사 Label
    -- Label이 없는 데이터 => 직접 레이블링 or 레이블링이 없는 상태에서 학습하는 방법 찾기
    -- 데이터가 아예 없는 경우 => 데이터 수집 방법부터 고민
    -- 데이터셋을 만드는 일은 반복적인 작업 => 이걸 위해 Self Supervised Learning 등을 사용해서 유사 레이블을 만드는 방법도 존재

Multiple Objective Optimization

  • 최적화하고 싶은 목적 함수가 여러가지 있는 경우, 서로 충돌할 수 있음

  • 품질에 따른 게시물 랭킹 선정 vs 참여에 따른 게시물 랭킹 선정

  • 게시물이 매우 매력적이지만 품질이 의심스러우면?!

품질에 따른 게시물 랭킹 선정 : 게시물 품질 예측(게시물 예상 품질 - 실제 품질 : quality_loss)
참여에 따른 게시물 랭킹 선정 : 게시물 클릭 수 예측(게시물 예상 클릭 수 - 실제 클릭 수 : engagement_loss)

방법 1

  • 단일 모델
  • 두 loss를 하나의 loss을 결합하고, 해당 loss를 최소화하기 위해 모델을 학습하는 방법
    -- 한가지에서 문제가 생긴다면 전체를 재학습해야함.

방법 2

  • 2개의 모델(각각의 loss를 최소화)
  • quality_loss를 최소화하고 예상 품질을 반환하는 quality_model
  • engagement_loss를 최소화하고 게시물의 예상 클릭 수를 반환하는 engage_model
    -- 이제 모델을 재학습하지 않아도 조정할 수 있음

Objective가 여러개인 경우 분리하는 것이 좋음

  • 학습하기 쉬워야함
    -- 하나의 objective를 최적화하는 것이 여러 objectives를 최적화하는 것보다 쉬움
  • 모델을 재학습하지 않도록 모델을 분리
  • Objectives는 수정해야 하는 유지보수 일정이 모두 다를 수 있음
    -- 예) 스팸 필터링은 품질 순위 시스템보다 더 빠르게 업데이트해야 함

프로젝트 설계- 제약조건 (Constraint & Risk)

  • 일정 : 프로젝트에 사용할 수 있는 시간

  • 예산 : 사용할 수 있는 최대 예산은?

  • 관련된 사람 : 이 프로젝트로 인해 영향을 받는 사람은?

  • privacy : Stroage, 외부 솔루션, 클라우드 서비스 등에 대한 개인정보보호요구

  • 기술적 제약
    -- 기존에 운영하고 있던 환경: 레거시 환경(인프라)가 머신러닝 적용할 때 큰 제약일 수 있음
    -- 레거시 환경 : 과거에 사용하던 개발 환경인데 갑자기 그걸 바꾸자? 현실적으로 그걸 서비스 장애없이 migration되어야 하기 때문에 진짜 왜 해야되는지 설명해야함. 레거시 환경 위에서 머신러닝을 적용해야 할 수도 있음.

  • 윤리적 이슈 : 윤리적으로 어긋난 결과

  • 성능
    -- baseline: 새로 만든 모델을 무엇과 비교할 것인가? 기존에 사람이 진행하던 성능 or 간단한 회귀
    -- Threshold : 확률값이 0.5 이상일 경우 강아지라고 할 것인지, 0.7이상일 경우 강아지라고 할 것인지
    -- Performance Trade-off : 속도가 빠른데 Acc 0.93 vs 속도는 조금 더 느린데 Acc 0.95
    -- 해석가능 여부 : 결과가 왜 발생했는지 해석이 필요할까? 해석이 필요한 사람은?
    -- Confidence Measurment : False Negative가 있어도 괜찮은지? 오탐이 있으면 안되는지?

프로젝트 설계 - 베이스라인, 프로토타입

  • 모델이 더 좋아졌다고 판단할 수 있는 Baseline이 필요
    -- 꼭 모델일 필요는 없음
    -- 자신이 모델이라 생각하고 어떻게 분류할지 Rule Base규칙 설계

  • 간단한 모델부터 시작하는 이유
    -- 어떻게든 모델의 위험을 낮추는 것이 목표가 되어야 함
    -- 가장 좋은 방법은 최악의 성능을 알기 위해 허수아비 모델로 시작하는 것
    -- 초기에 단순하게 사용자가 이전에 선택한 행동을 제안할 수도 있고, 추천 시스템에선 제일 많이 구매한 것을 추천할 수도 있음
    -- 유사한 문제를 해결하고 있는 SOTA 논문 파악해보기 => 우리의 문제에선 어떤 시도를 해볼 수 있을까?

  • 베이스라인 이후에 간단한 모델을 만들면 피드백을 들어보면 좋음

  • 회사의 동료들에게 모델을 활용할 수 있는 환경 준비

  • 프로토타입을 만들어서 제공
    -- Input을 입력하면 Output을 반환하는 웹페이지
    -- 이왕이면 좋은 디자인을 가지면 좋지만, 여기선 모델의 동작이 더 중요
    -- HTML에 집중하는 것보다, 모델에 집중하는게 중요
    -- 이를위해 Voila, Stramlit, Gradio 등을 활용

프로젝트 설계 - Metric Evaluation

  • 앞에서 Objectives를 구해서 모델의 성능 지표는 확인함
    모델의 성능 지표와 별개로 비즈니스 목표에 영향을 파악하는 것도 중요

  • 앞선 문제를 해결할 경우 어떤 지표가 좋아질까?를 고민해야함
    이부분은 작게는 모델의 성능 지표(RMSE)일 수 있고,
    크게는 비즈니스의 지표일 수 있음(고객의 재방문율, 매출 등)
    지표를 잘 정의해야 => 우리의 Action이 기존보다 더 성과를 냈는지 아닌지를 파악할 수 있음
    (이를 위해 AB Test를 진행하기도 함)

  • 만든 모델이 비즈니스에 어떤 임팩트를 미쳤을지(매출증대에 기여, 내부 구성원들의 시간 효율화 증대 등) 고려하면서 만드는 사람.

대부분 기업 : 이익 극대화를 목표
머신러닝 프로젝트는 궁극적으로 수익을 높이는 것이 목표
간접적으로 기업의 이익 극대화에 영향을 미칠 수 있음

  • 전환율 증대 => 매출 증대

  • 반복 업무 자동화 => 내부직원의 리소스 효율로 인한 비용 절감

  • 간접적으로 더 높은 고객 만족도 창출, 웹사이트에서 보내는 시간 늘리기 등

  • 개인화된 솔루션을 제공해 서비스를 더 많이 사용하도록 만들어 매출을 증가시킬 수 있음.

  • 개발 및 배포중에 시스템의 성능은 어떻게 판단할 수 있을까?

  • 정답레이블이 필요한 경우 사용자 반응에서 어떻게 레이블을 추론할 수 있을까?

  • 모델 성능을 비즈니스 Goal과 Objectives를 어떻게 연결할 수 있을까?

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

앞서 정의한 지표가 어떻게 변하는지 파악하기

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

추가 원인 분석

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

비즈니스 모델

회사에서 업무할 때 중요한 것이 무엇인지 알아야 함
회사에서 중요한 것 = 비즈니스

즉, 비즈니스에 대한 이해도가 높을수록 문제 정의를 잘 할 가능성 존재
회사에서 프로젝트를 할때 앞에서 비즈니스 모델을 파악하고 그 안에서 문제정의,해결방안, 프로젝트 설계해 나아가는게 중요하다.

비즈니스 모델 파악하기

  • 회사는 비즈니스 모델을 만들고, 비즈니스 모델을통해 매출이 발생함.
  • 해당 비즈니스 모델에서 어떤 데이터가 존재하고 그 데이터를 기반으로 어떤 것을 만들 수 있을지 생각.

1) 회사의 비즈니스 파악하기
2) 데이터를 활용할 수 있는 부분은 어디인가?(Input)
3) 모델을 활용한다고 하면 예측의 결과가 어떻게 활용되는가? (Output)

회사가 어떤 서비스, 가치를 제공하고 있는가?

  • 우리가 대표적으로 알고 있는 Uber : Taxi와 유사한 이동 서비스
  • 보통 기업의 홈페이지에 보면 제품(Product)라인업이 있음

비즈니스 모델 파악하기 - Uber Case Study

Uber: 차량 서비스, Uber Eats, 수익 올리기, 도시 발전 촉진, 비즈니스
사이트 들어가서 제공하는 기능들 파악해보기.

차량 서비스의 핵심 : 수요와 공급을 매칭시켜 손님과 드라이버가 만날 수 있는 플랫폼 역할
손님과 드라이버가 만날 수 있도록 도와줌

플라이 휠

많은 드라이버가 결국 비즈니스 플라이휠의 시작 => 어떻게 하면 더 많은 수익을 얻을 수 있을까? => 수요와 공급의 불균형이 심각해진 상황. 예) 비가 오는 상황, 드라이버 수가 적은 시간 => 더 많은 수익 !

많은 드라이버 => 손님 관점에서 대기 시간이 줄어듬 => 손님이 많아짐 => 시간당 많은 수입 => 많은 드라이버

대기시간 줄이기 (ETA, Estimated time of Arrival)
=> 드라이버의 시간당 수익 증가, 고객의 기다리는 시간 줄임
어떤 차량을 어떤 고객에게 배정해야 좋을까?

Uber Eats: 음식 추천 시스템 => 고객이 주문하려고 하는 주문 제안
(Graph Learning to Power Recommendations)

Uber 엔지니어링 블로그에서 간접적으로 파악할 수 있음
=> 국내에서도 기술 블로그가 많이 나오고 있음.

누군가 산업에 대해 정리해둔 Paper가 있는지 찾아보기
awesome+산업군
예) awesome mobility machine learning github

해당 산업군에서 사용하는 기술
=> 해당 비즈니스에 어떻게 적용할 수 있을까
=> 추가 가치 발견
=> 머신러닝, AI가 비즈니스에 영향을 주는 과정을 이해

회사가 어떤 서비스, 가치를 제공하고 있는가?

데이터를 활용할 수 있는 부분은 어디인가? (Input)

  • 데이터가 존재한다면 어떤 데이터가 존재하는가?
  • 데이터로 무엇을 할 수 있을까?
  • 해당 데이터는 신뢰할만한가? 데이터 정합성은 맞는가? 레이블이 잘 되어있는가? 계속 받을 수 있는가?
  • 다양한 팀에 있는 분들과 직접 인터뷰하는 것도 좋은 방법

무엇을 해볼 수 있을까?

  • 왜 해야하는가?

모델을 활용한다고 하면 예측의 결과가 어떻게 활용되는가? (Output)

  • 고객에게 바로 노출(추천,얼굴 필터 등)=> 더 좋은 가치 제공/매출 증대
  • 내부 인원이 수동으로 진행해야 하는 업무를 자동화할 수 있음

Special Mission

실제로 회사에서 한 일이 아니더라도, 특정 회사에서 활용했다고 가정하거나 아예 크게 문제 정의해서 구체화해보기.

이 모델이 회사에서 활용되었다면 어떤 임팩트를 낼 수 있었을까? 고민해서 정리해보기.

직접 일상의 문제라도 하나씩 정의하기.

profile
-
post-custom-banner

0개의 댓글