- 하이퍼파라미터
- 각층의 뉴런 수, 배치 크기, 매개변수 갱신 시 학습률, 가중치 감소
- 적절한 설정이 이루어지지 않으면 모델의 성능이 크게 떨어짐
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)
가중치 감소 계수, 학습률의 예시
위 그림은 검증 데이터의 학습 추이를 정확도가 높은 순서대로 나열했다. 이 결과를 바탕으로 잘된 것 같은 값의 계수들을 확인하고, 하이퍼파라미터들의 계수의 범위를 다시 설정해주면서 좁혀나가면 된다.
'머신 러닝 및 파이썬 > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글
Ch.7 합성곱 신경망(CNN)/ 7.4 합성곱 계층 구현하기 (0) | 2020.03.14 |
---|---|
Ch.7 합성곱 신경망(CNN)/ 7.2 합성곱 계층 (0) | 2020.03.12 |
Ch.6 학습 관련 기술들/ 6.4.3 드롭아웃 (0) | 2020.03.11 |
Ch.6 학습 관련 기술들/ 6.4.1 오버피팅 (0) | 2020.03.11 |
Ch.6 학습 관련 기술들/ 6.3 배치 정규화 (0) | 2020.03.11 |