ニューラルネットワー​クのハイパーパラメー​タを最適化する方法は​ありますか?

조회 수: 6 (최근 30일)
MathWorks Support Team
MathWorks Support Team 2017년 10월 27일
편집: MathWorks Support Team 2021년 6월 25일
ニューラルネットワークにはユーザ側で事前に決め打ちで設定しなければいけないハイパーパラメータ (例えば、学習率や隠れ層の数、伝達関数等) があります。
これらのハイパーパラメータを最適化する手段があるか、教えてください。

채택된 답변

MathWorks Support Team
MathWorks Support Team 2021년 6월 25일
편집: MathWorks Support Team 2021년 6월 25일
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개)

카테고리

Help CenterFile Exchange에서 Deep Learning Toolbox에 대해 자세히 알아보기

제품


릴리스

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!