-
Covariate Shift 알아보기AI-ML 2023. 12. 24. 08:48728x90반응형
- 목차
키워드.
- - Covariate Shift or Drift
- - Data Distribution
- - Shuffle
들어가며.
Covariate Shift 는 우리말로 "공변량 변화" 라고 합니다.
이는 머신러닝 모델의 학습 과정에서 발생할 수 있는 이슈 사항 중의 하나인데요.
말이 어렵기 때문에 먼어 Covariate Shift 와 관련된 여러가지 상황들에 대해서 말씀드리겠습니다.
Image Classification 에서 발생할 수 있는 문제 상황.
아래의 사진 자료는 실제 사자의 사진과 카툰 이미지를 각각 보여줍니다.
디즈니에서 자신들의 애니메이션을 실사화시켜서 개봉하고 있죠.
만약 동물의 이미지 데이터를 기반으로 Image Classification Model 을 학습한다고 가정해보죠.
학습 과정에서는 실제 동물들의 사진 데이터로 학습을 진행하고,
테스트 과정 또는 실제 추론 과정에서 카툰 이미지로 추론을 수행한다고 합시다.
대략적으로 추측만 하더라도 카툰 이미지로 진행한 테스트의 정확도는 매우 낮을 겁니다.
왜냐하면 학습 데이터와 테스트 데이터가 매우 상이하기 때문이죠.
이러한 상황은 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