当前位置: 首页 > article >正文

【通俗理解】最优控制之旅——强化学习中的策略优化

【通俗理解】最优控制之旅——强化学习中的策略优化

关键词提炼

#最优控制 #强化学习 #状态值函数 #奖励函数 #折扣因子 #贝尔曼方程 #策略迭代 #值迭代 #动态规划 #马尔可夫决策过程

第一节:最优控制的类比与核心概念

1.1 最优控制的类比

最优控制就像是一位精明的旅行者,在未知的旅途中,他需要选择最佳的路径以到达目的地。每一步,他都要根据当前的位置、可能的目的地和沿途的风景(奖励)来做出决策。
强化学习中的最优控制也是如此,它试图找到一种策略,使得从任意状态出发,都能获得最大的累积奖励在这里插入图片描述

1.2 相似公式比对

  • 贝尔曼方程 V ( s ) = max ⁡ a ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V ( s ′ ) ] V(s) = \max_a \sum_{s'} P(s' | s, a)[R(s, a, s') + \gamma V(s')] V(s)=amaxsP(ss,a)[R(s,a,s)+γV(s)],它描述了状态值函数V(s)是如何通过当前状态的奖励和后续状态的值函数来计算的。
  • 动态规划中的值迭代 V k + 1 ( s ) = max ⁡ a ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V k ( s ′ ) ] V_{k+1}(s) = \max_a \sum_{s'} P(s' | s, a)[R(s, a, s') + \gamma V_k(s')] Vk+1(s)=amaxsP(ss,a)[R(s,a,s)+γVk(s)],它迭代更新每个状态的值函数,直至收敛。

第二节:最优控制的核心概念与应用

2.1 核心概念

核心概念定义比喻或解释
状态值函数V(s)表示从状态s出发,遵循某种策略所能获得的期望累积奖励。就像旅行者从某个地点出发,预计能获得的沿途风景的总评分。
奖励函数R(s, a, s’)表示在状态s下采取动作a后转移到状态s’所能获得的即时奖励。就像旅行者从一地到另一地所能欣赏到的风景的美丽程度。
折扣因子γ表示未来奖励在当前价值计算中的重要性。γ越接近0,越重视当前奖励。就像旅行者更看重眼前的风景,还是更期待未来的美景。

2.2 优势与劣势

  • 全局最优:能够找到从任意状态出发的全局最优策略,而不仅仅是局部最优。
  • 适应性:强化学习算法能够适应环境的变化,即使环境是未知的或部分可知的。
  • 计算复杂度:对于大规模或连续状态空间的问题,计算复杂度可能非常高,需要有效的近似方法。

2.3 与实际生活的类比

最优控制在现实生活中的应用就像是一位精明的投资者,他需要根据市场的当前状态(如股票价格、经济指标等)来做出投资决策,以最大化长期的投资回报。强化学习中的最优策略就是这位投资者的决策指南。

第三节:公式探索与推演运算

3.1 贝尔曼方程的解释

贝尔曼方程是强化学习的核心,它描述了状态值函数V(s)是如何通过当前状态的奖励和后续状态的值函数来计算的。这个方程是递归的,意味着它考虑了所有可能的未来状态,并根据折扣因子γ来权衡当前奖励和未来奖励的重要性。

3.2 策略迭代与值迭代

  • 策略迭代:首先初始化一个策略,然后计算该策略下的状态值函数,再根据状态值函数更新策略,如此迭代直至策略收敛。
  • 值迭代:直接迭代更新状态值函数,直至收敛,然后根据最终的状态值函数确定最优策略。

这两种方法都是求解最优策略的有效手段,策略迭代更直观,而值迭代计算上可能更高效。

3.3 具体实例与推演

假设有一个简单的格子世界,目标是从起点走到终点,每一步可以选择向上、下、左、右移动一格,每移动一格获得-1的奖励(表示消耗了能量或时间),到达终点获得0的奖励(表示任务完成)。我们可以使用贝尔曼方程来迭代计算每个状态的值函数,并找到最优策略。

