Neural Network Regression (ニューラル ネットワーク回帰) コンポーネント
"ニューラル ネットワーク アルゴリズムを使用して回帰モデルを作成する"
カテゴリ: 機械学習、モデルの初期化、回帰
コンポーネントの概要
この記事では Azure Machine Learning デザイナーのコンポーネントについて説明します。
カスタマイズ可能なニューラル ネットワーク アルゴリズムを使用して回帰モデルを作成するには、このコンポーネントを使用します。
ニューラル ネットワークは、ディープ ラーニングと複雑な問題 (画像認識など) のモデル化における使用が広く知られていますが、回帰問題にも簡単に適応することができます。 適応型荷重を使用していて、かつ入力の非線形関数を近似することができるあらゆる種類の統計モデルは、ニューラル ネットワークと呼ぶことができます。 そのためニューラル ネットワーク回帰は、従来型の回帰モデルでは解に適合できない問題に適しています。
ニューラル ネットワーク回帰は教師あり学習手法であるため、ラベル列を含む "タグ付けされたデータセット" が必要となります。 回帰モデルで予測するのは数値であるため、ラベル列は数値データ型であることが必要です。
モデルのトレーニングは、対象のモデルとタグ付けされたデータセットを "モデルのトレーニング" に入力として渡すことにより行うことができます。 その後は、トレーニング済みのモデルを使用して新しい入力例の値を予測することができます。
ニューラル ネットワーク回帰を構成する
ニューラル ネットワークは、広範なカスタマイズが可能です。 このセクションでは、2 つの方法を使用して、モデルを作成する方法について説明します。
既定のアーキテクチャを使用してニューラル ネットワーク モデルを作成する
既定のニューラル ネットワーク アーキテクチャをそのまま使用する場合、隠れ層のノード数、学習率、正規化など、ニューラル ネットワークの動作を制御するパラメーターを [プロパティ] ウィンドウを使用して設定します。
ニューラル ネットワークを初めて利用する方は、ここから始めてください。 ニューラル ネットワークについての深い知識がなくても、このコンポーネントが多数のカスタマイズとモデルのチューニングをサポートします。
ニューラル ネットワークのカスタム アーキテクチャを定義する
隠れ層を余分に追加したり、ネットワーク アーキテクチャとその結合、アクティブ化関数を完全にカスタマイズしたりすることが必要な場合は、この方法を使用します。
この方法は、既にニューラル ネットワークについてある程度の知識がある方に最適です。 Net# 言語を使用してネットワーク アーキテクチャを定義します。
既定のアーキテクチャを使用してニューラル ネットワーク モデルを作成する
デザイナーで [Neural Network Regression]\(ニューラル ネットワーク回帰\) コンポーネントをパイプラインに追加します。 このコンポーネントは、 [Machine Learning]\(機械学習\) 、 [Initialize]\(初期化\) の順に選択した先の [Regression]\(回帰\) カテゴリにあります。
[Create trainer mode]\(トレーナー モードの作成\) オプションを設定して、モデルのトレーニング方法を指定します。
Single Parameter (単一パラメーター) : モデルを構成する方法が既にわかっている場合は、このオプションを選択します。
[Parameter Range]\(パラメーター範囲\) : 最適なパラメーターがわからず、パラメーター スイープを実行する場合は、このオプションを選択します。 反復する値の範囲を選択します。モデルのハイパーパラメーターの調整では、指定した設定の可能なすべての組み合わせに対して反復処理を行い、最適な結果を生成するハイパーパラメーターを決定します。
[Hidden layer specification]\(隠れ層の仕様\) で [Fully connected case]\(全結合ケース\) を選択します。 このオプションでは、既定のニューラル ネットワーク アーキテクチャを使用してモデルが作成されます。これは、ニューラル ネットワーク回帰モデルに関して、次の属性を備えます。
- このネットワークには隠れ層が 1 つだけ存在します。
- 出力層は隠れ層に全結合され、隠れ層は入力層に全結合されます。
- 隠れ層のノード数はユーザーが設定できます (既定値は 100)。
入力層のノード数はトレーニング データ内の特徴数によって決まるため、回帰モデルでは、出力層に設定できるノード数は 1 つだけです。
[Number of hidden nodes]\(隠れノードの数\) に、隠れノードの数を入力します。 既定値は、100 個のノードを含んだ 1 つの非表示の層となります。 (Net# を使用してカスタム アーキテクチャを定義する場合、このオプションは選択できません。)
訂正前に、各イテレーションで行われるステップを定義する値を [Learning rate]\(学習率\) に入力します。 学習速度の値を大きくすると、モデルの収束速度は速くなりますが、極小値から離れていってしまう可能性があります。
[Number of learning iterations]\(学習イテレーション数\) に、トレーニング ケースをアルゴリズムで処理する最大回数を指定します。
学習中に前のイテレーションからノードへの重みとして適用する値を [The momentum]\(慣性項\) に入力します。
イテレーション間でケースの順序を変更するには、[Shuffle examples]\(例のシャッフル\) オプションを選択します。 このオプションをオフにした場合、パイプラインを実行するたびに、まったく同じ順序でケースが処理されます。
[Random number seed]\(乱数シード\) には、シードとして使用する値を必要に応じて入力できます。 同じパイプラインを実行するたびに再現性を確保したい場合は、シード値を指定すると効果的です。
トレーニング データセットを接続し、モデルをトレーニングします。
[Create trainer mode]\(トレーナー モードの作成\) を [Single Parameter]\(単一パラメーター\) に設定した場合は、タグ付けされたデータセットと [Train Model]\(モデルのトレーニング\) コンポーネントを接続します。
[Create trainer mode](トレーナー モードの作成) を [Parameter Range](パラメーター範囲) に設定した場合は、[Tune Model Hyperparameters](モデルのハイパーパラメーターの調整) を使用して、タグ付けしたデータセットを接続してモデルをトレーニングします。
Note
パラメーター範囲を [モデルのトレーニング] に渡すと、単一のパラメーター リストの既定値のみが使用されます。
[モデルのハイパーパラメーターの調整] コンポーネントによって、パラメーターごとに設定の範囲が求められているとき、それに単一のパラメーター値セットを渡した場合、それらの値は無視され、学習器の既定値が使用されます。
[Parameter Range](パラメーター範囲) オプションを選択し、任意のパラメーターに単一の値を入力した場合、指定した単一の値はスイープ全体で使用されます。これは、他のパラメーターが値の範囲の中で変化する場合でも同様です。
パイプラインを送信します。
結果
トレーニングの完了後:
- トレーニングされたモデルのスナップショットを保存するには、 [モデルのトレーニング] コンポーネントの右側のパネルにある [出力] タブを選択します。 [データセットの登録] アイコンを選択して、再利用可能なコンポーネントとしてモデルを保存します。
次の手順
Azure Machine Learning で使用できる一連のコンポーネントを参照してください。