インテル® DAAL 2018 デベロッパー・ガイド
分散処理モードは、データセットが計算ノードの nblocks ブロックに分割されていると仮定します。
訓練段階での分散処理モードの暗黙的 ALS 推薦のパラメーターは次のとおりです。
パラメーター |
デフォルト値 |
説明 |
|
---|---|---|---|
computeStep |
適用不可 |
アルゴリズムを初期化するために必要なパラメーターです。次のいずれか。
|
|
algorithmFPType |
float |
アルゴリズムが中間計算に使用する浮動小数点の型。float または double を指定できます。 |
|
method |
fastCSR |
CSR 数値テーブル用のパフォーマンス指向の計算メソッド。アルゴリズムでサポートされている唯一のメソッドです。 |
|
nFactors |
10 |
係数の総数。 |
|
maxIterations |
5 |
反復回数。 |
|
alpha |
40 |
信頼度。 |
|
lambda |
0.01 |
正規化のパラメーター。 |
|
preferenceThreshold |
0 |
選択値を定義するしきい値。 現在サポートしている唯一のしきい値は、0 です。 |
各反復で、暗黙的 ALS 訓練アルゴリズムはユーザー係数 (X) およびアイテム係数 (Y) の再計算を交互に行います。これらの計算により各反復は次の部分に分割されます。
入力データセットおよび前に計算されたアイテム係数を使用して、ユーザー係数をすべて再計算します。
転置形式の入力データセットおよび前に計算されたアイテム係数を使用して、アイテム係数をすべて再計算します。
各部分にはローカルノードまたはマスターノードで実行される 4 つのステップが含まれます (下記の図は nblocks=3)。暗黙的 ALS 訓練段階のメインループはマスターノードで実行されます。
以下の擬似コードは計算全体を表しています。
for (iteration = 0; iteration < maxIterations; iteration++) { /* 部分ユーザー係数を更新 */ outputOfStep1ForStep2 = computeStep1Local(itemPartialResultLocal); outputOfStep2ForStep4 = computeStep2Master(outputOfStep1ForStep2); outputOfStep3ForStep4 = computeStep3Local(itemOffsetTable, itemPartialResultLocal, itemStep3LocalInput); inputOfStep4FromStep3 = getInputOfStep4FromStep3(outputOfStep3ForStep4); userPartialResultLocal = computeStep4Local(outputOfStep2ForStep4, inputOfStep4FromStep3, dataTable); /* 部分アイテム係数を更新 */ outputOfStep1ForStep2 = computeStep1Local(userPartialResultLocal); outputOfStep2ForStep4 = computeStep2Master(outputOfStep1ForStep2); outputOfStep3ForStep4 = computeStep3Local(userOffsetTable, userPartialResultLocal, userStep3LocalInput); inputOfStep4FromStep3 = getInputOfStep4FromStep3(outputOfStep3ForStep4); itemPartialResultLocal = computeStep4Local(outputOfStep2ForStep4, inputOfStep4FromStep3, dataTable); }
このステップは行列を操作します。
この行列の部分は入力部分モデルとして使用されます。
このステップの暗黙的 ALS 推薦訓練の入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
入力 ID |
入力 |
|
---|---|---|
partialModel |
ローカルノードで計算される部分モデル。 |
このステップで、暗黙的 ALS 推薦訓練は次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
結果 ID |
結果 |
|
---|---|---|
outputOfStep1ForStep2 |
ステップ 1 で計算された数値テーブルの和を含む f x f 数値テーブルのポインター。 |
このステップは、入力としてステップ 1 の部分結果を使用します。
このステップの暗黙的 ALS 推薦訓練の入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
入力 ID |
入力 |
|
---|---|---|
inputOfStep2FromStep1 |
ステップ 1 で計算された数値テーブルのコレクション。(lowerPackedTriangularMatrix レイアウトの PackedTriangularMatrix クラスを除く) NumericTable の派生クラスのオブジェクトをコレクションに含めることができます。 |
このステップで、暗黙的 ALS 推薦訓練は次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
結果 ID |
結果 |
|
---|---|---|
outputOfStep2ForStep4 |
マージされたクロス積を含む f x f 数値テーブルのポインター。 |
各ノード i で、このステップは前のステップの結果を使用します。「オフセットテーブル i」および「アルゴリズムの初期化段階で計算された初期化のステップ 3 の入力 i」の 2 つの行列を追加で提供する必要があります。
「オフセットテーブル i」テーブルの唯一の要素は次の要素を指します。
初期化のステップ 3 の入力は、初期化段階の outputOfInitForComputeStep3 出力を指すキー/値データのコレクションです。
このステップの暗黙的 ALS 推薦訓練の入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
入力 ID |
入力 |
---|---|
partialModel |
ローカルノードで計算される部分モデル。 |
非推奨: partialModelBlocksToNode 代わりに使用: inputOfStep3FromInit |
アルゴリズムの初期化段階で計算されたキー/値データのコレクション。 |
offset |
入力部分モデルの開始行のグローバル・インデックスを含むサイズ 1x1 の数値テーブル。アルゴリズムの初期化段階で計算されたキー/値データのコレクション offsets の一部。 |
このステップで、暗黙的 ALS 推薦訓練は次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
結果 ID |
結果 |
|
---|---|---|
outputOfStep3ForStep4 |
ステップ 4 で使用する部分モデルを含むキー/値データのコレクション。コレクションの各要素は PartialModel クラスのオブジェクトを含みます。 |
このステップは、前のステップの結果および転置形式の以下の行列の部分を使用します。
ステップの結果はこの行列の再計算された部分です。
このステップの暗黙的 ALS 推薦訓練の入力は次のとおりです。入力 ID をパラメーターとして、アルゴリズムの入力を提供するメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
入力 ID |
入力 |
|
---|---|---|
partialModels |
ステップ 3 で計算されたユーザー係数/アイテム係数を含む部分モデルを含むキー/値データのコレクション。コレクションの各要素は PartialModel クラスのオブジェクトを含みます。 |
|
partialData |
入力データセットの i 番目の部分を含む CSR 数値テーブルのポインター。データがユーザー/アイテムで割られると仮定します。 |
|
inputOfStep4FromStep2 |
ステップ 2 で計算された f x f 数値テーブルのポインター。 |
このステップで、暗黙的 ALS 推薦訓練は次の結果を計算します。結果 ID をパラメーターとして、アルゴリズムの結果にアクセスするメソッドに渡します。詳細は、「アルゴリズム」を参照してください。
結果 ID |
結果 |
|
---|---|---|
outputOfStep4ForStep1 |
i 番目のデータブロックに対応する部分暗黙的 ALS モデルのポインター。部分モデルはユーザー係数/アイテム係数を格納します。 |
|
outputOfStep4ForStep3 |
C++: impl_als_csr_distr.cpp
Java*: ImplAlsCSRDistr.java
Python*: impl_als_csr_distr.py