ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Covariate Shift 알아보기
    AI-ML 2023. 12. 24. 08:48
    728x90
    반응형

    - 목차

     

    키워드.

    • - 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
Designed by Tistory.