基于粒子群算法优化的ELMAN动态递归神经网络预测-附代码
基于粒子群算法優化的ELMAN動態遞歸神經網絡預測及其MATAB實現
文章目錄
- 基于粒子群算法優化的ELMAN動態遞歸神經網絡預測及其MATAB實現
- 1. 模型與算法描述
- 1.1 ELMAN神經網絡預測模型介紹
- 1.2 粒子群算法PSO介紹
- 2. 粒子群算法PSO優化ELMAN回歸預測模型的構建過程
- 2.1 模型的建立
- 2.2 算法流程
- 3. PSO-ELMAN回歸預測模型的參數設置
- 4. 運行結果
- 5. MATLAB代碼
1. 模型與算法描述
1.1 ELMAN神經網絡預測模型介紹
ELMAN神經網絡具有較強的非線性和泛化能力,與傳統的前向神經網絡相比,增加了承接層,即ELMAN具有四層網絡結構:輸入層、隱含層、承接層和輸出層。承接層使得ELMAN神經網絡有動態運算的特點與具有記憶功能,其結構與各網絡層作用的詳細說明,請參考博客:ELMAN神經網絡及其matlab代碼實現。
ELMAN神經網絡的計算過程為:
{X(k)=f(W1U(k?1)+W2Xc(k)+b1)Xc(k)=X(k?1)Y(k)=g(W3X(k)+b2)\left\{\begin{array}{l} X(k)=f\left(W_{1} U(k-1)+W_{2} X_{c}(k)+b_{1}\right) \\ X_{c}(k)=X(k-1) \\ Y(k)=g\left(W_{3} X(k)+b_{2}\right) \end{array}\right. ????X(k)=f(W1?U(k?1)+W2?Xc?(k)+b1?)Xc?(k)=X(k?1)Y(k)=g(W3?X(k)+b2?)?
式中,U(k-1)、X(k)、Y(k)和Xc(k)分別為ELMAN的輸入向量、隱含層的輸出向量、輸出層和承接層的輸出向量。W1、W2、W3以及b1、b2分別為輸入層到隱含層、承接層到隱含層、隱含層到輸出層的連接權值矩陣,以及隱含層、輸出層的閾值向量。
1.2 粒子群算法PSO介紹
粒子群優化算法(Particle Swarm optimization,PSO)是一種經典的啟發式算法,由Kennedy等于1995年提出?;舅枷胧抢萌后w中的個體對信息的共享,從而使得群體位置在解空間中產生從無序到有序的演化過程,從而獲得問題的最優解。粒子群算法的核心為速度更新與位置更新公式:
v(d)=w?v(d?1)+c1?r1?(pbest?(d)?x(d))+c2?r2?(gbest?(d)?x(d)),(1)v(d)=w^{*} v(d-1)+c 1^{*} r 1^{*}(\text { pbest }(d)-x(d))+c 2^{*} r 2 *(\operatorname{gbest}(d)-x(d)),(1) v(d)=w?v(d?1)+c1?r1?(?pbest?(d)?x(d))+c2?r2?(gbest(d)?x(d)),(1)
x(d)=x(d?1)+v(d?1)?t,(2)x(d)=x(d-1)+v(d-1)^{*} t,(2) x(d)=x(d?1)+v(d?1)?t,(2)
式中,d為當前的迭代次數,pbest為當前的最優粒子位置,gbest為歷史的最優粒子位置,w為慣性權重,用于保持粒子的速度影響,c1,c2分別為個體學習因子和社會學習因子,v(d-1)為第d-1次迭代的粒子速度,x(d)為第d次迭代的粒子位置,r1和r2是(0,1)內的隨機數。
粒子群算法的實現步驟為:
Step1:初始化最大迭代次數N,種群大小n,學習因子c1、c2,慣性權重w等參數。
Step2:初始化種群位置,計算初始的粒子適應度,并且獲得初始最優個體。
Step3:Start Loop(K=1):使用公式(1)、(2)更新粒子的速度和位置。
Step4:計算種群的適應度值,更新當前種群最優粒子位置。
Step5:更新全局(迄今)最優的粒子位置和適應度。
Step6:執行步驟3-5,直至K>N,End Loop(跳出循環)。輸出最優的個體位置與最優適應度值。
粒子群算法PSO優化實例理解:
經過有限次迭代后,粒子群算法的種群中每個個體位置都會朝著最優解靠近,如下圖所示:
PSO優化程序:
2. 粒子群算法PSO優化ELMAN回歸預測模型的構建過程
2.1 模型的建立
使用神經網絡進行預測建模時,初始的權值和閾值一般由偽隨機數初始化,使得訓練數據訓練好的模型性能不穩定。針對ELMAN神經網絡的預測精度受權值和閾值的影響較大,使用粒子群優化算法PSO對參數進行優化,提高ELMAN神經網絡的預測精度。
PSO-ELMAN預測模型的適應度函數取為訓練集與測試集整體的均方誤差,計算公式如下:
min?f(W1,W2,W3,b1,b2)=1n1∑i=1n1(ytrainingSet?(i)?y^trainingSet?(i))2+1n2∑i=1n2(ytestingSet?(i)?y^testingSet?(i))22\min f\left(W_{1}, W_{2}, W_{3}, b_{1}, b_{2}\right)=\frac{\sqrt{\frac{1}{n_{1}} \sum_{i=1}^{n_{1}}\left(y_{\text {trainingSet }}(i)-\hat{y}_{\text {trainingSet }}(i)\right)^{2}}+\sqrt{\frac{1}{n_{2}} \sum_{i=1}^{n_{2}}\left(y_{\text {testingSet }}(i)-\hat{y}_{\text {testingSet }}(i)\right)^{2}}}{2} minf(W1?,W2?,W3?,b1?,b2?)=2n1?1?∑i=1n1??(ytrainingSet??(i)?y^?trainingSet??(i))2?+n2?1?∑i=1n2??(ytestingSet??(i)?y^?testingSet??(i))2??
式中,n1和n2分別為訓練集的樣本數與測試集的樣本數。粒子群算法在進化過程中,適應度越小,說明訓練的模型準確,且對預測樣本的精度有所提升。
2.2 算法流程
2.2.1 數據說明:
采用深度學習常用的建筑物能源數據集進行預測實驗,數據是EXCEL格式,形式為:
| 1 | - | – | – | – |
| 2 | - | – | – | – |
| … | - | – | – | – |
| n | - | – | – | – |
2.2.2 算法步驟
步驟1:輸入影響因素數據與目標輸出數據,ELMAN神經網絡劃分訓練集與測試集,對數據歸一化處理,公式為:
x′=a+x?xmin?xmax??xmin?×(b?a)x^{\prime}=a+\frac{x-x_{\min }}{x_{\max }-x_{\min }} \times(b-a) x′=a+xmax??xmin?x?xmin??×(b?a)
式中,?x′是歸一化后的數據,x,xmin?,xmax?,分別為原始數據,及其最大值,最小值,a,b分別為歸一化后的最大值和最小值,如歸一化至[0,1]范圍內。{\text {式中, }}x^{\prime}\text {是歸一化后的數據,}x,x_{\min },x_{\max },\text{分別為原始數據,及其最大值,最小值,}a,b\text{分別為歸一化后的最大值和最小值,如歸一化至[0,1]范圍內。}式中,?x′是歸一化后的數據,x,xmin?,xmax?,分別為原始數據,及其最大值,最小值,a,b分別為歸一化后的最大值和最小值,如歸一化至[0,1]范圍內。
步驟2:構建ELMAN神經網絡,初始化網絡結構。
步驟3:粒子群算法參數初始化。初始化最大迭代次數N,種群大小n,以及c1,c2,w參數。
步驟4:初始化粒子群算法PSO的種群位置。根據步驟2的網絡結構,計算需要優化的變量元素個數。
步驟5:使用粒子群算法優化。將適應度函數設為ELMAN預測的均方誤差。執行PSO的循環體過程,即速度更新和位置更新,直至達到最大迭代次數,終止粒子群優化算法。
步驟6:將PSO優化后的權值和閾值參數,賦給ELMAN神經網絡。(或者在循環體當中,將網絡結構理解為優化變量,輸出最優的網絡結構)。
步驟7:PSO優化后的ELMAN神經網絡訓練和預測,并與優化前的ELMAN神經網絡進行預測誤差分析和對比。
2.2.3 算法流程
3. PSO-ELMAN回歸預測模型的參數設置
3.1 ELMAN神經網絡參數設置
%網絡參數配置 net.trainParam.epochs=1000; % 訓練次數,這里設置為1000次 net.trainParam.lr=0.01; % 學習速率,這里設置為0.01 net.trainParam.goal=0.00001; % 訓練目標最小誤差,這里設置為0.0001 net.trainParam.show=25; % 顯示頻率,這里設置為每訓練25次顯示一次 net.trainParam.mc=0.01; % 動量因子 net.trainParam.min_grad=1e-6; % 最小性能梯度 net.trainParam.max_fail=6; % 最高失敗次數3.2 粒子群算法參數設置
popsize=30; %初始種群規模 maxgen=50; %最大進化代數 dim=inputnum*hiddennum_best+hiddennum_best*hiddennum_best+hiddennum_best+hiddennum_best*outputnum+outputnum; %自變量個數 lb=repmat(-3,1,dim); %自變量下限 ub=repmat(3,1,dim); %自變量上限 c1 = 2; % 每個粒子的個體學習因子,也稱為個體加速常數 c2 = 2; % 每個粒子的社會學習因子,也稱為社會加速常數 w = 0.9; % 慣性權重3.3 權值和閾值元素的編碼
啟發式算法在求解問題最優解時,常用的有三種編碼方式:二進制,向量,以及矩陣。由于權值為矩陣形式,閾值為向量,為了統一,將權值矩陣和閾值向量的元素取出,存放于向量中,決策變量為1×n的向量形式。使用粒子群算法優化后,再將相應的元素從最優解向量中取出,按提取時的順序放回到權值和閾值中。
4. 運行結果
4.1 粒子群算法的進化曲線
4.2 PSO-ELMAN預測與優化前ELMAN預測的誤差對比分析
5. MATLAB代碼
見博客主頁
總結
以上是生活随笔為你收集整理的基于粒子群算法优化的ELMAN动态递归神经网络预测-附代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 调试经验——Spotfire导入xlsb
- 下一篇: 转载:递归神经网络