【论文】基于goal的分层强化学习

之前一直看到说基于goal的分层强化学习的难点在于如何定义goal。在之前学习的goal-conditioned框架中,目标空间就是状态空间,目标是达到某一特定的状态。又看了几篇基于goal的分层强化学习,这篇博客用来记录每篇论文,并明确goal指代的是什么。

H-DQN: Hierarchical Deep Reinforcement Learning: Integrating Temporal Abstraction

分析博客: 【分层强化学习】H-DQN:Hierarchical Deep Reinforcement Learning: Integrating Temporal Abstraction阅读笔记 - 知乎 (zhihu.com)

 这篇论文是我目前看过的分层强化学习中唯一一个人为定义目标的,这个目标是针对特定场景(Montezuma's Revenge游戏)人为定义。游戏中,需要得到某些特定的物品和到达某些特定的位置,在得到物品和到达位置之前,智能体都无法获得奖励,这就是稀疏奖励问题。所以选取特定的物品作为目标:门、梯子、钥匙等等。

在H-DQN中,上层控制器以较长的时间跨度根据上层策略选择一个goal,下层控制器以较短的时间跨度选择action,上层策略和下层策略都以DQN算法为基础,其中上层策略根据外部奖励进行更新,下层策略则根据上层控制器传递下来的内部奖励进行更新,这里内部奖励的制定方式是,当上层控制器设定的目标完成时,内部奖励为一个正数,否则为0。

 HIRO: Data-Efficient Hierarchical Reinforcement Learning

分析博文: 【分层强化学习】HIRO:一种off-policy的分层强化学习算法 - 知乎 (zhihu.com)

代码:GitHub - watakandai/hiro_pytorch: Implementation of HIRO (Data-Efficient Hierarchical Reinforcement Learning)

目标定义在状态空间,下层控制器的策略需要尽可能让状态朝着目标所表示的方向转移。

本文的创新点在于针对off-policy的分层强化学习中所存在的非平稳问题(上层控制器的状态转移概率取决于下层策略,在off-policy算法中,当上层策略进行更新时,由于下层策略不断更新已经发生了变化,此时回放池中的样本已经不能准确反映当前上层控制器所处的环境,给训练造成了很大的困难)提出解决方法。

对经验回放池中的样本进行修正,将原本设定的目标替换成一个新的目标,该目标能够最大化该样本对应轨迹的出现概率,概率的计算公式为

HAC: Learning Multi-Level Hierachies with Hindsight 

分析博文: 【分层强化学习】HAC:一种多层级的分层强化学习算法 - 知乎 (zhihu.com)

 目标定义在状态空间,目标就是达到某一特定状态,实现时奖励为1,否则为0。

本文同样是解决分层强化学习的非平衡问题,同时还将HER算法应用到分层框架,解决稀疏奖励问题。本文提出了一个多层级的分层结构,除了最后一层外,每一层均用于输出下一层的目标,这里的目标即为状态空间中较好的状态,因此每个层级的目标就是实现上一层所设定的较好的状态。

 本文的主要工作是设计了三种不同的transition样本分别用于解决策略更新中存在的不同问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
强化学习路径规划是一种基于强化学习的路径规划方法,可以用于自主导航、机器人控制等领域。在Matlab中,可以使用Reinforcement Learning Toolbox来实现强化学习路径规划。 以下是一个简单的示例代码,用于实现基于Q-learning的路径规划: ```matlab % 定义环境状态空间和动作空间 states = 1:10; actions = [-1, 1]; % 定义奖励矩阵 rewards = zeros(length(states), length(actions)); rewards(end, :) = 1; % 定义初始状态和终止状态 start_state = 1; goal_state = length(states); % 定义Q表 Q = zeros(length(states), length(actions)); % 定义学习参数 alpha = 0.1; gamma = 0.9; epsilon = 0.1; % 迭代更新Q表 for i = 1:1000 state = start_state; while state ~= goal_state % 选择动作 if rand < epsilon action = actions(randi(length(actions))); else [~, action] = max(Q(state, :)); end % 执行动作并观察奖励和下一个状态 next_state = state + action; reward = rewards(state, action); % 更新Q表 Q(state, action) = Q(state, action) + alpha * (reward + gamma * max(Q(next_state, :)) - Q(state, action)); % 更新状态 state = next_state; end end % 使用Q表进行路径规划 state = start_state; path = state; while state ~= goal_state [~, action] = max(Q(state, :)); state = state + actions(action); path = [path, state]; end % 绘制路径 plot(states, zeros(size(states)), 'o', path, zeros(size(path)), 'LineWidth', 2); ``` 该代码中,首先定义了环境状态空间和动作空间,以及奖励矩阵、初始状态和终止状态。然后使用Q-learning算法迭代更新Q表,最后使用Q表进行路径规划并绘制路径。 需要注意的是,该代码只是一个简单的示例,实际应用中需要根据具体问题进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值