-
Covariate Shift 알아보기AI-ML 2023. 12. 24. 08:48반응형
- 목차
키워드.
- - Covariate Shift or Drift
- - Data Distribution
- - Shuffle
들어가며.
Covariate Shift 는 우리말로 "공변량 변화" 라고 합니다.
이는 머신러닝 모델의 학습 과정에서 발생할 수 있는 이슈 사항 중의 하나인데요.
말이 어렵기 때문에 먼어 Covariate Shift 와 관련된 여러가지 상황들에 대해서 말씀드리겠습니다.
Image Classification 에서 발생할 수 있는 문제 상황.
아래의 사진 자료는 실제 사자의 사진과 카툰 이미지를 각각 보여줍니다.
디즈니에서 자신들의 애니메이션을 실사화시켜서 개봉하고 있죠.
만약 동물의 이미지 데이터를 기반으로 Image Classification Model 을 학습한다고 가정해보죠.
학습 과정에서는 실제 동물들의 사진 데이터로 학습을 진행하고,
테스트 과정 또는 실제 추론 과정에서 카툰 이미지로 추론을 수행한다고 합시다.
출처 : https://screenrant.com/lion-king-movie-real-life-animals-inaccurate-wrong/ 대략적으로 추측만 하더라도 카툰 이미지로 진행한 테스트의 정확도는 매우 낮을 겁니다.
왜냐하면 학습 데이터와 테스트 데이터가 매우 상이하기 때문이죠.
이러한 상황은 Train Data Distrubtion 과 Test Data Distrubution 이 서로 상이하기 때문에 발생하는 이슈입니다.
그리고 Covariate Shift 를 야기하는 상황이죠.
동전 던지기.
두가지 동전이 있습니다.
하나는 평범한 동전이구요. 다른 하나는 특이한 확률을 가지는 동전입니다.
첫 번째 동전은 동전 던지기 사건을 시행할 때에 각 1/2 확률로 앞면과 뒷면이 나옵니다.
반면 두번째 동전은 동전 던지기 시에 앞면이 나올 확률은 0%에 수렴하고, 뒷면이 나올 확률은 100%에 수렴합니다.
이 둘의 확률 분포는 아래와 같습니다.
첫번째 동전은 Uniform Distribution 을 가지고, 각 확률은 0.5 로 표현됩니다.
저는 첫번째 동전 데이터로 학습을 진행하여 어떠한 모델을 생성합니다.
그리고 두번째 동전 데이터를 기반으로 테스트를 수행합니다.
이들은 데이터의 분포가 전혀 다르기 때문에 정확한 학습을 수행할 수 없습니다.
Shuffling 이 잘 되지 않은 경우.
아래와 같은 데이터가 존재한다고 가정합니다.
아래 그래프는 빨간색 데이터를 기준으로 학습을 진행하였고, 노란색 데이터로 테스트를 수행합니다.
그리고 녹색의 선은 빨간색 데이터를 기준으로 학습을 진행한 모델의 결과입니다.
하지만 데이터의 Shuffling 이 잘 되지 않아서 편향된 데이터만으로 학습이 진행되었습니다.
그래서 생성된 Linear Regression 모델로는 노란색의 테스트 데이터를 올바르게 예측할 수 없게 됩니다.
그 외의 수많은 예시들이 존재합니다.
병을 예측하는 모델을 만들기 위해서 고령의 환자들의 데이터로 모델을 만들게 되면, 실제 젊고 건강한 사람들에 대한 예측 정확도가 떨어질 수 있습니다.
이처럼 Covariate Shift 상황은 학습과 테스트 그리고 실제 환경에서 데이터의 분포가 달라져서 올바른 활용이 어려운 상황입니다.
Univariate, Bivariate, Multivativate Data 이라는 표현을 들어보셨나요 ?
Feature 의 갯수가 1개인 데이터를 Univariate, 그리고 많은 수의 Feature 를 가지는 데이터를 Multivariate 라고 합니다.
이처럼 Variate 는 데이터의 특징을 의미하게 됩니다.
Covariate 는 Train Dataset, Test & Validation Dataset 그리고 실제 운영 환경에서 맞이하는 Dataset 의 관계를 의미합니다.
이러한 환경별 Dataset 이 서로 상이한 또는 변화된 상태를 Shift 또는 Drift 라고 하구요.
이러한 현상을 Covariate Shift 라고 하게 됩니다.
Covariate Shift 문제를 어떻게 해결해야할까 ?
Covariate Shift 문제를 100% 해결한다가 보다 먼저 이러한 상황이 발생할 수 있다는 점을 인지해야합니다.
그래서 항상 Training Dataset 을 샘플링하는 과정에서 전체 표본 공간의 다양한 특징을 잘 표현하는 데이터를 수집했는지 의문을 제기하는 습관이 중요합니다.
데이터 샘플링을 수월하게 진행했다는 가정 하에 발생할 수 있는 상황은 아래와 같습니다.
Train & Test Dataset Shuffling .
Dataset 이 전체 표본 공간의 특징을 잘 표현해야 하듯이 Train Dataset 과 Test Dataset 또한 전체 표본 공간의 특징을 모두 가져야 합니다.
그렇지 않게되면 Train Dataset 과 Test Dataset 의 Covariate Shift 가 발생하게 되면 테스트의 정확도는 낮아지게 됩니다.
따라서 Shuffling 또는 Cross Validation 을 통해서 데이터가 편향되는 점을 방지해야합니다.
모델의 업데이트 주기.
Train Dataset 과 Test Dataset 의 Covariate Shift 문제가 해결된다면 Train Dataset 과 실제 데이터셋의 차이를 줄여야합니다.
이 둘의 괴리를 줄이는 가장 간단한 방법은 모델의 업데이트 주기를 짧게 가져가는 것입니다.
특별한 이벤트 (ex. 명절) 의 전후로 모델을 개선하고, 계절 단위로 모델을 업데이트하는 등 실제 데이터셋의 변화에 따라 학습 데이터의 변화를 주고, 모델이 이에 적응하도록 해야합니다.
반응형'AI-ML' 카테고리의 다른 글
Sigmoid Activation Saturation 알아보기 (0) 2024.01.10 [PyTorch] RNN 모듈 알아보기 (0) 2023.12.29 [pytorch] nn.BatchNorm 알아보기 (0) 2023.12.24 [pytorch] optim.SGD 알아보기 (0) 2023.12.13 [Statistics] Odds, Logit 알아보기 (0) 2023.11.24