MATLABニューラルネットワーク(2)非線形システムBPニューラルネットワークモデル - 非線形関数フィッティング

2.1ケースの背景

エンジニアリングアプリケーションでは、多くの場合、いくつかの複雑な非線形システムに遭遇し、これらのシステムは状態の複雑な方程式です、正確に数学的にモデル化することができません。この場合、BPニューラルネットワークは、これらの非線形システムの発現を確立することができます。未知システムの方法は、未知の機能を発現し、その後訓練されたBPニューラルネットワークシステム出力を使用することが可能なネットワークを可能にBPニューラルネットワークのトレーニングシステムとブラックボックス、第一の入力と出力データとみなすことができます。

\ [Y = {X_1} ^ 2 + {X_2} ^ 2 \]に示す関数パターンに合わせて機能非線形章。

T = -5:0.1:5。
[X1、X2] =(t)を関数meshgrid。
Y = X1 + X2 ^ 2 ^ 2 ..;
関数surfc(X1、X2、Y)。
シェーディングINTERP
xlabel( '×1');
ylabelの( '×2');
zlabel( 'Y');
タイトル(「非線形関数」);

 

2.2モデル

ニューラルネットワークアーキテクチャ:2-5-1

テストデータは、ネットワークのパフォーマンステストに適合するために使用される100を、設定された2000は、ランダムネットワークのトレーニングのための訓練データセットとして選択1900から、非線形関数の入力および出力データのランダムなセットを得ました。

2.3 MATLABの実現

2.3.1 BPニューラルネットワークツールボックス機能

newff

BPニューラルネットワークパラメータ設定機能。

ネット= newff(P、T、S、TF、BTF、BLF、PF、IPF、OPF、DDF)

  • P:入力データ行列。
  • T:出力データマトリックス;
  • S:隠された層のノード。
  • TF:伝達関数ノード。ハードクリッピング伝達関数hardlim、対称ハードクリッピング伝達関数hardlims、線形伝達関数purelin、接線伝達関数tansig、logsig対数伝達関数を含みます。
X = -5:0.1:5。
サブプロット(2,6、[2,3])。
Y = hardlim(X)。
プロット(X、Y、 'のLineWidth'、1.5)。
タイトル( 'hardlim');
サブプロット(2,6、[4,5])。
Y = hardlims(X)。
プロット(X、Y、 'のLineWidth'、1.5)。
タイトル( 'hardlims');
サブプロット(2,6、[7,8])。
Y = purelin(X)。
プロット(X、Y、 'のLineWidth'、1.5)。
タイトル( 'purelin');
サブプロット(2,6、[9,10])。
Y = tansig(X)。
プロット(X、Y、 'のLineWidth'、1.5)。
タイトル( 'tansig');
サブプロット(2,6、[11,12])。
Y = logsig(X)。
プロット(X、Y、 'のLineWidth'、1.5)。
タイトル( 'logsig');

 

  • BTF:トレーニング機能。BPアルゴリズム、勾配降下関数traingd含むトレーニング、バックプロパゲーション勾配降下運動量BPアルゴリズムのトレーニング機能traingdm、勾配動的適応学習レートは、BPアルゴリズムのトレーニング機能traingda減少し、勾配バックプロパゲーション運動量と適応学習レートは動的BPアルゴリズムのトレーニングを減少関数traingdx、Levenberg_Marquardt BPアルゴリズムのトレーニング機能trainlm。
  • BLF:学習機能。BPはアイテムのルールlearngdm量を学習するルールlearngd、主導BPを学ぶ含みます。
  • PF:平均絶対誤差メイプロファイリング機能、平均二乗誤差MSEパフォーマンス分析の機能を含むパフォーマンス分析機能、。
  • IPF:入力処理機能。
  • OPF:出力ハンドラ。
  • DDF:認証データ・パーティショニング機能。

一般的にデフォルトパラメータを使用して、4つのパラメータの後ろに、使用中の6つのパラメータの前に配置されました。

列車

トレーニングデータを用いて訓練BPニューラルネットワーク。

[ネット、TR] =列車(NET、X、T、PI、AI)

  • NET:ネットワークを訓練します。
  • X:入力データ行列。
  • 出力データはTをマトリックス。
  • パイ:初期条件入力層と、
  • AI:出力層の初期化条件;
  • ネット:訓練されたネットワーク。
  • コースレコードをトレーニング。

シム

BPニューラルネットワーク機能。

Y =(ネット、X)

  • ネット:訓練されたネットワーク。
  • X:入力データ。
  • Y:予測データネットワーク。

2.3.2データの選択および正規化

%%予測アルゴリズムBPニューラルネットワーク

空の環境変数%%
CLC
晴れ

%%トレーニングデータは、データ抽出および正規化を予測します
入力= 10 *関数randn(2,2000)。
出力= SUM(入力*入力。);

1〜2000%ランダムな順序
k=rand(1,2000);
[m,n]=sort(k);

%找出训练数据和预测数据
input_train=input(:,n(1:1900));
output_train=output(n(1:1900));
input_test=input(:,n(1901:2000));
output_test=output(n(1901:2000));

%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);

2.3.3 BP神经网络训练

%% BP网络训练
% %初始化网络结构
net=newff(inputn,outputn,5);

% 配置网络参数(迭代次数,学习率,目标)
net.trainParam.epochs=100;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00004;

%网络训练
net=train(net,inputn,outputn);

2.3.4 BP神经网络预测

%% BP网络预测
%预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
 
%网络预测输出
an=sim(net,inputn_test);
 
%网络输出反归一化
BPoutput=mapminmax('reverse',an,outputps);

2.3.5 结果分析

 

%% 结果分析
figure(1)
plot(BPoutput,':og')
hold on
plot(output_test,'-*');
legend('预测输出','期望输出')
title('BP网络预测输出','fontsize',12)
ylabel('函数输出','fontsize',12)
xlabel('样本','fontsize',12)

 

%预测误差
error=BPoutput-output_test;

figure(2)
plot(error,'-*')
title('BP网络预测误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)

 

figure(3)
plot((BPoutput-output_test)./output_test,'-*');
title('神经网络预测误差百分比')

 

% 计算平均绝对百分比误差(mean absolute percentage error)
MAPE=mean(abs(BPoutput-output_test)./output_test)

 

おすすめ

転載: www.cnblogs.com/dingdangsunny/p/12324107.html