第四节:相似公式比对

  • 贝尔曼方程动态规划中的值迭代

    • 共同点:都用于计算状态值函数,并寻求最优策略。
    • 不同点:贝尔曼方程是一个更一般的框架,适用于更广泛的问题;而值迭代是动态规划中的一种具体算法,通常用于求解具有离散状态空间的问题。
  • 强化学习中的Q学习贝尔曼方程

    • 相似点:Q学习也使用了一个类似的递归方程来更新动作值函数,并寻求最优策略。
    • 差异:Q学习是一种无模型的强化学习方法,它不需要知道环境的动态(即状态转移概率和奖励函数),而是通过试错来学习;而贝尔曼方程通常用于已知环境动态的情况。

第五节:核心代码与可视化

这段代码使用numpymatplotlib库来求解一个简单的强化学习问题,并绘制了状态值函数随迭代次数变化的曲线。通过可视化,我们可以直观地看到值迭代算法如何逐步收敛到最优策略。

import numpy as np
import matplotlib.pyplot as plt

# 定义状态空间、动作空间、状态转移概率和奖励函数
states = [0, 1, 2]  # 简单的状态空间:0(起点),1(中间点),2(终点)
actions = [-1, 1]  # 动作空间:向左移动一格,向右移动一格
P = {0: {0: [0.5, 1], 1: [0.5, 1]}, 1: {0: [1, 2], 1: [1, 2]}, 2: {0: [2, 0], 1: [2, 0]}}  # 状态转移概率
R = {0: {0: -1, 1: -1}, 1: {0: -1, 1: -1}, 2: {0: 0, 1: 0}}  # 奖励函数
gamma = 0.9  # 折扣因子

# 初始化状态值函数
V = np.zeros(len(states))

# 值迭代算法
for iteration in range(10):
    V_new = np.zeros(len(states))
    for s in states:
        V_new[s] = max([sum([P[s][a][1] == s_prime * (R[s][a] + gamma * V[s_prime]) for s_prime in states]) for a in actions])
    V = V_new
    print(f"Iteration {iteration+1}: V = {V}")

# 可视化状态值函数的变化
plt.plot(range(1, 11), [V[0] for _ in range(10)], label='State 0')
plt.plot(range(1, 11), [V[1] for _ in range(10)], label='State 1')
plt.plot(range(1, 11), [V[2] for _ in range(10)], label='State 2')
plt.xlabel('Iteration')
plt.ylabel('Value Function')
plt.title('Value Function Iteration')
plt.legend()
plt.show()

这段代码首先定义了一个简单的强化学习问题,包括状态空间、动作空间、状态转移概率和奖励函数。然后,它使用值迭代算法来迭代计算状态值函数,并打印出每次迭代后的状态值函数。最后,它使用matplotlib库来绘制状态值函数随迭代次数变化的曲线,以便我们可以直观地看到算法的收敛过程。


http://www.kler.cn/news/288587.html

相关文章:

  • 物业|基于SprinBoot+vue的物业管理系统(源码+数据库+文档)
  • 深入理解 CSS Flex 布局
  • Golang 字面量的表示
  • 【HarmonyOS 4.0】应用级变量的状态管理
  • 每天一个数据分析题(五百一十二)- 数据标准化
  • SprinBoot+Vue在线商城微信小程序的设计与实现
  • DZ主题模板 Discuz迪恩淘宝客购物风格商业版模板
  • Git和SVN了解
  • blender插件库
  • Unity URP支持多光源阴影
  • 解决windterm莫名其妙输入ctrl+c的问题
  • 【IC设计】跨时钟异步处理系列——单比特跨时钟
  • 时间序列的解密者:循环神经网络在时间序列分析中的应用
  • 【docker】docker 是什么
  • 为啥一定要考HCIE安全?这4个理由你不得不看
  • Docker 镜像构建
  • 持续集成与持续部署(CI/CD)的深入探讨
  • 铭江酒趣乐园小程序
  • HarmonyOS开发实战( Beta5版)跨线程序列化耗时点分析工具使用规范指南
  • 计算机基础知识+CSP真题册
  • weblogic漏洞——CVE-2020-14882
  • “京东云深海数据平台” 焕新升级
  • 艾体宝洞察丨透过语义缓存,实现更快、更智能的LLM应用程序
  • 计算二叉树的深度(LeetCode)
  • 旗帜分田(华为od机考题)
  • 用ChatGPT提升论文质量:改进语法、用词和行文的有效方法
  • WinForm技巧之自定义条件
  • 1688精选货源API接口升级||1688选品
  • 数学基础 -- 线性代数之行阶梯形
  • JavaScript高级进阶(一)