62、强化学习:Q-learning与SARSA算法实战

强化学习:Q-learning与SARSA算法实战

1. Q-learning算法概述

在强化学习中,Q-learning算法是一种强大的工具,它能很好地解决两个重要问题。首先是信用分配问题,即确保导向胜利的每一步行动都能得到奖励,哪怕环境没有直接给予奖励。Q-learning的更新规则会将成功行动的奖励从导致胜利的最后一步反向传播到第一步。其次是探索与利用困境,通过使用ε-贪心或softmax策略,算法既能倾向于选择已被证明成功的行动(利用),也会偶尔尝试其他行动以探索新的可能性(探索)。

2. Q-learning在Flippers游戏中的应用

2.1 实验设置

为了测试Q-learning算法的性能,我们让其在一个不可预测的环境中学习玩Flippers游戏。具体设置如下:
- 参数设置
- 学习率α设为0.95,这意味着每次更新时每个单元格仅保留其旧值的5%,这样既能保留之前学习到的信息,又能期望新值基于改进后的Q表值而更优。
- 采用ε-贪心策略,ε设为0.1,即算法每10次行动中有1次会探索新的行动。
- 折扣因子γ设为0.2,因为每次行动后有10%的概率会有随机卡车经过并随机翻转一个瓷砖,这个较低的值表示由于随机事件的影响,我们仅20%确定未来每次的情况都相同,但γ值高于卡车引入的噪声水平(10%),因为大多数良好的游戏可能只需三到四步,相比10步或更多步的游戏,遇到随机事件的可能性更小。
- 实验过程
- 我们对512种可能的点和空白模式的起始棋盘各进行10次游戏,共进行5120场游戏,并将超过100步的游戏截断。

2.2 实验结果

  • 300次训练后 :从图21 - 30可以看出,算法已经找到了很多快速获胜的方法。“即时获胜”(即起始棋盘已有三个点排成垂直列或水平行)的情况出现在第一列,对应零步。由于有六种可能的获胜游戏配置,且每种棋盘配置运行了10次,所以我们有60次从获胜棋盘开始。同时,没有游戏达到100步的截断值,说明算法没有陷入长周期循环,可能是因为系统“发现”循环无法导向胜利且没有奖励,所以学会了避免。
  • 3000次训练后 :最长游戏现在仅需20步,大多数游戏在10步或更少步数内获胜,且在四到五步处有更密集的聚类。但从图21 - 32中一个典型游戏来看,算法似乎是随机翻转瓷砖,最终偶然找到解决方案,结果并不理想。
  • 6000次训练后 :与3000次训练的结果相比,最长游戏从20步减少到18步,3步和4步的短游戏变得更频繁。图21 - 34显示之前需要8步获胜的同一游戏现在只需4步,这表明算法性能有了显著提升。

3. SARSA算法

3.1 算法原理

Q-learning虽然表现出色,但存在一个缺陷,即其更新规则假设下一步会选择得分最高的行动,并基于此计算新的Q值。然而,实际情况中策略可能会选择其他行动,导致计算使用了错误的数据,降低了新Q值的准确性。为了解决这个问题,我们引入了SARSA算法。

SARSA是“state - action - reward - state - action”的缩写,它通过使用策略选择下一个单元格(而不是直接选择最大的那个)并记住行动选择(即最后的额外“A”)来解决从下一个状态选择错误单元格的问题。在构建新的Q值时,它使用实际会使用的行动的值。与Q-learning相比,SARSA只是移动了行动选择步骤并记住所选行动,但这可能会对学习速度产生很大影响。

3.2 SARSA的行动步骤

  • 第一步 :如图21 - 35所示,使用策略选择当前行动,然后再使用策略选择下一步行动,并根据下一步行动的Q值更新当前行动的Q值。
  • 第二步 :如图21 - 36所示,执行上一步选择的行动,然后选择第三步的行动,并使用其Q值更新当前行动的Q值。
  • 第三步 :如图21 - 37所示,执行第二步确定的行动,选择第四步的行动,并使用其Q值改进当前行动的Q值。

可以证明SARSA也会收敛,虽然不能保证收敛所需的时间,但它通常比Q-learning更快产生良好结果并快速改进。

