教育と学習の最適化に基づく BP ニューラル ネットワーク (分類アプリケーション) - コード付き

教育と学習の最適化に基づく BP ニューラル ネットワーク (分類アプリケーション) - コード付き


要約: この記事では主に、教育および学習アルゴリズムを使用して BP ニューラル ネットワークを最適化する方法を紹介し、虹彩データを使用して簡単に説明します。

1.虹彩データの紹介

このケースでは、MATLAB の公開 iris 虹彩データをテスト データとして使用します。虹彩データには 4 つの次元と 3 つのカテゴリがあります。データ形式は次のとおりです。

特徴1 特徴2 特徴3 カテゴリー
単一セットの虹彩データ 5.3 2.1 1.2 1

3 つのカテゴリは 1、2、3 で表されます。

2. データセットの構成

虹彩データには合計 150 グループのデータが含まれており、105 グループのトレーニング セットと 45 グループのテスト セットに分割されます。次の表に示すように:

トレーニングセット(セット) テストセット(グループ) 合計データ(グループ)
105 45 150

カテゴリ データ処理: 元のデータ カテゴリは 1、2、および 3 で表されます。ニューラル ネットワークのトレーニングを容易にするために、カテゴリ 1、2、および 3 は 1、0、0、0、1、0、0、で表されます。それぞれ0、1。

データ トレーニングを実行する場合、すべての入力特徴データが正規化されます。

3. BP ニューラル ネットワークを最適化するための教育と学習

3.1 BPニューラルネットワークのパラメータ設定

一般に、BP ニューラル ネットワークのパフォーマンスを向上させるために、BP ニューラル ネットワークの初期重みとしきい値を最適化するために、インテリジェント アルゴリズムが使用されます。このケースは虹彩データに基づいていますが、虹彩データの次元が高くないため、単純な BP ニューラル ネットワークが使用されます。ニューラル ネットワークのパラメーターは次のとおりです。

ニューラルネットワークの構造

図 1. ニューラル ネットワークの構造

ニューラル ネットワークのパラメーターは次のとおりです。

%创建神经网络
inputnum = 4;     %inputnum  输入层节点数 4维特征
hiddennum = 10;     %hiddennum  隐含层节点数
outputnum = 3;     %outputnum  隐含层节点数
net = newff( minmax(input) , [hiddennum outputnum] , {
    
     'logsig' 'purelin' } , 'traingdx' ) ;
%设置训练参数
net.trainparam.show = 50 ;
net.trainparam.epochs = 200 ;
net.trainparam.goal = 0.01 ;
net.trainParam.lr = 0.01 ;

3.2 教育および学習アルゴリズムの適用

アルゴリズムの指導と学習の原則については、https://blog.csdn.net/u011835903/article/details/107861628 を参照してください。

教育および学習アルゴリズムのパラメータは次のように設定されます。

popsize = 10;%种群数量
    Max_iteration = 15;%最大迭代次数
lb = -5;%权值阈值下边界
ub = 5;%权值阈值上边界
%  inputnum * hiddennum + hiddennum*outputnum 为阈值的个数
%  hiddennum + outputnum 为权值的个数
dim =  inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum ;%  inputnum * hiddennum + hiddennum*outputnum维度

ここで、ニューラル ネットワークのしきい値数は次のように計算されることに注意してください。

このネットワークには 2 つの層があります。

最初の層のしきい値の数は 4*10 = 40、つまり inputnum * hiddennum です。

最初の層の重みの数は 10、つまり hiddennum です。

2 番目の層のしきい値の数は次のとおりです: 3*10 = 30; つまり、hiddennum * Outputnum;

2 番目の層の重みの数は 3、つまり、outputnum です。

したがって、最適化する次元は次のとおりであることがわかります。 inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum = 83;

フィットネス関数値の設定:

この記事では、フィットネス関数を次のように設定します。
フィットネス = argmin ( トレーニング データのエラー率 + テスト データのエラー率 ) フィットネス = argmin(TrainDataErrorRate + TestDataErrorRate)フィットネス_ _ _ _=a r g min (列車データ誤差_ _ _ _ _ _ _ _ _+Test Data Error Rate )ここ、 TrainDataErrorRate と TestDataErrorRate は、それぞれトレーニングセットとテストセット
のエラー分類率ですフィットネス関数は、最終的に必要なネットワークは、テスト セットとトレーニング セットの両方でより良い結果を得ることができるネットワークであることを示しています。

4.テスト結果:

教育および学習アルゴリズムの収束曲線から、全体的な誤差が継続的に減少していることがわかり、教育および学習アルゴリズムが最適化の役割を果たしていることがわかります。

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

5.Matlabコード

おすすめ

転載: blog.csdn.net/u011835903/article/details/133561921
おすすめ