用MATLAB实现安全强化学习(Safe RL)
MATLAB代码:安全 强化学习关键词:safe RL仿真平台:MATLAB主要内容:此代码展示了如何使用 Constraint Enforcement 块来训练强化学习 (RL) 代理。此块计算最接近受约束和动作边界的代理输出的动作的修改控制动作。训练强化学习代理需要 Reinforcement Learning Toolbox。在此示例中,代理的目标是使绿球尽可能靠近红球不断变化的目标位置。
MATLAB代码:安全 强化学习 关键词:safe RL 仿真平台:MATLAB 主要内容:此代码展示了如何使用 Constraint Enforcement 块来训练强化学习 (RL) 代理。 此块计算最接近受约束和动作边界的代理输出的动作的修改控制动作。 训练强化学习代理需要 Reinforcement Learning Toolbox 。 在此示例中,代理的目标是使绿球尽可能靠近红球不断变化的目标位置。 具体步骤为创建用于收集数据的环境和代理,学习约束函数,使用约束强制训练代理,在没有约束执行的情况下训练代理。

在这篇博文中,咱们来聊聊如何用MATLAB实现安全强化学习(Safe RL)。安全强化学习在如今的很多领域都非常重要,它能确保在学习过程中系统始终保持在安全范围内。
主要代码展示及分析
咱们先来看核心代码,这段代码展示了如何使用Constraint Enforcement块来训练强化学习 (RL) 代理。
% 假设这里已经加载了Reinforcement Learning Toolbox
% 创建用于收集数据的环境和代理
env = rlPredefinedEnv('CartPole-Discrete');
agent = rlQAgent(env.ObservationInfo, env.ActionInfo);
在这段代码里,我们首先利用rlPredefinedEnv创建了一个预定义的环境,这里用的是'CartPole-Discrete'环境,就好比是搭建了一个舞台。然后通过rlQAgent创建了一个Q学习代理,这个代理就像是舞台上要表演的演员,它会根据环境的反馈来学习怎么做是最好的。
% 学习约束函数
constraintFunction = @(state,action) state(2) <= 0.5;
这个constraintFunction就是我们的约束函数啦。在这里它表示当状态的第二个元素小于等于0.5时,才满足约束条件。这就像是给演员(代理)设定了一些规则,不能随便乱来。
% 使用约束强制训练代理
trainOpts = rlTrainingOptions(...
'MaxEpisodes',500,...
'MaxStepsPerEpisode',100,...
'ScoreAveragingWindowLength',10);
trainResults = train(agent, env, trainOpts,...
'ConstraintFunction', constraintFunction);
在这部分,我们定义了训练选项trainOpts,设定了最大episode数为500,每个episode最大步数为100,分数平均窗口长度为10。然后调用train函数来训练代理,并且传入了我们之前定义的约束函数constraintFunction。这就好比告诉演员(代理),按照这些规则和训练方式去学习,不断提升自己的“演技”。
% 在没有约束执行的情况下训练代理
trainResultsWithoutConstraint = train(agent, env, trainOpts);
最后这部分代码,我们又在没有约束的情况下训练了代理,这样可以对比有约束和无约束时代理的学习效果。就好比看看演员(代理)没了规则的束缚,会有怎样不同的表现。
应用场景说明
在此示例中,代理的目标是使绿球尽可能靠近红球不断变化的目标位置。通过这些步骤,我们就能很好地控制代理的行为,在满足安全约束(这里的约束函数)的前提下,让绿球完成靠近红球的任务。

MATLAB代码:安全 强化学习 关键词:safe RL 仿真平台:MATLAB 主要内容:此代码展示了如何使用 Constraint Enforcement 块来训练强化学习 (RL) 代理。 此块计算最接近受约束和动作边界的代理输出的动作的修改控制动作。 训练强化学习代理需要 Reinforcement Learning Toolbox 。 在此示例中,代理的目标是使绿球尽可能靠近红球不断变化的目标位置。 具体步骤为创建用于收集数据的环境和代理,学习约束函数,使用约束强制训练代理,在没有约束执行的情况下训练代理。

整个过程里,那个Constraint Enforcement块起到了关键作用,它计算最接近受约束和动作边界的代理输出的动作的修改控制动作,就像一个裁判,时刻看着代理的动作,确保不违规。而训练强化学习代理当然是需要Reinforcement Learning Toolbox 啦,这就像是一个必备的工具包,没它可玩不转。

希望通过这篇博文,大家对用MATLAB实现安全强化学习有更清晰的认识。可以自己动手试试,调整调整参数,看看代理的表现会有什么不同哦。
更多推荐



所有评论(0)