インテル® DAAL 2017 デベロッパー・ガイド

計算

アルゴリズムの入力

記憶制限 BFGS アルゴリズムの入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

入力 ID

入力

inputArgument

開始引数 x0 の値を含むサイズ 1 x p の数値テーブル。

アルゴリズムのパラメーター

記憶制限 BFGS アルゴリズムのパラメーターは次のとおりです。

パラメーター

デフォルト値

説明

algorithmFPType

double

アルゴリズムが中間計算に使用する浮動小数点の型。float または double を指定できます。

method

defaultDense

パフォーマンス指向の計算メソッド。

function

適用不可

目的関数。

nIterations

100

アルゴリズムの最大反復回数。

accuracyThreshold

1.0-e5

LBFGS アルゴリズムの正解率。この正解率に達するとアルゴリズムは終了します。

batchIndices

NULL

記憶制限 BFGS アルゴリズムのステップ 2 で使用する目的関数の項の 32 ビット整数インデックスを含むサイズ nIterations x batchSize の数値テーブル。インデックスが提供されない場合、実装はランダム・インデックスを生成します。

このパラメーターは、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトです。

batchSize

10

確率的勾配を計算する観測数。batchIndices 数値テーブルが提供された場合、アルゴリズムの実装はこのパラメーターを無視します。

batchSize が目的関数の項の数と等しい場合、ランダム・サンプリングは実行されず、すべての項が勾配の計算に使用されます。

correctionPairBatchSize

100

記憶制限 BFGS アルゴリズムのステップ 6.b.ii で補正ペア計算のためにサブサンプリングされたヘッセ行列を計算する観測数。correctionPairIndices 数値テーブルが提供された場合、アルゴリズムの実装はこのパラメーターを無視します。

correctionPairBatchSize が目的関数の項の数と等しい場合、ランダム・サンプリングは実行されず、すべての項がヘッセ行列の計算に使用されます。

correctionPairIndices

NULL

記憶制限 BFGS アルゴリズムのステップ 6.b.i で確率値の代わりに使用する 32 ビット整数インデックスを含むサイズ (nIterations/L) x correctionPairBatchSize の数値テーブル。インデックスが提供されない場合、実装はランダム・インデックスを生成します。

このパラメーターは、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトです。

m

10

メモリー・パラメーター。ヘッセ行列の近似を定義する補正ペアの最大数。

L

10

曲率推定計算間の反復回数。

stepLengthSequence

1 に等しいデフォルトのステップ長を含むサイズ 1 x 1 の数値テーブル。

サイズ 1 x nIterations または 1 x 1 の数値テーブル。サイズに依存するテーブルのコンテンツ。

  • size = 1 x nIterations: ステップ長数列 αk (k = 1, …, nIterations) の値。
  • size = 1 x 1: 各反復のステップ長 α1 = ... = αnIterations の値。

このパラメーターは、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトです。

seed

777

目的関数からランダムに選択される項のシード。

アルゴリズムの出力

記憶制限 BFGS アルゴリズムは次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。

結果 ID

結果

minimum

引数 θ* を含むサイズ 1 x p の数値テーブル。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrix および PackedTriangularMatrix を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

nIterations

アルゴリズムにより行われる 32 ビット整数の反復回数を含むサイズ 1 x 1 の数値テーブル。デフォルトでは、この結果は HomogenNumericTable クラスのオブジェクトですが、(PackedSymmetricMatrixPackedTriangularMatrix、および CSRNumericTable を除く) NumericTable の派生クラスのオブジェクトとして定義できます。

サンプル

インテル® DAAL ディレクトリーの次のサンプルを参照してください。

C++: ./examples/cpp/source/optimization_solvers/lbfgs_batch.cpp

Java*: ./examples/java/source/com/intel/daal/examples/optimization_solvers/LBFGSBatch.java

Python*: ./examples/python/source/optimization_solvers/lbfgs_batch.py

関連情報