목차
6-1) 작업 정의
6-2) 모델 개발
6-3) 모델 배포
6-1) 작업 정의
1. 작업 정의에 필요한 가설 2가지
1) 주어진 입력으로 타겟을 예측할 수 있다는 가정
2) 가용한 데이터(혹은 수집된 데이터)에 입력과 출력 사이의 관계를 학습하는 데 충분한 정보가 있다는 가정
> 위 2가지 가설은 작동하는 모델을 얻은 이후 검증될 수 있음
2. 데이터 수집
- 작업 특성 이해, 입력과 타깃 파악 이후 단계
- 가장 힘들고 시간과 비용 많이 소모
EX)
- 사진 검색 엔진 프로젝트에서 사진에 수동으로 태깅
- 불량 쿠키 감지 모델 훈련을 위해서 쿠키 이미지에 불량인지 아닌지 수동으로 태깅 필요
- 음악 추천 엔진에서 과거 음악 클릭률 데이터
> 수동으로 태그 달아야 하는 등 기록 수집에 있어 시간/비용 크게 소모
> 지도 학습의 경우 특히 임력을 수집하고 예측 모델을 훈련할 타깃인 애너테이션 만들어야 함. (노동 집약적)
데이터 애너테이션 인프라에 투자
애너테이션 방법
1) 외부에 위탁(아웃소싱): 시간과 비용을 절약할 수 있지만 데이터에 대한 통제권 넘어감, 애너테이션에 잡음이 들어갈 수 있음
2) 직접 진행: 시간과 비용이 많이 들지만 데이터에 대한 통제 가능
애너테이션 하는 사람에 대해 고려할 사항
1) 레이블링에 전문 지식 필요 여부
2) 전문적인 지식 필요 시 사람을 훈련/ 전문가에 맡김
3) 전문가의 애너테이션 작업에 대한 이해
대표성 없는 데이터 주의하기
- 모델은 이전에 본 샘플과 비슷한 샘플만 이해 가능 > 훈련 데이터가 제품 환경에 있는 데이터에 대해 대표성을 지녀야 함!
- 따라서 가능한 모델이 사용될 환경에서 데이터를 수집할 것
* 개념 이동: 제품 환경에서 데이터의 속성이 시간에 따라 변화할 때 발생
EX) 현재의 음악 추천 알고리즘에 과거의 음악 데이터를 사용하면 성능이 좋지 않게 나타남
* 샘플링 편향: 데이터의 수집 과정이 예측 대상과 상호작용하여 편향된 측정 결과를 만들어내는 현상
3. 데이터 이해
- 모델 훈련을 시작하기 전 데이터를 탐색하고 시각화하여 예측 능력을 가진 특성에 대한 통찰을 얻어야 함
방법
1) 직접 레이블 확인
2) 히스토그램 등으로 시각화
3) 위치 정보 포함 데이터일 시 지도에 직접 표시
4) 누락된 값에 대한 처리
5) 클래스 당 샘플 수 확인해 불균형이 있는지 파악
6) 타깃 누출( : 타깃에 대해 직접적으로 정보를 제공하는 특성이 데이터 안에 존재하는 현상 ) 이 있는지 확인
4. 올바른 성공 지표 선택
- 올바른 성공 지표가 프로젝트 전반에 걸쳐 내리는 모든 기술적 선택을 안내함
- 고수준의 목표와 직접적인 연관 필요
6-2) 모델 개발
1. 데이터 준비
- 원본 데이터를 신경망에 적용하기 쉽도록 하는 전처리 단계
벡터화
- 신경망의 모든 입력과 타깃은 부동 소수점 데이터로 이루어진 텐서여야 함
- 데이터 벡터화: 모델에 입력 위해서는 소리, 이미지, 텍스트 등 모든 데이터를 텐서로 변환해야 함
EX) 텍스트 데이터를 단어 시퀀스에 대한 정수 리스트로 변환한 후 원핫인코딩
값 정규화
- 각 특성별로 범위와 크기가 다 제각각임 > 업데이트할 그레이디언트가 커져 네트워크가 수렴하는 것을 방해함.
네트워크가 수렴하기 위해 데이터가 따라야 할 특징
1) 작은 값을 취하여야 함(일반적으로 0~1 사이)
2) 균일해야 함(모든 특성이 대체로 비슷한 범위를 가져야 함)
>> 각 특성별로 평균이 0, 표준편차가 1이 되도록 정규화
누락된 값 처리
- 범주형 특성: 누락된 값이라는 새로운 범주 만드는 것이 안전
- 수치형 특성: 임의의 값 넣지 말 것. 평균이나 중간값으로 대체하는 것이 일반적. 다른 특성 값에서 누락된 특성값 예측 모델 훈련도 가능
2. 평가 방법 선택
- 일반화 성능을 결정하는 검증 지표에 의해 모델링 결정 내려지므로 어떤 지표 사용할 지 평가 필요
방법
1) 홀드아웃 검증: 데이터가 풍부할 때 사용
2) K- 폴드 교차 검증: 홀드아웃 검증을 사용하기에 샘플 수가 너무 적을 때 사용
3) 반복 K- 폴드 교차 검증: 데이터가 매우 적고 정확한 모델 평가가 필요할 때 사용
3. 기준 모델 뛰어넘기
- 아주 간단한 통계적 검정력을 달성하는 모델을 개발하는 것 목표
주요하게 중점을 둬야 하는 것
1) 특성 공학: 유용하지 않은 특성을 제외하고(특성 선택), 문제에 대항 지식을 사용하여 유용할 것 같은 새 특성 개발
2) 구조에 대한 올바른 가정: 어떤 종류의 모델을 사용할 것인지, 해당 모델이 이 작업에 좋은 접근인지 판단
3) 좋은 훈련 옵션 선택: 어떤 손실 함수를 사용하여야 할 지, 배치 크기와 학습률을 얼마로 둘 지 결정(하이퍼파라미터 등에 대한 결정)
* 손실 함수 결정 시 참고
** 해당 단계에서 적절한 통계적 검정력을 달성하지 못할 시 앞서 세운 2가지의 가설, 즉 데이터 자체의 질에 대해 의심해 봐야 함 **
4. 모델 용량 키우기
- 과소적합과 과대적합 사이에 있는 모델이 이상적
- 해당 모델을 찾기 위해서는 과대적합이 일어나야 함!
과대적합된 모델을 만드는 법
1) 층을 추가함
2) 층의 크기를 키움
3) 더 많은 에포크 동안 훈련
과대적합 발생 확인: 훈련 데이터에서 모델의 성능은 증가하는데 검증 데이터에서의 모델의 성능은 감소하는 지점
5. 모델 규제와 하이퍼파리미터 튜닝
- 일반화 성능을 최대화하기 위함
시도할 수 있는 것
1) 층을 추가하거나 제거하기
2) 드롭아웃을 추가
3) 모델이 작다면 L1, L2 규제 추가
4) 하이퍼파라미터 변경(유닛 수, 옵티마이저의 학습률 등)
5) 더 많은 데이터 수집/ 더 나은 특성 개발/ 유용하지 않은 특성 제거
6-3) 모델 배포
1. 고객에게 작업을 설명하고 기대치 설정하기
- 모델의 성능 지표와 비즈니스의 목표를 명확하게 연결지어야 함
- 출시할 때 적용할 핵심적인 파라미터에 대한 논의 필요 (적절한 도메인에 대한 이해가 기반이 되어야 함)
2. 추론 모델 배치하기
- 훈련에 사용했던 모델과 같은 것을 제품에 넣을 수 없는 경우
EX) 제품 환경이 파이썬 지원하지 않음 등
REST API로 모델 배포하기
사용 조건
1) 인터넷에 안정적으로 접속 가능할 때
2) 응답 속도에 대한 요구사항이 엄격하지 않을 때
3) 입력 데이터가 크게 민감하지 않을 때 (암호화 X)
장치로 모델 배포하기
사용 조건
1) 응답 속도에 대한 제약이 엄격한 경우
2) 인터넷 연결이 불안정한 경우
3) 모델을 충분히 작게 만들 수 있을 때
4) 실행 효율성과 정화도 사이 적절한 절충점이 필요할 때
5) 민감한 정보가 입력 데이터에 포함되어 있을 때(원격 서버로 전송 불가능할 때)
브라우저에 모델 배포하기
사용 조건
1) 사용자 측에서 계산 수행(서버 비용 줄일 수 있음)
2) 입력 데이터가 사용자의 기기에 있는 경우
3) 응답 속도 제약이 엄격한 경우
4) 인터넷이 연결되지 않은 상태에서도 작동 가능한 경우
주의: 모델이 충분히 작아야 함/ 민감한 데이터에서 훈련한 모델 공개해서는 안됨
**추론 모델 최적화
기법
1) 가중치 가지치기: 예측에 크게 기여하는 값만 남겨 메모리나 계산 자원 줄임
2) 가중치 양자화: 딥러닝 모델은 32비트 부동 소수점 가중치로 훈련함. 이러한 가중치를 8비트 정수로 압축할 수 있음
3. 작동 중 모델 모니터링하기
- 새로운 데이터에서의 성능과 다른 애플리케이션과의 상호작용, 비즈니스 지표에 대한 최종 영향 모니터링 필요
- 정기적으로 배포된 모델에 대한 평가 진행
4. 모델 유지 관리
- 모델의 수명은 길지 않음 > 다음 세대 모델에 대한 훈련 진행 필요
새로운 모델 훈련 기반
- 제품 환경의 데이터에 대한 변화를 감시
- 지속적으로 데이터를 수집하고 애너테이션 수행
'케라스 창시자에게 배우는 딥러닝(DACOS)' 카테고리의 다른 글
8. 컴퓨터 비전을 위한 딥러닝 (0) | 2024.05.19 |
---|---|
7. 케라스 완전 정복 (0) | 2024.05.12 |
5. 머신 러닝의 기본 요소 (1) | 2024.04.07 |
4. 신경망 시작하기: 분류와 회귀 (0) | 2024.03.31 |
3. 케라스와 텐서플로 소개 (2) | 2024.03.22 |