最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【DELM分類】基于人工蜂群算法改進(jìn)深度學(xué)習(xí)極限學(xué)習(xí)機(jī)實(shí)現(xiàn)數(shù)據(jù)分類附matlab代碼

2022-05-17 21:40 作者:Matlab工程師  | 我要投稿

1 簡介

人工神經(jīng)網(wǎng)絡(luò)的最大缺點(diǎn)是訓(xùn)練時(shí)間太長從而限制其實(shí)時(shí)應(yīng)用范圍,近年來,極限學(xué)習(xí)機(jī)(Extreme Learning Machine, ELM)的提出使得前饋神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時(shí)間大大縮短,然而當(dāng)原始數(shù)據(jù)混雜入大量噪聲變量時(shí),或者當(dāng)輸入數(shù)據(jù)維度非常高時(shí),極限學(xué)習(xí)機(jī)算法的綜合性能會受到很大的影響.深度學(xué)習(xí)算法的核心是特征映射,它能夠摒除原始數(shù)據(jù)中的噪聲,并且當(dāng)向低維度空間進(jìn)行映射時(shí),能夠很好的起到對數(shù)據(jù)降維的作用,因此我們思考利用深度學(xué)習(xí)的優(yōu)勢特性來彌補(bǔ)極限學(xué)習(xí)機(jī)的弱勢特性從而改善極限學(xué)習(xí)機(jī)的性能.為了進(jìn)一步提升DELM預(yù)測精度,本文采用麻雀搜索算法進(jìn)一步優(yōu)化DELM超參數(shù),仿真結(jié)果表明,改進(jìn)算法的預(yù)測精度更高。

2 部分代碼

