학습·검증·시험 데이터 분할 계산기 쉽게 이해하기 — 개념과 원리
이 계산기는 학습(train), 검증(validation), 시험(test) 데이터의 비율을 실제 표본 개수로 바꾸고, 학습 데이터를 한 번 모두 도는 데 필요한 배치 수(1에포크당 단계 수)를 알려 줍니다. 데이터셋을 나누거나 데이터 로더를 설정할 때, 한 에포크에 걸리는 시간을 가늠할 때 쓰입니다.
계산 방법
- 학습 개수 = round(N × 학습% ÷ 100)
- 검증 개수 = round(N × 검증% ÷ 100)
- 시험 개수 = N − 학습 − 검증. 나머지를 모두 시험 데이터에 배정하므로 세 값의 합은 항상 정확히 N입니다.
- 에포크당 단계 수 = ceil(N × 학습% ÷ 100 ÷ 배치 크기). 마지막 배치는 덜 찰 수 있어 올림합니다.
시험 비율은 따로 입력하지 않으며 100 − 학습% − 검증%로 정해집니다.
원리
모델은 한 번도 보지 않은 데이터로 평가해야 합니다. 학습 데이터로 가중치를 맞추고, 검증 데이터로 하이퍼파라미터나 구조, 조기 종료 시점을 고르며, 시험 데이터는 마지막에 한 번만 사용해 실제 성능을 편향 없이 추정합니다. 검증 결과는 여러 번 보면서 선택을 하기 때문에 모델이 점점 그 데이터에 맞춰지게 되고, 그래서 손대지 않은 별도의 시험 데이터가 필요합니다. 앞의 두 개수만 반올림하고 나머지를 시험에 주면 표본이 빠지거나 중복되지 않습니다.
예제 풀이
- 입력값: 전체 10,000개, 학습 70%, 검증 15%, 배치 크기 32입니다.
- 학습 = round(10,000 × 0.70) = 7,000개입니다.
- 검증 = round(10,000 × 0.15) = 1,500개입니다.
- 시험 = 10,000 − 7,000 − 1,500 = 1,500개입니다.
- 결과는 7000 / 1500 / 1500입니다.
- 에포크당 단계 수 = ceil(7,000 ÷ 32) = ceil(218.75) = 219이며, 마지막 배치에는 24개가 들어갑니다.
결과 해석
흔히 70/15/15나 80/10/10으로 나눕니다. 표본이 수백만 개라면 검증과 시험에 각각 1~2%만 두어도 충분한 경우가 많은데, 중요한 것은 비율보다 평가에 쓰이는 표본의 절대 개수이기 때문입니다. 데이터가 적으면 고정 분할은 데이터를 낭비하고 평가가 흔들리므로 k-겹 교차검증이 더 낫습니다. 에포크당 단계 수에 에포크 수를 곱하면 학습률 스케줄에 필요한 전체 단계 수가 됩니다.
흔한 실수
- 같은 환자의 여러 영상처럼 서로 독립이 아닌 표본을 무작위로 나누어 시험 데이터로 정보가 새는 경우입니다.
- 클래스가 불균형한데 층화 추출을 하지 않아 드문 클래스가 검증·시험에 빠지는 경우입니다.
- 시험 데이터로 여러 번 조정해 점수가 낙관적으로 나오는 경우입니다.
- 마지막 미완성 배치를 버리면 단계 수가 올림이 아니라 내림이 된다는 점을 잊는 경우입니다.
자주 묻는 질문
왜 시험 데이터가 나머지를 받나요?
세 부분을 각각 반올림하면 합이 N과 1개 정도 어긋날 수 있습니다. 나머지를 시험에 주면 합이 정확히 맞습니다.
검증 데이터가 꼭 필요한가요?
결과를 보고 설정을 하나라도 고른다면 필요합니다. 그렇지 않으면 결국 시험 데이터로 조정하는 셈이 됩니다. 교차검증으로 대신할 수도 있습니다.
배치 크기를 키우면 학습이 빨라지나요?
에포크당 단계 수는 줄지만 한 단계의 계산량이 늘어납니다. 실제 시간은 하드웨어 활용도에 따라 달라집니다.
출처: T. Hastie, R. Tibshirani and J. Friedman, The Elements of Statistical Learning, 2nd ed., Springer, 2009, Section 7.2 and 7.10 · I. Goodfellow, Y. Bengio and A. Courville, Deep Learning, MIT Press, 2016, Section 5.3