Post

[Deep Learning] Early Stopping 과 Validation Split, Data

model 학습 시, Early Stopping과 Validation Split, Validation Data 적용하기.

✅ Early Stopping

  • 학습 진행 중에, 설정한 값에 따라 성능이 개선되지 않으면 학습을 중단 시킬 수 있는 옵션
  • from tensorflow.keras.callbacks import EarlyStopping으로 함수를 불러온다.
  • Early Stopping의 주요 파라미터
    • monitor : 관측 대상 (default : val_loss)
    • patience : 성능이 개선되지 않을 때 몇 번 참을래?
    • min_delta : Threshold
    • restore_best_weights : 가장 성능이 좋았던(monitor 기준) epoch의 가중치 적용 (default : False)
1
2
3
4
5
6
7
8
9
10
from tensorflow.keras.callbacks import EarlyStopping

es = EarlyStopping(monitor='val_loss',            # 관측 대상
                   min_delta=0,                   # 학습 성능 Threshold
                   patience=5,                    # 성능 개선되지 않더라도 몇 번 참을래?
                   verbose=1,                     
                   restore_best_weights=True)     # 가장 성능이 좋았던 epochs의 가중치를 쓸래 (Default=False)

model.fit(train_x, train_y, validation_split=0.2, 
          callbacks=[es], verbose=1, epochs=50)

✅ Validation Split, Validation Data

  • 모델 학습 시, Validation Data를 설정할 수 있는 파라미터이다.
  • 만약 EarlyStopping 파라미터의 기본 값인 monitor='val_loss'로 지정했다면, 필수적으로 설정해야한다.(설정하지 않으면 관측값이 없어지므로)

✔ Validation Split

  • Validation Split은 설정한 비율만큼 training set에서 자동으로 validation set으로 학습시켜준다.
  • model.fit(validation_split=0.2) : training set 에서 20%는 validation set으로 사용

✔ Validation Data

  • Validation Data는 Validation set을 직접 설정해주는 것이다.
  • model.fit(validation_data=(val_x, val_y)) : validation set으로 val_x와 val_y를 사용

즉, Early Stopping 과 Validation Set을 적용한 학습 코드는 다음과 같이 작성할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from tensorflow.keras.callbacks import EarlyStopping

es = EarlyStopping(monitor='val_loss',            # 관측 대상
                   min_delta=0,                   # 학습 성능 Threshold
                   patience=5,                    # 성능 개선되지 않더라도 몇 번 참을래?
                   verbose=1,                     
                   restore_best_weights=True)     # 가장 성능이 좋았던 epochs의 가중치를 쓸래 (Default=False)

# validation split 사용
model.fit(train_x, train_y, validation_split=0.2, 
          callbacks=[es], verbose=1, epochs=50)

# validation data 사용
model.fit(train_x, train_y, validation_data=(val_x, val_y), 
          callbacks=[es], verbose=1, epochs=50)
This post is licensed under CC BY 4.0 by the author.

[Deep Learning] Keras Sequential API로 모델 생성

[Deep Learning] Keras Functional API로 모델 생성