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

計算

記憶制限 BFGS アルゴリズムは、反復ソルバーの特殊なケースです。反復ソルバーのパラメーター、入力、出力は、「反復ソルバー」 > 「計算」を参照してください。

アルゴリズムの入力

反復ソルバーの入力に加えて、記憶制限 BFGS アルゴリズムでは次のオプション入力を使用できます。

オプションデータ ID

入力

correctionPairs

サイズ 2m x p の数値テーブルで、行は補正ペア s および y を表します。行 correctionPairs[j], 0 ≤ j < m, は補正ベクトル sj で、行 correctionPairs[j], mj < 2m は補正ベクトル yj です。

correctionIndices

32 ビット整数を含むサイズ 1 x 2 の数値テーブル。最初の値は補正ペア t のインデックスで、2 つ目の値は前の実行の最後の反復 k のインデックスです。

averageArgumentLIterations

サイズ 2 x p の数値テーブルで、行 0 は前の L 反復の平均引数、行 1 は最後の L 反復の平均引数を表します。これらの値は、次のステップの s 補正ベクトルの計算に必要です。記憶制限 BFGS アルゴリズムのステップ 6.b.iii を参照してください。

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

反復ソルバーのパラメーターに加えて、記憶制限 BFGS アルゴリズムには次のパラメーターがあります。

パラメーター

デフォルト値

説明

algorithmFPType

float

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

method

defaultDense

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

batchIndices

NULL

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

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

batchSize

10

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

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

correctionPairBatchSize

100

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

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

correctionPairIndices

NULL

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

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

オプションの入力データなしでアルゴリズムを実行した場合、テーブルの (nIterations / L - 1) 行が使用されます。その他の場合は、さらに 1 行、つまり合計で (nIterations / L) 行が使用されます。

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 の値。

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

ステップ長数列を格納する推奨データ型は、アルゴリズムが中間計算に使用する浮動小数点の型 (float または double) です。

seed

777

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

アルゴリズムの出力

反復ソルバーの出力に加えて、記憶制限 BFGS アルゴリズムは次のオプション結果を計算します。

オプションデータ ID

出力

correctionPairs

サイズ 2m x p の数値テーブルで、行は補正ペア s および y を表します。行 correctionPairs[j], 0 ≤ j < m, は補正ベクトル sj で、行 correctionPairs[j], mj < 2m は補正ベクトル yj です。

correctionIndices

32 ビット整数を含むサイズ 1 x 2 の数値テーブル。最初の値は補正ペア t のインデックスで、2 つ目の値は前の実行の最後の反復 k のインデックスです。

averageArgumentLIterations

サイズ 2 x p の数値テーブルで、行 0 は前の L 反復の平均引数、行 1 は最後の L 反復の平均引数を表します。これらの値は、次のステップの s 補正ベクトルの計算に必要です。記憶制限 BFGS アルゴリズムのステップ 6.b.iii を参照してください。

サンプル

C++:

Java*:

Python*:

関連情報