次の方法で共有


Microsoft ニューラル ネットワーク アルゴリズムテクニカル リファレンス

Microsoft ニューラル ネットワークは、最大 3 層のニューロンまたはパーセプトロンで構成される、Back-Propagated デルタ ルール ネットワークとも呼ばれる多層パーセプトロン ネットワークを使用します。 これらのレイヤーは、入力レイヤー、オプションの非表示レイヤー、および出力レイヤーです。

多層パーセプトロン ニューラル ネットワークの詳細については、このドキュメントの範囲外です。 このトピックでは、入力値と出力値を正規化するために使用されるメソッドや、属性カーディナリティを減らすために使用される特徴選択方法など、アルゴリズムの基本的な実装について説明します。 このトピックでは、アルゴリズムの動作をカスタマイズするために使用できるパラメーターとその他の設定について説明し、モデルのクエリに関する追加情報へのリンクを提供します。

Microsoft ニューラル ネットワーク アルゴリズムの実装

多層パーセプトロンニューラル ネットワークでは、各ニューロンは 1 つ以上の入力を受け取り、1 つ以上の同じ出力を生成します。 各出力は、ニューロンへの入力の合計の単純な非線形関数です。 入力は、入力レイヤー内のノードから非表示レイヤー内のノードに転送され、非表示レイヤーから出力レイヤーに渡されます。層内のニューロン間に接続はありません。 ロジスティック回帰モデルのように非表示レイヤーが含まれていない場合、入力は入力レイヤー内のノードから出力レイヤー内のノードに直接渡されます。

ニューラル ネットワークには、Microsoft ニューラル ネットワーク アルゴリズムを使用して作成される 3 種類のニューロンがあります。

  • Input neurons

入力ニューロンは、データ マイニング モデルの入力属性値を提供します。 不連続入力属性の場合、入力ニューロンは通常、入力属性の 1 つの状態を表します。 これには、トレーニング データにその属性の null が含まれている場合は、欠損値が含まれます。 2 つ以上の状態を持つ個別の入力属性では、状態ごとに 1 つの入力ニューロンが生成され、トレーニング データに null がある場合は、不足状態に対して 1 つの入力ニューロンが生成されます。 連続入力属性は、2 つの入力ニューロンを生成します。1 つは欠損状態のニューロン、1 つは連続属性自体の値のニューロンです。 入力ニューロンは、1 つ以上の非表示のニューロンに入力を提供します。

  • Hidden neurons

非表示ニューロンは入力ニューロンから入力を受け取り、出力ニューロンに出力を提供します。

  • Output neurons

出力ニューロンは、データ マイニング モデルの予測可能な属性値を表します。 不連続入力属性の場合、出力ニューロンは通常、欠損値を含む予測可能な属性の単一の予測状態を表します。 たとえば、二項予測可能な属性は、その属性の値が存在するかどうかを示すために、欠落状態または既存の状態を記述する 1 つの出力ノードを生成します。 予測可能な属性として使用されるブール型列では、3 つの出力ニューロンが生成されます。1 つは true 値のニューロン、1 つは false 値のニューロン、1 つは欠損状態または既存の状態のニューロンです。 2 つ以上の状態を持つ個別の予測可能な属性では、状態ごとに 1 つの出力ニューロンが生成され、不足している状態または既存の状態に対して 1 つの出力ニューロンが生成されます。 連続予測可能な列は、2 つの出力ニューロンを生成します。1 つは欠損状態または既存の状態のニューロンで、1 つは連続列自体の値に対して 1 つのニューロンです。 予測可能な列のセットを確認することによって 500 を超える出力ニューロンが生成された場合、Analysis Services は、追加の出力ニューロンを表す新しいネットワークをマイニング モデルに生成します。

ニューロンは、ネットワークのどの層にあるかに応じて、他のニューロンまたは他のデータから入力を受け取ります。 入力ニューロンは、元のデータから入力を受け取ります。 非表示ニューロンと出力ニューロンは、ニューラル ネットワーク内の他のニューロンの出力から入力を受け取ります。 入力はニューロン間の関係を確立し、リレーションシップは特定のケースセットの分析パスとして機能します。

各入力には、 重みと呼ばれる値が割り当てられ、非表示のニューロンまたは出力ニューロンに対する特定の入力の関連性または重要度が記述されます。 入力に割り当てられる重みが大きいほど、その入力の値の関連性が高く、重要になります。 重みは負である可能性があります。これは、入力が特定のニューロンを活性化するのではなく、阻害できることを意味します。 各入力の値に重みを乗算して、特定のニューロンの入力の重要性を強調します。 負の重みの場合、値に重みを掛けることで重要度が低くなる効果があります。

