본문 바로가기

케라스 창시자에게 배우는 딥러닝(DACOS)

6. 일반적인 머신러닝 워크플로

 

 

목차

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. 모델 유지 관리

- 모델의 수명은 길지 않음 > 다음 세대 모델에 대한 훈련 진행 필요

 

새로운 모델 훈련 기반

- 제품 환경의 데이터에 대한 변화를 감시

- 지속적으로 데이터를 수집하고 애너테이션 수행