Q-Learning 算法介绍

介绍

Q -learning是一种无模型 强化学习算法,用于学习特定状态下动作的价值。它不需要环境模型(因此“无模型”),并且可以处理随机转换和奖励的问题,而无需适应。

算法

在 Q -Learning 算法中,目标是使用贝尔曼最优方程迭代学习最优 Q 价值函数。 为此,我们将所有 Q 值存储在一个表中,我们将使用 Q-Learning 迭代在每个时间步更新该表:
价值函数公式
α \alpha α 学习率,是需要调整的重要参数,该参数用于控制收敛。
γ \gamma γ 折扣系数,决定了未来奖励的重要性。其值在 [ 0 , 1 ] [0,1] [0,1] 之间:

  • 为 0,只考虑当前的奖励;
  • 接近 1,使其争取长期的高额奖励;

举例

游戏

  1. 创建Q-table
    “Q”代表动作的“质量”。
  • **每个状态(图块)允许四种可能的操作。**它们向左、向右、向上或向下移动。所以根据上图我们可以抽象成如下:
    转化图
  • 从计算的角度来说,我们可以把这个网格转化为一个表格:
    在这里插入图片描述
    每个 Q 表分数将是如果我在给定最佳策略的情况下采取该行动,我将获得的最大预期未来奖励——我们只是改进 Q 表以始终选择最佳操作。
  • 学习动作价值函数
    动作价值函数(或“Q 函数”)采用两个输入:“状态”和“动作”。它返回该状态下该操作的预期未来奖励。
    学习动作价值函数
    Q 函数遍历 Q 表以查找与我们的状态关联的行以及与我们的操作关联的列。它返回匹配单元格的 Q 值。这就是“预期的未来回报”。
  1. Q-Learning学习过程
    Q-Learning算法流程
  • 步骤 1:初始化 Q 值
    我们构建一个 Q 表,其中包含m列(m= 动作数)和n行(n= 状态数),并将值初始化为 0;

  • 步骤 2:终止(或直到停止学习)
    重复步骤 3 到 4 ,直到我们达到最大集数(由用户指定)或直到我们手动停止训练;

  • 步骤 3:选择动作
    根据当前 Q 值估计,选择当前状态 s 以及一下步动作 a;
    这里有一个策略——一开始 我们将使用 epsilon 贪婪策略:

    • 我们指定一个探索率“epsilon”,我们一开始将其设置为 1。这是我们随机执行的步数。一开始,这个速率必须是最高值,因为我们对 Q 表中的值一无所知。这意味着我们需要通过随机选择我们的行动来进行大量探索。
    • 我们生成一个随机数。如果这个数字 > epsilon ,那么我们将进行“利用”(这意味着我们使用我们已经知道的信息来选择每一步的最佳操作)。否则,我们将进行探索。
    • 这个想法是,我们在 Q 函数训练开始时必须有一个大的 epsilon。然后,随着智能体对估计 Q 值更加自信,逐渐减少它。
      策略示意图
  • 步骤 4:评估
    采取行动a并观察结果状态s’和奖励r。现在更新函数 Q(s,a)。
    为了更新 Q(s,a),我们使用贝尔曼方程:
    贝尔曼方程

实施

  1. Q-table
    最简单的Q学习将数据存储在表中。这种方法随着状态/动作数量的增加而失效,因为代理访问特定状态并执行特定动作的可能性越来越小。
  • 行代表潜在的状态,
  • 列代表动作;
  • 交叉的单元内表示该状态下的该动作的预期总奖励;
  1. 函数近似

  2. 量化

步骤

  1. 定义一个问题
  2. 创建一个环境
  3. 创建表
  4. 开始学习

参考文档

[1] Q-Learning Algorithm: From Explanation to Implementation
[2] Q-Learning wiki
[3] Q-Table Reinforcement Learning
[4] Diving deeper into Reinforcement Learning with Q-Learning

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值