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)