1. 演算法概述
**
ELM演算法針對的問題是單隱層的前饋神經網路(single-hidden layer feedforward neural networks,SLFNs),演算法特點在于輸入層到隱層的權重W和偏差B可以隨機設定,隱層激勵函式具有無限可微的特征即可(常用的有radial basis、sine、cosine、exponential等函式),而輸出層權重 用回歸矩陣的偽逆矩陣
和訓練輸出值來確定,
這里的偽逆矩陣又稱廣義逆矩陣,即Moore-Penrose generalized inverse matrix,對于矩陣A的廣義逆矩陣G滿足以下運算式:
當 要是非奇異(滿秩)矩陣,廣義逆矩陣可以用
來求得 ,如果
是奇異矩陣,則需要用SVD(奇異值分解)來求解,
與傳統的應用誤差梯度下降學習策略的BP神經網路相比,ELM的優點在于學習速度很快,泛化精度高,而且不會陷入區域最小值,可以采用多種激勵函式(滿足無限可微即可),而與其他演算法相比,例如很火的SVM來說,ELM演算法計算速度也更有優勢,
以上內容均出自黃光斌老師的論文:
Huang G B, Zhu Q Y, Siew C K. Extreme learning machine: Theory and
applications[J]. Neurocomputing, 2006, 70(1-3):489-501.
2. 在線學習和離線學習對比
批量學習(Batch Learning):
(1) 樣本全部同時進入模型;
(2) 梯度下降的方法容易陷入區域最優;
(3) 學習并行性,速度快,但耗費存盤量大,
在線學習(Online Learning):
(1) 樣本按順序進入模型,不斷修正模型引數;
(2) 隨機性強,不容易陷入區域最優;
(3) 學習串行性,需要依次迭代速度慢,但耗費存盤量小,
非線性函式 ,訓練樣本和測驗樣本均為500個,服從均勻分布,訓練樣本受到噪聲干擾,噪聲服從
分布,ELM模型輸入層到隱層采用RBF函式映射,中心點位置隨機選取[-10,10]中100個點,分別使用批量學習和在線學習方法進行測驗,對比結果如圖1所示,可見在線學習方法精度沒有提高,且計算時間較長,但這種方法對于大資料量的情況也能使用,
表1 不同學習策略對比結果
3 ELM 和 OLS_RBF 對比實驗
OLS_RBF是正交最小二乘徑向基神經網路模型,具體內容參見這篇文章:
- 1
Chen S, Cowan C N, Grant P M. Orthogonal least squares learning algorithm for radial basis function networks.[J]. IEEE Transactions on Neural Networks, 1991, 2(2):302-9.
實驗選用復雜的非線性函式,非線性函式 ,訓練樣本和測驗樣本均為500個,服從均勻分布,訓練樣本受到噪聲干擾,噪聲服從
分布,同樣分別用ELM 和 OLS_RBF進行實驗,各自重復100次得到結果,
3.1 隱層中心從樣本中選擇
這種條件下,ELM計算速度快,但精度是比OLS_RBF差的,且OLS_RBF具有較小的模型結構,
3.2 隱層中心由樣本范圍擴大若干倍數
OLS_RBF的隱層中心由原來的[-1,1]擴大若干倍數(1至2,間隔0.1),如圖2所示,隨著隱層中心選取范圍的擴大,模型誤差MSE總體先下降后上升,在1.5左右最優,而模型結構大小呈現持續降低,
由于ELM的隱層中心數較多,隱層此次擴大倍數增加,由原來的[-1,1]擴大若干倍數(1至100,間隔1),而模型結構大小不變,設定為100,結果如圖3所示,
隨著隱層中心范圍擴大,ELM的誤差MSE也是先下降后上升,在10左右取得最優
比較兩個模型在最優擴大倍數的MSE發現,兩者精度幾乎一致,都是0.55的水平,因為所測驗的倍數范圍有限,因此可能模型只獲得區域最優,
3.3 樣本服從正態分布的情況
之前的實驗樣本都是服從均勻分布的,現在讓樣本服從正態分布,x~N(0,0.3),對兩個模型分別取最優的引數(大概選取),由于此次實驗有誤差離群點,因此只從曲線跟蹤影像對兩者進行對比,如圖4,兩種模型在資料密集區域(0附近)的精度都比較高,在資料稀疏區域(遠離0)精度都較差,對于絕大部分點,兩者的預測精度差別不大(ELM略微占優),
**%% 清慷訓境變數
clc;
clear all
close all
nntwarn off;
%% 資料載入
load data;
a=data;
%% 選取訓練資料和測驗資料
for i=1:6
p(i,:)=[a(i,:),a(i+1,:),a(i+2,:)];
end
% 訓練資料輸入
p_train=p(1:5,:);
% 訓練資料輸出
t_train=a(4:8,:);
% 測驗資料輸入
p_test=p(6,:);
% 測驗資料輸出
t_test=a(9,:);
% 為適應網路結構 做轉置
p_train=p_train';
t_train=t_train';
p_test=p_test';
%% 網路的建立和訓練
% 利用回圈,設定不同的隱藏層神經元個數
nn=[7 11 14 18];
for i=1:4
threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];
% 建立Elman神經網路 隱藏層為nn(i)個神經元
net=newelm(threshold,[nn(i),3],{'tansig','purelin'});
% 設定網路訓練引數
net.trainparam.epochs=1000;
net.trainparam.show=20;
% 初始化網路
net=init(net);
% Elman網路訓練
net=train(net,p_train,t_train);
% 預測資料
y=sim(net,p_test);
% 計算誤差
error(i,:)=y'-t_test;
end**
三、運行結果

四、備注
完整代碼或者代寫添加QQ1575304183
往期回顧>>>>>>
【SVM預測】灰狼演算法優化svm支持向量機預測matlab原始碼
【SVM預測】基于蝙蝠演算法改進的SVM預測matlab原始碼
【ELM預測】粒子群優化ELM網路預測matlab原始碼???????
【lssvm預測】基于鯨魚優化演算法的lssvm資料預測matlab原始碼
【lssvm預測模型】基于蝙蝠演算法改進的最小二乘支持向量機lssvm預測
【lssvm預測】基于飛蛾撲火演算法改進的最小二乘支持向量機lssvm預測
【lstm預測】基于鯨魚優化演算法改進的lstm預測matlab原始碼
【BP預測模型】BP神經網路的預測matlab原始碼???????
【BP預測】基于麻雀優化的BP神經網路matlab原始碼???????
【ANN預測模型】基于差分演算法改進ANN網路預測matlab原始碼
【SVM預測】基于SVM進行股票預測matlab原始碼
【BP預測】基于麻雀演算法優化BP預測matlab原始碼
【預測模型】基于RLS演算法進行預測matlab原始碼
【SVM預測】基于SVM和LSR交通流預測matlab原始碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259545.html
標籤:其他
