【Python强化学习】马尔可夫决策过程与蒙特卡洛近似算法讲解(图文解释)

简介: 【Python强化学习】马尔可夫决策过程与蒙特卡洛近似算法讲解(图文解释)

觉得有帮助请点赞关注收藏~~~

马尔可夫决策过程

如果系统的下一个状态s_t+1的概率分布只依赖于它的前一个状态s_t,而与更早的状态无关,则称该系统满足马尔可夫性。即对任意的时间t,对任意的状态s_t、s_t+1,均有下面的条件概率等式:

P(s_t+1│s_t)=P(s_t+1│s_1,s_2,…,s_t)

马尔可夫性完全忽视了过往历史的影响,大大减少了系统建模的复杂度和计算量,是常用的建模简化假定。

随机性策略

用A和S分别表示主体的动作变量和环境的状态变量。用概率来描述主体的随机性策略:

π(a│s)=P(A_t=a│S_t=s)

其中,A_t和S_t分别表示t时刻的主体动作和环境状态。 设共有N种状态,共有M个动作,如果能确定任一具体状态s_i(1≤i≤N)条件下任一具体动作a_j(1≤j≤M)的概率,那么该随机性策略就完全确定了。 用概率来描述环境模型,可表示为条件概率:

P_ss^′^a=P(S_t+1=s^′│S_t=s,A_t=a)

如果能得到从任一状态和任一动作组成的联合条件下任一状态的概率,那么环境模型P_ss^′^a也就确定了。该条件概率也称为环境的状态转移概率。

在指定状态s和动作a时,下一步要进入的状态并不唯一,因此,得到的回报r也不唯一,可用数学期望来描述在指定状态s和动作a时的回报的数学期望为:

R_s^a=E[r^′]=∑_s^′∈S▒P_ss^′^ar^′

r^′表示进入到下一个状态s^′得到的立即回报。

如果主体策略、环境模型和回报都确定了,那么,主体可以基于当前或长远两种考虑来选择下一步的动作A:

1)基于当前的考虑,就是依据现状S,选择一个动作A,使得环境进入到一个可得到尽量多立即回报r^′的状态S^′。

2)基于长远的考虑,就是还要考虑下一步的回报,也就是说要使下一步的状态进入到一个便于在未来得到尽量多累计回报的状态。

强化学习的目标是着眼长远,而非当前。

未来累计折扣回报

称主体的一次尝试过程为轨迹(episode),用τ=(s_0,a_0,s_1,a_1,s_2,a_2,…)表示,它是对状态和动作的按时间顺序的记录。

对一个轨迹,得到所有时刻进入新状态的立即回报,记为立即回报序列:R=(r_1,r_2,r_3,…)。

用所谓的未来累积折扣回报(Cumulative Future Discounted Reward)来刻画长远考虑。在某轨迹中,从时刻t开始的未来累积折扣回报定义为:

G_t=r_t+1+γr_t+2+γ^2r_t+3+…+γ^nr_t+n+1+…, γ∈[0,1] γ∈[0,1]称为折扣系数,通过不同的折扣系数可以调节未来的立即回报对当前的影响。

G_t可以写成递推形式: G_t=r_t+1+γr_t+2+γ^2r_t+3+…+γ^nr_t+n+1+…=r_t+1+γ[r_t+2+γ^1r_t+3+…+γ^n−1r_t+n+1+…]=r_t+1+γG_t+1

马尔可夫决策过程可用五元组〈S,A,P,R,γ〉来表示,在这里,S表示可能状态的集合,A表示可能动作的集合,P表示状态转移概率,R是回报函数,γ是折扣系数。

在主体的随机尝试中,某一轨迹τ出现的概率记为p_π(τ)。 对轨迹τ=(s_0,a_0,s_1,a_1,s_2,a_2,…): p_π(τ)=π(a_0│s_0)P_s_0s_1^a_0π(a_1│s_1)P_s_1s_2^a_1π(a_2│s_2)P_s_2s_3^a_2…

显然,在环境模型P_ss^′^a已经确定的条件下,该概率由策略π确定,也就是说在不同的策略下,同一条轨迹出现的概率可能会有差异。

记轨迹τ的未来累积折扣回报为G(τ)。G(τ)的数学期望为:

式中,τ表示任何可能的轨迹。 在马尔可夫决策过程框架中,强化学习的目标就是找到使未来累积折扣回报的期望最大的策略π ̂:

直接求解策略和基于值函数求解策略

想办法从所有候选策略中寻找最优策略的思路称为直接求解策略的求解方法。

间接求解策略的方法是先计算所谓的值函数,然后通过值函数来求得最优策略。该类方法称为基于值函数的求解方法。 状态值函数V_π(s)是在指定策略π时,限定起始状态为s时的未来累积折扣回报的数学期望:

