개발/머신러닝
파이썬 머신러닝 - learning rate 와 validation , earlystopping
웅'jk
2022. 12. 28. 16:06
learnig rate 란?
optimizer 를 설정할때 주는 파라미터로 이 파라미터값에 따라 가중치 값이 달라지게 됩니다.
def build_model() :
model = Sequential()
model.add(Dense(units = 64 , activation = 'relu' , input_shape=(9,)))
model.add(Dense(units=64,activation='relu'))
model.add(Dense(units=1,activation='linear'))
model.compile(optimizer = tf.keras.optimizers.Adam(learning_rate=0.001) , loss ='mse' ,metrics =[ 'mse','mae' ] )
return model
위와 같은 모델구성을 가진 함수를 작성하였습니다.
그동안 우리가 많이 사용했던 방법인데 보면 adam 에 러닝 레이트 항목이 0.001 로 주어져있습니다. 이 수치를 바꾸게되면 가중치값이 달라지게면서 좀 더 나은 결과가 나올 수도 또는 더 안좋은 결과가 나올 수도 있습니다.
validation 이란?
그동안은 딥러닝이 완료되고 난 뒤에 테스트를 진행하였지만, 딥러닝의 한 에포크를 완료할때마다 테스트를 진행하도록 하는 속성입니다.
model.fit(X_train,y_train,epochs=200 ,validation_split=0.2)
위와 같은 식으로 validation_split 의 값을 주게 되면 X_train을 나누어 러닝용과 테스트용으로 나뉘어 한 에포크를 완료할때마다 테스트를 진행하게 됩니다.
earlystopping 이란?
내가 설정한 수 만큼의 데이터 향상이 없으면 딥러닝을 멈추도록 하는 방법입니다.
import tensorflow as tf
early_stop= tf.keras.callbacks.EarlyStopping(monitor='val_loss',patience=10)
epoch_history = model.fit(X_train,y_train,epochs = 100000 , validation_split=0.2, callbacks=[early_stop] )
위 처럼 stop 변수에는 콜백.얼리스톱핑으로 val_loss를 모니터링하면서 갯수는 10개로 설정되어 있습니다.
이제 다음 코드에서는 딥러닝을 실행하는데 콜백으로 스톱변수가 설정되어있어 이 딥러닝을 할때 테스트한 결과값의 성능향상이 10개가 안되면 바로 멈추도록 합니다.