分享方式:


maOptimizer:最佳化演算法

指定類神經網路的最佳化演算法。

使用方式

  adaDeltaSgd(decay = 0.95, conditioningConst = 1e-06)

  sgd(learningRate = 0.001, momentum = 0, nag = FALSE, weightDecay = 0,
    lRateRedRatio = 1, lRateRedFreq = 100, lRateRedErrorRatio = 0)

引數

decay

指定計算 ADADELTA 自適性最佳化演算法中的步驟時,套用至梯度的衰減速率。 此速率可用來確保學習速率會繼續進步,方法是在計算步驟大小時,為遠端梯度提供較小的權數。 在數學上,它會以更新規則分母中的平方梯度指數衰減平均值取代梯度的平均平方。 指派的值必須位於範圍 (0,1) 內。

conditioningConst

指定 ADADELTA 自適性最佳化演算法的調節型常數,其是用來在平方梯度的指數衰減平均值很小的區域中調節步驟大小。 指派的值必須位於範圍 (0,1) 內。

learningRate

針對學習流程的每個反覆運算,指定以負梯度方向所採取的步驟大小。 預設值是 = 0.001

momentum

指定每個維度的權數,其控制上一個步驟對訓練期間下一個步驟大小的貢獻。 這會修改 learningRate 來加速訓練。 值必須為 >= 0< 1

nag

若為 TRUE,則會使用 Nesterov 的加速梯度下降。 這個方法可減少梯度下降的 Oracle 複雜性,且最適合用於平滑凸合最佳化。

weightDecay

指定步驟大小的縮放權數。 在每個權數更新之後,網路中的權數會依 (1 - ``learningRate * weightDecay) 縮放。 值必須為 >= 0< 1

lRateRedRatio

指定學習速率降低比例:在訓練期間學習速率縮減的比例。 減少學習速率可避免局部最小值。 值必須為 > 0<= 1

  • 1.0 值代表沒有縮減。
  • 0.9 值代表學習速率會降低為目前值的 90。
    您可以定期觸發縮減、在固定次數反覆運算之後發生,或在符合有關遺失函數增加或減少的特定錯誤準則時觸發。
  • 如需觸發定期速率縮減,請透過使用 lRateRedFreq 引數設定縮減之間的反覆運算數目來指定頻率。
  • 如需根據錯誤準則觸發速率縮減,請在 lRateRedErrorRatio 中指定數字。

lRateRedFreq

藉由指定縮減之間的反覆運算數目來設定學習速率縮減頻率。 例如,如果已指定為 10,則每 10 次反覆運算會減少一次學習速率。

lRateRedErrorRatio

指定學習速率縮減錯誤準則。 如果設定為 0,則如果反覆運算之間的遺失增加,學習速率會縮減。 如果設定為大於 0 的小數值,則如果遺失低於先前值的小數,學習速率會降低。

詳細資料

這些函數可用於 rxNeuralNet 中的 optimizer 引數。

sgd 函數會指定隨機梯度下降。 maOptimizer

如 2012 年 "ADADELTA: An Adaptive Learning Rate Method" (作者 Matthew D.Zeiler) 一文所述,adaDeltaSgd 函數會指定 AdaDelta 梯度下降。

包含最佳化演算法規格的字元字串。

作者

Microsoft Corporation Microsoft Technical Support

參考資料

ADADELTA: An Adaptive Learning Rate Method

另請參閱

rxNeuralNet

範例


 myIris = iris
 myIris$Setosa <- iris$Species == "setosa"

 res1 <- rxNeuralNet(formula = Setosa~Sepal.Length + Sepal.Width + Petal.Width,
         data = myIris, 
         optimizer = sgd(learningRate = .002))

 res2 <- rxNeuralNet(formula = Setosa~Sepal.Length + Sepal.Width + Petal.Width,
         data = myIris, 
         optimizer = adaDeltaSgd(decay = .9, conditioningConst = 1e-05))