function [ObjVal,Foods, trace]=ABC1(fit,D,NP,maxCycle,Foods)%% 參數(shù)初始化objfun=fit.objfun;ub=fit.ub; lb=fit.lb;D; % 待優(yōu)化參數(shù)個(gè)數(shù)NP; % 蜂群規(guī)模maxCycle; % 最大迭代次數(shù)FoodNumber=NP/2; % 蜜源(解)數(shù)量,因此NP必須為偶數(shù)limit=100; % 當(dāng)有蜜源連續(xù)沒被更新的次數(shù)超過limit時(shí),該蜜源將被重新初始化% 待優(yōu)化參數(shù)信息ub=ones(1,D)*ub; % 參數(shù)取值上界lb=ones(1,D)*lb; % 參數(shù)取值下界if nargin<5 ? ?Range = repmat((ub-lb),[FoodNumber 1]); ? ?Lower = repmat(lb, [FoodNumber 1]); ? ?Foods = rand(FoodNumber,D) .* Range + Lower;endBestGlobalMins=[]; %用于存放全局最優(yōu)解與平均適應(yīng)度值GlobalMin=inf;GlobalParams=[inf inf];%% 初始化蜜源% 計(jì)算每個(gè)蜜源(解)得目標(biāo)函數(shù)值,objfun為計(jì)算SVM預(yù)測的平均平方誤差(MSE)的函數(shù),根據(jù)自己的實(shí)際問題變異目標(biāo)函數(shù)即可ObjVal=ones(1,FoodNumber);for k = 1:FoodNumber ? ?ObjVal(k) = objfun(Foods(k,:));endFitness=calculateFitness(ObjVal); % 計(jì)算適應(yīng)度函數(shù)值% 標(biāo)記初始最優(yōu)蜜源(解)BestInd=find(ObjVal==min(ObjVal));BestInd=BestInd(end);if (ObjVal(BestInd)<GlobalMin) ? ?GlobalMin=ObjVal(BestInd); ? ?GlobalParams=Foods(BestInd,:);end%% ? ?trial=zeros(1,FoodNumber); % 用于記錄第i個(gè)蜜源有連續(xù)trail(i)次沒被更新過 ? ?iter=1; % 迭代開始 ? ?while ((iter <= maxCycle)) % 循環(huán)條件 ? ? ? ?%%%%%%%%%%%%%%%%%%%%%引領(lǐng)蜂搜索解的過程%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ? ? ? ?for i=1:(FoodNumber) % 遍歷每個(gè)蜜源(解) ? ? ? ? ? ?Param2Change=fix(rand*D)+1; % 隨機(jī)選擇需要變異的參數(shù) ? ? ? ? ? ?neighbour=fix(rand*(FoodNumber))+1; % 隨機(jī)選擇相鄰蜜源(解)以準(zhǔn)備變異 ? ? ? ? ? ?% 需要保證選擇的相鄰蜜源不是當(dāng)前蜜源(i) ? ? ? ? ? ?while(neighbour==i) ? ? ? ? ? ? ? ?neighbour=fix(rand*(FoodNumber))+1; ? ? ? ? ? ?end ? ? ? ? ? ?sol=Foods(i,:); % 提取當(dāng)前蜜源(解)對應(yīng)的的參數(shù) ? ? ? ? ? ?% 參數(shù)變異得到新的蜜源:v_{ij}=x_{ij}+\phi_{ij}*(x_{kj}-x_{ij}) ? ? ? ? ? ?sol(Param2Change)=Foods(i,Param2Change)+(Foods(i,Param2Change)-Foods(neighbour,Param2Change))*(rand-0.5)*2; ? ? ? ? ? ?% 確保參數(shù)取值范圍不越界 ? ? ? ? ? ?ind=find(sol<lb); ? ? ? ? ? ?sol(ind)=lb(ind); ? ? ? ? ? ?ind=find(sol>ub); ? ? ? ? ? ?sol(ind)=ub(ind); ? ? ? ? ? ?% 計(jì)算變異后蜜源的目標(biāo)函數(shù)值和適應(yīng)度函數(shù)值 ? ? ? ? ? ?ObjValSol=objfun(sol); ? ? ? ? ? ?FitnessSol=calculateFitness(ObjValSol); ? ? ? ? ? ?% 更新當(dāng)前蜜源的相關(guān)信息 ? ? ? ? ? ?if (FitnessSol>Fitness(i)) ? ? ? ? ? ? ? ?Foods(i,:)=sol; ? ? ? ? ? ? ? ?Fitness(i)=FitnessSol; ? ? ? ? ? ? ? ?ObjVal(i)=ObjValSol; ? ? ? ? ? ? ? ?trial(i)=0; % 如果當(dāng)前蜜源被更新了,則對應(yīng)的trial歸零 ? ? ? ? ? ?else ? ? ? ? ? ? ? ?trial(i)=trial(i)+1; % 如果當(dāng)前蜜源沒有被更新,則trial(i)加1 ? ? ? ? ? ?end ? ? ? ?end ? ? ? ?%%%%%%%%%%%%%%%%%%%%%%%% 跟隨蜂搜索解的過程 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ? ? ? ?% 計(jì)算解(蜜源)的概率 ? ? ? ?prob=(0.9.*Fitness./max(Fitness))+0.1; ? ? ? ?% 循環(huán)初始化 ? ? ? ?i=1; ? ? ? ?t=0; ? ? ? ?while(t<FoodNumber) % 循環(huán)條件 ? ? ? ? ? ?if(rand<prob(i)) % 若隨機(jī)概率小于當(dāng)前解(蜜源)的概率 ? ? ? ? ? ? ? ?t=t+1; % 循環(huán)計(jì)數(shù)器加1 ? ? ? ? ? ? ? ?Param2Change=fix(rand*D)+1; % 隨機(jī)確定需要變異的參數(shù) ? ? ? ? ? ? ? ?neighbour=fix(rand*(FoodNumber))+1; % 隨機(jī)選擇相鄰蜜源(解) ? ? ? ? ? ? ? ?% 需要保證選擇的相鄰蜜源不是當(dāng)前蜜源(i) ? ? ? ? ? ? ? ?while(neighbour==i) ? ? ? ? ? ? ? ? ? ?neighbour=fix(rand*(FoodNumber))+1; ? ? ? ? ? ? ? ?end ? ? ? ? ? ? ? ?sol=Foods(i,:); % 提取當(dāng)前蜜源i(解)對應(yīng)的的參數(shù) ? ? ? ? ? ? ? ?% 參數(shù)變異得到新的蜜源:v_{ij}=x_{ij}+\phi_{ij}*(x_{kj}-x_{ij}) ? ? ? ? ? ? ? ?sol(Param2Change)=Foods(i,Param2Change)+(Foods(i,Param2Change)-Foods(neighbour,Param2Change))*(rand-0.5)*2; ? ? ? ? ? ? ? ?% 防止參數(shù)越界 ? ? ? ? ? ? ? ?ind=find(sol<lb); ? ? ? ? ? ? ? ?sol(ind)=lb(ind); ? ? ? ? ? ? ? ?ind=find(sol>ub); ? ? ? ? ? ? ? ?sol(ind)=ub(ind); ? ? ? ? ? ? ? ?% 計(jì)算變異后蜜源的目標(biāo)函數(shù)值和適應(yīng)度函數(shù)值 ? ? ? ? ? ? ? ?ObjValSol=objfun(sol); ? ? ? ? ? ? ? ?FitnessSol=calculateFitness(ObjValSol); ? ? ? ? ? ? ? ?% 更新當(dāng)前蜜源的相關(guān)信息 ? ? ? ? ? ? ? ?if (FitnessSol>Fitness(i)) ? ? ? ? ? ? ? ? ? ?Foods(i,:)=sol; ? ? ? ? ? ? ? ? ? ?Fitness(i)=FitnessSol; ? ? ? ? ? ? ? ? ? ?ObjVal(i)=ObjValSol; ? ? ? ? ? ? ? ? ? ?trial(i)=0; % 如果當(dāng)前蜜源被更新了,則對應(yīng)的trial歸零 ? ? ? ? ? ? ? ?else ? ? ? ? ? ? ? ? ? ?trial(i)=trial(i)+1; % 如果當(dāng)前蜜源沒有被更新,則trial(i)加1 ? ? ? ? ? ? ? ?end ? ? ? ? ? ?end ? ? ? ? ? ?i=i+1; % 更新i ? ? ? ? ? ?if (i==(FoodNumber)+1) % 若值超過蜜源數(shù)量,則i重新初始化 ? ? ? ? ? ? ? ?i=1; ? ? ? ? ? ?end ? ? ? ?end ? ? ? ?% 記住最優(yōu)蜜源 ? ? ? ?ind=find(ObjVal==min(ObjVal)); ? ? ? ?ind=ind(end); ? ? ? ?if (ObjVal(ind)<GlobalMin) ? ? ? ? ? ?GlobalMin=ObjVal(ind); ? ? ? ? ? ?GlobalParams=Foods(ind,:); ? ? ? ?end ? ? ? ?%%%%%%%%%%%% 偵查蜂搜索解的過程 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ? ? ? ?% 找出連續(xù)最多次都沒有被更新的蜜源 ? ? ? ?ind=find(trial==max(trial)); ? ? ? ?ind=ind(end); ? ? ? ?% 如果連續(xù)沒有更新的次數(shù)大于限定次數(shù),則由偵查蜂重新初始化該蜜源 ? ? ? ?if (trial(ind)>limit) ? ? ? ? ? ?trial(ind)=0; ? ? ? ? ? ?sol=(ub-lb).*rand(1,D)+lb; ? ? ? ? ? ?ObjValSol=objfun(sol); ? ? ? ? ? ?FitnessSol=calculateFitness(ObjValSol); ? ? ? ? ? ?Foods(ind,:)=sol; ? ? ? ? ? ?Fitness(ind)=FitnessSol; ? ? ? ? ? ?ObjVal(ind)=ObjValSol; ? ? ? ?end ? ? ? ?average_fit=mean(ObjVal);%計(jì)算平均適應(yīng)度值 ? ? ? ?BestGlobalMins(iter,:)=[GlobalMin average_fit]; % 記錄本次ABC算法的最優(yōu)目標(biāo)函數(shù)值與平均適應(yīng)度值 ? ? ? ?BestGlobalParams(iter,:)=GlobalParams; % 記錄本次ABC算法的最優(yōu)參數(shù) ? ? ? ?iter=iter+1; ? ?end % 一次ABC算法完結(jié) ?%%trace=BestGlobalMins(:,1);

3 仿真結(jié)果

4 參考文獻(xiàn)

[1]馬萌萌. 基于深度學(xué)習(xí)的極限學(xué)習(xí)機(jī)算法研究[D]. 中國海洋大學(xué), 2015.

博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號處理、元胞自動(dòng)機(jī)、圖像處理、路徑規(guī)劃、無人機(jī)等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。

部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除。



【DELM分類】基于人工蜂群算法改進(jìn)深度學(xué)習(xí)極限學(xué)習(xí)機(jī)實(shí)現(xiàn)數(shù)據(jù)分類附matlab代碼的評論 (共 條)

分享到微博請遵守國家法律
勐海县| 阜城县| 富川| 灵璧县| 屏山县| 基隆市| 花莲市| 文化| 宜川县| 自贡市| 读书| 彭州市| 古浪县| 德保县| 通江县| 樟树市| 伊金霍洛旗| 鄂温| 三台县| 池州市| 屯留县| 上杭县| 平定县| 眉山市| 鹤岗市| 石林| 古蔺县| 通渭县| 泉州市| 宽城| 木里| 旌德县| 澄城县| 双城市| 色达县| 土默特右旗| 岑溪市| 乐都县| 垣曲县| 滨州市| 峨眉山市|