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

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.xdnf.cn/news/7521.html

相关文章:

  • JUC入门(三)
  • FAL API分析
  • 工会考试怎么备考
  • 如何确保低空经济中的数据安全?
  • 斜齿轮直列齿轮箱市场分析报告:驱动因素、挑战及前景预测
  • WAF深度解析:精准适配六大核心业务场景
  • Python实现的在线词典学习工具
  • JQuery 禁止页面滚动(防止页面抖动)
  • 测试开发面试题:Python高级特性通俗讲解与实战解析
  • 数据可视化热图工具:Python实现CSV/XLS导入与EXE打包
  • 软件设计师完整性约束考点分析——求三连
  • antd树结构
  • Java常见API文档(下)
  • matlab绘制光学传递函数mtf曲线
  • Pattern解说
  • CPU与vivado编译速度关系
  • C++_AVL树
  • vue2.0 的计算属性
  • 人员管理2302版本
  • 特征筛选方法总结
  • frida 配置
  • Linux基础开发工具三(git,gdb/cgdb)
  • python next 函数
  • JVM核心配置参数详解与调优指南
  • JVM之GC常见的垃圾回收器
  • 深度学习————模型保存与部署
  • pkucpc2025 L:Game on Tree
  • python学习day2(未写完,明天继续补充)
  • 洛谷B3876—— [信息与未来 2015] 中间值
  • 为 Windows 和 Ubuntu 中设定代理服务器的详细方法