深度强化学习从入门到大师:通过Q学习进行强化学习(第二部分)

深度强化学习从入门到大师:通过Q学习进行强化学习(第二部分)

本文是Tensorflow深度强化学习课程的一部分。

今天我们将学习Q-Learning。Q-Learning是一种基于数值的强化学习算法。

在本文中,您将学习:

什么是Q-Learning

如何用Numpy实现它

大图:骑士和公主

假设你是一名骑士,你需要拯救被困在上面地图上所示城堡中的公主。

您可以一次移动一个图块。敌人不能移动,但是骑士和敌人落在同一块地砖上就会死。目标是使骑士尽可能以最快的路线前往城堡。这可以使用“积分”系统来评估。

骑士每走一步都减去1分(使用每一步-1策略有助于我们的Agent快速到达终点)。

如果骑士触碰一个敌人,将失去100分,然后这一集结束。

如果骑士在到达城堡并获胜,将得到100分。

问题是:如何做才能创建一个的Agent完成这个任务?

这里的第一个策略:让Agent不断尝试移动到每个瓷砖上,然后为每个瓷砖着色。绿色表示“安全”,红色表示“不安全”。

相同的地图,但着色显示哪些瓷砖可以安全访问

然后,我们可以告诉Agent只在绿色瓷砖上移动。

但问题是这样做并没有对问题有帮助。当绿色瓷砖彼此相邻时,我们无法分辨哪个瓷砖更好。所以Agent在试图找到城堡过程会因此陷入死循环!

介绍Q表

这是第二个策略:创建一个表格,我们将计算每种状态state下采取的每种行动action的最大的未来预期奖励。

多亏了这个策略,我们将知道对每种状态采取的最佳行动是什么。

每个state(瓷砖片)允许四种可能的动作。它们分别是向左,向右,向上或向下移动。

0表示不可以执行的动作(如果你在左上角你不能向左或向上!)

在计算方面,我们可以将此网格转换为表格。

这个表格被称为Q表(“Q”表示动作的“质量”)。列表示是四个动作(左,右,上,下)。行表示的是状态。每个单元格的值将是该给定状态和行动的最大未来预期奖励。

如果在state状态下给定的行动action是最佳策略,那么每个Q表评分为未来奖励的最大期望。

为什么我们说“根据策略给出?”这是因为我们不能直接给出这种策略。而是通过改进我们的Q表以始终选择最佳行动action。

可以把这个Q-table认为是一个游戏的“备忘单”。通过找到“备忘单”行中的最高分,我们知道每个状态(Q表中的每一行)最好的行动是什么。

Yeah!我们解决了城堡问题!但是等等......我们如何计算Q表中每个元素的值?

要给出此Q表的每个值,可以使用Q-learning算法。

Q学习算法:学习动作值函数

动作值函数(或“Q函数”)有两个输入:“状态”和“动作”。它返回该动作在该状态下的预期未来奖励。

在我们探索环境之前,Q表中的值是固定的初始值(一般为0)。在我们探索环境时,通过使用Bellman方程迭代更新Q(s,a),Q表中的值将趋近于更好(见下文!)。

Q学习算法过程

Q-Learning算法的伪代码

步骤1:初始化Q值

我们构建一个Q表,有m列(m=行动数)和n行(n=状态数)。我们将值初始化为0。

第2步:终身学习(或直到学习停止)

该过程将重复步骤3到5,直到算法运行次数为的episode的最大值(由用户指定)或直到我们手动停止训练。

步骤3:选择操作

根据当前的Q值选择当前状态下行动Actiona。

但是......如果每个Q值都是零,那么在该采取什么行动?

我们的想法是,在开始时,我们将使用epsilon贪心策略:

我们指定一个探索率“epsilon”,我们在开始时设置为1,即随机执行的step的速度。刚开始学习时,这个速率必须是最高值,因为我们对Q表的取值一无所知。这意味着我们需要通过随机选择我们的行动进行大量探索。

生成一个随机数。如果这个数字>epsilon,那么我们将进行“使用”(这意味着我们使用已知的方法来选择每一步的最佳动作)。否则,我们会进行探索。

我们的想法是,在Q函数训练开始时我们必须有一个较大的epsilon。然后,随着Agent变得做得越来越好,逐渐减少它。

步骤4-5:评估!

采取行动actiona并观察结果状态s'和奖励r。并更新函数Q(s,a)。

然后,使用Bellman方程更新Q(s,a):

更新Q(state,action)代码可以写成如下所示:

NewQvalue=CurrentQvalue+lr*[Reward+discount_rate*(highestQvaluebetweenpossibleactionsfromthenewstates’)—CurrentQvalue]

我们来举个例子:

一个奶酪=+1

两个奶酪=+2

大堆奶酪=+10(剧集结束)

