ニューラルネットワークのハイパーパラメータを最適化する方法はありますか?
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MathWorks Support Team
le 27 Oct 2017
Modifié(e) : MathWorks Support Team
le 25 Juin 2021
ニューラルネットワークにはユーザ側で事前に決め打ちで設定しなければいけないハイパーパラメータ (例えば、学習率や隠れ層の数、伝達関数等) があります。
これらのハイパーパラメータを最適化する手段があるか、教えてください。
Réponse acceptée
MathWorks Support Team
le 25 Juin 2021
Modifié(e) : MathWorks Support Team
le 25 Juin 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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Deep Learning Toolbox dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!