各ニューロンには、アクティブ 化関数と呼ばれる単純な非線形関数が割り当てられ、ニューラル ネットワークのその層に対する特定のニューロンの関連性または重要性が記述されます。 非表示ニューロンは活性化機能に 双曲線正接 関数 (tanh) を使用し、出力ニューロンはアクティブ化に シグモイド 関数を使用します。 どちらの関数も非線形の連続関数であり、ニューラル ネットワークは入力ニューロンと出力ニューロン間の非線形関係をモデル化できます。

ニューラル ネットワークのトレーニング

Microsoft ニューラル ネットワーク アルゴリズムを使用するデータ マイニング モデルのトレーニングには、いくつかの手順が含まれます。 これらの手順は、アルゴリズム パラメーターに指定する値の影響を大きく受けます。

アルゴリズムはまず、データ ソースからトレーニング データを評価して抽出します。 ホールドアウト データと呼ばれるトレーニング データの割合は、ネットワークの精度を評価するために予約されています。 トレーニング プロセス全体を通じて、トレーニング データを反復処理するたびに、ネットワークが評価されます。 精度が上がらなくなったら、トレーニング プロセスは停止します。

SAMPLE_SIZEパラメーターと HOLDOUT_PERCENTAGE パラメーターの値は、トレーニング データからサンプリングするケースの数と、保留データ用に確保するケースの数を決定するために使用されます。 HOLDOUT_SEED パラメーターの値は、保留データ用に確保する個々のケースをランダムに決定するために使用されます。

これらのアルゴリズム パラメーターは、テスト データ セットを定義するためにマイニング構造に適用されるHOLDOUT_SIZEプロパティとHOLDOUT_SEED プロパティとは異なります。

次に、アルゴリズムによって、マイニング モデルでサポートされるネットワークの数と複雑さが決まります。 マイニング モデルに予測にのみ使用される 1 つ以上の属性が含まれている場合、アルゴリズムは、そのようなすべての属性を表す 1 つのネットワークを作成します。 マイニング モデルに入力と予測の両方に使用される 1 つ以上の属性が含まれている場合、アルゴリズム プロバイダーは属性ごとにネットワークを構築します。

個別の値を持つ入力属性と予測可能な属性の場合、各入力ニューロンまたは出力ニューロンはそれぞれ 1 つの状態を表します。 連続値を持つ入力属性と予測可能な属性の場合、各入力ニューロンまたは出力ニューロンはそれぞれ、属性の値の範囲と分布を表します。 どちらの場合もサポートされる状態の最大数は、 MAXIMUM_STATES アルゴリズム パラメーターの値によって異なります。 特定の属性の状態の数が MAXIMUM_STATES アルゴリズム パラメーターの値を超える場合、その属性の最も一般的な状態または関連する状態が、許可される状態の最大数まで選択され、残りの状態は分析の目的で欠損値としてグループ化されます。

次に、このアルゴリズムは、非表示層用に作成するニューロンの初期数を決定するときに、 HIDDEN_NODE_RATIO パラメーターの値を使用します。 HIDDEN_NODE_RATIOを 0 に設定すると、アルゴリズムによってマイニング モデル用に生成されるネットワークに隠れ層が作成されないようにして、ニューラル ネットワークをロジスティック回帰として扱うことができます。

アルゴリズム プロバイダーは、前に予約されたトレーニング データのセットを取得し、ホールドアウト データ内の各ケースの実際の既知の値を、 バッチ学習と呼ばれるプロセスでネットワークの予測と比較することで、ネットワーク全体のすべての入力の重みを繰り返し評価します。 アルゴリズムはトレーニング データのセット全体を評価した後、各ニューロンの予測値と実際の値を確認します。 このアルゴリズムは、誤差の程度 (ある場合) を計算し、そのニューロンの入力に関連付けられている重みを調整します。これは、 バックプロパティと呼ばれるプロセスで出力ニューロンから入力ニューロンに戻って動作します。 その後、アルゴリズムはトレーニング データのセット全体に対してプロセスを繰り返します。 アルゴリズムは多くの重みと出力ニューロンをサポートできるため、入力の重みを割り当てて評価するためのトレーニング プロセスをガイドするために、コンジュゲート 勾配アルゴリズムが使用されます。 コンジュゲート 勾配アルゴリズムについては、このドキュメントの範囲外です。

特徴選択

