強化学習のシミュレーションでActionの選択が固定される
Show older comments
現在、MATLABのReinforcement Learning Toolboxを使用して強化学習を行っています。(DQNAgentを使用しています。)
trainingでは設定しているActionで様々な行動をしてくれますが、シミュレーションでは毎回最初に選んだActionのみをシミュレーションの最後まで選び続けてしまうので学習結果が適切に反映されません。
また、学習結果が偏りすぎていてシミュレーションで特定のActionしか選択していないのではと思い、MaxEpisodesを1にしてtrainingを実行しましたが、やはりシミュレーションでは最初に選んだActionを最後まで選び続けてしまいます。
どのようにすればシミュレーションでもActionを選択して行動してくれるのでしょうか?
以下に私のプログラムでの設定を記載します。
ActionInfo = rlFiniteSetSpec([3 4 5 6]);
StepHandle = @(Action,LoggedSignals)RLStepFunction(Action,LoggedSignals,RL);
agent = rlDQNAgent(ObservationInfo, ActionInfo);
MaxEpisodes=1;
opt = rlTrainingOptions("MaxEpisodes",MaxEpisodes,...
"MaxStepsPerEpisode",length(NumberOfSteps),...
"StopTrainingCriteria","AverageReward",...
"StopTrainingValue",100000,...
"ScoreAveragingWindowLength",50,...
'SaveAgentCriteria','EpisodeCount',...
'SaveAgentValue',MaxEpisodes);
agentOpts = rlDQNAgentOptions;
agentOpts.SaveExperienceBufferWithAgent = true;
agentOpts.ResetExperienceBufferBeforeTraining = false;
agentOpts.NumStepsToLookAhead = 1;
%doTraining = true;
doTraining = 0;
if doTraining == true
% Train the agent.
trainingStats = train(agent,env,opt);
else
load('savedAgents/Agent1.mat','saved_agent')
simOpts = rlSimulationOptions('MaxSteps',200);%,"NumSimulations",1);
experience = sim(env,agent,simOpts);
end
また、stepfunctionでのActionの部分も記載します。
switch Action
case 3
p = 3;
case 4
p = 4;
case 5
p = 5;
case 6
p = 6;
end
4 Comments
Toshinobu Shintai
on 1 Jul 2022
学習時は、乱数を用いて条件を変えて様々な動作を試すように動くため、そのように見えるのではないでしょうか。学習後のagentに対する入力のobservationが一定であれば、出力であるactionも一定になります。一連の実行でobservationが一定になっていたりしませんでしょうか。
MF
on 1 Jul 2022
Toshinobu Shintai
on 4 Jul 2022
強化学習におけるobservationとは、agentが環境から取得できる値のことを指しています。
申し訳ありませんが、何が問題なのかが現状では分かりませんので、モデルや図を添付して説明していただけるとありがたいです。
Answers (0)
Categories
Find more on Reinforcement Learning in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!