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
- 층을 추가
- 층의 크기 키우기
- epoch 수를 늘려서 훈련
6.2.4 모델 규제와 하이퍼파라미터 튜닝
왕도가 없다. 반복적으로 모델을 수정하고 훈련하고 검증 데이터를 평가한다. 좋은 모델을 얻을 때까지 반복한다.
HOW TO REG/TUNE A MODEL
- 층을 추가하거나 제거
- dropout 추가
- 모델이 작다면 L1 이나 L2 규제 추가
- 하이퍼파라미터 바꿔서 시도
6.3 모델 배포
6.3.2 추론 모델 배치하기
1. REST API로 모델 배포하기
- 서버나 클라우드 인스턴스에 텐서플로 설치 후 REST API로 모델의 예측 요청
- Flask를 사용해서 직접 serving 앱 생성 혹은 API 방식의 tensorflow serving 사용
2. 장치로 모델 배포하기
3. 브라우저에 모델 배포하기
'복습 : 케라스 창시자에게 배우는 딥러닝' 카테고리의 다른 글
[NLP] 자연어처리와 친해지기 : 머신러닝과 딥러닝 모델은 코드적으로 어떻게 다를까? (feat. 네이버 영화 리뷰 데이터(nsmc) 감성 분석) (2) | 2024.10.16 |
---|---|
DeepLearning101_07_케라스완전정복_Code : 사용자 정의 '지표' 만들기 (3) | 2024.09.04 |
DeepLearning101_07_케라스완전정복_워크플로우란? (0) | 2024.09.03 |