본문 바로가기

Deep Learning

Deep Learning : EarlyStopping 라이브러리 사용법

OverFitting 되는 모델의 경우, epoch이 커질 수록 Loss가 줄다가 다시 늘게 되는 아래와 같은 경우가 생긴다. 150번정도에 EarlyStopping이 되면 overfitting이 되지 않을 수 있는데 더 이상 개선의 여지가 없을 때 학습을 종료시키는 콜백함수이다

콜백함수란? 어떤 함수를 수행 시 그 함수에서 내가 지정한 함수를 호출하는 것. 여기서는 fit() 함수에서 EarlyStopping() 콜백함수가 학습 과정 중 매번 호출된다. 

from tensorflow.python.keras.callbacks import EarlyStopping
early_stopping = EarlyStopping()
hist = model.fit(x_train,y_train,epochs=1000,batch_size=10,validation_data=(x_val,y_val),callbacks=[early_stopping])

 

위와 같이 epoch을 1000으로 지정했더라도 학습과정 중 EarlyStopping 콜백함수를 호출하여 해당 조건이 되
면 학습을 조기종료 시키는데 EarlyStopping 콜백함수에서 설정할 수 있는 인자는 다음과 같다.
tensorflow.keras.callbacks.EarlyStopping(monitor='val_loss',min_delta=0,patience=0,verbose=0,mode='auto')

 

- monitor : 관찰하고자 하는 항목으로 'val_loss'나 'val_acc'를 주로 사용

- min_delta : 개선되고 있다고 판단하기 위한 최소 변화량. 변화량이 min_delta보다 적은 경우 개선이 없다고 판단.

 

- patience : 개선이 없다고 바로 종료하지 않고 개선이 없는 epoch를 얼마나 기다려 줄 것인가를 지정. 만약 10이라고 하면 개선이 없는 epoch를 10번째 지속될 경우 학습을 종료

- verbose : 얼마나 자세하게 정보를 표현할 것인가를 지정 (0,1,2)

 

- mode : 관찰 항목에 대해 개선이 없다고 판단하기 위한 기준을 지정. 예를 들어, 관찰 항목이

'val_loss'인 경우 감소되는 것이 멈출 때 종료되어야 하므로 'min'으로 설정된다. auto는 관찰하는 이름에 따라 자동으로 지정, min은 관찰하고 있는 항목이 감소되는 것을 멈출 때 종료, max는 관찰하고 있는 항목이 증가되는 것을 멈출 때 종료.