[딥러닝] 딥러닝 2단계: 심층 신경망 성능 향상시키기 - 1. 머신러닝 어플리케이션 설정하기
https://www.boostcourse.org/ai216/joinLectures/132205?isDesc=false
딥러닝 2단계: 심층 신경망 성능 향상시키기
부스트코스 무료 강의
www.boostcourse.org
Train/Dev/Test 세트
신경망의 층의 개수, 히든유닛의 개수, 학습률, 활성화 함수 ... 를 모두 고려해 신경망을 만든다.
이후 결과에 기반해 아이디어를 개선한다.
어떤 분야의 애플리케이션의 직관이 다른 분야에 잘 적용되지 않는다. 따라서 다른 분야를 첫 시도했을 때, 첫 시도에 하이퍼파라미터튜닝을 잘 하는 것은 어렵다.
Train/Dev/Test 세트를 잘 만드는 것은 중요하다.

전체 데이터셋을 트레이닝셋, 테스트셋, dev셋으로 나눈다.
보통 60/20/20 퍼센트로 나누었다.(전통)
이제는 test와 dev셋의 크기를 작게 하는 추세이다. test를 1%로 해도 충분하다. 전체 데이터 개수가 많을수록 test셋 크기를 작게 해도 된다.
dev 세트: 다양한 모델 중 어떤 모델이 좋은 성능을 나타내는지 확인한다.
train과 dev세트는 같은 분포(distribution)에서 와야 한다.
(그러나 딥러닝 알고리즘은 많은 데이터가 필요하니 웹 크롤링을 쓸 수도 있다.)
test 세트가 없어도 된다. test세트의 목표는 비편향 추정이다.
test가 없으면 train으로 학습하고 dev로 테스트한다.
편향/분산
variance : 분산
bias : 편

high variance - overfitting
high bias - underfitting
train set에 과적합된 경우 - high variance.
train set에 대해서도 안 맞는 경우 - high bias.
train set, dev set 모두 안 맞는 경우 - high variance, high bias.
둘 다 잘 맞는 경우 - low variance, low bias
- train set error를 통해 최소한 훈련 데이터에서 얼마나 알고리즘이 적합한지 감을 잡을 수 있다.(bias problem)
- train set에서 dev set으로 갈 때 오차가 얼마나 커지는지에 따라서 variance 문제를 알 수 있다.
머신러닝을 위한 기본 레시피
- 알고리즘이 높은 bias를 갖는지를 맨 먼저 질문. -> 더 큰 네트워크, 더 오래 훈련, 네트워크 아키텍처 조정
- 분산 문제가 있는지 질문. 분산이 높으면 -> 더 많은 데이터 구하기,정규화, 네트워크 아키텍처 조정.