如果吃到鼠毒=-10(剧集结束)

第1步:初始化Q表

初始化的Q表

步骤2:选择操作从起始位置,您可以选择向右还是向下。我们有一个大的epsilon率(因为我们对环境一无所知),采用随机选择的方式。例如......向右移动。

我们采用随机移动(例如,右)

发现了一块奶酪(+1),则更新的Q值并记录向右的行动。通过Bellman方程来进行计算。

步骤4-5:更新Q函数

首先,计算Q值的变化ΔQ(start,right)

然后将Q值与ΔQ(start,right)的和乘以学习率。

学习率可以看视为该学习网络更新Q值的速度。如果学习率为1,则新估计值将是新的Q值。

更新后的Q表

好!我们刚刚更新了我们的第一个Q值。现在我们需要一次又一次地这样做,直到学习停止。

实现Q学习算法

我们制作了一个视频,我们实现了一个学习与Numpy一起玩Taxi-v2的Q学习代理。

使用numpy和OpenAITaxi-v2进行Q学习(教程)

现在我们知道Q-Learning是如何工作的,我们将逐步实现Q学习算法。代码的每个部分在下面的Jupyter笔记本中都能找到。

您可以在DeepReinforcementLearningCourserepo中访问它。

或者您可以直接在GoogleColaboratory上访问它:

Q-learning实现FrozenLake

colab.research.google.com

回顾......

Q-learning是一种基于数值的强化学习算法,用于使用q函数找到最优的动作选择策略。

它根据动作值函数评估要采取的动作,该动作值函数确定处于某种状态的值并在该状态下采取某种动作。

目标:最大化Q函数(给定状态和行动的预期未来奖励)。

Q表帮助我们找到每个状态的最佳行动。

通过选择所有可能的最佳行动来最大化预期奖励。

Q表示来自特定状态下某个动作的质量。

函数Q(state,action)→return该状态下该动作的预期未来奖励。

可以使用Q学习来估计该函数,Q学习使用Bellman方程迭代地更新Q(s,a)

在我们探索环境之前:Q表给出了相同的任意值进行初始化→但是当我们探索环境时→Q给了我们更好的近似值。

就这样!不要忘记自己实现代码的每个部分-尝试修改我给你的代码非常重要。

尝试添加epoch,改变学习速度,并使用更复杂的环境(例如使用8x8瓷砖的Frozen-lake)。玩得开心!

下次我们将开展深度Q学习,这是2015年深度强化学习的最大突破之一。我们将训练一个智能体玩Doom,并杀掉敌人!

长按链接点击打开或点击底部【深度强化学习从入门到大师:通过Q学习进行强化学习(第二部分)】:

AI研习社每日更新精彩内容,观看更多精彩内容:雷锋网雷锋网雷锋网

【点击跳转】深度强化学习从入门到大师:简介篇(第一部分)

用PyTorch来做物体检测和追踪用Python做机器学习不得不收藏的重要库初学者怎样使用Keras进行迁移学习一文带你读懂WaveNet:谷歌助手的声音合成器

