机器学习tolerance_强化学习HER:“她”教你从失败中学习

b5c7ef994b86efd5d328457895204d41.png

欢迎转载,转载请注明出处——知乎专栏“机器学习与控制论”。

“稀疏奖赏”(sparse reward)是强化学习应用中的经典难题。尤其是强化学习控制任务中,为了处理处理它,我打赌不少人都深受“奖赏塑形”等奖赏工程的折磨。

今天分享的这篇文献“Hindsight Experience Replay”(HER)正是提出一种极其简单巧妙且易实现的方法试图摆脱奖赏工程。现在,HER和模仿学习已经几乎成了机器人学习控制的标配。(OpenAI的geek们也是挺有趣的,取名和寡姐的电影一样,电影也是讲人工智能。)

知乎上有过相关内容,这里从控制的角度梳理思路和使用心得,附以简单的代码实现

先放使用心得,后续经验还会更新:

(1)状态(state)设计需要满足文中两点前提

(2)尤其适合多目标(multi goal)任务,单目标任务很可能收益有限

(3)有些情况可能奖赏塑形效果更好、更简单

(4)主要思想并非与奖赏塑形不兼容,HER+奖赏塑形可能也有效果

(5)每个episode不要太长(本质是采样产生新goal的区间不要太长)

1.背景

强化学习(RL)直接应用,尤其应用于机器人学,往往需要精心地“奖赏塑形”(reward shaping),从而引导策略进行优化。

奖赏塑形思想倒是不难,如下面这个任务"pushing",推动方块到红点(目标)的位置。若是只是最后达到红点才给奖赏(即二元奖赏,binary reward),那大多数时候都得不到奖励。所以,可能的奖赏塑形方式是以方块到红点的距离平方的负数为奖赏函数。

bbb492bb91a976958678f896cfc8b611.png

简单任务还好,但是遇到复杂任务,就既要求有RL知识又要有领域知识,设计起来非常不容易,甚至有论文在奖赏中设计了5个带权项[1]。此外,许多时候,我们更关心最后的结果,而不关心、也不太好判断中间可能的情况。

个人经验是,如果奖赏中有多个权,往往还要防止Agent进行cheating的情况,而且许多时候,我们更关心最后的结果,而不关心、也不太清楚中间可能的情况。因此,我们需要简单的奖赏设计,比如说,最好就是原来RL朴素的二元奖赏(达到目标则有,否则无)。

怎么做呢?从错误中学习。拿足球射门举例,如果你一次射门射偏到了球门右边,朴素的RL算法可能认为这就是没有奖赏,学到很少。而人的话却可以从这次失败中知道,这个射偏的落点,是我站在现在这个位置,用这样的脚法能射达的。夸张点说,如果门右挪一点就好了。

这种思想更有效的场景是控制、规划中常见的多目标任务,其中RL的建模方式叫做universal policy,最早来源于Universal Value Function Approximators[2](UVFA),此时输入给Agent的不仅仅有状态,还有当前任务指定的目标(二者进行concatenate操作)。比如下面的情况,Agent被要求射第3个门,但是若射偏到了第2个门,虽然没达到当前目标,但是达到了“射中第2个门”的目标!这就是所谓的hindsight(后见之明),所以这个经验完全可以复用起来,采样效率就增大了,而且可能可以用二元奖赏。

5629cf5abca36586ba60f081a1497552.png

HER的思想就是如此,回放每个episode,用新的目标(如已经达到的状态)去替换掉经验中原本想要去达到的目标。HER的适用范围也就很明显了&#x

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个DWAPlannerROS的参数配置文件,用于机器人的路径规划。以下是对每个参数的注释: - max_vel_x: 机器人可以达到的最大线速度。 - min_vel_x: 机器人可以达到的最小线速度。 - max_vel_y: 机器人可以达到的最大侧向速度。 - min_vel_y: 机器人可以达到的最小侧向速度。 - max_vel_trans: 机器人可以达到的最大平移速度。 - min_vel_trans: 机器人可以达到的最小平移速度。 - max_vel_theta: 机器人可以达到的最大旋转速度。 - min_vel_theta: 机器人可以达到的最小旋转速度。 - acc_lim_x: 机器人可以达到的最大线加速度。 - acc_lim_theta: 机器人可以达到的最大旋转加速度。 - acc_lim_y: 机器人可以达到的最大侧向加速度。 - xy_goal_tolerance: 机器人到达目标点时,允许的位置误差。 - yaw_goal_tolerance: 机器人到达目标点时,允许的角度误差。 - latch_xy_goal_tolerance: 是否在到达目标点后保持位置误差小于xy_goal_tolerance。 - sim_time: 进行路径规划时,模拟机器人运动的时间。 - vx_samples: 机器人在x轴方向的速度采样数。 - vy_samples: 机器人在y轴方向的速度采样数。 - vth_samples: 机器人的旋转速度采样数。 - controller_frequency: 控制器的执行频率。 - path_distance_bias: 机器人在路径规划时,考虑到路径距离的权重。 - goal_distance_bias: 机器人在路径规划时,考虑到目标距离的权重。 - occdist_scale: 机器人在路径规划时,考虑到障碍物距离的权重。 - forward_point_distance: 机器人在路径规划时,考虑到前方距离的权重。 - stop_time_buffer: 机器人在路径规划时,考虑到停止距离的缓冲时间。 - scaling_speed: 机器人在路径规划时,考虑到速度的缩放因子。 - max_scaling_factor: 机器人在路径规划时,考虑到速度的最大缩放因子。 - oscillation_reset_dist: 机器人在路径规划时,考虑到振荡重置的距离。 - publish_traj_pc: 是否发布路径规划的点云信息。 - publish_cost_grid_pc: 是否发布代价地图的点云信息。 - holonomic_robot: 是否为全向移动的机器人(如小车)。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值