强化学习-值函数计算方法,值迭代和策略梯度等

目录

0.背景:

1.如何进行策略评估:

2.如何进行策略改进:

2.1值函数近似算法

2.2直接策略搜索

3.深度强化学习:

3.1DQN

3.2 AC/A2C/A3C(Asynchronous Advantage Actor Critic)

0.背景:

强化学习必不可少的三个步骤:策略执行(根据e贪婪/最大Q等得到下一跳动作)、策略评估(估计动作的Q值)、策略改进(找到最优策略)

1.如何进行策略评估

即值函数计算方法:

DP动态规划,需要已知环境模型。因为知道了模型(转移概率),所以不需要做实验。

蒙特卡洛:基于样本的方法。通过做实验,统计平均约等于真实的平均回报值。缺点是需要等待实验做完才能计算值函数。

时间差分:自举的思想,通过后一时刻的值,更新现在的值。可以实现在当下时刻就能计算值。

N bootstrap:n步的时间差分,介于蒙特卡洛和时间差分之间。

动态规划、蒙特卡洛、时序差分、n步bootstrap方法小总结_bootstrap 策略-优快云博客

2.如何进行策略改进

2.1值函数近似算法

值迭代策略迭代是强化学习中两种常用的寻找最优策略的方法。

策略迭代:需要策略评估(也就是1做的工作)和策略改进(更新Q值,V值)。也就是:

策略评估收敛->从头更新整个策略->用新策略再评估到收敛->再更新策略->......->最优策略。

优:迭代次数少      缺:计算复杂,策略收敛,但策略评估没收敛(见下方链接)

马尔科夫决策过程-策略迭代与值迭代(基于动态规划)_马尔科夫值迭代-优快云博客

值迭代:值函数收敛后,最后输出最优策略。图2所示,每次更新V的时候,不同于图1,用的是使得V最大的a,相当于及时做了隐式的策略改进,不需要等到本轮策略评估收敛。

策略评估->选当下最大Q继续策略评估->...->策略函数收敛->输出最优策略。

优:简单                 缺:迭代轮次增多。

2.2直接策略搜索

跳过值函数的步骤,直接进行最优策略的搜索。适用于连续动作空间。例如DDPG,这里我没用过,了解的不多。一般用优势函数更新策略网络。

3.深度强化学习:

DRL提升了RL在高维状态空间和连续动作空间的决策能力。一方面,深度网络的非凸函数拟合能力扩展策略的表征能力和强化学习方法的应用范围; 另一方面,深度网络强大的特征提取能力可使强化学习能处理视觉信息、声音信息等复杂输入。

3.1DQN

以前我总有个误区,就是直接策略搜索就是深度强化学习。NO!

像DQN啊,其实还是基于值函数的强化学习,因为它的本质还是更新Q值函数,只是用深度学习模型进行拟合。DQN就是比较入门级的深度强化学习模型。

【深度强化学习】(1) DQN 模型解析,附Pytorch完整代码_dqn模型-优快云博客

  • 目标网络的意义,看上图的公式2,如果没有目标网络,目标Q值yi就一直是一个变化的值,让神经网络拟合一个一直变化的目标是很难收敛的的。