THE END
1.强化学习基于价值的方法(Value-Based Methods)和基于策略的方法(Policy-Based Methods)是强化学习中的两类主要算法,它们使用不同的方式来处理智能体在环境中的决策问题。 基于价值的方法 (Value-Based Methods): 基于价值的方法专注于寻找一个价值函数,它给出了每个状态(或状态-动作对)的价值,代表了从该状态(或执行该动作https://zhuanlan.zhihu.com/p/676940299
2.AI训练营强化学习登录前需要手机验证,输入验证码,点击下一步 即可跳到学习平台DSW,支持在线编程,你可以跟着教程边学边敲代码 Task 1 实战PPO通关超级玛丽 学习打卡开启学习 Task 02 PPO算法环境配置 学习打卡开启学习 Task 03 PPO算法实战练习 学习打卡开启学习 Task 04 强化学习学习赛 学习打卡开启学习https://tianchi.aliyun.com/specials/promotion/aicamprl
3.自然语言强化学习:一个可处理语言反馈的强化学习框架在人工智能发展史上,强化学习 (RL) 凭借其严谨的数学框架解决了众多复杂的决策问题,从围棋、国际象棋到机器人控制等领域都取得了突破性进展。然而,随着应用场景日益复杂,传统强化学习过度依赖单一数值奖励的局限性日益凸显。在现实世界中,反馈信号往往是多维度、多模态的,例如教练的口头指导、视觉示范,或是详细的文字说https://hub.baai.ac.cn/view/41851
4.什么是人工智能领域的ReinforcementLearning强化学习的算法可以分为三类:基于模型的方法、无模型的方法和深度强化学习。基于模型的方法需要一个环境模型来预测状态转换和奖励,智能体可以使用这个模型来规划最佳行动。无模型的方法,如 Q-学习和 SARSA,不依赖于环境模型,而是通过与环境的直接交互来学习价值函数或策略。深度强化学习结合了深度学习和强化学习,使用深度https://open.alipay.com/portal/forum/post/159101016
5.强化学习入门教程(完整版)文章目录learning route强化学习和监督学习、无监督学习的区别强化学习RL解决什么问题RL如何解决问题实例实例视频openAI and DeepMind基础马尔科夫时序差分(Temporal-Difference)强化学习方法分类Model-freeModel-b,更多下载资源、学习资料请访问CSDN文库频道https://download.csdn.net/blog/column/8340117/107904423
6.强化学习【深度强化学习 入门教程】作者-李宏毅 ● 是强化学习的入门课程,对于初学者来说比较友好,老师上课举的例子很形象,很有趣,对于理解相关的概念知识非常有帮助。课程以讲述理论知识为主,关于强化学习方面的实际应用以及代码实现较少,可以考虑完成该课程布置的作业,以加深对算法的理解。 https://www.zhuanzhi.ai/topic/2001320766352755/awesome
7.入门指南人工智能的新希望——强化学习全解如果您已经了解了一些强化学习的基础知识,请继续阅读本文。读完本文,您将会对强化学习及实战中实现算法有着更透彻的了解。 附:下面这些算法实现的讲解中,我们将假设您懂得Python的基本知识。如果您还不知道Python,建议可以先看看这个Python教程(https://www.analyticsvidhya.com/blog/2016/01/complete-tutorial-learn-dathttps://36kr.com/p/1721373523969
8.GitHubWDWSD/easy李宏毅老师的《深度强化学习》是强化学习领域经典的中文视频之一。李老师幽默风趣的上课风格让晦涩难懂的强化学习理论变得轻松易懂,他会通过很多有趣的例子来讲解强化学习理论。比如老师经常会用玩 Atari 游戏的例子来讲解强化学习算法。此外,为了教程的完整性,我们整理了周博磊老师的《强化学习纲要》、李科浇老师的《世界https://github.com/WDWSD/easy-rl
9.强化学习工具箱(reinforcementlearningtoolbox)查看定价联系销售人员 您是学生吗? 您的学校可能已拥有 Campus-Wide License 并允许您直接使用 MATLAB、Simulink 和其他附加产品。 获取MATLAB 下一步是什么? 面板导航 免费电子书 使用MATLAB 和 Simulink 进行强化学习 面板导航 教程 强化学习入门之旅 面板导航 https://ww2.mathworks.cn/products/reinforcement-learning.html
10.深度学习:卷积神经网络从入门到精通带目录完整pdf[92MB]电子书下本书专注讨论深度学习中应用非常广泛的模型——卷积神经网络,该模型特别适用于图像分类和识别、目标分割和检测以及人工智能游戏方面,受众对象包括计算机、自动化、信号处理、机电工程、应用数学等相关专业的研究生、教师以及算法工程师和科研工作者。本书的最大特色是对卷积神经网络进行由浅入深的分类描述,依次包括:现代雏https://www.jb51.net/books/684151.html
11.强化学习算法与应用综述摘要:强化学习是机器学习领域的研究热点, 是考察智能体与环境的相互作用, 做出序列决策、优化策略并最大化累积回报的过程. 强化学习具有巨大的研究价值和应用潜力, 是实现通用人工智能的关键步骤. 本文综述了强化学习算法与应用的研究进展和发展动态, 首先介绍强化学习的基本原理, 包括马尔可夫决策过程、价值函数、探索-https://c-s-a.org.cn/html/2020/12/7701.html
12.17个机器学习的常用算法应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。 4.强化学习: 在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一https://aidc.shisu.edu.cn/78/aa/c13626a161962/page.htm
13.强化学习控制算法.pptx强化学习简介强化学习控制算法 强化学习简介强化学习简介1.强化学习是一种通过智能体与环境交互来学习最优行为的机器学习方法。2.强化学习通过试错的方式,使得智能体能够学习到在给定环境下如何行动才能最大化累积奖励。3.强化学习在许多领域都有广泛的应用,包括机器人控制、游戏AI、自然语言处理等。强化学习是一种通过https://max.book118.com/html/2023/1220/5030121043011030.shtm
14.博弈环境下的深度强化学习和传统的深度强化学习不同在博弈环境下的强化学习中,智能体之间的竞争和合作关系会对最终的策略产生影响。智能体需要在竞争中寻求个体利益的最大化,在合作中寻求团队利益的最大化。因此,对于博弈环境下的强化学习算法来说,需要考虑智能体之间的互动和博弈策略的制定。 概况来说,博弈环境下的强化学习与传统的强化学习相比,更加复杂和动态,需要https://wap.sciencenet.cn/home.php?mod=space&uid=40841&do=blog&id=1418525