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
另請參閱
範例
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))