[SciPyライブラリ] L-BFGS最適化のためのscipy.optimize.fmin_l_bfgs_b



Scipy



【時間】2020.01.07

[タイトル] [SciPyライブラリ] L-BFGS最適化のためのscipy.optimize.fmin_l_bfgs_b



特定の使用法については、公式ドキュメントを参照してください。 scipy.optimize.fmin_l_bfgs_b

x,min_val,info=scipy.optimize.fmin_l_bfgs_b(func, x0, fprime=None, args=(), approx_grad=0, bounds=None, m=10, factr=10000000.0, pgtol=1e-05, epsilon=1e-08, iprint=-1, maxfun=15000, disp=None)

1.パラメーター:主に損失関数func、更新されるパラメーターの初期値x0、勾配関数fprimeおよびmaxfun(勾配更新の数)



gradは拡張ベクトル(2D)でなければならないことに注意してください。 xが3D行列の場合、最初に平坦化する必要があります。

関数 :呼び出し可能なf(x、* args)

最小化する機能。最小化の目標は、一般的に損失関数です



x0 :ndarray

最初の推測。初期推定値は、更新するパラメータの初期値です。

fprime :呼び出し可能なfprime(x、* args)

の勾配 関数 。勾配関数

なしの場合、 関数 関数値と勾配(f、g = func(x、* args))を返します。ただし、 約_grad その場合はTrueです 関数 fのみを返します。

引数 :シーケンス

渡す引数 関数 そして fprime関数 そして fprime関数のパラメーター

約_grad :bool

勾配を数値的に近似するかどうか(この場合) 関数 関数値のみを返します)。

境界 :リスト

(最小、最大)xの各要素のペアで、そのパラメーターの境界を定義します。その方向に境界がない場合は、最小または最大のいずれかに[なし]を使用します。

m :int

制限されたメモリマトリックスを定義するために使用される可変メトリック補正の最大数。 (制限付きメモリBFGS法は、完全なヘッセ行列を格納しませんが、近似でこの多くの項を使用します。)

事実 : 浮く

(f ^ k --f ^ {k + 1})/ max {| f ^ k |、| f ^ {k + 1} |、1}のときに反復が停止します<= factr * eps, where eps is the machine precision, which is automatically generated by the code. Typical values for 事実 1e12(低精度の場合)1e7(中精度の場合)10.0(非常に高精度の場合)。

pgtol : 浮く

maxproj g_iが実行されると、反復は停止します。<= pgtol where pg_i is the i-th component of the projected gradient.

イプシロン : 浮く

使用されるステップサイズ 約_grad 勾配を数値的に計算する場合はTrueです

iprint :int

出力の周波数を制御します。 iprint<0 means no output.

アベイルズ :int、オプション

ゼロの場合、出力はありません。正の数の場合、これはオーバーライドされます iprint

maxfun :int

関数評価の最大数。

第二に、戻り値

バツ :array_like

最小の推定位置。推定最小位置、つまり、損失が最小の場合の対応するx

f : 浮く

の値 関数 少なくとも。最小のFunc値は損失値です。

d :辞書

情報辞書。

  • d [‘warnflag’]は
    • 収束した場合は0、
    • 1関数評価が多すぎる場合、
    • 2 d [‘task’]で指定された、別の理由で停止した場合
  • d [‘grad’]は最小の勾配です(0 ishである必要があります)
  • d [‘funcalls’]は、行われた関数呼び出しの数です。つまり、勾配の更新の数です。

情報の例:

|_+_|

補足:より多くのscipyライブラリの知識:

Pythonの機械学習および分析ツール:Scipy

Scipylecturenote中国語文書