< 目次

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

使用モデル: 訓練と予測

訓練

サイズ n1 x n2 x ... x np x np+1 の (p+1) 次元のテンソル q (各要素はサンプル)、サイズ n1 x n2 x ... x np x np+1 の (p+1) 次元のテンソル y (各要素は対応するサンプルの明示された結果)、および n 層から構成されるニューラル・ネットワークで、ニューラル・ネットワークを訓練します。詳細は、「訓練と予測」を参照してください。

インテル® DAALは、クラスラベルの既知のベクトルを使用した教師あり学習のみサポートします。

ニューラル・ネットワークを訓練するために使用される重要なメカニズムは、誤差のバックワード伝播 [Rumelhart86] です。訓練段階では、アルゴリズムはフォワード計算とバックワード計算を実行します。

フォワード計算

次の操作を行います。

  1. 訓練するニューラル・ネットワークと入力データを提供します。1 つのサンプルまたはサンプルのセットのいずれかを提供できます。batchSize パラメーターは、同時に処理するサンプルの数を指定します。

  2. xi+1 = f(xi) を計算します。ここで、

    • xi は層 i の入力データです。

    • xi+1 は層 i の出力値です。

    • fi(x) は層 i に対応する関数です。

    • i = 0, …, n-1 は層のインデックスです。

    一部の層では、計算で重み w とバイアス b を使用できます。詳細は、「層」を参照してください。

  3. 誤差 e = objectiveFunction(f(xn-1), y) を計算します。利用可能な目的関数は、「目的関数」を参照してください。

「層」セクションの特定のフォワード層の説明では、層 i の前の層は層 i-1 です。

バックワード計算

次の操作を行います。

  1. 最後の層の入力勾配 gradn = ∇objectiveFunction (xn) を計算します。

  2. gradi = ∇fi(xi)*gradi+1 を計算します。ここで、

    • gradii 番目の層で取得した勾配です。

    • gradi+1 は (i+1) 番目の層で取得した勾配です。

    • i = n - 1, ..., 0

    一部の層では、計算で重み w とバイアス b を使用できます。詳細は、「層」を参照してください。

  3. 前のステップの結果に最適化メソッドの 1 つを適用します。w, b = optimizationProcedure (w, b, grado) を計算します。ここで、w = (wo, w1, ..., wn-1), b = (bo, b1, ..., bn-1)。利用可能な最適化ソルバー・アルゴリズムは、「最適化ソルバー」を参照してください。

  4. 誤差がしきい値未満の場合、または行われた反復回数が指定した nIterations の値と等しい場合、計算を終了します。

訓練段階の結果として、重みおよびバイアスの最適なセットで訓練されたモデルを受け取ります。getPredictionModel メソッドを使用して予測段階で使用するモデルを取得します。

「層」セクションの特定のバックワード層の説明では、層 i の前の層は層 i+1 です。

予測

(重み w およびバイアス b の最適なセットで) 訓練されたネットワークおよびサイズ n1 x n2 x ... x np x np+1 の新しい (p+1) 次元のテンソル x で、アルゴリズムは各サンプルの結果 (テンソル y の要素の 1 つ) を決定します。訓練段階とは異なり、アルゴリズムの予測段階ではフォワード計算のみ実行します。