Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

narxnet

外部入力を伴う非線形自己回帰ニューラル ネットワーク

説明

narxnet(inputDelays,feedbackDelays,hiddenSizes,feedbackMode,trainFcn) は、次の引数を取ります。

  • 増加する 0 または正の入力遅延から成る行ベクトル inputDelays

  • 増加する 0 または正のフィードバック遅延から成る行ベクトル feedbackDelays

  • 1 つ以上の隠れ層のサイズの行ベクトル hiddenSizes

  • フィードバックのタイプ feedbackMode

  • 逆伝播学習関数 trainFcn

これは、NARX ニューラル ネットワークを返します。

NARX (外部入力を伴う非線形自己回帰) ネットワークには、同じ時系列の過去の値、フィードバック入力、および別の時系列 (外部時系列または外生時系列と呼ばれる) を指定して、1 つの時系列を予測するように学習させることができます。

すべて折りたたむ

外部入力を伴う非線形自己回帰 (NARX) ニューラル ネットワークの学習および新しい時系列データでの予測を行います。時系列の一連の値の予測は、"複数ステップの予測" としても知られています。閉ループ ネットワークは複数ステップの予測を実行できます。閉ループ ネットワークは、外部フィードバックが失われた場合に、内部フィードバックを使用して予測を続けることができます。NARX による予測では、時系列の将来の値を、その時系列の過去の値、フィードバック入力、および外部時系列から予測します。

簡単な時系列の予測データを読み込みます。

[X,T] = simpleseries_dataset;

データを学習データ XTrainTTrain、および予測用のデータ XPredict に分割します。閉ループ ネットワークを作成した後、XPredict を使用して予測を実行します。

XTrain = X(1:80);
TTrain = T(1:80);
XPredict = X(81:100);

NARX ネットワークを作成します。隠れ層の入力遅延、フィードバック遅延、およびサイズを定義します。

net = narxnet(1:2,1:2,10);

preparets を使用して時系列データを準備します。この関数は、初期の入力遅延状態と層の遅延状態を入力するのに必要なステップ数だけ、入力とターゲットの時系列を自動的にシフトします。

[Xs,Xi,Ai,Ts] = preparets(net,XTrain,{},TTrain);

ネットワークを完全に開ループで作成してから、複数ステップ先の予測を行うために、そのネットワークを閉ループに変換することを推奨します。これにより、この閉ループ ネットワークを使用して必要なだけ先の値を予測することができます。このニューラル ネットワークを閉ループ モードのみでシミュレーションすると、このネットワークは入力系列に含まれるタイム ステップ数と同じ数だけ予測を実行できます。

NARX ネットワークに学習をさせます。関数 train は、検証ステップおよびテスト ステップを含め、開ループ (直並列アーキテクチャ) でネットワークの学習を行います。

net = train(net,Xs,Ts,Xi,Ai);

Figure Neural Network Training (27-Jul-2023 15:32:25) contains an object of type uigridlayout.

学習済みネットワークを表示します。

view(net)

ネットワーク入力 Xs、初期の入力状態 Xi、および初期の層の状態 Ai から、開ループ ネットワークのネットワーク出力 Y、最終の入力状態 Xf、および最終の層の状態 Af を計算します。

[Y,Xf,Af] = net(Xs,Xi,Ai);

ネットワーク性能を計算します。

perf = perform(net,Ts,Y)
perf = 0.0153

次の 20 タイム ステップの出力を予測するには、まず閉ループ モードでネットワークのシミュレーションを行います。開ループ ネットワーク net の最終の入力状態 Xf と層の状態 Af が、閉ループ ネットワーク netc の初期の入力状態 Xic と層の状態 Aic になります。

[netc,Xic,Aic] = closeloop(net,Xf,Af);

閉ループ ネットワークを表示します。

view(netc)

閉ループ モードで 20 タイム ステップ先の予測を実行します。

Yc = netc(XPredict,Xic,Aic)
Yc=1×20 cell array
    {[-0.0156]}    {[0.1133]}    {[-0.1472]}    {[-0.0706]}    {[0.0355]}    {[-0.2829]}    {[0.2047]}    {[-0.3809]}    {[-0.2836]}    {[0.1886]}    {[-0.1813]}    {[0.1373]}    {[0.2189]}    {[0.3122]}    {[0.2346]}    {[-0.0156]}    {[0.0724]}    {[0.3395]}    {[0.1940]}    {[0.0757]}

入力引数

すべて折りたたむ

0 または正の入力遅延。増加する行ベクトルとして指定します。

0 または正のフィードバック遅延。増加する行ベクトルとして指定します。

隠れ層のサイズ。1 つ以上の要素の行ベクトルとして指定します。

フィードバックのタイプ。'open''closed''none' のいずれかとして指定します。

学習関数名。次のいずれかに指定します。

学習関数アルゴリズム
'trainlm'

レーベンバーグ・マルカート法

'trainbr'

ベイズ正則化

'trainbfg'

BFGS 準ニュートン法

'trainrp'

弾性逆伝播法

'trainscg'

スケーリング共役勾配法

'traincgb'

Powell・Beale リスタート付き共役勾配法

'traincgf'

Fletcher・Powell 共役勾配法

'traincgp'

Polak・Ribiére 共役勾配法

'trainoss'

1 ステップ割線法

'traingdx'

可変学習率勾配降下法

'traingdm'

モーメンタム項付き勾配降下法

'traingd'

勾配降下法

例: たとえば、'traingdx' のように、可変学習率勾配降下法アルゴリズムを学習アルゴリズムとして指定できます。

学習関数の詳細は、浅層の多層ニューラル ネットワークの学習と適用および多層ニューラル ネットワークの学習関数の選択を参照してください。

データ型: char

バージョン履歴

R2010b で導入