작업정의 -> 모델 개발 -> 모델 배포
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 모델 배포
'DL > 케라스 창시자에게 배우는 딥러닝' 카테고리의 다른 글
5장 : 머신러닝의 기본 요소 (0) | 2022.12.29 |
---|---|
2장. 신경망의 수학적 구성 요소 (0) | 2022.11.24 |
1장. 딥러닝이란 무엇인가? (0) | 2022.11.21 |