Q learning参数的理解与选取

本文详细解析了强化学习中epsilongreedy算法的工作原理及其参数设置,包括如何理解exploration与exploitation之间的权衡,以及alpha和gamma这两个关键参数的作用与设定建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、epsilon greedy 算法

Q: 如何理解 greed-epsilon 方法/如何设置 epsilon/如何理解 exploration & exploitation 权衡?
A: (1) 我们的小车一开始接触到的 state 很少,并且如果小车按照已经学到的 qtable 执行,那么小车很有可能出错或者绕圈圈。同时我们希望小车一开始能随机的走一走,接触到更多的 state。(2) 基于上述原因,我们希望小车在一开始的时候不完全按照 Q learning 的结果运行,即以一定的概率 epsilon,随机选择 action,而不是根据 maxQ 来选择 action。然后随着不断的学习,那么我会降低这个随机的概率,使用一个衰减函数来降低 epsilon。(3) 这个就解决了所谓的 exploration and exploitation 的问题,在“探索”和“执行”之间寻找一个权衡。

2、alpha 的解释

 alpha 是一个权衡上一次学到结果和这一次学习结果的量,如:Q_new = (1-alpha)*Q_old + alpha*(instant reward+gamma*Q_current。
alpha 设置过低会导致机器人只在乎之前的知识,而不能积累新的 reward。一般取 0.5 来均衡以前知识及新的 reward。
3、gamma

gamma 是考虑未来奖励对于现在影响的因子,是一个(0,1)之间的值。一般我们取0.9,能够充分地对外来奖励进行考虑。
实际上如果你将它调小了,你会发现终点处的正奖励不能够“扩散”到周围,也就是说,机器人很有可能无法学习到一个到达终点的策略。
--------------------- 
作者:Walter_Silva 
来源:CSDN 
原文:https://blog.csdn.net/Gin077/article/details/82987599 
版权声明:本文为博主原创文章,转载请附上博文链接!

### Q-Learning 算法原理 Q-Learning 是一种基于值的强化学习算法,旨在通过环境互动来学习最优策略[^2]。该算法适用于解决马尔可夫决策过程(MDP),并能有效处理诸如游戏、机器人控制以及资源管理等多种类型的决策问题。 #### 学习机制 核心在于维护一张动作价值表(Action-Value Table),也称为 Q 表。这张表格记录了在给定状态下采取特定行动所能获得预期回报的最大可能值——即所谓的 Q 值。随着经验积累,这些估计会逐渐逼近真实情况下的最佳选择。 每当智能体执行某个操作后收到即时反馈(奖励), 就会对相应状态-行为对的状态价值函数进行调整: \[ Q(s_t,a_t) \leftarrow (1-\alpha)Q(s_t,a_t)+\alpha[r_{t+1}+\gamma max_aQ(s_{t+1},a)] \] 这里 \(s\) 和 \(a\) 分别代表当前所处的情境和做出的动作;\(r\) 则表示立即得到的结果分数;而参数 \(\alpha\) 控制着新旧信息融合的比例,决定了收敛速度;折扣因子 \(\gamma\) 反映对未来收益重视程度的影响权重[^4]。 ### 实现方式 为了便于理解和实践,在 Python 编程语言中有多种途径可以实现上述理论框架: ```python import numpy as np class QLearningAgent(object): def __init__(self, actions, alpha=0.5, gamma=0.9, epsilon=0.1): self.q_table = {} self.actions = actions self.alpha = alpha self.gamma = gamma self.epsilon = epsilon def choose_action(self, state): if np.random.uniform() < self.epsilon or state not in self.q_table: action = np.random.choice(self.actions) else: q_values = self.q_table[state] max_q_value = max(q_values.values()) best_actions = [action for action, value in q_values.items() if value == max_q_value] action = np.random.choice(best_actions) return action def learn(self, state, action, reward, next_state): if state not in self.q_table: self.q_table[state] = {act : 0.0 for act in self.actions} current_q = self.q_table[state][action] if next_state is None: future_reward = 0 elif next_state not in self.q_table: self.q_table[next_state] = {act : 0.0 for act in self.actions} future_reward = 0 else: future_reward = max(self.q_table[next_state].values()) new_q = (1-self.alpha)*current_q + self.alpha*(reward+self.gamma*future_reward) self.q_table[state][action] = new_q ``` 这段代码定义了一个简单的 Q-learning 智能代理类 `QLearningAgent` ,其中包括初始化方法 (`__init__`) 来设置必要的超参,并提供了两个主要功能:一是根据现有知识选取适当的操作(`choose_action`);二是依据最新经历更新内部模型(`learn`)。 ### 应用场景 Q-learning 已经被成功应用于各种领域内复杂任务求解之中,比如自动驾驶汽车路径规划、智能家居设备自动化配置优化等。此外,在计算机游戏中也有广泛应用实例,像 AlphaGo 使用的就是类似的深度增强学习架构变种形式[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值