Q-learning 算法学习

Q-learning是一种经典的无模型、基于价值的算法,它通过迭代更新状态-动作对的Q值,最终找到最优策略。

一 Q-learning的核心思想

1.1目标

学习一个状态-动作价值函数 $Q(s,a)$ ,表示在状态 s 下执行动作 a 并遵循最优策略后的最大累积奖励。

$Q(s, a)$ 的核心目标是为智能体(Agent)在复杂的动态环境中提供数据驱动的决策依据,使得它能够通过量化的方式评估每个动作的长期价值,进而逐步逼近最优策略

Q值像一张“价值地图”,指导每一步的最佳方向。

1.2核心特征

(1)离线策略(Off-policy):更新Q值时使用最大预期奖励(最优策略),而实际行动可能采用探索策略(如ε-greedy:贪婪策略)。

探索策略:智能体在训练过程中主动尝试未知或低价值状态-动作对的策略,目的是打破当前对环境的认知局限,发现潜在的更高回报路径。可以避免局部最优和应对非平稳环境。

ε-greedy(贪婪策略):以概率 $\epsilon$ 随机选择一个动作(探索),以概率 $1-\epsilon$ 选择当前最高Q值的动作(利用)。初始时 $\epsilon$ 较大,鼓励充分探索未知区域,随着训练逐步降低  $\epsilon$ ,后期倾向于利用学到的知识。

def epsilon_greedy(Q, state, epsilon):if np.random.rand() < epsilon:action = np.random.choice(possible_actions)  # 随机探索else:action = np.argmax(Q[state])  # 选择最优动作return action

(2)表格方法:适用于离散、有限的状态和动作空间,通过表格记录所有$Q(s,a)$

二 算法原理

贝尔曼方程与Q值更新

Q-learning的目标是使Q值收敛到贝尔曼最优方程:

