天天看點

時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測

時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測

目錄

    • 時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測
      • 預測效果
      • 基本介紹
      • 模型描述
      • 程式設計
      • 參考資料

預測效果

時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測
時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測
時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測
時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測
時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測
時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測
時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測
時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測
時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測

基本介紹

Matlab實作BO-CNN貝葉斯優化卷積神經網絡時間序列預測(完整源碼和資料)

1.data為資料集,單變量一維資料。

2.MainBO_CNNTS.m為程式主檔案,其他為函數檔案無需運作。

3.指令視窗輸出MAE、MSE、RMSEP、R^2、RPD和MAPE,可在下載下傳區擷取資料和程式内容。

4.貝葉斯優化算法優化參數為學習率、批處理樣本大小和、正則化參數。

注意程式和資料放在一個檔案夾,運作環境為Matlab2018及以上。

模型描述

對于超參數的優化,可以将這種優化看做是反映泛化性能的未知黑盒函數的優化,并調用針對這些問題開發的算法。這些優化問題作為訓練過程的一部分,經常遇到低層次目标是不同的: 這裡函數評估( 求值目标函數調用一次) 代價很大,因為它們涉及到主要的機器學習算法的完成。在這種函數求值代價大的情況下,希望花費計算時間來更好地選擇在哪裡尋找最佳參數。在貝葉斯優化中,感興趣的是在一些有界集合Λ 上找到函數f( λ) 的最小值,本文将它作為R 的一個子集。使得貝葉斯優化不同于其他程式的是它為f( λ) 構造一個機率模型,然後利用這個模型來決定Λ 在哪裡去評估函數,同時整合不确定性。基本的思路是使用f( λ) 以前評估中可用的所有資訊來學習目标函數的形态,而不是簡單地依靠局部梯度和Hessian 近似。這可以實作通過較少的評估就可以找到複雜非凸函數的最小值,代價是執行更多的計算以确定下一個采樣點。是以分為了兩個步驟: a) 選擇一個先驗函數來表達關于被優化函數的假設,本文使用的高斯過程具有靈活易處理的特性; b) 選擇一個采集函數,用來從後驗模型構造一個效用函數,确定下一個采樣點。将要優化的CNN 的超參數看做是多元空間的點。
時序預測 | MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測

程式設計

  • 完整程式和資料下載下傳方式1(訂閱《組合優化》專欄,同時擷取《組合優化》專欄收錄的所有程式,資料訂閱後私信我擷取):MATLAB實作BO-CNN貝葉斯算法優化卷積神經網絡時間序列預測
  • 完整程式和資料下載下傳方式2:同等價值程式兌換。
%%  貝葉斯優化參數
optimVars = [
    optimizableVariable('MiniBatchSize',[10 50],'Type','integer')   %batch size 
    optimizableVariable('InitialLearnRate', [1e-3, 1], 'Transform', 'log')   % 學習率
    optimizableVariable('L2Regularization', [1e-10, 1e-2], 'Transform', 'log')];  %正則化系數

%% 貝葉斯 執行貝葉斯優化
BayesObject = bayesopt(ObjFcn, optimVars, ...     % 優化函數,和參數範圍
        'MaxTime', Inf, ...                    % 優化時間(不限制)
        'IsObjectiveDeterministic', false, ...
        'MaxObjectiveEvaluations', 10, ...       % 最大疊代次數
        'Verbose', 1, ...                       % 顯示優化過程
        'UseParallel', false);

%%  貝葉斯優化參數
MiniBatchSize    = BayesObject.XAtMinEstimatedObjective.MiniBatchSize; % 最佳批處理樣本
InitialLearnRate = BayesObject.XAtMinEstimatedObjective.InitialLearnRate; % 最佳初始學習率
L2Regularization = BayesObject.XAtMinEstimatedObjective.L2Regularization; % 最佳L2正則化系數

%%  構造網絡結構
layers = [
 imageInputLayer([f_, 1, 1])     % 輸入層 輸入資料規模[f_, 1, 1]
 
 convolution2dLayer([1, 1], 16)  % 卷積核大小 3*1 生成16張特征圖
 batchNormalizationLayer         % 批歸一化層
 reluLayer                       % Relu激活層
 
 convolution2dLayer([1, 1], 32)  % 卷積核大小 3*1 生成32張特征圖
 batchNormalizationLayer         % 批歸一化層
 reluLayer                       % Relu激活層

 dropoutLayer(0.2)               % Dropout層
 fullyConnectedLayer(1)          % 全連接配接層
 regressionLayer];               % 回歸層

%%  參數設定
% % 參數設定
options = trainingOptions('sgdm', ...                % 梯度下降算法adam
    'MaxEpochs',500, ...                            % 最大訓練次數 1000
    'MiniBatchSize',MiniBatchSize, ...
    'GradientThreshold', 1, ...                     
    'InitialLearnRate', InitialLearnRate, ...       
    'LearnRateSchedule', 'piecewise', ...          
    'LearnRateDropPeriod',400, ...                  % 經過800次訓練後 學習率為 0.01*0.1
    'LearnRateDropFactor',0.2, ...                 
    'L2Regularization', L2Regularization, ...         
    'ExecutionEnvironment', 'cpu',...               
    'Verbose', 0, ...                                 
    'Plots', 'training-progress');      
           

參考資料

[1] https://blog.csdn.net/article/details/126072792?spm=1001.2014.3001.5502

[2] https://blog.csdn.net/article/details/126044265?spm=1001.2014.3001.5502

繼續閱讀