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 の加速勾配降下が使用されます。 この方法により勾配降下の神託の複雑さが軽減され、円滑な凸最適化に最適です。

weightDecay

ステップ サイズのスケーリングの重みを指定します。 各重みの更新の後、ネットワークの重みは (1 - ``learningRate * weightDecay) だけスケーリングされます。 値は、>= 0 かつ < 1 である必要があります。

lRateRedRatio

学習速度の減速率を指定します。トレーニングの間に学習速度が縮小される割合です。 学習速度を下げると、ローカルの極小値を回避できます。 値は、> 0 かつ <= 1 である必要があります。

  • 1.0 は、減速がないことを意味します。
  • 0.9 は、学習速度を現在の値の 90% に減らすことを意味します。
    減速は、周期的に一定の反復回数が経過した後で、または損失関数の増加または減少に関する特定のエラー条件が満たされたときに、トリガーできます。
  • 周期的な減速をトリガーするには、lRateRedFreq 引数を使用して減速間の反復回数を設定することにより、頻度を指定します。
  • エラー条件に基づいて減速をトリガーするには、lRateRedErrorRatio で数値を指定します。

lRateRedFreq

減速間の反復回数を指定することにより、学習速度の減少頻度を設定します。 たとえば、10 と指定すると、学習速度は反復 10 回ごとに減少します。

lRateRedErrorRatio

学習速度の低下エラー条件を指定します。 0 に設定すると、反復間に損失が増加した場合、学習速度が下げられます。 0 より大きい小数値に設定すると、損失が前の値のその割合より大きく低回した場合、学習速度が下げられます。

詳細

これらの関数は、rxNeuralNetoptimizer 引数に使用できます。

sgd 関数は、確率的勾配降下法を指定します。 maOptimizer

adaDeltaSgd 関数は、2012 年の Matthew D.Zeiler によるホワイトペーパー「ADADELTA: An Adaptive Learning Rate Method (ADADELTA: アダプティブ学習速度法)」で説明されている 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))