强化学习Qlearning算法——Python实现郝hai

Q-learning是一种基于值迭代的强化学习(ReinforcementLearning,RL)算法,主要用于在给定环境中学习一个策略,使得智能体(agent)能够在与环境交互的过程中获得最大累计奖励。它通过学习一个状态-动作值函数(Q函数)来指导智能体的行为选择,适用于各种离散状态和动作的任务环境。Q-learning在各种应用领域中都有显著表现,包括机器人控制、游戏AI、交通系统优化以及金融市场分析等。通过不断改进和扩展,Q-learning在未来将有望在更多复杂的实际任务中发挥重要作用,特别是在结合其他机器学习技术和多智能体系统的研究中。

Q-Learning算法是一种无模型的强化学习技术,用于学习代理在环境中采取动作的最佳策略。在Q-Learning中,我们通常使用两个主要的矩阵来表示和更新信息:奖励矩阵(R)和Q值矩阵(Q)。

Q-learning的核心思想是通过不断地更新状态-动作值(\(Q\)值)来逼近最优Q函数(\(Q^*\)),从而得到最优策略。我们可以构建一个矩阵\(Q\),它用来表示agent已经从经验中学到的知识。矩阵\(Q\)与\(R\)是同阶的,其行表示状态,列表示行为,\(R(s,a)\)表示在状态\(s\)是采取行为\(a\)获得的奖励。由于刚开始时agent对外界环境一无所知,因此矩阵\(Q\)应初始化为零矩阵,对于状态数目未知的情形,我们可以让\(Q\)从一个元素出发,每次发现一个新的状态时就可以在\(Q\)中增加相应的行列。Q-learning算法的转移规则比较简单,如下式所示:

其中\(s,a\)表示当前的状态和行为,\(\widetilde{s},\widetilde{a}\)表示\(s\)的下一个状态及行为,式(1)中的\(\gamma\)称为学习系数,满足\(0\leq\gamma<1\),如果\(\gamma=0\),对立即的奖励更有效;如果接近1,整个系统会更考虑将来的奖励。在没有老师的情况下,我们的agent将通过经验进行学习(也称为无监督学习)。它不断从一个状态转至另一状态进行探索,直到到达目标。我们将agent的每一次探索称为一个episode。在每一个episode中,agent从任意初始状态到达目标状态。当agent达到目标状态后,一个episode即结束,接着进入另一个episode。下面给出整个\(Q\)-learning算法的计算步骤:

Step1给定参数\(\gamma\)和reward矩阵\(R\);Step2今\(Q:=0\);Step3Foreachepisode:3.1随机选择一个初始的状态\(s\);3.2若未达到目标状态,则执行以下几步(1)在当前状态\(s\)的所有可能行为中选取一个行为\(a\);(2)利用选定的行为\(a\),得到下一个状态\(\widetilde{s}\);(3)按照公式(1),计算\(Q(s,a)\);(4)令\(s:=\widetilde{s}\).

Agent利用上述算法从经验中进行学习。每一个episode相当于一个trainingsession,在一个traimingsession中,agent探索外界环境,并接收外界环境的reward,直到达到目标状态。训练的目的是要强化agent的“大脑”(用\(Q\)表示)。训练得越多,则\(Q\)被优化得更好,当矩阵\(Q\)被训练强化后,agent便很容易找到达到目标状态的最快路径了。利用训练好的矩阵\(Q\),我们可以很容易地找出一条从任意状态\(s_0\)出发达到目标状态的行为路径,具体步骤如下:

令当前状态\(s:=s_0\);确定\(a\),它满足\(Q(s,a)=\max_{\tilde{a}}\{Q(s,\widetilde{a})\}\);令当前状态\(s:=\widetilde{s}(\widetilde{s}\)表示\(a\)对应的下一个状态\()\);重复执行步2和步3直到\(s\)成为目标状态.

通过不断迭代更新\(Q(s,a)\)的值,Q-Learning算法可以学习到最优策略\(\pi^*\)下的状态-动作对的价值函数\(Q^*(s,a)\)。这个过程不需要环境的动态模型,因此Q-Learning是一种无模型的强化学习算法。

贝尔曼方程是动态规划中的核心原理,它将一个状态的价值分解为即时奖励和未来价值的总和。对于状态价值函数$V^{\pi}(s)$和动作价值函数\(Q^{\pi}(s,a)\),贝尔曼方程可以表示为:

其中:

Q-Learning算法的目标是找到一个策略\(\pi^*\),使得\(Q(s,a)\)最大化,即:

