2 クラス ニューラル ネットワーク モジュール

この記事では Azure Machine Learning デザイナーのモジュールについて説明します。

このモジュールを使用して、2 つの値だけを持つターゲットを予測するのに使用できるニューラル ネットワーク モデルを作成します。

ニューラル ネットワークを使用する分類は、教師あり学習手法であるため、ラベル列を含む "タグ付けされたデータセット" が必要となります。 たとえば、このニューラル ネットワーク モデルを使用して、患者が特定の病気を持っているかどうか、または指定した時間枠内にコンピューターが失敗する可能性があるかどうかなどのバイナリ結果を予測することができます。

モデルを定義したら、タグ付けされたデータセットと対象モデルを "モデルのトレーニング" の入力として指定してモデルをトレーニングします。 その後は、トレーニング済みのモデルを使用して、新しい入力の値を予測することができます。

ニューラル ネットワークの詳細

ニューラル ネットワークは、一連の相互接続された層です。 入力は最初の層であり、重み付きエッジとノードから成る非巡回グラフによって出力層に接続されています。

入力層と出力層の間には、複数の非表示の層を挿入できます。 予測タスクのほとんどは、1 つまたは少数の非表示の層を使用して簡単に行うことができます。 ただし、最近の研究では、画像認識や音声認識などの複雑なタスクには多くの層を備えたディープ ニューラル ネットワーク (DNN) が有効であることが示されています。 これらの連続する層を使用して、セマンティックの深さのレベルの増加がモデル化されます。

入力と出力の間のリレーションシップは、入力データに関してニューラル ネットワークをトレーニングすることで習得されます。 グラフの方向は入力から、非表示の層を経由して出力層へと進みます。 層内のノードはすべて、重み付きエッジによって次の層内のノードに接続されます。

特定の入力に対してネットワークの出力を計算するには、非表示の層内の各ノードおよび出力層内の各ノードで値を計算します。 この値は、前の層からのノードの値の加重和を計算することで設定されます。 次に、その加重和にアクティブ化関数が適用されます。

構成方法

  1. ご利用のパイプラインに 2 クラス ニューラル ネットワーク モジュールを追加します。 このモジュールは、 [Machine Learning](機械学習)[Initialize](初期化)[Classification](分類) カテゴリにあります。

  2. [Create trainer mode](トレーナー モードの作成) オプションを設定して、モデルのトレーニング方法を指定します。

    • Single Parameter (単一パラメーター) : モデルを構成する方法が既にわかっている場合は、このオプションを選択します。

    • [Parameter Range](パラメーター範囲) : 最適なパラメーターがわからない場合は、モデルのハイパーパラメーターの調整モジュールを使用することにより、最適なパラメーターを見つけることができます。 ある値の範囲を指定すると、トレーナーにより設定の複数の組み合わせに対して反復処理が行され、最適な結果を生み出す値の組み合わせが決定されます。

  3. [隠れ層の仕様] には、作成するネットワーク アーキテクチャの種類を選択します。

    • Fully connected case (完全結合ケース) : 2 クラス ニューラル ネットワークに対して次のように定義されている既定のニューラル ネットワーク アーキテクチャを使用します。

      • 単一の隠れ層があります。

      • 出力層は隠れ層に全結合され、隠れ層は入力層に全結合されます。

      • 入力層内のノードの数は、トレーニング データ内のフ特徴の数と等しくなります。

      • 隠れ層内のノード数はユーザーによって設定されます。 既定値は 100 です。

      • ノードの数は、クラスの数と等しくなります。 2 クラス ニューラル ネットワークの場合、これは、すべての入力が、出力層内の 2 つのノードのいずれかにマップされている必要があることを意味します。

  4. [学習速度] には、訂正前に各イテレーションで行うステップのサイズを定義します。 学習速度の値を大きくすると、モデルの収束速度は速くなりますが、極小値から離れていってしまう可能性があります。

  5. [学習のイテレーション数] には、アルゴリズムがトレーニング ケースを処理する最大回数を指定します。

  6. [初期学習の重みの直径] には、学習プロセスの開始時点におけるノードの重みを指定します。

  7. [モーメンタム] には、学習中に以前のイテレーションからノードに適用する重みを指定します。

  8. イテレーションとイテレーションの間にケースをシャッフルするには、 [例のシャフル] オプションを選択します。 このオプションをオフにした場合、パイプラインを実行するたびに、まったく同じ順序でケースが処理されます。

  9. [乱数シード] には、シードとして使用する値を入力します。

    同じパイプラインを実行するたびに再現性を確保したい場合は、シード値を指定すると効果的です。 指定しない場合は、システム クロック値がシードとして使用され、パイプラインを実行するたびに若干異なる結果になる可能性があります。

  10. ラベル付けされたデータセットをパイプラインに追加し、モデルをトレーニングします。

    • [Create trainer mode](トレーナー モードの作成)[Single Parameter](単一パラメーター) に設定した場合は、タグ付けされたデータセットと モデルのトレーニング モジュールを接続します。

    • [Create trainer mode](トレーナー モードの作成)[Parameter Range](パラメーター範囲) に設定した場合は、[Tune Model Hyperparameters](モデルのハイパーパラメーターの調整) を使用して、タグ付けしたデータセットを接続してモデルをトレーニングします。

    注意

    パラメーター範囲を [モデルのトレーニング] に渡すと、単一のパラメーター リストの既定値のみが使用されます。

    [Tune Model Hyperparameters](モデルのハイパーパラメーターの調整) モジュールによって、パラメーターごとに設定の範囲が求められているとき、それに単一のパラメーター値セットを渡した場合、それらの値は無視され、学習器の既定値が使用されます。

    [Parameter Range](パラメーター範囲) オプションを選択し、任意のパラメーターに単一の値を入力した場合、指定した単一の値はスイープ全体で使用されます。これは、他のパラメーターが値の範囲の中で変化する場合でも同様です。

  11. パイプラインを送信します。

結果

トレーニングの完了後:

  • トレーニングされたモデルのスナップショットを保存するには、 [モデルのトレーニング] モジュールの右側のパネルにある [出力] タブを選択します。 [データセットの登録] アイコンを選択して、再利用可能なモジュールとしてモデルを保存します。

  • このモデルをスコアリングに使用するには、モデルのスコア付け モジュールをパイプラインに追加します。

次のステップ

Azure Machine Learning で使用できる一連のモジュールを参照してください。