Offline model building and evaluation
오프라인 모델을 구축하고 평가하기
- 데이터 생성 훈련 Training data generation
- 특성 공학 Feature Engineering
- 모델 훈련 Model Training
- 오프라인 평가 Offline Evaluation
데이터 생성 훈련 Training data generation
학습 Learning 에 있어 훈련은 음식과 같이 매우 중요하기 때문에 좋은 품질과 수량이 있어야한다.
- 사람이 라벨링한 데이터 Human labeled data
- 예시: 만약 운전 이미지의 분할 Segmentation 을 수행한다면, ML task 를 위해 데이터 라벨링이 필요하다.
라벨링을 하는 사람들은 Label box 같은 프로그램을 사용할 것이다. 이는 운전 사진들에서 객체들의 다른 경계들을
세길 것이다. - 사람이 데이터에 직접 라벨링 하는 방법은 비싼 방법이다. 그래서 사내의 라벨러들에게 라벨링 작업을 부여하거나 오픈 소스 데이터 셋들을 사용해야 비용을 아낄 수 있다.
- 예시: 만약 운전 이미지의 분할 Segmentation 을 수행한다면, ML task 를 위해 데이터 라벨링이 필요하다.
- 이전에 존재하는 시스템에서 사용자와 상호작용하여 수집한 데이터 Data Collection through a user's interaction with the pre-existing system
- 온라인 시스템에서 ( 현재 사용중이거나 이전에 존재하던 ) 사용자와 상호작용하면서 모은 데이터를 사용한다.
예시: 사람들이 사용 중인 검색 엔진 혹은 광고 시스템 - 새로운 머신러닝 기반의 검색 순위 시스템을 설계할때 이미 사용되고 있는 검색 엔진에서 어떻게 사용자들의 쿼리들이 결과를 보여주는지와, 그리고 사람들이 시스템과 상호작용하면 어떻게 훈련 데이터를 모으는지 볼 수 있다.
- 만약 사용자가 요청한 쿼리의 결과 링크를 클릭했을때, 긍정적인 훈련 예시를 볼 수 있을 것이다. 비슷하게 흉내 Impression 는 부정적인 예시로 볼 수 있다.
- 온라인 시스템에서 ( 현재 사용중이거나 이전에 존재하던 ) 사용자와 상호작용하면서 모은 데이터를 사용한다.
특징 공학 Feature Engineering
- 좋은 특징들이 모델의 능력에 큰 영향을 끼칠 수 있기 때문에 매우 중요하다.
- 이 프로세스는 문제 설정 중에 식별한 특정 작업에 관련된 행동들을 찾으면서 시작한다.
- 예시: 넷플릭스 영화 추천
1. 사용자 로그인
2. 넷플릭스에서 볼 수 있응 영화들
3. 정황 Context
- 예시: 넷플릭스 영화 추천
- 특징들을 만들기 위해서는 독립적으로 각 행동들을 조사하고 그들의 관계를 탐색해야한다. 아래 예시를 보자.
- 사용자 로그인을 햇을때 나이, 성별, 언어 등과 같은 관련 특징들을 접한다.
- 정황 Context 를 볼때, 중요한 특징 중하나는 '휴일이 다가옴' 라고 할 수 있다.
- 만약 크리스마스가 다가오면, 당연히 크리스마스 영화가 고려될 수 있으며, 사용자들이 그 영화들을 볼 큰 기회가 된다.
- 마지막으로 사용자의 과거 시청 목록을 특징으로 고려할 수 있다.
모델 훈련 Model Training
데이터 생성을 훈련하고, 특징 공학 이후에는 성능과 크기를 유지하면서 머신러닝 모델들을 결정할 수 있다. 그리고 최적의 훈련 모델을 구현하기 위해 모델에 설정하는 변수인 하이퍼파라미터 값을 다르게 시도하여 가장 좋은 결과를 낼 수 있다.
만약 우리가 깔대기 funnel 접근을 사용하고 있다면, 모델들을 기반으로 하는 복잡한 인공 신경망이나 트리와 거대한 데이터 꼭대기에서 더 간단한 모델들을 선택할 수도 있다.
그리고 pre-trained SOTA (state of the art) 이전에 사용되어왔던 최신 모델들을 활용하는 옵션도 있다.
오프라인 평가 Offline Evaluation
조심스럽게 데이터를 훈련 데이터와 검증 집합들로 나눠야한다. 나눠진 훈련 데이터 셋을 다양한 모델링 옵션들 (다른 모델들, 하이퍼파라미터, 특징 셋, 등) 을 고안하고 있는 모델 훈련 파트에서 사용해라.
그 이후, 모델들을 평가하고 일찍이 결정했던 메트릭스들을 활용하여 그 모델들의 성능을 평가한다. 상위의 적은 모델들은 좋은 결과를 대부분 뽑아낼 것이고, 이들을 다음 단계에서 사용해야한다.
온라인 모델 실행과 평가 Online model execution and evaluation
선택된 상위 성능의 모델들을 온라인에서 실험해야할 것이다. 또한 온라인 평가는 모델들을 선택하는데 아주 큰 영향을 끼칠 것이다. 문제의 종류에 따라 다르지만 구성요소 레벨 Component level 과 end-to-end 메트릭스들을 사용할 수 있다. 예를 들어 검색엔지 작업에서 Component-wise 메트릭은 NDCG 가 될 것이다. 하지만 이것 하나로는 충분하지 않다.
세션 성공률 같은 end-to-end 메트릭스도 필요하다, 왜냐하면 검색엔진의 성능이 새로운 머신러닝 모델을 통하여 향샹되는지 아닌지를 봐야하기 때문이다.
상호적인 모델 향상 Interactive model improvement
모델은 이제 오프라인 테스트를 잘 수행했지만 온라인에서는 비슷한 성능 향상을 관측할 수 없을 것이다. 그래서 이러한 요인을 일으키는 행동들을 모델을 디버깅해서 찾아야내야 한다.
예를 들어, '사용자의 상위 다섯가지 흥미' 는 훈련과 실험동안 다른 분포결과를 보여줄 수 있다. 이것을 이용해 훈련과 실험 시간 동안 상위 다섯 유저의 관심들을 제공하는 루틴들을 특정화시킬 수 있을 것이다.
그리고, 첫번째 모델 버전이 구축되고 사용된 후에 성능 모니터링을 계속 해줘야한다. 만약 기대한데로 성능 결과가 나오지 않는다면 디버깅을 해줘야한다. 예를 들어 일반적인 오류 General failure 가 발생하여 AUC 를 감소시키거나 특정한 시나리오에서 모델이 실패한다면 그것들을 찾아내어야한다. 한가지 예를 들면 자율 주행 자동차의 비디오 녹화를 분석해서 교통침체가 심한 지역에서의 이미지 분리 실패를 해결할 수 있을 것이다.;
'컴퓨터공학 > Machine Learning Study' 카테고리의 다른 글
[Machine Learning] Bias-Variance Tradeoff (0) | 2022.09.27 |
---|---|
[머신러닝 시스템 디자인 스터디 Part5] Performance and Capacity Considerations (0) | 2022.08.18 |
[머신러닝 시스템 디자인 스터디 Part4]Architecting for Scale (0) | 2022.08.12 |
[머신러닝 시스템 디자인 스터디 Part3]Defining metrics (0) | 2022.08.11 |
[머신러닝 시스템 디자인 스터디 Part2]Setting up a Machine Learning System (0) | 2022.08.10 |