• 하이퍼파라미터

- 각층의 뉴런 수, 배치 크기, 매개변수 갱신 시 학습률, 가중치 감소

- 적절한 설정이 이루어지지 않으면 모델의 성능이 크게 떨어짐

 

 

6.5.1 검증 데이터

 

하이퍼파라미터를 조정할 때는 하이퍼파라미터 전용 확인 데이터가 필요, 이를 검증 데이터 validation data 라고 부름

##시험 데이터를 사용하여 조정하면 하이퍼파라미터 값이 시험 데이터에 오버피팅되어, 범용 성능이 떨어질 수 있다.

 

  • 훈련 데이터: 매개변수 학습
  • 검증 데이터: 하이퍼파라미터 성능 평가
  • 시험 데이터: 신경망의 범용 성능 평가

 

6.5.2 하이퍼파라미터 최적화

 

최적화 시 핵심은 '최적 값'이 존재하는 범위를 조금씩 줄여나간다는 것이다. 

대략적인 범위를 설정하고 무작위로 값을 샘플링 후, 그 값으로 정확도를 평가한다. 이후 이 작업을 반복하여 '최적 값'의 범위를 좁힌다.

 

  • 하이퍼파라미터의 범위는 '대략적으로' 지정하는 것이 효과적이다.
  • 하이퍼파라미터를 최적화할 때는 오랜 시간이 걸리기 때문에, 나쁠 듯한 값을 일찍 포기하자. 따라서 학습을 위한 에폭을 작게 하여, 1회 평가에 걸리는 시간을 단축하는 것이 효과적이다.

 

0단계:

  하이퍼파라미터 값의 범위를 설정

1단계:

  설정된 범위에서 하이퍼파라미터값을 무작위로 추출

2단계:

  1단계에서 샘플링한 하이퍼파라미터값을 사용하여 학습하고, 검증 데이터로 정확도를 평가 (단 에폭은 작게 설정)

3단계:

  1단계와 2단계를 특정 횟수 반복하며, 그 정확도의 결과를 보고 하이퍼파라미터의 범위를 좁힘

 

##위에서 설명한 방법은 실용적인 방법이다. 하지만 굉장히 직관에 의존하는 느낌이 든다. 더 세련된 기법을 원한다면 Bayesian optimization을 소개할 수 있다.

 

 

6.5.3 하이퍼파라미터 최적화 구현

weight_decay = 10 ** np.random.uniform(-8,-4)
lr = 10 ** np.random.uniform(-6,-2)

가중치 감소 계수, 학습률의 예시

 

실선: 검증 데이터에 대한 정확도, 점선: 훈련 데이터에 대한 정확도

위 그림은 검증 데이터의 학습 추이를 정확도가 높은 순서대로 나열했다. 이 결과를 바탕으로 잘된 것 같은 값의 계수들을 확인하고, 하이퍼파라미터들의 계수의 범위를 다시 설정해주면서 좁혀나가면 된다.

+ Recent posts