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

SARSA 算法详解:python从零实现

喜欢可以订阅专栏哟

第一章 强化学习基础与核心概念

1.1 强化学习的定义与特点

强化学习(Reinforcement Learning, RL)是机器学习三大范式之一(监督学习、无监督学习、强化学习),其核心思想是通过智能体(Agent)与环境(Environment)的持续交互来学习最优策略。与监督学习需要带标签的训练数据不同,强化学习通过试错机制(Trial-and-Error)和奖励信号(Reward Signal)来指导学习过程。

关键特征包括:

  • 延迟奖励:智能体的动作可能在未来多个时间步后才获得反馈
  • 序列决策:决策之间存在时间相关性,当前动作影响后续状态
  • 探索与利用平衡:在尝试新动作(探索)与执行已知最优动作(利用)间保持平衡
  • 在线学习:通过与环境的实时交互进行学习
1.2 强化学习基本框架

强化学习系统由以下核心要素构成:

  1. 智能体(Agent):学习主体,负责做出决策
  2. 环境(Environment):智能体交互的对象,提供状态和奖励
  3. 状态(State):对环境的完整描述,记为 s ∈ S s \in \mathcal{S} sS
  4. 动作(Action):智能体可执行的操作,记为 a ∈ A a \in \mathcal{A} aA
  5. 策略(Policy):行为函数 π ( a ∣ s ) \pi(a|s) π(as),定义在给定状态下选择动作的概率分布
  6. 奖励(Reward):环境反馈的即时信号 r = R ( s , a , s ′ ) r = R(s,a,s') r=R(s,a,s)
  7. 价值函数(Value Function):长期回报的预测 V π ( s ) V^\pi(s) Vπ(s) Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)
  8. 环境模型(Model):可选组件,用于预测状态转移和奖励

数学表示为马尔可夫决策过程(Markov Decision Process, MDP)五元组:
⟨ S , A , P , R , γ ⟩ \langle \mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma \rangle S,A,P,R,γ
其中:

  • P \mathcal{P} P为状态转移概率 P ( s ′ ∣ s , a ) P(s'|s,a) P(ss,a)
  • R \mathcal{R} R为奖励函数 R ( s , a , s ′ ) R(s,a,s') R(s,a,s)
  • γ ∈ [ 0 , 1 ] \gamma \in [0,1] γ[0,1]为折扣因子
1.3 强化学习主要算法分类

根据不同的学习策略,强化学习算法可分为:

类别特点代表算法
基于价值(Value-Based)学习价值函数,通过价值选择动作Q-Learning, SARSA
基于策略(Policy-Based)直接优化策略函数REINFORCE, PPO
Actor-Critic结合价值函数和策略函数A3C, SAC
模型基础(Model-Based)建立环境模型进行规划Dyna-Q, MCTS
1.4 时序差分学习(Temporal Difference)

SARSA属于时序差分学习算法,结合了蒙特卡洛方法和动态规划的优点:

  • 蒙特卡洛特性:从实际经验中学习,不需要环境模型
  • 动态规划特性:基于现有估计进行增量更新(自举法)

TD学习更新公式:
V ( s t ) ← V ( s t ) + α [ r t + 1 + γ V ( s t + 1 ) − V ( s t ) ] V(s_t) \leftarrow V(s_t) + \alpha [r_{t+1} + \gamma V(s_{t+1}) - V(s_t)] V(st)V(st)+α[rt+1+γV(st+1)V(st)]
其中 α \alpha α为学习率, γ \gamma γ为折扣因子

1.5 SARSA算法定位

SARSA(State-Action-Reward-State-Action)是一种on-policy的TD控制算法:

  • On-policy:使用当前策略生成样本并更新同一策略
  • TD控制:通过TD误差更新动作价值函数 Q ( s , a ) Q(s,a) Q(s,a)
  • 五元组更新:需要 ( s t , a t , r t + 1 , s t + 1 , a t + 1 ) (s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1}) (st,at,rt+1,st+1,at+1)进行更新

与Q-Learning的关键区别:
SARSA:  Q ( s , a ) ← Q ( s , a ) + α [ r + γ Q ( s ′ , a ′ ) − Q ( s , a ) ] \text{SARSA: } Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma Q(s',a') - Q(s,a)] SARSA: Q(s,a)Q(s,a)+α[r+γQ(s,a)Q(s,a)]
Q-Learning:  Q ( s , a ) ← Q ( s , a ) + α [ r + γ max ⁡ a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ] \text{Q-Learning: } Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma \max_{a'} Q(s',a') - Q(s,a)] Q-Learning: Q(s,a)Q(s,a)+α[r+γamaxQ(s,a)Q(s,a)]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第二章 SARSA算法的数学原理与推导

2.1 马尔可夫决策过程(MDP)回顾

SARSA算法的理论基础建立在马尔可夫决策过程之上。MDP的核心性质是马尔可夫性:
P ( s t + 1 ∣ s t , a t ) = P ( s t + 1 ∣ s t , a t , s t − 1 , a t − 1 , . . . ) P(s_{t+1}|s_t,a_t) = P(s_{t+1}|s_t,a_t,s_{t-1},a_{t-1},...) P(st+1st,at)=

相关文章:

  • TDA4VM SDK J721E (RTOS/Linux) bootloaders梳理笔记
  • 51c嵌入式~单片机~合集9
  • Calculus on Computational Graphs: Backpropagation
  • VB.net序列化和反序列化的使用方法和实用场景
  • xray-poc编写示例
  • Java 泛型参数问题:‘ResponseData.this‘ cannot be referenced from a static contex
  • GoogleTest:简单示例及ASSERT/EXPECT说明
  • 【编译原理】第四章 习题
  • pandas读取Excel数据(.xlsx和.xls)到treeview
  • 传感器的精度,灵敏度等概念介绍
  • terraform实现本地加密与解密
  • vue3内置组件Suspense的使用
  • 在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?
  • Nginx 核心功能02
  • WGCLOUD使用 - 如何监控RabbitMQ运行参数
  • Python10天冲刺-设计模型之策略模式
  • 机器学习经典算法:用决策树原理优化新能源汽车续航能力
  • 【Redis】String详细介绍及其应用场景
  • 深度学习系统学习系列【1】之基本知识
  • npm宿主依赖、宿主环境依赖(peerDependencies)(指由宿主环境提供的依赖)
  • 49:49白热化,美参议院对新关税政策产生巨大分歧
  • 解放日报:人形机器人新赛道正积蓄澎湃动能
  • 先去上海后赴北京,苏中城市泰州为何接连拥抱顶流“大城”?
  • 国台办:民进党当局所谓“对等尊严”,就是企图改变两岸同属一中
  • 周劼已任中国航天科技集团有限公司董事、总经理、党组副书记
  • 鲁迅先生儿媳、周海婴先生夫人马新云女士逝世,享年94岁