ニューラルネットワークのハイパーパラメータを最適化する方法はありますか?
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
MathWorks Support Team
am 27 Okt. 2017
Bearbeitet: MathWorks Support Team
am 25 Jun. 2021
ニューラルネットワークにはユーザ側で事前に決め打ちで設定しなければいけないハイパーパラメータ (例えば、学習率や隠れ層の数、伝達関数等) があります。
これらのハイパーパラメータを最適化する手段があるか、教えてください。
Akzeptierte Antwort
MathWorks Support Team
am 25 Jun. 2021
Bearbeitet: MathWorks Support Team
am 25 Jun. 2021
Neural Network Toolbox (R2017b) より 製品提供デモとして、ベイズ最適化を使って CNN のハイパーパラメータを最適化する例題が提供されています。
また、従来の 誤差逆伝搬法によるニューラルネットワークの例としては、下記のようにパラメータを求めることができます。
% ベイズ最適化を用いた BackPropagation のハイパーパラメータの最適化例
% 隠れ層 1層目のユニット数 (5 ~ 15)
% 隠れ層 2層目のユニット数 (5 ~ 15)
% 隠れ層 1層目の伝達関数 (tansig, logsig, purelin)
% 隠れ層 2層目の伝達関数 (tansig, logsig, purelin)
% について、ベイズ最適化
optimVars = [
optimizableVariable('numHidden1',[5 15],'Type','integer','Optimize',true)
optimizableVariable('numHidden2',[5 15],'Type','integer','Optimize',true)
optimizableVariable('tfHidden1',{'tansig','logsig','purelin'},'Type','categorical','Optimize',true)
optimizableVariable('tfHidden2',{'tansig','logsig','purelin'},'Type','categorical','Optimize',true)];
% 目的関数設定 (nn の評価関数を最小化するように設定)
% 最大繰り返し回数 200, 最大計算時間 2時間
ObjFcn = makeObjFcn;
BayesObject = bayesopt(ObjFcn,optimVars,...
'MaxObj',200,...
'MaxTime',2*60*60,...
'IsObjectiveDeterministic',false,...
'UseParallel',true);
% ベイズ最適化の為の目的関数
function ObjFcn = makeObjFcn()
ObjFcn = @valErrorFun;
function valError = valErrorFun(optVars)
rng(15);
% 入出力データロード
[x,t] = bodyfat_dataset;
% 4層ニューラルネットワーク初期化
net = feedforwardnet([optVars.numHidden1, optVars.numHidden2]);
net.trainParam.showWindow = false;
net.layers{1}.transferFcn = char(optVars.tfHidden1);
net.layers{2}.transferFcn = char(optVars.tfHidden2);
% 学習
net = train(net,x,t);
% テスト
y = net(x);
% 誤差の評価
valError = perform(net,y,t);
end
end
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Deep Learning Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!