4. 규제를 사용해 과대적합 피하기
1) L1과 L2 규제
- 신경망의 연결 가중치를 제한하기 위해 L2 규제를 사용하거나 희소 모델을 만들기 위해 L1 규제 사용 가능
- keras.regularizers.l1_l2()
2) 드롭아웃
- 심층 신경망에서 가장 인기 있는 규제 기법 중 하나
- 최고 성능을 내는 신경망 조차도 드롭아웃을 적용해서 정확도를 1~2% 높임
- 하이퍼파라미터 p를 드롭아웃 비율이라 하며 10% ~ 50% 사이로 지정
- 임시적으로 드롭아웃될 확률 p를 가짐 -> 이번 훈련 스텝에는 완전히 무시되지만 다음 스텝에는 활성화 될 수 있음
- 훈련이 끝난 후에는 더는 드롭아웃을 적용하지 않음
- 층이 클 때는 드롭아웃 비율을 늘리고 작은층에는 드롭아웃 비율을 낮추는 것이 도움이 됨
- 일반적으로 출력층을 제외한 맨 위의 층부터 세 번째 층까지 있는 뉴런에만 드롭아웃을 적용
- 최근 신경망 구조는 마지막 은닉층 뒤에만 드롭아웃을 사용
- 모델이 과대적합되었다면 드롭아웃 비율을 높이고 과소적합되면 드롭아웃 비율을 낮춰야 함
3) 몬테 카를로 드롭아웃
- 훈련된 드롭아웃 모델을 재훈련하거나 전혀 수정하지 않고 성능을 크게 향상시킬 수 있는 방법
- 드롭아웃으로 만든 예측을 평균화하면 일반적으로 드롭아웃 없이 예측한 하나의 결과보다 더 안정적
y_probas = np.stack([model(X_test_scaled, training=True)
for sample in range(100)])
y_proba = y_probas.mean(axis=0)
5) 요약
기본 DNN 설정
하이퍼파라미터 | 기본값 |
커널 초기화 | He 초기화 |
활성화 함수 | ELU |
정규화 | 얇은 신경망일 경우 없음, 깊은 싱경망이면 배치 정규화 |
규제 | 조기 종료 (필요하면 l2 규제 추가) |
옵티마이저 | 모멘텀 최적화 (또는 RMSProp이나 Nadam) |
학습률 스케줄 | 1 사이클 |
자기 정규화를 위한 DNN 설정
하이퍼파라미터 | 기본값 |
커널 초기화 | 르쿤 초기화 |
활성화 함수 | SELU |
정규화 | 없음 (자기 정규화) |
규제 | 필요하다면 알파 드롭아웃 |
옵티마이저 | 모멘텀 최적화 (또는 RMSProp이나 Nadam) |
학습률 스케줄 | 1 사이클 |
'인공지능(AI) > 머신러닝' 카테고리의 다른 글
[핸즈온 머신러닝] 11장 심층 신경망 훈련하기 (11.1 ~ 11.3) (0) | 2022.02.18 |
---|---|
[핸즈온 머신러닝] 10장 케라스를 사용한 인공 신경망 소개 (0) | 2022.02.14 |
[핸즈온 머신러닝] 9장 비지도 학습 (0) | 2022.02.07 |
[핸즈온 머신러닝] 8장 차원 축소 (0) | 2022.01.24 |
[핸즈온 머신러닝] 7장 앙상블 학습과 랜덤 포레스트 (0) | 2022.01.22 |
댓글