強化学習のシミュレー​ションでAction​の選択が固定される

現在、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
Toshinobu Shintai on 1 Jul 2022
学習時は、乱数を用いて条件を変えて様々な動作を試すように動くため、そのように見えるのではないでしょうか。学習後のagentに対する入力のobservationが一定であれば、出力であるactionも一定になります。一連の実行でobservationが一定になっていたりしませんでしょうか。
MF
MF on 1 Jul 2022
ご回答ありがとうございます。
observationとは観測対象の観測状態のことでよろしいでしょうか。
状態の更新前、更新後の観測状態の値を確認してみましたが、実行中に観測状態の更新が行われているのを確認しました。ですのでobservationは一定ではないと思います。
Toshinobu Shintai
Toshinobu Shintai on 4 Jul 2022
強化学習におけるobservationとは、agentが環境から取得できる値のことを指しています。
申し訳ありませんが、何が問題なのかが現状では分かりませんので、モデルや図を添付して説明していただけるとありがたいです。
MF
MF on 11 Jul 2022
Edited: MF on 11 Jul 2022
アドバイスありがとうございました。
ご指摘の部分を再度確認した所、うまくobservationが認識されていなかったようです。プログラムのobservationの認識に関わる部分のミスがあったため出来なかったようです。
現在は学習結果を反映することが出来るようになりました。
ありがとうございました。

Sign in to comment.

Answers (0)

Products

Release

R2022a

Asked:

MF
on 1 Jul 2022

Edited:

MF
on 11 Jul 2022

Community Treasure Hunt

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

Start Hunting!