ニューラル ネット時系列アプリを使用した時系列データへの当てはめ
この例では、"ニューラル ネット時系列" アプリを使用して、時系列データに当てはまるように浅層ニューラル ネットワークに学習させる方法を説明します。
ntstool を使用して "ニューラル ネット時系列" アプリを開きます。
ntstool
ネットワークの選択
"ニューラル ネット時系列" アプリを使用して、3 種類の時系列問題を解くことができます。
最初のタイプの時系列問題では、時系列 の将来の値を、この時系列の過去の値および 2 番目の時系列 の過去の値から予測します。この形式の予測は、外因的 (外部) 入力を使用した非線形自己回帰ネットワーク (NARX) と呼ばれています。
2 番目のタイプの時系列問題では、時系列を 1 つだけ使用します。時系列 の将来の値を、その時系列の過去の値のみから予測します。この形式の予測は、非線形自己回帰 (NAR) と呼ばれています。
3 番目の時系列問題は、2 つの時系列 (入力時系列 (予測子) および出力時系列 (応答) ) を使用する最初のタイプと似ています。ここでは、 の前の値に関する情報がない状態で、 の前の値から の値を予測する必要があります。
この例では、NARX ネットワークを使用します。[ネットワークの選択]、[NARX ネットワーク] をクリックします。

データの選択
"ニューラル ネット時系列" アプリには、ニューラル ネットワークの学習を始めるのに役立つサンプル データが用意されています。
サンプルの pH 中和プロセス データをインポートするには、[インポート]、[その他のサンプル データ セット]、[pH 中和データ セットのインポート] を選択します。このデータ セットを使用して、酸と塩基の溶液の液流に基づいて溶液の pH を予測するように、ニューラル ネットワークに学習させることができます。ファイルまたはワークスペースから自分のデータをインポートする場合は、予測子と応答を指定しなければなりません。
インポートしたデータに関する情報は、[モデルの概要] に表示されます。このデータ セットには 2001 個のタイム ステップが含まれています。予測子は 2 つの特徴 (酸と塩基の溶液の液流) をもち、応答は 1 つの特徴 (溶液の pH) をもちます。

データを学習セット、検証セット、テスト セットに分割します。既定の設定はそのままにします。データを以下のように分割します。
学習用に 70% を使用。
ネットワークが汎化されていることを検証し、過適合の発生前に学習を停止するために 15% を使用。
ネットワークの汎化の独立したテスト用に 15% を使用。
データ分割の詳細については、ニューラル ネットワークの最適な学習のためのデータの分割を参照してください。
ネットワークの作成
標準的な NARX ネットワークは、隠れ層にシグモイド伝達関数、出力層に線形伝達関数を使用した 2 層フィードフォワード ネットワークです。このネットワークでは、 シーケンスおよび シーケンスの過去の値を格納するタップ付き遅延線も使用されます。 は の関数であるため、NARX ネットワークの出力 が (遅延によって) ネットワークの入力にフィードバックされることに注意してください。ただし、学習の効率化のために、このフィードバック ループを開にすることができます。
ネットワークの学習中は真の出力が使用できるため、下記の開ループ アーキテクチャを使用できます。この場合、推定された出力をフィードバックするのではなく、真の出力が使用されます。これには 2 つの利点があります。1 つ目は、フィードフォワード ネットワークへの入力の精度が高くなることです。2 つ目は、結果として得られるネットワークが純粋なフィードフォワード アーキテクチャを持つようになり、より効率的なアルゴリズムを学習に使用できることです。このネットワークについては、時系列 NARX フィードバック ニューラル ネットワークの設計で詳しく説明します。
[層のサイズ] の値は、隠れニューロンの数を定義します。既定の層のサイズ (10) はそのままにします。[時間遅延] の値を 4 に変更します。ネットワークの学習性能が低い場合、これらの数を調整することもできます。
ネットワーク アーキテクチャは [ネットワーク] ペインで確認できます。

ネットワークの学習
ネットワークの学習を行うには、[学習]、[レーベンバーグ・マルカート法を用いた学習] を選択します。これは既定の学習アルゴリズムで、[学習] をクリックした場合と同じです。