Q-Learning的更新规则如下:

假设我们有一个策略$\pi$,其对应的Q值函数为$Q^{\pi}$。根据贝尔曼动态规划方程,我们有:

其中\(P(s'|s,a)\)是状态转移概率,由于\(V^{\pi}(s')=\max_{a'}Q^{\pi}(s',a')\),我们可以将$V^{\pi}(s')$替换为$\max_{a'}Q^{\pi}(s',a')$:

如果我们取$\pi$为最优策略$\pi^*$,那么我们得到:

这个方程表明,最优值\(Q^*(s,a)\)可以通过对未来状态的最优Q值的加权和来计算,这就是Q-Learning算法的马尔科夫解。

一只小白鼠在迷宫里面,目的是找到出口,如果他走出了正确的步子,就会给它正反馈(糖),否则给出负反馈(点击),那么,当它走完所有的道路后,无论把它放到哪儿,它都能通过以往的学习找到通往出口最正确的道路。假设迷宫有5间房,如图1所示,这5间房有些房间是想通的,我们分别用0-4进行了标注,其中5代表了出口。

在这个游戏里,我们的目标是能够走出房间,就是到达5的位置,为了能更好的达到这个目标,我们为每一个门设置一个奖励。如果以state为行,action为列,则上图又可转化为如下的reward矩阵:比如如果能立即到达5,那么我们给予100的奖励,5因为也可以到它自己,所以也是给100的奖励;对于其他状态之间如果没法到5的我们不给予奖励,奖励是0了;在Q-learning中,目标是奖励值累加的最大化,所以一旦达到5,它将会一直保持在这儿,如图3所示。

为进一步理解上一节中介绍的Q-learning算法是如何工作的,下面我们一步一步地迭代几个episode。首先取学习系数\(\gamma=0.8\),初始状态为房间1,并将\(Q\)初始化为一个零矩阵。观察矩阵\(R\)的第二行(对应房间1或状态1),它包含两个非负值,即当前状态1的下一步行为有两种可能:转至状态3或转至状态5。随机地,我们选取转至状态5。

想象一下,当我们的agent位于状态5以后,会发生什么事情呢观察矩阵\(R\)的第6行(对应状态5),它对应三个可能的行为:转至状态1,4或5,根据公式(1),我们有

现在状态5变成了当前状态。因为状态5即为目标状态,故一次episode便完成了,至此,小白鼠的“大脑”中的\(Q\)矩阵刷新为

接下来,进行下一次episode的迭代,首先随机地选取一个初始状态,这次我们选取状态3作为初始状态。观察矩阵\(R\)的第四行(对应状态3),它对应三个可能的行为:转至状态1,2或4。随机地,我们选取转至状态1,因此观察矩阵\(R\)的第二行(对应状态1),它对应两个可能的行为:转至状态3或5,根据公式(1),我们有

若我们执行更多的episode迭代,最终将得到一个收敛矩阵(理论上可以证明这个矩阵一定存在),见下图所示。

最终策略:在状态0下,选择动作4作为最优策略;在状态1下,选择动作5作为最优策略;在状态2下,选择动作3作为最优策略;在状态3下,选择动作4作为最优策略;在状态4下,选择动作5作为最优策略;在状态5下,选择动作5作为最优策略。所以从状态2出发的最优路径序列为2-3-4-5。

注意:状态转移矩阵S中的值表示从当前状态(行)执行某个动作(列)后转移到的目标状态。例如,从状态1执行动作1将转移到状态0,执行动作2将转移到状态7,执行动作3将转移到状态1。

THE END
1.PaddlePaddle/PaddleClas:AtreasurechestforvisualDeep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778. [2] He T, Zhang Z, Zhang H, et al. Bag of tricks for image classification with convolutional neural networks[C]//Proceedings of the IEEE Conferencehttps://openi.pcl.ac.cn/PaddlePaddle/PaddleClas/src/branch/develop/docs/zh_CN/models/ImageNet1k
2.强化学习QLearning算法详解qlearning算法详解QLearning是强化学习算法中value-based的算法,Q即为Q(s,a)就是在某一时刻的 s 状态下(s∈S),采取 动作a (a∈A)动作能够获得收益的期望,环境会根据agent的动作反馈相应的回报reward r,所以算法的主要思想就是将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。 https://blog.csdn.net/qq_30615903/article/details/80739243
3.Q学习(Qlearning)简单理解「建议收藏」腾讯云开发者社区下面给出整个Q-learning算法的计算步骤算法1.1(Q-learning算法)Step1给定参数γ和reward矩阵RStep2令Q=0Step 3For each episode:3.1随机选择一个初始的状态s 3.2若未达到目标,状态则执行以下几步 (1)在当前状态的所有可能行为中选取一个行为a (2)利用选定的行为a得到下一个状态s~ (3)按照转移规则公式计算 Q(https://cloud.tencent.com/developer/article/2163196
4.WhatisQQ-learning is a machine learning approach that enables a model to iteratively learn and improve over time by taking the correct action. Q-learning is a type of reinforcement learning. With reinforcement learning, a machine learning model is trained to mimic the way animals or children learn. Gohttps://www.techtarget.com/searchenterpriseai/definition/Q-learning
5.Qlearning路径规划基于 QLearning算法智能体可以在不知道整体环境的情况下,仅通过当前状态对下?步做出判断。 Q-Learning是强化学习算法中value-based的算法,Q是指在某?时刻的某?状态下采取某?动作期望获得的收益。环境会根据智能体的动 作反馈相 应的回报,所以算法的主要思想就是将状态与动作构建成?张Q值表,然后根据https://www.iteye.com/resource/sinat_36236351-12053691
6.Q学习QQ 学习 (Q-Learning) 是一种无模型、离策略的强化学习算法,它将在给定智能体当前状态的情况下找到最佳的行动方案。根据 agent 在环境中的位置,它将决定下一步要采取的操作。「Q」指的是算法计算的函数——在给定状态下采取的行动的预期奖励。 Q 学习的目标是根据当前状态找到最佳行动方案。为此,它可能会制定自己https://hyper.ai/cn/wiki/28830
7.什么是Qlearning?–编程技术之美Q学习(Q-learning)是一种价值迭代算法,它通过采样来学习动作价值函数Q,从而获得最优策略。 Q学习的主要思想是: agents以ε-greedy策略选择动作,在环境中采样。 根据采样结果更新Q表中的 Q(s,a)值,使用下面的更新规则: Q(s,a) = Q(s,a) + α * (r + γ * maxQ(s’,a’) – Q(s,a)) http://www.itzhimei.com/archives/6817.html
8.什么是Qlearning?4. 5. 评估:采取行动得到了奖励后就可以用Q函数更新 Q(s,a): 重复这个过程一直到训练停止,就可以得到最优的 Q-table。 参考文献: https://www.freecodecamp.org/news/an-introduction-to-q-learning-reinforcement-learning-14ac0b4493cc/https://www.jianshu.com/p/b45e0297fe92
9.测试运行使用C#执行Q为了创建演示程序,我启动了 Visual Studio 并创建了一个新 C# 控制台应用程序项目名为 QLearning。我使用 Visual Studio 2017,但演示程序并不重要的.NET 依赖,因此任何版本的 Visual Studio 可以正常工作。在模板代码加载到之后我删除了所有的编辑器不需要的 using 语句,只留下对引用 System 命名空间。然后我添加到https://msdn.microsoft.com/zh-cn/magazine/mt829710
10.机器学习探究QQ-Learning算法是一种强化学习方法,它专注于学习一个名为Q函数的值表,该值表估计了在给定状态下采取特定行动所能获得的长期回报。Q-Learning的目标是找到一个最优策略,即在每个状态下选择能够最大化长期回报的行动。这个过程可以分为以下几个关键步骤: https://developer.aliyun.com/article/1496910
11.QLearning算法详解数据学习者官方网站(Datalearner)Q Learning是一种无模型(model-free reinforcement learning)强化学习,也是强化学习中十分重要的一种基础模型。谷歌旗下的DeepMind基于Q Learning提出的Deep Q Network是将强化学习与深度学习融合的经典模型,也将强化学习往前推动了一大步。因此,对于学习现代的强化学习模型来说,Q Learning是必须理解的一个基础模型。本文http://datalearner.com/blog/1051661501498544
12.QThe Q-learning algorithm is an off-policy reinforcement learning method for environments with a discrete action space. A Q-learning agent trains a Q-value function critic to estimate the value of the optimal policy, while following an epsilon-greedy policy based on the value estimated by the crhttps://www.mathworks.com/help/reinforcement-learning/ug/q-learning-agents.html
13.使用QTable进行Q更新Q 表: best_q = np.amax(q_table[tuple(state_new)]) bellman_q = reward + discount_rate * best_q indices = tuple(np.append(state_prev,action)) q_table[indices] += learning_rate*( bellman_q - q_table[indices]) 将下一个状态设置为上一个状态,并将奖励添加到剧集的奖励中: https://www.kancloud.cn/wizardforcel/mastering-tf-1x-zh/1278740
14.Qlearning算法学术百科提供全面的“Q-learning算法”相关文献(论文)下载,论文摘要免费查询,Q-learning算法论文全文下载提供PDF格式文件。Q-learning算法中文、英文词汇释义(解释),“Q-learning算法”各类研究资料、调研报告等。https://wiki.cnki.com.cn/HotWord/2182924.htm
15.5什么是QLearning(ReinforcementLearning强化学习)学员1、什么是强化学习? (Reinforcement Learning) 03:17 学员2、强化学习方法汇总 (Reinforcement Learning) 05:54 学员3、1 why? 01:40 学员4、2 要求准备 05:06 学员5、什么是 Q Learning (Reinforcement Learning 强化学习) 06:10 学员6、2.1 简单例子 https://bbs.easyaiforum.cn/lesson-1683.html
16.转载强化学习入门:基于Qclass QLearning: #Agent def __init__(self, actions, q_table=None, learning_rate=0.01, discount_factor=0.9, e_greedy=0.1): self.actions = actions # action 列表 self.lr = learning_rate # 学习速率 self.gamma = discount_factor # 折扣因子 https://xueqiu.com/9582187848/169660237
17.深度强化学习之深度Q网络DQN详解请耐心,答案在下面揭晓。下面先看个例子,这是一个Flappy Bird小游戏(原网址:https://enhuiz.github.io/flappybird-ql/),你可以自己点击屏幕玩这个游戏,也可以点击下方“Enable Q-learning”按钮,用Q-learning算法来自动玩这个游戏,给程序一两分钟,他就能轻易取得超过超过人类的成绩。https://www.flyai.com/article/522
18.OfflineReinforcementLearningwithImplicitQLearningOffline reinforcement learning requires reconciling two conflicting aims: learning a policy that improves over the behavior policy that collected the dataset, while at the same time minimizing the deviation from the behavior policy so as to avoid errors due to distributional shift. This trade-off ishttps://ui.adsabs.harvard.edu/abs/arXiv:2110.06169
19.7Papers&RadiosMIT造出薄如纸的音响;腾讯“绝艺”打麻将战胜人7. Provably Efficient Kernelized Q-Learning. (from Hao Su) 8. Staying the course: Locating equilibria of dynamical systems on Riemannian manifolds defined by point-clouds. (from Ioannis G. Kevrekidis) 9. Differentially Private Learning with Margin Guarantees. (from Mehryar Mohri) https://www.thepaper.cn/newsDetail_forward_17899633
20.AtrustawaretaskallocationmethodusingdeepqThird, to solve large-scale MCMDP problems in a stable manner, this study proposes an improved deep Q-learning-based trust-aware task allocation (ImprovedDQL-TTA) algorithm that combines trust-aware task allocation and deep Q-learning as an improvement over the uncertain mobile crowdsourcing https://dl.acm.org/doi/10.1186/s13673-019-0187-4
21.双Q学习机器之心此更新方法和随机梯度下降具有相似的工作方式,会逐渐趋向目标值 Y^Q_t 来更新当前值 Q(S_t, A_t; \theta_t)。 Deep Q-Networks: 基于价值的深度强化学习不仅仅是把 Q Learning 中的价值函数用深度神经网络近似,还做了其他改进。 这个算法就是著名的 DQN 算法,由 DeepMind 在 2013 年在 NIPS 提出。DQNhttps://www.jiqizhixin.com/graph/technologies/0d189dc7-7f80-4643-9ff4-74941694d7d4
22.MazelearningbyahybridbrainGraded levels of MFB stimuli are mapped from the converged result of Q-learning algorithm in the task T1, which is explicitly required by the computer model. While in the task T2 MFB stimulation of a single level was used, in the task T3, the same level MFB stimulation was replaced by https://www.nature.com/articles/srep31746
23.MachineLearningSubjects: Machine Learning (cs.LG); Computational Engineering, Finance, and Science (cs.CE); Statistical Finance (q-fin.ST) [33] arXiv:2412.14526 [pdf, html, other] Knowledge Distillation in RNN-Attention Models for Early Prediction of Student Performance Sukrit Leelaluk, Cheng Tang, Valdehttp://arxiv.org/list/cs.LG/pastweek?skip=30&show=524