Train / Dev / Test sets
[Applied ML is a highly iterative process]
다양한 hyperparameters : layer 개수, hidden unit 개수, learning rate, activation functions
--> 처음부터 가장 적절한 값을 찾는 것은 어려움 --> 따라서 iterative 한 과정이 됨
한 도메인의 application 직관이 꼭 다른 domain에 그대로 이어지지 않기도 함
처음부터 하이퍼파라미터의 베스트 초이스를 찾기는 불가능
얼마나 "효율적으로" 사이클을 돌 것인지
[Train/dev/test sets]
*cross-validation set = dev set
- training set 으로 계속 학습
- dev set 으로 어떤 모델 성능이 가장 좋은지 판단
- test set 으로 최종 모델 evaluate
이전에는 70:30(train:test) 혹은 60:20:20(train:dev:test) 비율로 나누곤 했음
- 비교적 작은 dataset
하지만 빅데이터에 있어서는 dev와 test 셋의 비율이 매우 작아짐 --> 98:1:1 혹은 99.5:2.5:2.5 정도로 ...
- 어떤 모델이 최선일지 판단하는 데에 20퍼센트나 되는 dev 셋이 필요한 것은 아니므로
- test 셋도 마찬가지
[mismatched train/test distribution]
이런 식으로 데이터를 구성한다면?
전자는 고화질 이미지도 많지만 후자는 더러운 데이터도 많음
make sure that dev and test sets come from the same distribution
not having a test set might be okay
test set : 모델 performance의 unbiased estimate 를 구하기 위함 -> unbiased estimate 가 필요없다면 ㄱㅊ
dev set 만 있으면 training set에 학습한 후 dev set 에 테스트
-> 이 경우 dev set을 test set 이라고 부르게 됨
Bias/Variance
각 학습셋에 이만큼의 error가 있을 때,
모델은 train set 에 대해서는 매우 잘 학습되지만 dev set에는 상대적으로 잘 못하는 것 --> overfit (일반화를 잘 못하는) --> high variance
반대로
15%, 16% 라면
이 모델이 잘 못하는 것처럼 보이므로, underfitting --> high bias
그런데 dev set이 train set에 비해 error가 아주 큰 것도 아님
마지막으로 15%, 30% 라면 high bias & high variance
위와 같은 분석은 인간의 error는 거의 0%에 가깝다고 가정했을 때의 이야기긴 함.
more generally, the optimal error(bayes error) is nearly 0%.
만약에 optimal error(bayes error) 가 15% 정도로 높았다면 두번째 모델 (15%, 16%)은 그렇게 별로인 게 아님
예를 들어 매우 흐릿한 이미지가 많아서 인간조차도 잘 못알아본다면 bayes error는 더 높아진다고 볼 수 있음
training set error를 보면 어떻게 잘 학습하고 있는지 알 수 있고, (bias)
training set 에 비해 dev set error 가 얼마나 큰지를 보면 잘 일반화하고 있는지 알 수 있음(variance)
한편 high bias & high variance 모델은 어떤 걸까?
제대로 fitting 하고 있지 않으면서도(high bias) 중간에서 overfitting 하고 있음. too much flexibilty (high variance)
feature가 고차원일 때 자주 발생할 수 있음
Basic Recipe for Machine Learning
basic recipe for machine learning
- high bias? (training data performance 체크)
- 해결 방법 : 더 큰 네트워크 구하기, 더 오래 학습하기, 다른 신경망 구조 찾아보기(안 될 수도 있음)
- bayes error 가 그렇게 높지 않은 이상 웬만해선 training set에 훈련이 잘 되어야 함
- high variance? (dev set performance 체크)
- 해결 방법 : 데이터 더 모으기, regularzation, 다른 신경망 구조 찾아보기(안 될 수도 있음)
둘 중 어떤 문제인지에 따라 해결 방법이 다름
머신러닝 초기에는 "bias variance trade-off"에 대한 논의가 많았음; 한쪽을 내리면 한쪽이 올라가고 ...
하지만 이제는 네트워크(bias)가 커지고 데이터(variance)도 많아지면서, 다양한 툴로써 서로에 대한 영향을 주지 않고 문제를 감소시킬 수 있게 됨
더 큰 네트워크로 훈련시키는 건 거의 효과가 좋음 계산량이 너무 많아질 뿐
'인공지능 > DLS' 카테고리의 다른 글
[2.1.] Setting Up your Optimization Problem(1) (0) | 2022.07.04 |
---|---|
[2.1.] Regularizing your Neural Network (0) | 2022.07.03 |
강좌1 정리 노트 (0) | 2022.07.03 |
[1.4.] Deep Neural Networks (0) | 2022.07.02 |
[1.3.] Shallow Neural Networks(2) (0) | 2022.06.27 |