使用Q学习算法实现自动迷宫机器人
优采云 发布时间: 2020-08-07 05:02项目说明:
在此项目中,您将使用强化学习算法来实现自动迷宫机器人.
我们需要通过修改robot.py中的代码来实现Q学习机器人,以实现上述目标.
第1节算法理解1.1强化学习概述
强化学习是一种机器学习算法,其模式是让代理学习“训练”中的“经验”以完成给定的任务. 但是不同于监督学习和无监督学习,在强化学习的框架中,我们更多地关注通过主体与环境之间的相互作用进行学习. 通常,在有监督的学习和无监督的学习任务中,座席经常需要通过给定的训练集,并辅以集合的训练目标(例如,使损失函数最小化),并通过给定的学习算法实现此目标. 但是,在强化学习中,主体通过与环境互动获得的收益来学习. 这种环境可以是虚拟的(例如虚拟迷宫)或真实的(无人驾驶汽车在真实道路上采集数据).
强化学习有五个核心组成部分,分别是: 环境,主体,状态,行动和奖励. 在某个时间点t:
通过合理的学习算法,代理将在这种问题设置下成功学习状态.
选择操作
策略
.
1.2计算Q值
在我们的项目中,我们希望实现基于Q学习的强化学习算法. Q学习是一种值迭代算法. 与策略迭代算法不同,值迭代算法计算每个“状态”或“状态操作”的值或效用,然后在执行此值时尝试使其最大化. 因此,每个状态值的准确估计是我们的值迭代算法的核心. 通常,我们会考虑最大化行为的长期回报,即不仅是当前行为带来的回报,而且还会是行为的长期回报.
在Q学习算法中,我们将此长期奖励记录为Q值,并且将考虑每个“状态动作”的Q值. 具体来说,其计算公式为:
这是针对当前的“国家行为”
我们考虑采取行动
后环境给予的奖励
,然后执行操作
到达
执行任何操作后,可获得的最大Q值
,
是折扣因子.
但是,通常,我们使用更保守的方法来更新Q表,即引入松弛变量alpha,并根据以下公式对其进行更新,以使Q表的迭代更改更加平缓.
根据已知条件
.
已知: 如上所示,机器人位于s1处,动作为u,动作的奖励与问题的默认设置相同. 在s2中执行的每个动作的Q值分别为: u: -24,r: -13,d: -0.29,l: +40,并且γ为0.9.
1.3如何选择动作
在强化学习中,“探索利用”是一个非常重要的问题. 具体而言,根据以上定义,我们将尽最大努力让机器人每次都选择最佳决策,以最大化长期回报. 但这有以下缺点:
因此,我们需要一种解决上述问题并增加机器人探索能力的方法. 因此,我们考虑使用epsilon-greedy算法,也就是说,当汽车选择一个动作时,它会随机选择一个概率为一部分的动作,并根据最优Q值选择一个概率为一部分的动作. 同时,随着训练的进行,选择随机动作的概率应逐渐降低.
在下面的代码块中,实现epsilon-greedy算法的逻辑并运行测试代码.
<p>import random
import operator
actions = ['u','r','d','l']
qline = {'u':1.2, 'r':-2.1, 'd':-24.5, 'l':27}
epsilon = 0.3 # 以0.3的概率进行随机选择
def choose_action(epsilon):
action = None
if random.uniform(0,1.0)