Main Content

narnet

非線形自己回帰ニューラル ネットワーク

説明

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

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

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

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

  • 学習関数 trainFcn

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

NAR (非線形自己回帰) ニューラル ネットワークには、時系列の過去の値からその時系列を予測するように学習させることができます。

すべて折りたたむ

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

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

T = simplenar_dataset;

NAR ネットワークを作成します。隠れ層のフィードバック遅延とサイズを定義します。

net = narnet(1:2,10);

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

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

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

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

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

Figure Neural Network Training (11-Feb-2022 22:19:35) contains an object of type uigridlayout.

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

view(net)

Figure Neural Network Training (11-Feb-2022 22:19:35) contains an object of type uigridlayout.

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

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

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

perf = perform(net,Ts,Y)
perf = 1.0100e-09

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

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

閉ループ ネットワークを表示します。このネットワークには入力が 1 つだけあります。閉ループ モードでは、この入力が出力に接続されます。遅延付きターゲット入力が遅延付き直接出力接続に置き換えられます。

view(netc)

20 タイム ステップ先のネットワークのシミュレーションを行うには、長さ 20 の空の cell 配列を入力します。ネットワークには、Xic および Aic に指定されている初期条件のみが必要です。

Yc = netc(cell(0,20),Xic,Aic)
Yc=1×20 cell array
  Columns 1 through 5

    {[0.8346]}    {[0.3329]}    {[0.9084]}    {[1.0000]}    {[0.3190]}

  Columns 6 through 10

    {[0.7329]}    {[0.9801]}    {[0.6409]}    {[0.5146]}    {[0.9746]}

  Columns 11 through 15

    {[0.9077]}    {[0.2807]}    {[0.8651]}    {[0.9897]}    {[0.4093]}

  Columns 16 through 20

    {[0.6838]}    {[0.9976]}    {[0.7007]}    {[0.4311]}    {[0.9660]}

入力引数

すべて折りたたむ

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 で導入