V_π(s)=E_π[G_t|S_t=s┤]=E_π[r_t+1+γr_t+2+γ^2r_t+3+…|S_t=s┤]

动作值函数Q_π(s,a)是在指定策略π时,除了限定起始状态为s,还进一步限定执行动作为a时的未来累积折扣回报的数学期望:

动作值函数体现了在指定状态下,执行指定动作的“价值”。如果能够得到每个动作值函数的值,那么,最优策略就是在当前状态下,选择使该值最大的动作。

蒙特卡洛近似

随机近似方法的基本思想是通过大量的随机样本去探索系统,得到有关系统的近似模型。

用随机近似法来对函数f(x)的积分 V=∫_a^b▒f(x)□dx的进行估计,还可以采用下面的思路。 设p(x)是x在(a,b)上的概率密度函数,则有:

也就是说,可以用f(x)/p(x)的数学期望来估计积分V。 如果x是均匀分布的,那么p(x)=1/b−a。在(a,b)内均匀采样,得到x_1,x_2,…,x_n,根据大数定律,可以由平均值来估计期望:

如果求函数f(x)关于 x的分布p(x)的期望E[f(x)]=∫▒p(x)f(x)□dx,可以先依概率p(x)采样x_i,然后根据大数定律用样本均值来近似:

这种基于随机采样来求解问题的方法也称为蒙特卡罗(Monte Carlo)法,也称为统计实验方法,或者统计模拟方法

蒙特卡罗法的随机采样思想与强化学习的尝试学习思想是相近的,因此它在强化学习中占有重要地位。在强化学习中,通过蒙特卡罗法可以对未知环境模型进行近似的建模,帮助求得最优策略。

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
2月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
238 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
1月前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
57 12
|
1月前
|
算法 安全 网络安全
基于 Python 的布隆过滤器算法在内网行为管理中的应用探究
在复杂多变的网络环境中,内网行为管理至关重要。本文介绍布隆过滤器(Bloom Filter),一种高效的空间节省型概率数据结构,用于判断元素是否存在于集合中。通过多个哈希函数映射到位数组,实现快速访问控制。Python代码示例展示了如何构建和使用布隆过滤器,有效提升企业内网安全性和资源管理效率。
51 9
|
3月前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
140 66
|
1月前
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
47 10
|
2月前
|
人工智能 自然语言处理 算法
随机的暴力美学蒙特卡洛方法 | python小知识
蒙特卡洛方法是一种基于随机采样的计算算法,广泛应用于物理学、金融、工程等领域。它通过重复随机采样来解决复杂问题,尤其适用于难以用解析方法求解的情况。该方法起源于二战期间的曼哈顿计划,由斯坦尼斯拉夫·乌拉姆等人提出。核心思想是通过大量随机样本来近似真实结果,如估算π值的经典示例。蒙特卡洛树搜索(MCTS)是其高级应用,常用于游戏AI和决策优化。Python中可通过简单代码实现蒙特卡洛方法,展示其在文本生成等领域的潜力。随着计算能力提升,蒙特卡洛方法的应用范围不断扩大,成为处理不确定性和复杂系统的重要工具。
104 21
|
2月前
|
存储 算法 安全
控制局域网上网软件之 Python 字典树算法解析
控制局域网上网软件在现代网络管理中至关重要,用于控制设备的上网行为和访问权限。本文聚焦于字典树(Trie Tree)算法的应用,详细阐述其原理、优势及实现。通过字典树,软件能高效进行关键词匹配和过滤,提升系统性能。文中还提供了Python代码示例,展示了字典树在网址过滤和关键词屏蔽中的具体应用,为局域网的安全和管理提供有力支持。
62 17
|
19天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化的自适应马尔科夫链蒙特卡洛(Adaptive-MCMC)算法matlab仿真
本项目基于贝叶斯优化的自适应马尔科夫链蒙特卡洛(Adaptive-MCMC)算法,实现MATLAB仿真,并对比Kawasaki sampler、IMExpert、IMUnif和IMBayesOpt四种方法。核心在于利用历史采样信息动态调整MCMC参数,以高效探索复杂概率分布。完整程序在MATLAB2022A上运行,展示T1-T7结果,无水印。该算法结合贝叶斯优化与MCMC技术,通过代理模型和采集函数优化采样效率。
|
2月前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
439 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
1月前
|
存储 算法 量子技术
解锁文档管理系统高效检索奥秘:Python 哈希表算法探究
在数字化时代,文档管理系统犹如知识宝库,支撑各行各业高效运转。哈希表作为核心数据结构,通过哈希函数将数据映射为固定长度的哈希值,实现快速查找与定位。本文聚焦哈希表在文档管理中的应用,以Python代码示例展示其高效检索特性,并探讨哈希冲突解决策略,助力构建智能化文档管理系统。