DL/케라스 창시자에게 배우는 딥러닝

[6장] 일반적인 머신러닝 워크플로

가은가은 2023. 1. 10. 22:55

작업정의 -> 모델 개발 -> 모델 배포

 

6.1 작업 정의

6.1.1 문제정의

1) 입력 데이터는 무엇인가? 어떤 것을 예측하려고 하나?

    : 가용 데이터의 유무 확인

 

2) 당면한 문제가 어떤 종류인가?

   : 이진/다중 분류 / 스칼라 회귀/ 벡터 회귀/ 이미지 분할/ 랭킹 등등

   : 문제의 종류에 따라 사용하는 모델이 달라질 것임

 

3) 기존의 솔루션은 어떤 것 이 있나?

  : 수동적인 알고리즘을 파악 -> ai -> 자동화

 

4) 고려해야 할 특별한 제약

   : 실제 시스템이 적용되는 상황에서의 제약 고려해야 할 것

     a. 암호화 -> 적용할 앱에 접근 어려움 (ex, 스팸 필터링, 신용카드 부정 거래 감지)

     b. 시간 제약 (ex, 쿠키 필터링 : 원격 서버를 이용할 경우, 시간 지연이 발생 -> 공장의 임베디드 장치에서 실행될 수 있            어야 함.)

     c. 물리적 제약( 하드웨어 성능 문제, gpu 등등)

 

 

6.1.2 데이터 수집

 

모델의 일반화 능력 <- 훈련되는 데이터 속성(데이터 포인트 개수, 레이블의 신뢰도, 특성 품질 등)에서 온다.

 

-> 데이터셋 관리 필요!

 

1) 데이터 애너테이션 인프라에 투자하기

  • 데이터 애너테이션 : 어노테이션(Annotation)은 원본 데이터를 설명하기 위해 사용되는 오브젝트(폴리라인, 바운딩 박스 등) 또는 이미지 카테고리(맑은 날, 야외 등)와 같은 각각의 메타데이터를 ‘태그’ 형식으로 데이터 셋에 추가하는 작업을 말합니다. 쉽게 말해 인공지능이 데이터의 내용을 이해할 수 있도록 원천데이터에 주석을 표시하는 작업이라 생각하시면 됩니다.
  • 최선의 옵션을 고르기 위해 현재 작업 제약 조건을 고려해야 한다.
  • 데이터 애너테이션 작업에 전문적인 지식이 필요한지? 
  • 에너테이션 작업을 위한 소프트웨어 개발이 필요한지?

 

2) 대표성 없는 데이터 주의하기

  • 머신러닝 모델은 이전에 본 샘플과 비슷한 입력만 이해 가능 -> 데이터가 제품 환경에 맞는 데이터를 대표해야 한다.                                                                                                    -> 모델이 사용될 환경에서 직접 데이터를 수집하면 좋음
  • 개념 이동(concept drift) : 제품환경에서 데이터의 속성이 시간에 따라 변할 때 발생                                                                                                 -> 지속적인 데이터 수집, 애터테이션, 모델 재훈련이 필요!

 

6.1.3 데이터의 이해

 

  • 데이터셋을 블랙박스 처럼 다루지 말고 데이터에 대한 충분한 정보를 얻어야 한다.
데이터 종류 데이터 이해 방법
이미지 또는 자연어 텍스트 몇 개의 샘플을 직접 확인
수치 히스토그램을 그려서 값의 범위나 빈도 파악
위치 정보 지도에 그려봐서 뚜렷한 패턴이 드러나는지 확인
특성 누락 누락이 확인되면 데이터를 준비할 때 이를 처리해야한다.
분류문제 각 샘플의 개수를 출력하여 균형적인지 확인

 

  • 타깃 누출(target leaking) 확인

: 데이터에 타깃에 관한 정보가 제공되면 안된다.

 

6.1.4 성공 지표 선택

:어떤 지표를 사용하여 모델을 평가할건지

: 클래스 분포가 균일한 경우 -> 정확도와 ROC AUC 사용

: 클래스 분포가 균일하지 않은 경우 -> 정확도 ROC AUC의 가중치 평균 사용

 

***ROC-AUC란?

  • ROC(Receiver Operating Characteristic) = 모든 임계값에서 분류 모델의 성능을 보여주는 그래프
  • AUC(Area Under the Curve) = 곡선 아래 영역

 

 

6.2 모델 개발

6.2.1 데이터 준비

1) 원본 데이터를 전처리해야 한다.

  • 벡터화 : 사운드, 이미지, 텍스트등의 데이터를 텐서로 변환
  • 값 정규화 : a. 작은 값을 취한다 (0~1)    b. 균일해야 한다.( 비슷한 범위)
  • 누락된 값 전처리 : 범주형 특성 ) '누락된 값'이라는 의미의 새로운 범주를 만드것이 안전                                                                            : 수치형 특성) '0' 같은 임의의 값 말고 해당 특성의 평균이나 중간 값으로 대체

 

6.2.2 평가 방법 선택

5장 내용

1) 홀드아웃 검증 : 데이터가 풍부할 때 사용

2) K-겹 교차 검증 : 홀드아웃 검증을 사용하기에는 샘플의 개수가 너무 작을때

3) 반복 K-겹 교차 검증 : 데이터가 적고 매우 정확한 모델 평가 필요할 때 사용

 

 

 

6.2.3 기준 모델 뛰어 넘기

 

통계적 검정력(statistical power) 달성 (-> 간단한 기준점을 넘을 수 있는 작은 모델 개발)

 

 

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

  • 모델 훈련시, 과소적합-> 과대적합
  • 과소적합과 과대적합 경계에 있는 모델이 가장 이상적이므로, 그 경계를 찾기 위해서는 먼저 지나쳐 보아야 한다.
  • 과대적합을 위해서는 1) 층을 추가 2) 층의 크기를 키움  3) 더 많은 에포크 동안 훈련

 

 

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

일반화 성능 최대화를 목표로 둔다!

  • 층을 추가/제거하여 다른 구조로 시도
  • 드롭 아웃 추가
  • 모델이 작다면 L1,L2 규제 추가
  • 하이퍼 파라미터 변경
  • 데이터 큐레이션, 특성공학(특성 개발 및 제거)

 

**** 모델이 검증 과정에 과대적합!

검증과정에서 얻은 피드백을 사용하여 모델이 튜닝할 때마다 검증과정에 대한 정보를 모델에 누설하고 있음

-> 테스트 세트 성능이 검증 데이터에서 측정한 것 보다 많이 나쁘다면 검증 데이터에 과대적합 된 것이다...

 

 

6.3 모델 배포