ニューラル ネット フィッティング アプリを使用したデータへの当てはめ
この例では、"ニューラル ネット フィッティング" アプリを使用して、データに当てはまるように浅層ニューラル ネットワークに学習させる方法を説明します。
nftool
を使用して、"ニューラル ネット フィッティング" アプリを開きます。
nftool
データの選択
"ニューラル ネット フィッティング" アプリには、ニューラル ネットワークの学習を始めるのに役立つサンプル データが用意されています。
サンプルの体脂肪データをインポートするには、[インポート]、[体脂肪データ セットのインポート] を選択します。このデータ セットを使用して、さまざまな測定値に基づいて人の体脂肪を推定するように、ニューラル ネットワークに学習させることができます。ファイルまたはワークスペースから自分のデータをインポートする場合は、予測子と応答、および観測値が行と列のどちらで与えられるかを指定しなければなりません。
インポートしたデータに関する情報は、[モデルの概要] に表示されます。このデータ セットには、それぞれ 13 個の特徴をもつ 252 個の観測値が含まれています。応答には、各観測値に対する体脂肪率が含まれています。
データを学習セット、検証セット、テスト セットに分割します。既定の設定はそのままにします。データを以下のように分割します。
学習用に 70% を使用。
ネットワークが汎化されていることを検証し、過適合の発生前に学習を停止するために 15% を使用。
ネットワークの汎化の独立したテスト用に 15% を使用。
データ分割の詳細については、ニューラル ネットワークの最適な学習のためのデータの分割を参照してください。
ネットワークの作成
このネットワークは、隠れ層にシグモイド伝達関数、出力層に線形伝達関数を使用した 2 層フィードフォワード ネットワークです。[層のサイズ] の値は、隠れニューロンの数を定義します。既定の層のサイズ (10) はそのままにします。ネットワーク アーキテクチャは [ネットワーク] ペインで確認できます。入力データが反映されるように、ネットワークのプロットが更新されます。この例のデータには、13 個の入力 (特徴) と 1 つの出力が含まれています。
ネットワークの学習
ネットワークの学習を行うには、[学習]、[レーベンバーグ・マルカート法を用いた学習] を選択します。これは既定の学習アルゴリズムで、[学習] をクリックした場合と同じです。
レーベンバーグ・マルカート法 (trainlm
) による学習は、ほとんどの問題に対して推奨されます。ノイズを含む問題や小規模な問題の場合は、ベイズ正則化 (trainbr
) を使用することで、かかる時間は長くなりますが、より良い解が得られます。大規模な問題の場合には、スケーリング共役勾配法 (trainscg
) を使用することをお勧めします。この方法では、他の 2 つのアルゴリズムで使用されるヤコビアン計算よりメモリ効率の高い勾配計算が使用されるためです。
[学習] ペインで学習の進行状況を確認できます。いずれかの停止条件が満たされるまで学習が続行されます。この例では、6 回の連続する検証の反復において、検証誤差が常に前回の最小検証誤差以上となるまで ("検証基準に適合" するまで) 学習が続行されます。
結果の解析
[モデルの概要] に、学習アルゴリズムの情報および各データ セットに対する学習結果が表示されます。
プロットを生成すると、結果をさらに詳しく解析できます。線形回帰をプロットするには、[プロット] セクションで [回帰] をクリックします。回帰プロットでは、学習セット、検証セット、およびテスト セットの応答 (ターゲット) に関するネットワーク予測 (出力) が表示されます。
完全に当てはまる場合、データが 45 度の線に沿って分布し、ネットワーク出力が応答と等しくなるはずです。この問題では、すべてのデータ セットについて適正に当てはめられています。より正確な結果を得る必要がある場合は、[学習] を再度クリックしてネットワークに再学習させることができます。学習を行うたびにネットワークの初期の重みとバイアスが変更されるため、再学習後に改善されたネットワークが生成される可能性があります。
誤差ヒストグラムを表示して、ネットワーク性能に関する追加の検証を取得します。[プロット] セクションで [誤差ヒストグラム] をクリックします。
棒グラフの青色の部分は学習データ、緑色の部分は検証データ、赤色の部分はテスト データを表します。ヒストグラムでは、外れ値、すなわち大部分のデータと比べて近似の精度が著しく低いデータ点を確認できます。外れ値を確認して、データが不適切でないか、またはこれらのデータ点が残りのデータ セットと異なっていないかを判断することをお勧めします。外れ値が有効なデータ点であるにもかかわらず、残りのデータとは異なっている場合、ネットワークはこれらの点に対して外挿を行います。外れ値点のように見えるデータをさらに収集し、ネットワークの再学習を行う必要があります。
ネットワーク性能に満足できない場合、次のいずれかを行うことができます。
ネットワークに再度学習させる。
隠れニューロンの数を増やす。
より大規模な学習データ セットを使用する。
学習セットでの性能は良好であるにもかかわらず、テスト セットでの性能が低い場合は、モデルが過適合となっている可能性があります。ニューロンの数を減らすことによって過適合を軽減できます。
追加のテスト セットでネットワーク性能を評価することもできます。ネットワークを評価するための追加のテスト データを読み込むには、[テスト] セクションで [テスト] をクリックします。[モデルの概要] に、追加のテスト結果が表示されます。プロットを生成して追加のテスト データの結果を解析することもできます。
コードの生成
[コード生成]、[単純な学習スクリプトを生成] を選択して MATLAB コードを作成することにより、コマンド ラインで以前に実行したステップを再現できます。MATLAB コードの作成は、ツールボックスのコマンド ライン機能を使用して学習プロセスをカスタマイズする方法を学ぶ必要がある場合に便利です。コマンド ライン関数を使用したデータへの当てはめでは、生成されるスクリプトについてさらに詳しく説明します。
ネットワークのエクスポート
学習済みネットワークをワークスペースまたは Simulink® にエクスポートできます。MATLAB Compiler™ ツールなどの MATLAB コード生成ツールを使用してネットワークを展開することもできます。学習済みネットワークとその結果をエクスポートするには、[モデルのエクスポート]、[ワークスペースにエクスポート] を選択します。
参考
ニューラル ネット フィッティング | ニューラル ネット時系列 | ニューラル ネット パターン認識 | ニューラル ネット クラスタリング | trainlm
| fitnet