强化学习(reinforcement learning)教程

本文详细介绍Q学习算法,一种解决马尔可夫决策过程最优化问题的方法。通过实例演示算法如何帮助智能体通过环境学习,逐步优化行为策略以获得最大累积奖励。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前一阵研究强化学习,发现中文的资料非常少,实例就更少。于是翻译一篇q学习算法的教程,供需要的人学习。

原文链接:http://mnemstudio.org/path-finding-q-learning-tutorial.htm

正文:

Q学习算法是一种用来解决马尔可夫决策过程中最优化问题的方法。Q学习算法最大的特点是它具有选择瞬时奖励和延迟奖励的能力。在每一步中,agent通过观察状态s的向量,然后选择并执行行动a,随着状态从s转移到s‘agent能够收到一个强化值rs a)。训练的目标是发现一条行动的路径,从而使得整个过程强化值的和最大,也就是从起点到终点间的一条最短路径。

Q学习算法的转移规则表示为以下形式:

Q (state action) = R(state action) + gamma * Max[Q(next state all actions)]

参数gamma的范围是[01],从而保证结果收敛。如果gamma更接近0agent趋向于只考虑瞬时奖励值,反之如果更接近1,则agent为延迟奖励赋予更大的权重,更侧重于延迟奖励。

Q学习算法的步骤表示如下:

设置gamma以及环境奖励矩阵R

将矩阵Q初始化为0

对于每次迭代(episode):

随机选择一个初始状态;

直到达到目标状态:

从所有可能的行动中选择一个行动;

执行行动到达下一状态;

获取下一状态所有行动中最大的Q值;

利用公式更新Q

下面的教程通过一个简单而详细的数值例子介绍Q学习算法的概念。本例描述了一个通过agent利用非监督学习学习未知的环境。对比该例和的源代码,你可能也会发现很有帮助。

假设一个建筑内有的5间房间,房间之间通过门连接,如下图所示。我们为每个房间进行标号,记为0-4。建筑外面也可以认为是一个大的房间(5),注意门14均可以到达5


我们可以用图的形式表示房间的连接情况,每个房间对应一个节点,每扇门对应节点间的弧。


在本例中,我们假设在其中任意一个房间中放置一个agent,然后要求agent从该房间走出该建筑(即目标房间)。换而言之,目标房间就是5。为了把这个房间作为目标,我们需要为每个门关联一些奖励值(节点间的弧)。与目标直接相连的门具有瞬时奖励,值设为100。其他没有直连的门的奖励为0。注意因为门是双向的,因此弧是双向的,弧之间瞬时奖励值如下图所示。


当然,房间5和自己相连,拥有100的奖励值,其它与5直连的房间都有100的奖励值。在Q学习中,目标是以最高的奖励值到达目标状态,因此,如果agent到达了目标,他将永远停留,这种类型的目标称为"absorbing goal"

假设我们的agent是一个能够通过实验学习的“哑巴虚拟机器人”。Agent能够从一个房间到达另一个房间,但是对环境一无所知,而且也不知道哪些门通向外面。

假设我们要为可能处于任意房间的agent建立模型。现在我们假设agent在房间2,我们希望agent能够通过学习达到5


Q学习中术语包括状态和行为。

我们把0-5每个房间称为状态,把agent从一个房间移动到另一房间称为行为(action),在图中,状态表示一个节点,行为表示一条有向弧。


假设agent在状态2,因为23直连,因此可以从状态2可以移动到状态3。从状态2不能直接到状态1因为两者不直连。同理,从状态3可以到状态14或者回到2。如果agent在状态4,那么就有3个可能的行为,到05或者3。如果agent在状态1,那么可以到53,从0只能到达4

我们可以根据状态间的关系和瞬时奖励值创建矩阵R


-1表示状态间不直连。例如0不能直接到达1

现在可以增加一个相似的矩阵Q,它可以看作是agent的“大脑”,表示了agent通过学习环境留下的“记忆”,矩阵Q的行表示agent当前的状态,列表示到达下一状态可能的行为。

在开始时agent对环境一无所知,因此矩阵Q初始化为0。在本例中,为了简单起见,我们假设状态的数量已知,如果状态数量未知,矩阵Q初始化时只有一个元素,如果发现新状态后再添加行和列。

Q学习的转移规则是一个很简单的方程:

Q(state action) = R(state action) + Gamma * Max[Q(next state all actions)]

根据这个方程,一个值被赋予给矩阵Q中一个特定值,它等于R矩阵中对应值的和和学习参数gamma,乘以下一状态中所有行为中Q值最高的值。

虚拟的agent通过经验进行学习,没有老师(称为无监督学习)。Agent从一个状态转移到另一状态不断的探索直到到达目标。我们把每一次探索称为一次迭代(episode)。每一个episode包含agent从初始状态移动到目标状态。每当agent到达目标状态,程序继续下一episode

Q学习算法步骤如下:

设置gamma参数以及矩阵R

初始化矩阵Q

对于每次episode

随机选择一个初始状态;

目标状态没有到达:

从当前状态的所有行为中选择一个

转移到下一状态;

计算;

将下一状态设为当前状态;

Agent通过以上算法进行学习,每次episode相当于一次训练。在每一次训练中,agent探索环境(矩阵R表示),接受奖励直到到达目标状态。训练的目的是增强agent的大脑,即矩阵Q。训练越多,Q结果越好。通过这种方式,如果Q被加强了,而不是反复探索,不断回到同一房间,就能快速找到目标状态。

参数gamma的取值范围是0-1,如果gamma趋近于0,则agent趋向于考虑瞬时奖励,如果接近1,则趋向于未来的奖励,延迟奖励。