レーベンバーグ・マルカート法 (trainlm) による学習は、ほとんどの問題に対して推奨されます。ノイズを含む問題や小規模な問題の場合は、ベイズ正則化 (trainbr) を使用することで、かかる時間は長くなりますが、より良い解が得られます。大規模な問題の場合には、スケーリング共役勾配法 (trainscg) を使用することをお勧めします。この方法では、他の 2 つのアルゴリズムで使用されるヤコビアン計算よりメモリ効率の高い勾配計算が使用されるためです。
[学習] ペインで学習の進行状況を確認できます。いずれかの停止条件が満たされるまで学習が続行されます。この例では、6 回の連続する検証の反復において、検証誤差が常に前回の最小検証誤差以上となるまで ("検証基準に適合" するまで) 学習が続行されます。

結果の解析
[モデルの概要] に、学習アルゴリズムの情報および各データ セットに対する学習結果が表示されます。

プロットを生成すると、結果をさらに詳しく解析できます。誤差自己相関をプロットするには、[プロット] セクションで [誤差自己相関] をクリックします。自己相関プロットは、予測誤差と時間との関連性を示します。完全な予測モデルの場合、自己相関関数の値はゼロ ラグにおける値 (平均二乗誤差) を除き、すべてゼロになります。これは、予測誤差が相互に完全に無相関 (ホワイト ノイズ) であることを意味します。予測誤差に有意な相関がある場合、通常はタップ付き遅延線の遅延の数を増やすことによって、予測を改善できます。この場合、ゼロ ラグの相関を除く相関がゼロ付近の 95% 信頼限界の範囲内にほぼあるため、適切なモデルであると考えられます。より正確な結果が必要な場合は、ネットワークの再学習を行えます。これによってネットワークの初期の重みとバイアスが変更されるため、再学習後に改善されたネットワークが生成される可能性があります。

入力誤差の相互相関プロットを表示して、ネットワーク性能をさらに詳しく検証します。[プロット] セクションで [入力誤差相関プロット] をクリックします。入力誤差の相互相関プロットは、誤差と入力シーケンス がどのように相関しているのかを示します。完全な予測モデルの場合、すべての相関がゼロになります。入力と誤差に相関がある場合、通常はタップ付き遅延線の遅延の数を増やすことによって、予測を改善できます。この場合、ほとんどの相関がゼロ付近の信頼限界の範囲内にあります。

[プロット] セクションで [応答] をクリックします。時間に対する出力、応答 (ターゲット)、および誤差が表示されます。さらに、学習、テスト、および検証に対してどの時点が選択されたかを示します。

ネットワーク性能に満足できない場合、次のいずれかを行うことができます。
ネットワークに再度学習させる。
隠れニューロンの数を増やす。
より大規模な学習データ セットを使用する。
学習セットでの性能は良好であるにもかかわらず、テスト セットでの性能が低い場合は、モデルが過適合となっている可能性があります。層のサイズを小さくすると、ニューロンの数が減って過適合が軽減されます。
追加のテスト セットでネットワーク性能を評価することもできます。ネットワークを評価するための追加のテスト データを読み込むには、[テスト] セクションで [テスト] をクリックします。[モデルの概要] に、追加のテスト データの結果が表示されます。プロットを生成して追加のテスト データの結果を解析することもできます。
コードの生成
[コード生成]、[単純な学習スクリプトを生成] を選択して MATLAB コードを作成することにより、コマンド ラインで以前に実行したステップを再現できます。MATLAB コードの作成は、ツールボックスのコマンド ライン機能を使用して学習プロセスをカスタマイズする方法を学ぶ必要がある場合に便利です。コマンド ライン関数を使用した時系列データへの当てはめでは、生成されるスクリプトについてさらに詳しく説明します。

ネットワークのエクスポート
学習済みネットワークをワークスペースまたは Simulink® にエクスポートできます。MATLAB Compiler™ ツールなどの MATLAB コード生成ツールを使用してネットワークを展開することもできます。学習済みネットワークとその結果をエクスポートするには、[モデルのエクスポート]、[ワークスペースにエクスポート] を選択します。

参考
ニューラル ネット フィッティング | ニューラル ネット時系列 | ニューラル ネット パターン認識 | ニューラル ネット クラスタリング | train | preparets | narxnet | closeloop | perform | removedelay