使用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)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线