3.2 AC/A2C/A3C(Asynchronous Advantage Actor Critic

A3C也是经典的强化学习模型。它同时优化策略网络和值函数,是AC和A2C的加强版,收敛更快(因为并行与环境副本交互)。

强化学习中的 AC(Actor-Critic)、A2C(Advantage Actor-Critic)和A3C(Asynchronous Advantage Actor-Critic)算法_强化学习ac框架-优快云博客

  • 优势函数:表达在状态s下,某动作a相对于平均而言的优势。

A3C中,用优势函数更新策略梯度,用值函数的差值更新Q值。我觉得这也类似一种广义的值迭代。

直接上伪代码:

【强化学习】14 —— A3C(Asynchronous Advantage Actor Critic)-优快云博客

附:

相比于深度学习,强化学习好在哪里呢?

深度强化学习(Deep Reinforcement Learning, DRL)和传统的深度学习(Deep Learning, DL)都是机器学习的重要分支,它们都利用深度学习的技术来处理复杂的数据和模式,但它们的应用场景和优势各有不同。这里主要介绍深度强化学习相对于传统深度学习的一些独特优势:

决策制定:

深度学习主要用于模式识别和预测任务,如图像和语音识别。而深度强化学习是为了使系统能够在没有明确指示的情况下作出决策。DRL通过与环境的交互来学习最佳行动策略,从而优化长期的奖励。

环境交互和自适应:

DRL能够在复杂的环境中进行学习,并能适应环境的变化。这使得DRL非常适合于那些需要实时决策的应用,如自动驾驶、机器人导航等。

处理不确定性:

强化学习特别适合于处理不确定性较高的环境。它不仅仅是在给定数据上进行训练,而是通过探索和利用策略来理解和适应环境的动态变化。

从少量或无标签数据中学习:

与深度学习不同,深度强化学习不需要大量标注数据。它可以通过与环境的交互获得反馈,这种反馈作为奖励信号,指导算法调整其行为策略。

长期目标和复杂策略的优化:

DRL强调的是如何根据当前行动的长期后果来做出决策。这对于那些需要考虑未来回报的任务非常有用,如金融投资、游戏策略等。

总之,尽管深度强化学习和深度学习都需要通过训练过程来达到模型的收敛,但深度强化学习在处理需要决策制定、环境交互以及长期目标优化的复杂问题时显示出独特的优势。这使得它在许多现实世界的应用中非常有价值,尤其是在那些传统深度学习方法难以解决的领域。

### 策略迭代、值迭代与Actor-Critic方法的区别联系 #### 定义与基本概念 策略迭代(Policy Iteration)是一种通过交替执行策略评估(Policy Evaluation)策略改进(Policy Improvement)来优化策略的方法。其核心在于显式地维护并更新一个策略函数π(s)[^1]。 值迭代(Value Iteration)则跳过了显式的策略表示,直接通过对状态价值函数V(s)的更新逐步逼近最优解。它利用贝尔曼最优方程进行动态规划求解。 Actor-Critic方法属于强化学习中的另一大类算法,结合了基于策略的方法(Actor)基于价的方法(Critic)。其中,“Actor”负责生成行为策略π(a|s),而“Critic”用于估计该策略的价值函数V(s)或动作-值函数Q(s,a)[^2]。 --- #### 差异分析 ##### 更新方式 - **策略迭代**依赖于完整的策略评估过程,在每次迭代中计算精确的状态价值函数后再进行策略改进。 - **值迭代**省去了单独的策略评估阶段,而是通过反复应用贝尔曼最优方程直接调整状态价值函数直至收敛。 - **Actor-Critic**采用样本驱动的方式在线更新参数,无需等待整个环境模型完全建模即可完成训练。具体来说,Actor部分通常使用梯度上升法最大化期望回报;Critic部分可以估算当前策略下的价或者优势函数作为反馈信号。 ##### 数据需求 - 策略迭代值迭代都假设能够访问到马尔可夫决策过程(Markov Decision Process, MDP)的具体结构,即已知转移概率P以及奖励R。 - Actor-Critic不需要确切知道MDP细节,仅需观察交互产生的轨迹数据就能工作,因此更适合处理复杂高维甚至连续空间的任务场景。 ##### 收敛速度与稳定性 - 策略迭代由于每步都会重新计算新的最佳策略,理论上具有较快的收敛速率但可能面临较高的时间开销。 - 值迭代简化了流程从而提升了效率但也可能导致某些情况下无法快速找到全局最优方案。 - 对于Actor-Critic而言,虽然引入随机性近似误差可能会降低理论上的稳定程度,但在实际应用尤其是深度强化学习领域却展现了强大的灵活性与表现力。 --- #### 联系探讨 尽管三者的实现机制存在显著差异,它们之间仍然存在着紧密关联: - 都围绕着解决同一个目标——寻找使累积折扣奖励最大化的最优控制法则展开研究; - 可视为不同维度上探索同一问题解决方案的结果体现形式各异而已; - 特别是在现代深度强化学习框架下,许多先进算法实际上综合运用了上述各类技术特点加以改良创新,比如Deep Deterministic Policy Gradient (DDPG), Proximal Policy Optimization(PPO)等均不同程度融合了value-based critic component policy gradient based actor mechanism 的设计理念. 以下是几种典型组合模式的例子说明: 1. Advantage Actor Critic(A2C): 使用advantage function代替原始q-value estimation提供更精准评判依据给actor learning process. 2. Trust Region Policy Optimization(TRPO)/Proximal Policy Optimization(PPO): 这些方法进一步约束了policy update step size防止过大幅度改变破坏已有成果积累. --- ```python import numpy as np def policy_iteration(env): """ 实现简单版离散型环境下的策略迭代 """ V = np.zeros(env.nS) pi = np.random.choice(env.nA, size=env.nS) while True: # 策略评估 delta = 0 for s in range(env.nS): v = sum([p * (r + gamma * V[s_]) for p, s_, r, _ in env.P[s][pi[s]]]) delta = max(delta, abs(V[s]-v)) V[s] = v if delta < theta: break # 策略提升 policy_stable = True for s in range(env.nS): old_action = pi[s] q_values = [sum([p*(r + gamma*V[s_]) for p,s_,r,_ in env.P[s][a]]) for a in range(env.nA)] best_a = np.argmax(q_values) if old_action != best_a: policy_stable=False pi[s]=best_a if policy_stable: return V, pi def value_iteration(env): """ 实现简单版离散型环境下的值迭代 """ V = np.zeros(env.nS) while True: delta = 0 for s in range(env.nS): q_values = [sum([p*(r + gamma*V[s_]) for p,s_,r,_ in env.P[s][a]]) for a in range(env.nA)] new_v = max(q_values) delta = max(delta,abs(new_v-V[s])) V[s] = new_v if delta<theta:return V,np.array([np.argmax([sum([p*(r+gamma*V[s_])for p,s_,r,_in env.P[s][a]])for a in range(env.nA)])forsinsrange(env.nS)]) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值