入力属性の数が MAXIMUM_INPUT_ATTRIBUTES パラメーターの値より大きい場合、または予測可能な属性の数が MAXIMUM_OUTPUT_ATTRIBUTES パラメーターの値より大きい場合は、マイニング モデルに含まれるネットワークの複雑さを軽減するために特徴選択アルゴリズムが使用されます。 特徴の選択により、入力属性または予測可能属性の数が、モデルに最も統計的に関連する属性に減ります。

特徴選択は、分析を改善し、処理負荷を軽減するために、すべての Analysis Services データ マイニング アルゴリズムによって自動的に使用されます。 ニューラル ネットワーク モデルでの特徴選択に使用される方法は、属性のデータ型によって異なります。 参考までに、次の表に、ニューラル ネットワーク モデルに使用される特徴選択方法と、ニューラル ネットワーク アルゴリズムに基づくロジスティック回帰アルゴリズムに使用される特徴選択方法を示します。

アルゴリズム 分析方法 コメント
ニューラルネットワーク 興味深さのスコア

シャノンのエントロピー

ベイジアンと K2 Prior

ベイジアン・ディリッチレット(一様な事前分布、デフォルト)
ニューラル ネットワーク アルゴリズムでは、データに連続列が含まれている限り、エントロピベースとベイジアンスコアリングの両方の方法を使用できます。

既定値。
ロジスティック回帰 興味深さのスコア

シャノンのエントロピー

ベイジアンと K2 Prior

ベイジアン・ディリッチレット(一様な事前分布、デフォルト)
このアルゴリズムにパラメーターを渡して特徴選択の動作を制御することはできないため、既定値が使用されます。 したがって、すべての属性が不連続または分離されている場合、既定値は BDEU です。

ニューラル ネットワーク モデルの特徴選択を制御するアルゴリズム パラメーターは、MAXIMUM_INPUT_ATTRIBUTES、MAXIMUM_OUTPUT_ATTRIBUTES、およびMAXIMUM_STATESです。 HIDDEN_NODE_RATIO パラメーターを設定して、非表示レイヤーの数を制御することもできます。

スコアリング メソッド

スコアリング は正規化の一種であり、ニューラル ネットワーク モデルのトレーニングのコンテキストでは、不連続テキスト ラベルなどの値を、他の種類の入力と比較してネットワーク内で重み付けできる値に変換するプロセスを意味します。 たとえば、1 つの入力属性が Gender で、使用可能な値が Male と Female で、別の入力属性が Income で、値の範囲が可変の場合、各属性の値は直接比較できないため、重みを計算できるように共通のスケールにエンコードする必要があります。 スコアリングは、このような入力を数値 (具体的には確率範囲) に正規化するプロセスです。 正規化に使用される関数は、極端な値が分析の結果をゆがめないように、入力値をより均等に均一なスケールで分散するのにも役立ちます。

ニューラル ネットワークの出力もエンコードされます。 出力の 1 つのターゲット (つまり、予測) がある場合、または入力ではなく予測にのみ使用される複数のターゲットがある場合、モデルは 1 つのネットワークを作成し、値を正規化する必要はないように見える場合があります。 ただし、入力と予測に複数の属性を使用する場合、モデルは複数のネットワークを作成する必要があります。したがって、すべての値を正規化し、出力もネットワークを終了するにつれてエンコードする必要があります。

入力のエンコードは、トレーニング ケースの各不連続値を合計し、その値に重みを乗算することに基づいています。 これは 重み付け合計と呼ばれ、非表示レイヤーのアクティブ化関数に渡されます。 z スコアは、次のようにエンコードに使用されます。

不連続値

μ = p - 状態の以前の確率

StdDev = sqrt(p(1-p))

連続値

値 present= 1 - μ/σ

既存の値がありません= -μ/σ

値がエンコードされた後、入力は重み付けされた合計を通過し、ネットワーク エッジは重みとして使用されます。

出力のエンコードでは、予測に非常に役立つプロパティを持つ sigmoid 関数が使用されます。 そのようなプロパティの 1 つは、元の値のスケーリング方法に関係なく、値が負か正かに関係なく、この関数の出力は常に 0 から 1 の値であり、確率の推定に適しています。 もう 1 つの便利なプロパティは、シグモイド関数がスムージング効果を持つことです。そのため、値が変曲点から遠くに移動すると、値の確率は 0 または 1 に向かって移動しますが、ゆっくりと移動します。

ニューラル ネットワーク アルゴリズムのカスタマイズ

