手动计算Q-Learning的一个实例

本文通过手动计算详细展示了Q-Learning算法的工作过程,从初始状态到目标状态,逐步更新Q矩阵,解释了如何根据Q矩阵找到最优路径,并讨论了矩阵的标准化方法。

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

此篇文接上篇

为了更好的理解Q-Learning算法是如何工作的,我们一步步手动计算一些过程。

我们把γ的值设为0.8,初始状态在房间1中。

把Q矩阵初始化为0


让我们看一下R矩阵的第二行(状态1),对当前状态1有两种可能的动作:到达状态3或者到达状态5.我们随机选择到达状态5作为采取的动作。


现在让我们想象一下Agent在状态5会发生什么。观察R矩阵的第六行(状态5),它有三种可能的动作:到达状态1,4或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 + 0.8 * 0 = 100

由于矩阵Q是初始化为0的, Q(5, 1), Q(5, 4), Q(5, 5),都是0,Q(1, 5)的计算结果是100,是因为R(5,1)的回报值是100.

接下来的状态5,现在成了当前状态。因为状态5是目标状态,所以我们就完成了一个场景(这个翻译似乎不妥)。

我们的Agent的大脑现在是更新过的矩阵Q.


个人觉得上面更新的矩阵应该是有错误的,这个图片是从原文网站上直接down下来的,应该是Q(1,5)=100,而不是Q(2,5)=100

下一个过程中,我们随机选择状态3作为起始状态。

注意观察R矩阵的第四行,它有三个可能的动作:到达状态1,2或4

我们随机选择到达状态1作为我们的动作。

现在我们想象我们在状态1,观察R矩阵的第二行(即状态1),它有两个可能的动作:到达状态3或者状态5.然后我们计算Q值:

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

Q(3,1) = R(3,1) + 0.8 * Max[Q(1, 3), Q(1, 5)= 0 + 0.8 * Max(0, 100) = 80

这里我们使用上个过程中更新的Q矩阵, Q(1, 3) = 0而Q(1, 5) = 100

Q(3,1)的计算值为80,这是由于回报值R(3,1)=0.

Q矩阵变成了以下所示:


下一个状态1,现在变成当前状态了。然后重复Q-Learning的内部循环,因为此时状态1还不是目标状态。

所以,以1为当前状态开始新的循环,那么就有两种可能的动作:到达状态3或者状态5.我们随机抽取状态5作为下一步的动作。


现在想象我们是在状态5.现在有三种可能的动作:到达状态1,4或者5,我们使用这些可能的动作的最大值来计算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 + 0.8 * 0 = 100

更新过的矩阵Q中,Q(5, 1), Q(5, 4), Q(5, 5)的值均为0,Q(1, 5)的计算值是100,是来自R(1,5)的回报值。这个结果没有改变矩阵Q。

因为矩阵5是目标状态,因此我们完成了这次过程。现在我们的Agent的大脑包含的矩阵Q为:


如果我们的Agent通过进一步的过程学习更多的话,那么Q矩阵的最终状态将会是以下这样的:


这个Q矩阵,可以通过这种方式标准化:把所有非零项的值除以非零项的最大值(这里是500),然后乘以100。然后这个矩阵就变成下面所示:


一旦矩阵Q达到了接近收敛的状态,我们就知道我们的Agent已经学到了到达目标状态的最优路径。找到到达目标状态的最佳状态序列很简单:从初始状态出发,每一个动作都选择有最大Q值的那条链路。


举个例子来说,加入起始状态为2,那么Agent可以使用Q矩阵作为自己的向导:

从状态2开始,最大的Q值建议的动作是到达3;

从状态3开始,最大的Q值建议了两个动作:到达状态1或者状态4

假设我们到达了状态1

从状态1开始最大的Q值建议的动作是到达状态5

因此,状态顺序是2--3--1--5



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值