[python] 조기 중지를 위해 어떤 매개 변수를 사용해야합니까?

Keras를 사용하여 프로젝트를 위해 신경망을 훈련하고 있습니다. Keras는 조기 중지 기능을 제공했습니다. 조기 중지를 사용하여 신경망이 과적 합되는 것을 방지하기 위해 어떤 매개 변수를 관찰해야하는지 알 수 있습니까?



답변

조기 중지

조기 중지는 기본적으로 손실이 증가하기 시작하면 (즉, 유효성 검사 정확도가 감소하기 시작하면) 훈련을 중지하는 것입니다. 문서 에 따르면 다음과 같이 사용됩니다.

keras.callbacks.EarlyStopping(monitor='val_loss',
                              min_delta=0,
                              patience=0,
                              verbose=0, mode='auto')

값은 구현 (문제, 배치 크기 등)에 따라 다르지만 일반적으로 과적 합을 방지하기 위해 사용합니다.

  1. monitor
    인수를 로 설정하여 유효성 검사 손실을 모니터링합니다 (교차 유효성 검사 또는 최소한 훈련 / 테스트 세트를 사용해야 함) 'val_loss'.
  2. min_delta일부 시대의 손실을 개선으로 정량화할지 여부에 대한 임계 값입니다. 손실의 차이가. 이하 min_delta이면 개선이없는 것으로 정량화됩니다. 손실이 악화 될 때 관심이 있으므로 0으로 두는 것이 좋습니다.
  3. patience인수는 손실이 증가하기 시작하면 (개선이 중지됨) 중지되기 전 에포크 수를 나타냅니다. 이것은 구현에 따라 다르며, 매우 작은 배치
    또는 큰 학습률 을 사용하는 경우 손실 지그재그 (정확도는 더 시끄러움)이므로 큰 patience인수를 설정하는 것이 좋습니다 . 큰 배치작은 학습률 을 사용하면 손실이 더 부드러워 져 더 작은 patience인수를 사용할 수 있습니다 . 어느 쪽이든 2로 남겨 두어 모델에 더 많은 기회를 줄 것입니다.
  4. verbose 인쇄 할 내용을 결정하고 기본값 (0)으로 둡니다.
  5. mode인수는 모니터링 된 수량의 방향 (감소 또는 증가)에 따라 달라집니다. 손실을 모니터링하므로 min. 하지만 keras가 우리를 위해 처리하도록 놔두고auto

그래서 저는 이와 같은 것을 사용하고 조기 중지를 사용하거나 사용하지 않고 오류 손실을 플로팅하여 실험합니다.

keras.callbacks.EarlyStopping(monitor='val_loss',
                              min_delta=0,
                              patience=2,
                              verbose=0, mode='auto')

콜백 작동 방식에 대한 모호성을 위해 더 설명하려고합니다. fit(... callbacks=[es])모델 을 호출하면 Keras는 지정된 콜백 객체에 미리 지정된 함수를 호출합니다. 이 함수를 호출 할 수 있습니다 on_train_begin, on_train_end, on_epoch_begin, on_epoch_endon_batch_begin, on_batch_end. 조기 중지 콜백은 모든 Epoch 종료시 호출되며, 최상의 모니터링 값을 현재 값과 비교하고 조건이 충족되면 중지됩니다 (최적 모니터링 값을 관찰 한 이후 몇 Epoch가지나 갔는지 인내 인수 이상입니까? 마지막 값은 min_delta 등보다 큽니다.).

@BrentFaust가 주석에서 지적했듯이 모델의 학습은 조기 중지 조건이 충족되거나 epochs매개 변수 (기본값 = 10) 가 충족 될 때까지 계속됩니다 fit(). 조기 중지 콜백을 설정해도 모델이 epochs매개 변수 이상으로 학습되지 않습니다 . 따라서 fit()더 큰 epochs값으로 함수를 호출 하면 Early Stopping 콜백에서 더 많은 이점을 얻을 수 있습니다.


답변