强化学习(一)Q-learning

Q-learning 学习笔记

Q-learning 是一种无模型的强化学习算法,用于学习给定状态下执行某个动作所得到的预期效用。它可以在复杂的环境中寻找最优策略,即在任何给定的状态下选择能获得最高长期回报的动作。下面是一份 Q-learning 的学习笔记,包括基本概念、算法流程和实现步骤。

基本概念

  • Agent(智能体):在环境中执行动作的实体。
  • Environment(环境):智能体所处并与之交互的外部世界。
  • State(状态):环境在任何特定时间点的情况或属性,通常表示为(S)。
  • Action(动作):智能体在某状态下可以采取的行动,表示为(A)。
  • Reward(奖励):执行一个动作后环境提供给智能体的即时反馈,表示为(R)。
  • Policy(策略):从状态到动作的映射,即智能体在某状态下应采取什么动作。
  • Q-value(Q值):表示在某状态下采取某动作所期望得到的回报。

算法流程

Q-learning 的目标是学习一个策略,使得对于给定的状态(s)和动作(a),可以获得最大的期望回报。它通过不断更新一个称为 Q-table 的表格来实现,表格中的每个条目(Q(s, a))表示在状态(s)下采取动作(a)的预期效用。

  1. 初始化:随机初始化 Q-table。
  2. 探索或利用:使用 ε-greedy 策略决定是探索新动作还是利用已知的最佳动作。
  3. 执行动作:智能体在当前状态下执行动作,并观察奖励和新的状态。
  4. 更新 Q-table:使用以下更新公式:

(1)Q(s,a)=Q(s,a)+α[R(s,a)+γmaxaQ(s,a)Q(s,a)]
(2)Q(s,a)(1α)Q(s,a)+α(r+γmaxaQ(s,a))

该公式中α决定了新信息覆盖旧信息的速度,而γ则决定了未来奖励的重要性。该公式通过计算实际获得的即时奖励R(s,a)加上未来可能状态的最大预期奖励(折扣后的),并将其与当前的Q(s,a)值进行比较,来更新Q(s,a)值。更新的幅度由α和时序差异项的大小共同决定。

其中:

  • Q(s,a) 是当前状态-动作对的 Q 值。
  • α 是学习率。
  • R(s,a) 是执行动作(a)后获得的即时奖励。
  • γ 是折扣因子,表示未来奖励的重要程度。
  • maxaQ(s,a) 是新状态下所有可能动作的最大 Q 值。
  1. 重复步骤 2-4,直到策略收敛。

实现步骤

环境设置

首先,需要设置或选择一个环境,常用的环境包括但不限于 OpenAI Gym 提供的环境。

Q-table 初始化

Q-table 可以使用一个二维数组表示,其行数对应状态的数量,列数对应动作的数量。初始时,Q-table 中的所有值可以设为0或随机值。

选择动作

使用 ε-greedy 策略选择动作,即有 ε 的概率随机选择一个动作(探索),有 (1- ε) 的概率选择当前已知的最佳动作(利用)。

更新 Q-table

在执行选定的动作后,根据上述 Q-learning 更新公式更新 Q-table。

训练与测试

posted @   Monster_bird  阅读(256)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示