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

使用モデル: 訓練と予測

訓練

サイズ 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 つのフォワードパスおよび 1 つのバックワード・パスを実行する場合の時間間隔です。各反復で、最適化ソルバーは最適化ステップを実行し、モデルの重みとバイアスを更新します。

フォワード計算

次の操作を行います。

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

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

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

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

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

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

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

  3. 誤差を損失層の結果として計算します: e = floss (xn-1, y)。利用可能な損失層は、「層」を参照してください。

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

バックワード計算

次の操作を行います。

  1. 最後から 2 番目の層の入力勾配を損失層の勾配として計算します: gradn = ∇floss (xn-1, y)。

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

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

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

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

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

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

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

  1. 損失層を除く、訓練モデルのすべてのフォワード層のクローンを作成します。
  2. 損失層をフォワード損失層の getLayerForPrediction メソッドで返された層に置換します。例えば、フォワード損失ソフトマックス・クロスエントロピー層はフォワード・ソフトマックス層で置換されます。

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

予測

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