1. 程式人生 > >在訓練的過程中降低學習率

在訓練的過程中降低學習率

moni 常常 itl monitor steps 形式 spa AC 結果

隨著學習的進行,深度學習的學習速率逐步下降 為什麽比 固定的學習速率 得到的結果更加準確?技術分享圖片
如上圖所示,曲線代表損失值,小球一開始位於(1)處,假設學習速率設置為 △ v,那麽根據梯度下降,損失值將在(1) (2)之間來回移動,無法到達最小值(3)處。要想到達(3),只能降低學習速率。
keras中實現方法:learning_rate_reduction = ReduceLROnPlateau(monitor=‘val_acc‘, patience=3, verbose=1, factor=0.5, min_lr=0.00001)
#並且作為callbacks進入generator,開始訓練
history =
model.fit_generator(datagen.flow(X_train,Y_train, batch_size=batch_size),
epochs = epochs, validation_data = (X_val,Y_val),
verbose = 2, steps_per_epoch=X_train.shape[0] // batch_size
, callbacks=[learning_rate_reduction])

文檔:ReduceLROnPlateaukeras.callbacks.ReduceLROnPlateau(monitor=‘val_loss‘, factor=0.1, patience=10, verbose=0, mode=‘auto‘, epsilon=0.0001, cooldown=0, min_lr=0)

當評價指標不在提升時,減少學習率。當學習停滯時,減少2倍或10倍的學習率常常能獲得較好的效果。該回調函數檢測指標的情況,如果在patience個epoch中看不到模型性能提升,則減少學習率

參數

  • monitor:被監測的量
  • factor:每次減少學習率的因子,學習率將以lr = lr*factor的形式被減少
  • patience:當patience個epoch過去而模型性能不提升時,學習率減少的動作會被觸發
  • mode:‘auto’,‘min’,‘max’之一,在min模式下,如果檢測值觸發學習率減少。在max模式下,當檢測值不再上升則觸發學習率減少。
  • epsilon:閾值,用來確定是否進入檢測值的“平原區”
  • cooldown:學習率減少後,會經過cooldown個epoch才重新進行正常操作
  • min_lr:學習率的下線











來自為知筆記(Wiz)

在訓練的過程中降低學習率