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
adaDeltaSgd
函数指定 AdaDelta 梯度下降,如 Matthew D.Zeiler 的 2012 年论文“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))