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

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

关键词提炼

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

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

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_newprint(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.mzph.cn/news/878570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视联动力数字科技新成果闪耀2024数博会

在2024年的8月28日至30日,贵阳举办的中国国际大数据产业博览会上,视联动力带来了一系列引人注目的技术和创新应用。 这场为期三天的展览会展示了公司在数字经济发展领域的最新成就,特别是国产通信协议技术方面的进展。 视联动力重点展出了算…

QGraphicsview相关学习

文章学习自: Qt_绘图框架_QGraphicsview实现缩放移动图片_Livy0123的博客-CSDN博客 这里进行一些自己的分析和理解。 (1) 自定义类MyGraphicsView继承自QGraphicsView 核心是重定义的滚轮事件。 [virtual protected] void QGraphicsView::wheelEvent(QWheelEve…

《python语言程序设计》第8章第11题将反向字符串 编写一个函数反向一个字符串,reverse(s)

def reverse(text_arrange):len_text len(text_arrange)dec_text ""for i in range(1, len_text 1):# print(i)dec_text text_arrange[-i]print(f"反向输出{dec_text}")reverse("12345678") reverse("abcdefg")

每日刷题(图论)

P1119 灾后重建 P1119 灾后重建 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 看数据范围知道需要用到Floyd算法,但是道路是不能直接用的,需要等到连接道路的两个村庄重建好才可以使用,所以这需要按照时间依次加入中转点&#xff0c…

微信小程序接入客服功能

前言 用户可使用小程序客服消息功能,与小程序的客服人员进行沟通。客服功能主要用于在小程序内 用户与客服直接沟通用,本篇介绍客服功能的基础开发以及进阶功能的使用,另外介绍多种客服的对接方式。 更多介绍请查看客服消息使用指南 客服视…

城市智慧公厕建设,提高市民使用体验,提升城市形象

随着智慧城市的建设步伐不断加快,智慧公厕作为城市公共服务设施的重要组成部分,正逐渐成为提升市民生活质量和城市形象的关键环节。智慧公厕不仅通过一系列先进的软硬件技术改善了市民的如厕体验,还提升了城市的管理水平和文明程度。本文将详…

利用深度学习实现验证码识别-3-ResNet18

在当今数字化时代,验证码作为一种重要的安全验证手段,广泛应用于各种网络场景。然而,传统的验证码识别方法往往效率低下,准确率不高。今天,我们将介绍一种基于 ResNet18 的验证码识别方法,它能够高效、准确…

Canvas绘制线条时断断续续的

解决线条断断续续的关键代码如下: 我们可以使用quadraticCurveTo来实现贝塞尔曲线使其变成光滑的曲线 注意: ctx.value.lineCap "round"; ctx.value.lineJoin "round"; 这两个属性是必须设置的 lastX,…

域名是什么

在这个数字世界中,域名无疑是连接用户与网站的关键纽带。域名,是由一串字符组成的地址,用于在互联网上唯一标识和定位一个特定的资源。本文将深入探讨域名的概念、作用以及对互联网发展的重要性。 一、域名的定义与结构 域名可以看作是互联网…

MySQL第10讲--约束的介绍

文章目录 前言约束约束的演示 外键约束删除外键外键删除/更新行为 前言 在第9讲MySQL第9讲–函数的介绍中我们主要介绍了几种mysql的内置函数:字符串函数、数值函数、流程函数、日期函数,并对这些函数中常用的几种函数做了总结,如下图所示&am…

大跨度工业仓储气膜:零排放与消防安全的理想选择—轻空间

在现代工业仓储领域,气膜结构建筑因其独特的优势逐渐受到企业的青睐。它不仅能够提供大跨度的无柱空间,还具备零排放、环保、快速建造、灵活应用等诸多优点,同时满足严格的消防安全要求,是实现高效仓储管理和可持续发展的理想选择…

密钥分发与公钥认证:保障网络通信的安全

在网络通信中,密钥的安全分发和公钥的有效认证是确保系统安全的关键。本文将为基础小白介绍密钥分发与公钥认证的基本概念和实际应用,帮助大家更好地理解这些技术如何保障我们的网络通信安全。 1. 密钥分发与公钥认证的背景 由于密码算法是公开的&…

每天分享一个FPGA开源代码(2)- spi 读写Flash

Flash的用途主要是用于存储主控制器的程序,SPI -Flash芯片就是支持SPI通讯协议的flash芯片。 在FPGA开发中,一般有这两种方式下载程序到板子上: (1)通过 JTAG下载程序到FPGA中直接运行,下载速度快&#xff…

从误删到重生:2024年数据恢复软件市场新趋势与精选工具

现在科技发展越来越先进,大部分的办公内容也都是通过电脑来进行操作的。但是总免不了偶尔会遇到电脑蓝屏或者其他原因导致数据丢失的情况。那辛辛苦苦做好的材料不见了一定很恼火。这次我分享几个电脑数据恢复工具来解决这个问题。 1.福晰数据恢复 连接直达&#…

C++ | Leetcode C++题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {int n s.size(), m t.size();vector<vector<int> > f(m 1, vector<int>(26, 0));for (int i 0; i < 26; i) {f[m][i] m;}for (int i m - 1; …

操作系统面试真题总结(五)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 线程切换要保存哪些上下文&#xff1f; 当发生线程切换时&#xf…

【论文阅读】Stealing Image-to-Image Translation Models With a Single Query(2024)

摘要 Training deep neural networks(训练深度神经网络) requires(需要) significant computational resources(大量计算资源) and large datasets(大型数据集) that are often confidential(机密的) or expensive(昂贵的) to collect. As a result(因此), owne…

sed awk 第二版学习(二)—— 正则表达式语法

目录 一、表达式 二、成行的字符 1. 反斜杠 2. 通配符 3. 编写正则表达式 4. 字符类 &#xff08;1&#xff09;字符的范围 &#xff08;2&#xff09;排除字符类 &#xff08;3&#xff09;POSIX 字符类补充 5. 重复出现的字符 6. 匹配单词 7. gres 替换脚本 8. …

2024-09-02 Ubuntu固定USB串口名(包括1拖N的USB串口)

在运行Ubuntu系统的开发板上,如果使用可插拔的USB串口,有时候程序正在运行时,如果突然连接传感器的USB串口设备被插拔了一下,这时,会发现系统中的USB串口名发生了改变。例如,插拔之前是/dev/ttyUSB0,插拔之后变成了/dev/ttyUSB3。发生这种情况的时候,有时候会导致程序无…

关于VUE3开发频繁引入ref,reactive,computed等基础函数。

利用unplugin-auto-import插件可以避免频繁引入ref&#xff0c;reactive&#xff0c;computed等基础函数。 1.安装unplugin-auto-import依赖 npm i -D unplugin-auto-import 2.在vite.config.ts中注入依赖 效果