$ Q^*(s, a) = \mathbb{E}\left[ r + \gamma \max_{a'} Q^*(s', a') \mid s, a \right] $

在每次交互中,通过时序差分(TD)学习逐步逼近最优Q值:

$ Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_t + \gamma \max_{a'} Q(s_{t+1}, a') - Q(s_t, a_t) \right] $

$\alpha$ :学习率(控制更新步长,通常0 < α ≤ 1)

$\gamma$ :折扣因子(权衡即时奖励与未来奖励,通常0 ≤ γ < 1)

新Q值=旧Q值+α⋅(TD目标−旧Q值) 

 TD目标结合了当前奖励和对未来奖励的最优估计,推动Q值向更优方向调整。

三 算法流程

输入:环境(状态集合 S,动作集合 A),学习率α,折扣率γ,探索率ϵ。

输出:最优Q值表  $Q(s,a)$

初始化Q表为全零或随机值
for episode in 1 to Max_Episodes:初始化状态swhile 状态s非终止状态:# 选择动作(平衡探索与利用)if random() < ε:随机选择动作aelse:a = argmax_a Q(s, a)# 执行动作,获得奖励和新状态s', r, done = env.step(a)# 更新Q值Q(s, a) = Q(s, a) + α * [r + γ * max(Q(s', a')) - Q(s, a)]# 进入下一状态s = s'# 可选:逐步降低ε(如ε = ε * 0.99)

四 参数设置

参数作用典型值/策略
学习率α控制Q值更新步长初期较高(如0.1~0.5),后期降低(如0.01)
折扣因子γ设定未来奖励的重要性接近1(长期考虑,如0.9~0.99)
探索率ε平衡探索与利用初始高值(如1.0),逐步衰减至0.01~0.1

收敛条件

(1)每个状态-动作对被无限次访问(充分覆盖)

 (2)学习率需满足: $ \sum \alpha = \infty, \sum \alpha^2 < \infty $

五 DQN(Deep Q-Network):Q-learning+深度学习

Q-learning的局限性:

传统Q-learning基于表格存储Q值,不适用于高维或连续状态空间(如视频游戏画面)的复杂任务。

深度神经网络的引入:

使用神经网络参数化Q值函数:$Q(s, a; \theta)$ ,输入状态 s ,输出所有动作的 Q 值。神经网络能够拟合复杂状态表示。

稳定性挑战:

直接更新Q网络会导致目标值频繁变化(Q值依赖自身参数),造成训练震荡。DQN通过以下两个关键技术解决这一问题:

(1)目标网络(Target Network):使用独立的目标网络计算目标Q值,参数定期同步,降低相关性。

(2)经验回放(Experience Replay):将交互数据存入经验池,随机采样训练,打破样本间相关性。

特性Q-learningDQN
Q值存储方式表格深度神经网络拟合
状态空间适应性仅限离散、低维可处理高维、连续状态(如图像输入)
稳定性增强技术经验回放 + 目标网络
应用场景简单环境(如网格世界)复杂环境(如Atari游戏、机器人控制)

六 应用场景 

(1)简单游戏AI(如棋牌类、迷宫导航)。

(2)库存管理(优化补货策略)。

(3)交通信号灯控制(平衡车辆通行效率)。

Q-learning作为强化学习的基石,通过贝尔曼最优方程不断优化动作价值,适用于小规模离散问题。尽管在复杂场景中被深度方法(如DQN)取代,理解Q-learning仍是掌握先进算法(如DQN、Actor-Critic)的重要前提。对于实际应用,需根据问题规模选择Q-learning或升级至深度版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906185.shtml

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

相关文章

鸿蒙生态崛起:开发者机遇与挑战并存

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 目录 引言 一、何为鸿蒙生态&#xff1f; 二、在鸿蒙生态下开发时遇到的挑战 三、对于鸿蒙生态未…

TCP/IP-——C++编程详解

1. TCP/IP 编程基本概念 TCP&#xff08;传输控制协议&#xff09;&#xff1a;面向连接、可靠的传输层协议&#xff0c;保证数据顺序和完整性。IP&#xff08;网际协议&#xff09;&#xff1a;负责将数据包路由到目标地址。Socket&#xff08;套接字&#xff09;&#xff1a…

Python图像处理基础(三)

Python图像处理基础(三) 文章目录 Python图像处理基础(三)2、计算机色彩(Computer Color)2.5 色彩分辨率2.6 灰度颜色模型2.7 CMYK 颜色模型2.7.1 K 部分2.8 HSL/HSB 颜色模型2、计算机色彩(Computer Color) 2.5 色彩分辨率 人眼可以看到许多不同的颜色,但我们的感知…

Vue路由深度解析:Vue Router与导航守卫

Vue路由深度解析&#xff1a;Vue Router与导航守卫 一、Vue Router基础与安装配置 1. Vue Router核心概念 Vue Router是Vue.js官方的路由管理器&#xff0c;主要功能包括&#xff1a; 嵌套路由映射模块化的路由配置路由参数、查询、通配符细粒度的导航控制自动激活的CSS类链…

前后端分离微服务架构

前后端分离微服务架构 介绍: 前端通过Vue和ElementUI构建界面&#xff0c;使用axios调用后端API。Nginx作为反向代理&#xff0c;将请求路由到Zuul网关。Zuul进行权限验证&#xff08;JWT&#xff09;后&#xff0c;将请求分发到微服务。(身份验证,安全防护(sql注入,xxs跨网站…

iOS 工厂模式

iOS 工厂模式 文章目录 iOS 工厂模式前言工厂模式简单工厂案例场景分析苹果类优点缺点 小结 工厂模式客户端调用**优点****缺点** 抽象工厂模式三个模式对比 前言 笔者之前学习了有关于设计模式的六大原则,之前简单了解过这个工厂模式,今天主要是重新学习一下这个模式,正式系统…

【机器学习】工具入门:飞牛启动Dify Ollama Deepseek

很久没有更新文章了,最近正好需要研究一些机器学习的东西&#xff0c;打算研究一下 difyOllama 以下是基于FN 的dify本地化部署&#xff0c;当然这也可能是全网唯一的飞牛部署dify手册 部署 官方手册&#xff1a;https://docs.dify.ai/en/getting-started/install-self-hos…

安卓A15系统实现修改锁屏界面默认壁纸功能

最近遇到一个A15系统项目&#xff0c;客户要求修改锁屏界面的默认壁纸&#xff0c;客户提供了一张壁纸图片&#xff0c;但是从A15系统的源代码查看时才知道谷歌已经去掉了相关的代码&#xff0c;已经不支持了&#xff0c;A13和A14系统好像是支持的&#xff0c;A15系统的Wallpap…

从理论到实战:模糊逻辑算法的深度解析与应用实践

从理论到实战&#xff1a;模糊逻辑算法的深度解析与应用实践 一、模糊逻辑的核心概念与数学基础 模糊逻辑&#xff08;Fuzzy Logic&#xff09;是一种处理不确定性的数学工具&#xff0c;其核心思想是将传统布尔逻辑的“非黑即白”扩展为连续的隶属度函数。例如&#xff0c;在…

正向代理与反向代理区别及应用

正向代理和反向代理是两种常见的代理服务器类型&#xff0c;它们在网络架构中扮演不同角色&#xff0c;核心区别在于代理对象和使用场景。 1. 正向代理&#xff08;Forward Proxy&#xff09; 定义&#xff1a;正向代理是客户端&#xff08;如浏览器&#xff09;主动配置的代理…

OpenCV CUDA模块中逐元素操作------逻辑运算

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 比较、AND、OR、NOT等。这类操作可用于创建基于条件的掩码&#xff0c;这对于图像分割或特征选择非常有用。 主要函数 1. 按位与 (cv::cuda::b…

一台入网的电脑有6要素, 机器名,mac,ip,俺码,网关,dns,分别有什么作用

一台入网的电脑需要配置的 六大网络要素&#xff08;机器名、MAC地址、IP地址、子网掩码、网关、DNS&#xff09;各自承担不同的关键作用&#xff0c;共同确保设备能正确通信和访问网络资源。以下是它们的详细功能解析&#xff1a; 1. 机器名&#xff08;主机名&#xff09; 作…

MySQL之储存引擎和视图

一、储存引擎 基本介绍&#xff1a; 1、MySQL的表类型由储存引擎(Storage Engines)决定&#xff0c;主要包括MyISAM、innoDB、Memory等。 2、MySQL数据表主要支持六种类型&#xff0c;分别是&#xff1a;CSV、Memory、ARCHIVE、MRG_MYISAN、MYISAM、InnoBDB。 3、这六种又分…

【Spring Boot后端组件】mybatis-plus使用

文章目录 mybatis-plus使用一、依赖引入二、添加相关配置项三、功能详解1.自增主键2.逻辑删除3.操作时间自动填充4.其他字段自动填充5.分页查询6.自定义动态查询7.代码生成器8.代码生成器(自定义模板) mybatis-plus使用 一、依赖引入 pom.xml文件 <?xml version"1.…

docker compose 启动指定的 service

使用 Docker Compose 启动指定服务 要在 Docker Compose 中启动特定的服务而不是所有服务&#xff0c;可以使用以下命令&#xff1a; docker compose up [服务名] 基本用法 启动单个服务&#xff1a; docker compose up service_name 启动多个指定服务&#xff1a; docker …

wordcount程序

### 在 IntelliJ IDEA 中编写和运行 Spark WordCount 程序 要使用 IntelliJ IDEA 编写并运行 Spark 的 WordCount 程序&#xff0c;需按照以下流程逐步完成环境配置、代码编写以及任务提交。 --- #### 1. **安装与配置 IntelliJ IDEA** 确保已正确安装 IntelliJ IDEA&#x…

SmartETL函数式组件的设计与应用

SmartETL框架主要采用了面向对象的设计思想&#xff0c;将ETL过程中的处理逻辑抽象为Loader和Processor&#xff08;对应loader模块和iterator模块&#xff09;&#xff0c;所有流程组件需要继承或实现DataProvider&#xff08;iter方法&#xff09;或JsonIterator&#xff08;…

鸿蒙AI开发:10-多模态大模型与原子化服务的集成

鸿蒙AI开发&#xff1a;10-多模态大模型与原子化服务的集成 在鸿蒙生态中&#xff0c;多模态大模型与原子化服务的集成是一个重要课题。本文将介绍如何在鸿蒙平台上进行多模态大模型与原子化服务的集成&#xff0c;以及相关的技术细节和实际案例。 鸿蒙AI开发概述 什么是鸿蒙AI…

python打卡day29@浙大疏锦行

知识点回顾 类的装饰器装饰器思想的进一步理解&#xff1a;外部修改、动态类方法的定义&#xff1a;内部定义和外部定义 作业&#xff1a;复习类和函数的知识点&#xff0c;写下自己过去29天的学习心得&#xff0c;如对函数和类的理解&#xff0c;对python这门工具的理解等&…

20250516使用TF卡将NanoPi NEO core开发板出厂的Ubuntu core22.04.3系统降级到Ubuntu core16.04.2

20250516使用TF卡将NanoPi NEO core开发板出厂的Ubuntu core22.04.3系统降级到Ubuntu core16.04.2 2025/5/16 10:58 缘起&#xff1a;NanoPi NEO core核心板出厂预制的OS操作系统为Ubuntu core22.04.3系统。 【虽然是友善之臂提供的最新的系统&#xff0c;但是缺少很多用用程序…