본문 바로가기
인공지능(AI)/머신러닝

[핸즈온 머신러닝] 11장 심층 신경망 훈련하기 (11.4)

by hyezzisss 2022. 3. 8.

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 사이클

 

 

댓글