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
복사했습니다!