참고문헌 : 데이터셋 이야기 https://tykimos.github.io/2017/03/25/Dataset_and_Fit_Talk/
validation 하는 이유
딥러닝은 마치 정답지를 보고 공부하면서 문제 풀이를 학습하는 것 입니다. 그래서 기본적으로 데이터셋에는 라벨이 포함된 train set과 학습에는 포함되지 않을 test set이 있습니다. 그리고 주로 train set에서 일부분을 분리하여 validation set으로 활용합니다.
처음에 validation set에 대해서 단순히 train set을 학습시킬때 잘 학습되고 있는지 체크하기 위한 정도의 dataset으로 이해했습니다. 하지만, k-fold, cross validation, grid search, random search 등의 개념이 막 쏟아지면서 단순히 mini test로만 이해하면 안된다는 점을 깨달았습니다.
validation set을 사용하는 이유는 모델 학습이 잘 이뤄지고 있는지 체크하는 것도 있지만, 더 잘 학습하기 위한 하이퍼파라미터 즉, 튜닝 가능한 최적의 파라미터 값들을 찾아내기 위함도 있습니다. 그러다보니, validation으로 random/grid "search"가 cross validation(교차 검증)에 해당하게 되는 것의 연관성을 덜 헷갈릴 수 있습니다.
이 점을 사실 딥러닝 공부한지 한참 됐을 때 깨달았습니다. 그래서 교차 검증과 k-fold를 생각할 때 단순히 k-fold는 학습 셋을 k개로 쪼개서 학습하는거고, 교차 검증은 파라미터 찾는거 이렇게 구분해서 이해했었으나, validation 개념을 정리하면서 validation set을 사용하는 이유를 정리할 수 있었습니다.
(Summary)
validation 하는 이유
- 하이퍼 파라미터를 찾기 위해서
- 학습할 때 모델 성능을 검증하기 위해서
- 일반적으로 test set은 라벨이 없는 경우도 있어서 이럴 때는 train set을 validation set으로 분리해서 최대한 랜덤하게 샘플링된 데이터셋으로 성능 평가를 위한 dataset으로 활용 가능합니다.
validation set 사용시 유의사항
- validation set은 학습시키는 대상이 아닙니다.
- validation set은 정규화처럼 분포에 영향을 주지 않는 데이터 전처리 외에 데이터 변형을 하면 안 됩니다. e.g. data augmentation