1. Q-learning算法概述:强化学习的核心方法
Q-learning作为强化学习领域最具影响力的算法之一,其核心思想可以概括为"用未来最好的可能结果指导当前决策"。这种离策略(off-policy)学习方法由Watkins于1989年提出,至今仍是许多实际应用的基础框架。
1.1 算法基本概念
Q-learning的核心是学习一个动作价值函数Q(s,a),它表示在状态s下采取动作a后,能够获得的累积奖励的期望值。与同策略(on-policy)方法不同,Q-learning在更新时不依赖于当前策略选择的动作,而是直接使用下一状态的最大Q值进行更新,这使得它具有更强的探索能力和收敛保证。
关键理解:Q-learning的"离策略"特性就像学生在自学时,不仅参考老师讲授的内容(当前策略),还会主动寻找最优的学习资料(最优策略)来提高自己。
1.2 算法核心公式解析
Q-learning的更新公式看似简单,却蕴含着深刻的强化学习原理:
code复制Q(s,a) ← Q(s,a) + α [R + γ * max_a' Q(s',a') - Q(s,a)]
让我们拆解这个公式的每个部分:
- Q(s,a):当前状态-动作对的价值估计
- α(学习率):控制新信息覆盖旧信息的速度,通常设置为0.1
- R(即时奖励):执行动作后环境直接给予的反馈
- γ(折扣因子):权衡即时奖励和未来奖励的重要性,一般取0.9-0.99
- max_a' Q(s',a'):下一状态所有可能动作中的最大Q值
这个更新过程实际上是在不断缩小预测值(当前Q值)和目标值(即时奖励加未来最大可能收益)之间的差距,专业术语称为时序差分(Temporal Difference)学习。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Q-learning算法实现细节
2.1 表格型Q-learning实现
表格型Q-learning是最基础的实现形式,适用于离散状态和动作空间。以下是Python实现的核心代码:
python复制import numpy as np
class QLearning:
def __init__(self, n_states, n_actions, alpha=0.1, gamma=0.9, epsilon=0.1):
self.Q = np.zeros((n_states, n_actions)) # Q表初始化
self.alpha = alpha # 学习率
self.gamma = gamma # 折扣因子
self.epsilon = epsilon # 探索率
def choose_action(self, state):
"""ε-greedy策略选择动作"""
if np.random.uniform() < self.epsilon:
return np.random.choice(len(self.Q[state])) # 探索
return np.argmax(self.Q[state]) # 利用
def learn(self, state, action, reward, next_state, done):