3.3 SARSA在Flippers游戏中的应用

  • 3000次训练后 :从图21 - 38可以看出,大多数值集中在4附近,最长游戏仅15步,超过8步的游戏很少。一个典型游戏(图21 - 39)需要7步获胜,虽然不是很理想,但有改进空间。
  • 6000次训练后 :最长游戏从15步降至14步,3步和4步的短游戏数量更加明显,超过6步的游戏不多。图21 - 41显示之前需要7步获胜的同一游戏现在只需3步。

4. Q-learning与SARSA的比较

4.1 6000次训练后比较

图21 - 42显示了Q-learning和SARSA在6000次训练后所有5120场可能游戏的长度。两者大致相当,但Q-learning产生了一些比SARSA最长12步更长的游戏。

4.2 60000次训练后比较

图21 - 43显示,在60000次训练后,SARSA在Flippers游戏中表现出色,几乎所有游戏都在6步或更少步数内完成(很少有游戏需要7步)。Q-learning整体表现稍差,有些游戏最多需要16步,但也主要集中在4步及以下。

4.3 平均游戏长度比较

图21 - 44展示了从1到100000次训练(以1000次为增量)的平均游戏长度。可以看出,两种算法的平均游戏长度都迅速下降然后趋于平稳,但经过一段波动期后,SARSA始终表现更好,最终平均每场游戏节省近半步(即平均每两场游戏少走一步)。到100000次训练时,两种算法似乎都停止了改进,可能是因为它们的Q表已进入稳定状态,只是由于环境引入的随机翻转而略有变化。

5. 强化学习的宏观视角

强化学习的基本框架包括环境和智能体。环境为智能体提供两个数字列表(状态变量和可用行动),智能体根据其策略,结合内部保存的私有信息,从行动列表中选择一个值并返回给环境。作为响应,环境会给智能体返回一个数字(奖励)和两个新列表。

虽然将这些列表解释为棋盘和移动让我们可以从学习玩游戏的角度思考Q-learning,但智能体并不知道自己在玩游戏或存在规则,它只知道输入两个数字列表,选择一个值,然后得到一个奖励值。如果我们能找到一种用数字集描述环境和对环境的行动的方法,并且能找到一种粗略区分好行动和坏行动的方法,这个算法就能学习如何执行高质量的行动。

然而,Q表的实际应用存在一定局限性。以不同规模的游戏为例:
| 游戏名称 | 棋盘规模 | 状态数量 | Q表单元格数量 |
| ---- | ---- | ---- | ---- |
| Flippers | 3×3 | 512 | 4608 |
| 井字棋(3×3) | 3×3 | 20000 | 180000 |
| 井字棋(4×4) | 4×4 | 超过4300万 | 约3.9亿 |
| 井字棋(5×5) | 5×5 | 近8500亿 | - |
| 井字棋(13×13) | 13×13 | 超过可见宇宙中的原子数 | - |
| 围棋 | 19×19 | - | 行标签需173位数字 |

可以看到,随着游戏复杂度的增加,Q表的规模会变得非常庞大,存储变得不切实际。但DeepMind团队通过将强化学习与深度学习相结合,构建了AlphaGo,它著名地击败了人类世界冠军。这种深度强化学习方法的一个关键见解是消除Q表的显式存储,将Q表视为一个函数,输入棋盘状态,输出移动编号和Q值,而神经网络在学习预测这类事情方面表现出色。

mermaid流程图如下:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始]):::startend --> B(环境提供状态和行动列表):::process
    B --> C{智能体选择行动}:::decision
    C --> D(智能体执行行动):::process
    D --> E(环境给予奖励和新列表):::process
    E --> F{是否结束游戏}:::decision
    F -->|否| B
    F -->|是| G([结束]):::startend

综上所述,Q-learning和SARSA算法在学习玩Flippers游戏中都表现良好,但SARSA通常能使游戏步数更短。同时,深度强化学习为解决复杂游戏中Q表存储问题提供了有效的解决方案。

6. 强化学习算法的优势与挑战

