concept shift
| 구분 | 개념 변화 (Concept Drift) | 공변량 변화 (Covariate Shift) |
|---|---|---|
| 변화의 핵심 | 관계/정답분포 정답의 정의 () 가 변함 | 입력 데이터 분포 데이터 () 가 변함 이지만 는 동일 |
| 핵심 내용 | ’데이터의 의미(정답)’ 가 변함 | ’어떤 데이터가 들어오는가’ 가 변함 |
| 원인 | 소비자 취향 변화, 법 개정, 경제 상황 변화 등 | 샘플링 편향, 새로운 사용자 유입 등 |
| 모델의 상태 | 모델이 알고 있는 지식 자체가 틀리게 됨 | 학습한 영역 밖의 데이터가 들어와 당황함 |
| 해결 방법 | 모델을 처음부터 다시 학습, 가중치 업데이트 | 더 다양한 데이터를 수집, 도메인 적응 |
들어오는 데이터는 비슷한데, 정답의 기준(데이터 간의 관계) 자체가 바뀌는 상황
- 세상이 변해서 어제의 정답이 오늘의 오답
예시:
- 스팸 메일 분류 모델이 “비트코인”이라는 단어가 들어간 메일을 스팸으로 분류하도록 학습
- 이후 비트코인이 제도권 금융 상품에 편입되어 비트코인 단어가 일상적으로 사용
- 이제 “비트코인” 단어가 들어간 메일은 스팸이 아니라 일반 메일
- 입력 단어(x)는 똑같은데, 그것이 스팸인지 아닌지 결정하는 기준(y)이 변화
covariate shift
| 구분 | 공변량 변화 (Covariate Shift) | 내부 공변량 변화 (Internal Covariate Shift) |
|---|---|---|
| 현상 | 훈련 데이터 분포와 테스트 데이터 분포가 다른 현상 | 신경망 계층마다 입력 데이터 분포가 다른 현상 |
| 어디서 | 모델(system) 입장에서 입력 데이터의 분포가 바뀜 | 개별 레이어 (sub-system) 에서 이전 레이어의 출력이 바뀜 |
| 발생 위치 | 모델 외부 (학습 데이터 vs 테스트 데이터) | 모델 내부 (딥러닝의 레이어와 레이어 사이) |
| 발생 시점 | 모델을 실제 환경에 적용(Inference)할 때, 모델이 완성된 후 외부 환경의 변화 | 모델을 학습(Training)시키고 있을 때, 모델이 완성되기 이전 |
| 주요 원인 | 샘플링 편향, 시간에 따른 데이터 트렌드 변화 | 앞쪽 레이어의 가중치 업데이트에 따른 출력값 분포 변화 |
| 영향 | 학습된 모델의 성능 및 정확도 저하 | 학습 속도 저하, 초기화 민감도 상승, 기울기 소실 등 |
| 해결 방법 | 데이터 재수집, 중요도 가중치 부여 | 배치 정규화(Batch Normalization), 레이어 정규화 |
| 공변량 변화라는 개념을, 모델 내부 레이어 단위에 적용한 별개의 현상 |
입력 데이터(x)의 분포가 학습(Train) 시와 테스트(Test)/실제 운영 시에 달라지는 현상
수학적으로는 입력 분포 는 변하지만, 입력값에 따른 출력값의 조건부 확률 는 변하지 않는 상태. 입력 분포 는 변하지만, “이 사진이 고양이인가?”라는 관계 는 변하지 않음. 즉,
- 데이터의 ‘특성’ 자체가 바뀌는 것이 아니라,
- 어떤 데이터가 ‘더 자주 들어오는지’가 변화
예시:
- 안면 인식: 모델을 주로 20대 젊은 층의 얼굴 데이터로 학습시켰는데, 실제 서비스에서는 다양한 연령층의 사용자가 유입
- 의료 진단: 특정 지역 병원의 환자 데이터를 학습했으나, 인구 구성(나이, 성별 등)이 전혀 다른 다른 지역 병원에 모델을 적용
- 전자상거래: 평상시 구매 데이터를 학습한 모델이, 블랙 프라이데이와 같은 특수한 쇼핑 시즌의 급격한 고객 유입 데이터를 마주하는 경우
- 이미지 인식: 고양이 사진을 ‘집 안’ 사진으로만 학습시켰는데, 실제 테스트는 ‘길거리’ 고양이 사진으로 할 경우 배경 데이터(x)의 분포가 달라져 모델이 당황
원인:
- 샘플링 편향 (Sample Selection Bias): 학습 데이터를 수집할 때 특정 집단이나 조건에 편중되어 수집된 경우
- 환경의 변화: 시간이 지남에 따라 데이터가 생성되는 환경(트렌드, 날씨, 경제 상황 등)이 변할 때 발생
해결:
- 재학습 (Retraining): 주기적으로 최신 데이터를 수집하여 모델을 다시 학습
- 중요도 가중치 부여 (Importance Weighting): 테스트 데이터의 분포와 유사한 학습 데이터에 더 큰 가중치를 주어 학습합니다. ( 비율 활용)
internal covariate shift
딥러닝 내부에서 가중치(Weight)가 업데이트되면서 각 층(Layer)의 출력이 바뀌고, 이것이 다음 층의 입력 분포를 계속 뒤흔드는 현상입니다.
여러 명이 한 줄로 서서 말을 전달하는 ‘가족 오락관’ 게임과 비슷하다. 앞사람이 말을 전달하는 방식(가중치)을 조금만 바꿔도 뒷사람이 듣는 내용(입력 분포)은 크게 변하여 적응하기 힘들어지는 것과 동일.
해결:
- 각 레이어의 출력을 강제로 일정한 분포(평균 0, 분산 1)로 맞춰주는 배치 정규화. 딥러닝 내부에서 발생하는 내부 공변량 변화를 줄이기 위해, 각 레이어의 출력을 정규화하여 학습 안정성을 높임
• 신경망의 각 레이어를 거칠 때마다 입력 데이터의 분포가 변화하여 학습 과정을 어렵게 만드는 문제 • 내부 공변량 변화는 학습 과정을 느리게 만들 수 있고, 신경망의 성능을 저하시킬 수 있습니다. • 공변량 변화는 훈련 데이터의 분포와 테스트 데이터의 분포가 다른 경우를 의미합니다. • 발생 이유 ◦ 학습하는 동안 각 레이어의 가중치가 업데이트되면서 입력 데이터의 분포가 변할 수 있습니다 ◦ 미니배치 단위로 학습을 진행하면서 각 미니배치의 데이터 분포가 다를 수 있습니다 • 해결안 ◦ batch normalization