Microsoft ニューラル ネットワーク アルゴリズムでは、結果として得られるマイニング モデルの動作、パフォーマンス、精度に影響を与えるいくつかのパラメーターがサポートされています。 また、モデルがデータを処理する方法を変更するには、列にモデリング フラグを設定するか、列内の値の処理方法を指定する配布フラグを設定します。

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

次の表では、Microsoft ニューラル ネットワーク アルゴリズムで使用できるパラメーターについて説明します。

HIDDEN_NODE_RATIO
入力ニューロンと出力ニューロンに対する非表示ニューロンの比率を指定します。 次の式は、非表示層内のニューロンの初期数を決定します。

HIDDEN_NODE_RATIO * SQRT(入力ニューロンの合計数 * 出力ニューロンの合計数)

既定値は 4.0 です。

ホールドアウト割合
マイニング モデルのトレーニング中に停止条件の一部として使用される、ホールドアウト エラーの計算に使用されるトレーニング データ内のケースの割合を指定します。

既定値は 30 です。

HOLDOUT_SEED
アルゴリズムがホールドアウト データをランダムに決定するときに擬似ランダム ジェネレーターのシード処理に使用される数値を指定します。 このパラメーターが 0 に設定されている場合、アルゴリズムはマイニング モデルの名前に基づいてシードを生成し、再処理時にモデルのコンテンツが同じままであることを保証します。

既定値は 0 です。

最大入力属性
特徴選択を使用する前にアルゴリズムに指定できる入力属性の最大数を決定します。 この値を 0 に設定すると、入力属性の機能の選択が無効になります。

既定値は 255 です。

最大出力属性
特徴選択を使用する前にアルゴリズムに指定できる出力属性の最大数を決定します。 この値を 0 に設定すると、出力属性の機能の選択が無効になります。

既定値は 255 です。

最大状態数
アルゴリズムでサポートされる属性ごとの不連続状態の最大数を指定します。 特定の属性の状態の数がこのパラメーターに指定されている数より大きい場合、アルゴリズムはその属性に最も一般的な状態を使用し、残りの状態は欠落として扱われます。

既定値は 100 です。

サンプルサイズ
モデルのトレーニングに使用するケースの数を指定します。 アルゴリズムでは、この数、または HOLDOUT_PERCENTAGE パラメーターで指定された保留データに含まれていないケースの合計数のうち、どちらか小さい方の値が使用されます。

つまり、HOLDOUT_PERCENTAGEが 30 に設定されている場合、アルゴリズムでは、このパラメーターの値、またはケースの合計数の 70% に等しい値のいずれか小さい方が使用されます。

既定値は 10000 です。

モデルフラグ

次のモデリング フラグは、Microsoft ニューラル ネットワーク アルゴリズムで使用するためにサポートされています。

NULLなし
列に null を含めることができないことを示します。 モデルのトレーニング中に Analysis Services で null が検出された場合、エラーが発生します。

マイニング構造列に適用されます。

モデル存在のみ
モデルでは、属性の値が存在するかどうか、または値が不足しているかどうかを考慮する必要があることを示します。 正確な値は関係ありません。

マイニング モデル列に適用されます。

配布フラグ

次の配布フラグは、Microsoft ニューラル ネットワーク アルゴリズムで使用するためにサポートされています。 フラグはモデルのヒントとしてのみ使用されます。アルゴリズムが別の分布を検出した場合、ヒントで提供される分布ではなく、検出された分布が使用されます。

正常
列内の値は、正規のガウス分布を表すかのように扱う必要があることを示します。

制服
列内の値が均等に分散されているかのように扱う必要があることを示します。つまり、任意の値の確率はほぼ等しく、値の合計数の関数です。

ログの標準
列内の値を、 対数正規 曲線に従って分布するかのように扱う必要があることを示します。これは、値の対数が正規分布していることを意味します。

要求事項

ニューラル ネットワーク モデルには、少なくとも 1 つの入力列と 1 つの出力列が含まれている必要があります。

入力列と予測可能列

Microsoft ニューラル ネットワーク アルゴリズムでは、次の表に示す特定の入力列と予測可能な列がサポートされています。

コラム コンテンツの種類
入力属性 連続、循環、不連続、分離、キー、テーブル、および順序付け
予測可能な属性 連続、循環、不連続、分離、および順序付け

循環コンテンツ タイプと順序付けコンテンツ タイプはサポートされていますが、アルゴリズムでは個別の値として扱われ、特別な処理は実行されません。

こちらもご覧ください

Microsoft ニューラル ネットワーク アルゴリズム
ニューラル ネットワーク モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)
ニューラル ネットワーク モデルクエリの例