为了使用矩阵Qagent仅仅跟踪状态,从初始状态到目标状态。算法能够根据矩阵Q中记录的奖励值为当前状态找到具有最大奖励值的行为。

为了更好理解Q学习算法的工作原理,我们一步一步的进行演示,剩下的步骤可以参考源代码。

首先设置gamma参数=08,初始状态为1

将矩阵Q全部初始化为0


观察矩阵R的第二行,当前状态有两个行为,到达状态3或者状态5。通过随机的选择,我们选择到达状态5


现在我们想像下如果agent到达状态5后会发生什么?观察矩阵R的第6行,它有三个行为,到达状态14,、5

Q(state action) = R(state action) + Gamma * Max[Q(next state all actions)]

Q(1 5) = R(1 5) + 0.8 * Max[Q(5 1) Q(5 4) Q(5 5)] = 100 + 08 * 0 = 100

因为矩阵Q初始化为0Q(51) Q(54)Q(55)的值都为0Q(15)的计算结果为100因为矩阵RR(51)的瞬时奖励为100

下一状态5,成为当前状态。因为5是目标状态,我们结束一次episode。更新后的矩阵Q为:


下一个episode,我们随机选择一个初始状态。这一次我们选择状态3

观察矩阵R的第4行,它有三个行为,到达状态124。通过随机选择,我们到达状态1

现在假设到达状态1,观察矩阵R的第二行,它有两个行为,到达状态35,接下来计算Q

Q(state action) = R(state action) + Gamma * Max[Q(next state all actions)]

Q(1 5) = R(1 5) + 08 * Max[Q(1 2) Q(1 5)] = 0 + 08 * Max(0 100) = 80

我们用更新过的矩阵Q进行计算。Q(13)=0Q(15)=100Q(31)的结果=80因为奖励为0。矩阵Q变为:


 此时状态1成为当前状态,我们重复Q算法的内循环因为状态1不是目标状态。

开始新的循环,状态1有两个行为,到达状态3或者5,很幸运,我们选择状态5


现在假设在状态55有三个行为,145。我们利用这三个行为中最大的奖励值更新矩阵Q

Q(state action) = R(state action) + Gamma * Max[Q(next state all actions)]

Q(1 5) = R(1 5) + 0.8 * Max[Q(5 1) Q(5 4) Q(5 5)] = 100 + 08 * 0 = 100 

更新后的矩阵QQ(51) Q(54) Q(55)全部为0Q(15)的计算结果为100因为矩阵RR(51)的瞬时奖励为100

因为5是目标状态,我们结束这次episode,矩阵Q更新为:


如果agent不断地学习,矩阵Q最终会收敛,如下图所示。


接下来可以对矩阵Q进行标准化


一旦矩阵Q趋于收敛,我们知道agent学到了到达目标状态的最优路径。跟踪最优状态的序列和弧就可以得到最高的奖励值。


例如,从初始状态2agent以矩阵Q为指导;

从状态2,最大Q值指向状态3

状态3,最大Q指指向14,假设随机选择1

从状态1最大Q值指向状态5

因此序列为2-3-1-5

1


Q Matrix values:

0 0 0 0 396 0

0 0 0 316 0 496

0 0 0 316 0 0

0 396 252 0 396 0

316 0 0 316 0 496

0 396 0 0 396 496


Shortest routes from initial states:

1 5

3 1 5

5 5

2 3 1 5

4 5

0 4 5

2 2和例1相比,仅仅增加了节点。类似的代码,少量的优化


Shortest routes from initial states:

1 0 4 8 9 5 6 2 3 7 11 15

3 7 11 15

5 6 2 3 7 11 15

2 3 7 11 15

4 8 9 5 6 2 3 7 11 15

0 4 8 9 5 6 2 3 7 11 15



this file contains:Advanced Deep Learning with Keras_ Apply deep learning techniques, autoencoders, GANs, variational autoencoders, deep reinforcement learning, policy gradients, and more (2018, Packt Publishing.pdf Deep Reinforcement Learning for Wireless Networks (2019, Springer International Publishing).pdf Deep Reinforcement Learning Hands-On_ Apply modern RL methods, with deep Q-networks, value iteration, policy gradients, TRPO, AlphaGo Zero and more.pdf Hands-On Reinforcement Learning with Python_ Master reinforcement and deep reinforcement learning using OpenAI Gym and TensorFlow (2018, Packt Publishing).epub Hands-On Reinforcement Learning with Python_ Master reinforcement and deep reinforcement learning using OpenAI Gym and TensorFlow (2018, Packt Publishing).pdf Keras Reinforcement Learning Projects (2018, Packt Publishing).epub Keras Reinforcement Learning Projects (2018, Packt Publishing).pdf Practical Reinforcement Learning Develop self-evolving, intelligent agents with OpenAI Gym, Python and Java.pdf Python Reinforcement Learning Projects - 2018.pdf Reinforcement Learning for Optimal Feedback Control (2018, Springer International Publishing).pdf Reinforcement Learning with TensorFlow_ A beginner’s guide to designing self-learning systems with TensorFlow and OpenAI Gym (2018, Packt Publishing).pdf Reinforcement Learning _ With Open AI, TensorFlow and Keras Using Python-Apress (2018).pdf Reinforcement Learning_ An Introduction (2018, The MIT Press).pdf Simulation-Based Optimization_ Parametric Optimization Techniques and Reinforcement Learning (2015, Springer US).pdf Statistics for Machine Learning_ Techniques for exploring supervised, unsupervised, and reinforcement learning models with Python and R-Packt Publishing (2017).pdf Tensorflow for Deep Learning_ From Linear Regression to Reinforcement Learning (2018, O'Reilly Media).pdf
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值