6.1 优势

  • 适应性强 :Q-learning和SARSA算法能够在具有一定不确定性的环境中学习,如在Flippers游戏中,即使存在随机卡车翻转瓷砖的干扰,算法仍能通过不断训练找到较好的解决方案。
  • 自主学习 :智能体无需明确知道游戏规则,仅通过环境提供的状态、行动和奖励信息,就能自主学习如何选择最优行动,这使得算法具有广泛的应用潜力。
  • 可扩展性 :虽然简单的Q表在处理复杂游戏时会面临存储问题,但通过结合深度学习等技术,如DeepMind团队的AlphaGo,强化学习可以应用于更复杂的场景。

6.2 挑战

  • Q表存储问题 :随着游戏复杂度的增加,Q表的规模呈指数级增长,导致存储和计算成本变得不可接受。例如,在大型棋盘游戏中,Q表的状态数量可能超过可见宇宙中的原子数,这使得传统的Q表存储方式不再可行。
  • 训练时间长 :从Flippers游戏的实验结果可以看出,算法需要大量的训练次数才能达到较好的性能。例如,Q-learning和SARSA算法在经过100000次训练后才似乎停止改进,这在实际应用中可能需要耗费大量的时间和计算资源。
  • 参数调整困难 :Q-learning和SARSA算法中的参数(如学习率α、折扣因子γ和探索率ε)对算法的性能有重要影响,但这些参数的选择通常需要通过试错实验来确定,缺乏明确的理论指导。在实际应用中,不同的环境和任务可能需要不同的参数设置,这增加了算法的使用难度。

7. 强化学习的应用领域展望

7.1 游戏领域

除了上述的Flippers和井字棋等简单游戏,强化学习在更复杂的游戏中也有广泛的应用前景。例如,在电子竞技游戏中,智能体可以通过强化学习学习到最优的策略,与人类玩家进行对抗。此外,在角色扮演游戏中,智能体可以根据玩家的行为和环境的变化,动态调整自己的行动,提供更加丰富和真实的游戏体验。

7.2 机器人领域

在机器人控制中,强化学习可以帮助机器人学习如何在复杂的环境中完成任务。例如,机器人可以通过强化学习学习如何避开障碍物、抓取物体等。通过不断地与环境交互并获得奖励,机器人可以逐渐优化自己的行动策略,提高任务完成的效率和准确性。

7.3 金融领域

在金融投资中,强化学习可以用于构建投资策略。智能体可以根据市场的历史数据和实时信息,学习如何选择最优的投资组合,以实现收益最大化。此外,强化学习还可以用于风险管理,帮助金融机构识别和应对潜在的风险。

7.4 交通领域

在交通系统中,强化学习可以用于优化交通流量。例如,智能交通信号灯可以通过强化学习根据实时交通情况调整信号灯的时间,以减少交通拥堵。此外,自动驾驶汽车也可以利用强化学习学习如何在不同的路况和交通规则下安全、高效地行驶。

8. 强化学习算法的优化建议

8.1 结合深度学习

如前文所述,结合深度学习可以有效解决复杂游戏中Q表存储的问题。通过使用神经网络来近似Q表,智能体可以在不存储大量Q值的情况下学习到最优策略。例如,AlphaGo通过深度卷积神经网络学习棋盘状态和行动之间的映射关系,取得了很好的效果。

8.2 自适应参数调整

为了减少参数调整的难度,可以采用自适应参数调整方法。例如,在训练过程中,根据智能体的性能动态调整学习率、折扣因子和探索率等参数。当智能体的性能提升缓慢时,可以适当增大学习率;当智能体陷入局部最优时,可以增加探索率。

8.3 多智能体协作

在一些复杂的任务中,可以采用多智能体协作的方式。多个智能体可以通过相互协作和竞争,共同学习如何完成任务。例如,在团队游戏中,多个智能体可以通过协作制定团队策略,提高团队的整体性能。

9. 总结

强化学习是一种强大的机器学习方法,Q-learning和SARSA算法作为其中的代表,在学习玩Flippers游戏等简单任务中表现出了良好的性能。然而,这些算法在处理复杂问题时面临着Q表存储、训练时间长和参数调整困难等挑战。

为了克服这些挑战,深度强化学习应运而生,通过结合深度学习技术,有效地解决了Q表存储问题,并在复杂游戏如围棋中取得了显著的成果。此外,强化学习在游戏、机器人、金融和交通等领域都有广阔的应用前景。

