복습 : 케라스 창시자에게 배우는 딥러닝

DeepLearning101_06_일반적이 머신러닝 워크플로우

Aloha oe AI 2024. 9. 2. 20:33

6.1 작업 정의

6.1.1 문제 정의

  • 입력 데이터는 무엇인지?
    예) 영화 리뷰와 감성 테이블 태깅 → 영화 리뷰의 감성 분류 학습
  • 당면한 문제가 어떤 종류인지?
    이진분류/다중분류, 스칼라회귀/벡터회귀 등
    예) 스팸감지/신용 카드 부정 거래 감지 프로젝트는 이진 분류 작업
  • 기존 솔루션은 어떤 것이 있는지?
    스팸 필터링/신용카드부정거래감지 → if문 구성 수동 알고리즘
  • 어떤 시스템으로 어떻게 일하고 있는지 이해
  • 고려해야 할 특별한 제약?
    예) 스팸감지시스템 : 엔드-투-엔드 방식(암호화)

6.1.2 데이터 수집

  • 대표성 없는 데이터 주의
    훈련 데이터가 제품 환경의 데이터를 대표하지 못함(학습 품질과 실제 품질의 차이)
  • 샘플링 편향 문제
    선거 당선 예측 → 실패
    이유: 전화설문결과 신뢰-투표 인구를 랜덤하게 대표한 샘플X. 즉 데이터 수집 과정에서부터 잘못되기에 예측대상과 상호 작용할 때 편향된 측정 결과를 나타냄
  • 에너테이션
    수동으로 데이터 레이블링 하는 것(노동집약적임)
  • 타깃 누출(Target leaking)

6.2 모델 개발

6.2.1 데이터 준비

  • 벡터화:
    신경망에서 모든 입력과 타깃은 일반적으로 부동 소수점 데이터로 이루어진 텐서
  • 정규화:
    비교적 큰 값이나 균일하지 않은 데이터를 신경망에 주입하면 업데이트할 그레디언트가 커져 수렴하는 것을 방해한다.
    작은 값을 취해야 한다. (일반적으로 대부분의 값이 0~1 사이)
    균일해야 한다. (모든 특성이 대체로 비슷한 범위)

6.2.2 평가 방법 선택

  • 홀드아웃 검증 : 데이터가 풍부할 경우 사용
  • K-겹 교차 검증 : 검증으로 사용할 샘플 개수가 너무 적을 경우 사용
  • 반복 K-겹 교차 검증 : 데이터가 적고 정확한 모델 평가가 필요할 경우 사용

6.2.3 기준 모델 뛰어넘기

통계적 검정력 : 아주 간단한 기준점을 넘을 수 있는 작은 모델 개발을 하기 위한 달성목표
특성 공학 : 특성 선택 및 개발
구조에 대한 올바른 가정
좋은 훈련 옵션 선택 : 손실 함수, 배치 크기, 학습률 설정

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

얼마나 큰 모델을 만들어야 하는지 알기 위해 과대적합된 모델을 만들어야한다. 검증 데이터에서 모델 성능이 감소하기 시작했을 때 과대적합에 도달한다.

HOW TO MAKE BIGGER MODEL

  1. 층을 추가
  2. 층의 크기 키우기
  3. epoch 수를 늘려서 훈련

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

왕도가 없다. 반복적으로 모델을 수정하고 훈련하고 검증 데이터를 평가한다. 좋은 모델을 얻을 때까지 반복한다.

HOW TO REG/TUNE A MODEL

  1. 층을 추가하거나 제거
  2. dropout 추가
  3. 모델이 작다면 L1 이나 L2 규제 추가
  4. 하이퍼파라미터 바꿔서 시도

6.3 모델 배포

6.3.2 추론 모델 배치하기

1. REST API로 모델 배포하기

  • 서버나 클라우드 인스턴스에 텐서플로 설치 후 REST API로 모델의 예측 요청
  • Flask를 사용해서 직접 serving 앱 생성 혹은 API 방식의 tensorflow serving 사용

2. 장치로 모델 배포하기

3. 브라우저에 모델 배포하기