딥러닝_ 머신러닝 워크플로

주지윤·2022년 12월 2일
0

딥러닝

목록 보기
13/21
post-custom-banner

머신러닝의 워크플로

1. 작업 정의

문제영역과 고객요청 이면의 비지니스 로직을 이해한다. 데이터를 수집하고 데이터가 드러내는 내용을 이해하고, 작업의 성공을 측정하는 방법을 선택

1) 문제정의

  • 입력데이터는 무엇인가?
  • 당면한 문제가 어떤 종류인가?
  • 기존 솔루션은?
  • 고려해야할 제약은?

2) 데이터 수집

  • 모델링의 개선점을 찾는 것 보다 더 많은 데이터를 수집하는 것이 시간을 효과적으로 사용하는 방법이다.
  • 지도학습의 경우 입력(데이터)를 수집하고 예측 모델을 훈련할 타깃인 에너테이션을 만들어야 한다.
    • 데이터 에너테이션 인프라에 투자: 데이터 에너테이션 과정이 타깃의 품질, 모델의 품질을 결정할 수 있다.
  • 대표성 없는 데이터 주의
    • 개념이동(concept drift)이해: 제품환경에서 데이터 속성이 시간에 따라 변할 때 일어남.
    • 빠르게 변하는 개념 이동에 대처하려면 지속적인 데이터 수집, 에너테이션, 모델 재훈련 필요

3) 데이터 이해

  • 데이터를 탐색하고 시각화하여 특성에 대한 통찰을 얻어야 한다. 이를 통해 특성공학에 대한 정보를 얻고 가능성 있는 문제를 거른다.
    • 데이터 샘플 직접확인
    • 수치는 히스토그램
    • 위치는 지도그리기
    • 누락값 처리
    • 샘플의 개수 파악으로 불균형 고려
    • 타깃 누출 확인

4) 성공지표 선택

  • 어떤 것을 제어하려면 관측이 필요하다. 프로젝트의 성공을 어떤 것으로 파악할 수 있을지 알맞은 선택을 하는 것이 필요하다.

  • 다양한 종류의 머신 러닝의 성공 지표와 문제에 어떻게 관련되는 지 캐글의 대회를 살펴보는 것이 도움이 된다.


2. 모델 개발

데이터를 준비하고, 모델 평가 방법과 간단한 기준점 선택

  • 일반화 성능을 가진 첫번째 모델을 과대적합하도록 훈련
  • 가능한한 최대의 일반화 성능에 도달할 때까지 모델에 규제 추가

1) 데이터 준비

원본데이터를 신경망에 적용하기 쉽도록 만들기

  • 벡터화: 부동 소수점 데이터로 이루어진 텐서로 변환
  • 정규화: 일반적으로 비교적 큰 값, 균일하지 않은 데이터를 신경망에 주입하는 것은 위험
    • 작은값을 취하기: 0~1사이
    • 균일하게 하기: 비슷한 범위일것
    • x -= x.mean(axis=0)
      x /= x.std(axis=0)
  • 누락값 처리
    • 새로운 범주 만들기
    • '0'값(X), 평균이나 중간값으로 대체

2) 평가 방법 선택

  • 홀드아웃 검증: 데이터 충분
  • k-fold: 샘플개수가 적을때
  • 반복 k-fold: 데이터가 적고 매우 정확한 모델 평가필요

3) 기준 모델 뛰어넘기

  • 모델의 초기목표: 통계적 검정력 달성( 기준점 통과 모델 )
    • 특성공학: 특성 선택, 유용한 새 특성 개발
    • 구조에 대한 올바른 가정
    • 좋은 훈련 옵션 선택

4) 모델 용량 키우기: 과대적합 만들기

  • 층을 추가
  • 층의 크기를 키우기
  • 더 많은 에포크 훈련

5) 모델 규제와 하이퍼파라미터 튜닝

  • 다른 구조시도(층 추가, 제거)
  • 드롭아웃 추가
  • 규제 추가
  • 하이퍼파라미터 변경
  • 특성공학 시도

3. 모델 배포

1) 고객에게 설명, 기대치 설정

  • 98%의 정확도를 이야기 하기보단 5% 거짓음성비율, 2%의 거짓 양성비율을 이야기 하는 것이 기대치에 대한 설명으로 더 나을 수 있다.

2) 추론모델 배치

  • REST API로 모델 배포
  • 장치로 모델 배포
  • 브라우저에 모델 배포
  • 추론모델 최적화

3) 작동 중 모델 모니터링하기

4) 모델 유지관리

post-custom-banner

0개의 댓글