在未来的研究和应用中,我们可以进一步探索强化学习算法的优化方法,如结合深度学习、自适应参数调整和多智能体协作等,以提高算法的性能和适用性。同时,我们也需要不断拓展强化学习的应用领域,为解决更多实际问题提供有效的解决方案。

以下是一个关于强化学习算法选择的决策表格:
| 场景特点 | 推荐算法 | 原因 |
| ---- | ---- | ---- |
| 环境确定性高,探索需求低 | Q-learning | 简单直接,能快速收敛到最优策略 |
| 环境不确定性高,需要实时调整策略 | SARSA | 更能适应实际选择的行动,减少误差 |
| 复杂游戏或大规模问题 | 深度强化学习 | 解决Q表存储问题,提高学习效率 |

mermaid流程图展示强化学习算法优化流程:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始]):::startend --> B(选择基础算法):::process
    B --> C{是否为复杂问题}:::decision
    C -->|是| D(结合深度学习):::process
    C -->|否| E(选择Q-learning或SARSA):::process
    D --> F(训练模型):::process
    E --> F
    F --> G{性能是否满足要求}:::decision
    G -->|否| H(自适应参数调整):::process
    H --> F
    G -->|是| I(考虑多智能体协作):::process
    I --> J([结束]):::startend

总之,强化学习为我们提供了一种强大的工具,帮助智能体在各种环境中学习和决策。通过不断的研究和创新,我们有望进一步挖掘强化学习的潜力,推动其在更多领域的应用和发展。

提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)内容概要:本文研究了一种基于遗传算法的新型异构分布式系统任务调度算法,并提供了Matlab代码实现。文章重点围绕异构环境中任务调度的优化问题,利用遗传算法进行求解,旨在提高资源利用率、降低任务完成时间并优化系统整体性能。文中详细阐述了算法的设计思路、编码方式、适应度函数构建、遗传操作流程及参数设置,并通过仿真实验验证了该算法相较于传统方法在调度效率和收敛性方面的优越性。此外,文档还列举了大量相关领域的研究案例和技术应用,涵盖电力系统、路径规划、车间调度、信号处理等多个方向,体现出较强的技术综合性实践价值。; 适合人群:具备一定编程基础和优化算法知识的研究生、科研人员及从事智能优化、分布式系统调度、电力系统、自动化等相关领域的工程技术人员。; 使用场景及目标:①解决异构分布式系统中的任务调度优化问题;②学习遗传算法在实际工程问题中的建模实现方法;③为科研项目提供算法参考代码复现支持;④拓展多领域交叉应用的研究思路。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注适应度函数设计遗传操作流程,并尝试在不同场景下调整参数以观察性能变化。同时可参考文中列出的相关研究方向进行延伸探索,提升综合应用能力。
【图像处理】基于MATLAB的短时傅里叶变换和小波变换及图像处理(Matlab代码实现)内容概要:本文档介绍了基于MATLAB实现的短时傅里叶变换和小波变换在图像处理中的应用,涵盖信号图像处理的核心技术方法。文档重点展示了如何利用这两种时频分析工具进行图像特征提取、去噪、压缩增强等操作,并配有完整的Matlab代码实现,帮助读者深入理解其原理实际应用流程。此外,文档还涉及多种图像处理技术如分割、融合、增强及压缩感知等内容,构成一个较为完整的图像处理技术体系。; 适合人群:具备一定信号处理或图像处理基础知识,熟悉MATLAB编程的高校学生、科研人员及工程技术人员,尤其适合从事电子信息、计算机视觉、遥感图像分析等相关领域的研究人员; 使用场景及目标:①学习短时傅里叶变换小波变换的基本原理及其在图像处理中的具体应用;②掌握MATLAB环境下实现图像去噪、压缩、增强等任务的技术方法;③为科研项目或课程设计提供可复用的代码基础和技术参考; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,边运行代码边理解算法细节,同时可拓展至其他信号处理应用场景以加深理解。注意区分短时傅里叶变换小波变换的适用范围,前者适合平稳信号分析,后者更适合非平稳多尺度特征提取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值