머신러닝

[딥러닝] 딥러닝 2단계: 심층 신경망 성능 향상시키기 - 1. 머신러닝 어플리케이션 설정하기

sa_woll 2024. 4. 15. 22:55

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를 갖는지를 맨 먼저 질문. -> 더 큰 네트워크, 더 오래 훈련, 네트워크 아키텍처 조정

- 분산 문제가 있는지 질문. 분산이 높으면 -> 더 많은 데이터 구하기,정규화, 네트워크 아키텍처 조정.