본문 바로가기

DeepLearning Specialization(Andrew Ng)/Structuring Machine Learning Projects

[Week 2] 2. Mismatched training and dev/test set

728x90
Mismatched training and dev/test set
1. Training and testing on different distributions
2. Bias and Variance with mismatched data distributions
3. Addressing data mismatch

1. Training and testing on different distributions

 

 

 위와 같은 경우에 아예 randomly shuffle하고 train, dev/test set을 나누면 사실상 train set으로 dev/test 를 진행하는 것과 같다. 우리의 최종목표는 오른쪽의 사진들에 대해 모델을 적용시키는 것이므로 제일 이상적인 것은 오른쪽 사진들에 대한 데이터를 많아 모아 train, dev/test 시키면 되지만, 데이터가 부족한 경우 dev/test만이라도 오른쪽 사진들로 구성해야한다. 그래야 내가 만든 모델의 실사용에 있어 얼마만큼의 효과를 가지는지 측정하고 hyperparameter를 수정할 수 있으며, 마지막으로 test하여 성능을 평가할 수 있다. 

 

cf) dev는 여러 모델 중 어느 모델을 선택할지에 대한 기준을 제시해줌. dev/test는 실제 목표데이터로 구성하여 우리가 원하는 target을 설정할 수 있음. 

 

 이 때, train에 오른쪽 사진데이터를 일부 포함시킬지 말지는 선택할 수 있다. 

 


2. Bias and Variance with mismatched data distributions

 

- 만약 train과 dev/test의 분포가 같다면, 두 error의 차이가 클 때 variance의 문제라고 판단할 수 있지만, 분포가 다르다면 이게 variance의 문제인지 분포가 달라서인지 알 수가 없다. 

 

- 이를 해결하기 위해 Train set의 일부를 추출하여 Train-dev set을 만들 수 있다. 이 오류를 dev 오류와 비교하여 data mismatch 정도를 파악할 수 있는 것. 왜냐하면 train-dev는 기본적으로 train으로부터 추출되기에 dev/test와 분포가 다르기 때문이다(물론 애초에 train과 dev/test를 다른 분포로 나누었을 때).   

- 정리하자면 위와 같이 bias, variance, data mismatch, overfitting to dev set 문제를 파악할 수 있다. 

 


3. Addressing data mismatch

 

먼저, error analysis를 통해 어떤 요인이 error에서 큰 부분을 차지하는지 파악한다. 이걸 이용해서 dev와 train set의 차이점이 무엇인지에 대한 insight를 얻는다. 

ex) 음성인식을 예로 들때, dev set에서 noisy 한 데이터가 error의 많은 부분을 차지한다는 것을 파악.

=> dev set에 noisy data가 많다.

 

그 다음 dev set과 비슷한 데이터를 모으거나 인공적으로 만들어 train 시킨다. 

ex) 음성인식의 예에서, 정상적으로 녹음된 음성에다가 자동차 실내의 noisy를 인위적으로 합성하는 방법이 있다. 이 과정에서 특정 noisy만 반복해서 활용된다면 그 noisy에 overfit될 가능성이 있으니 주의해야함.

 

비판과 질문은 언제나 환영입니다. 많이 꾸짖어주세요.

728x90