SARSA 算法详解:python从零实现
喜欢可以订阅专栏哟
第一章 强化学习基础与核心概念
1.1 强化学习的定义与特点
强化学习(Reinforcement Learning, RL)是机器学习三大范式之一(监督学习、无监督学习、强化学习),其核心思想是通过智能体(Agent)与环境(Environment)的持续交互来学习最优策略。与监督学习需要带标签的训练数据不同,强化学习通过试错机制(Trial-and-Error)和奖励信号(Reward Signal)来指导学习过程。
关键特征包括:
- 延迟奖励:智能体的动作可能在未来多个时间步后才获得反馈
- 序列决策:决策之间存在时间相关性,当前动作影响后续状态
- 探索与利用平衡:在尝试新动作(探索)与执行已知最优动作(利用)间保持平衡
- 在线学习:通过与环境的实时交互进行学习
1.2 强化学习基本框架
强化学习系统由以下核心要素构成:
- 智能体(Agent):学习主体,负责做出决策
- 环境(Environment):智能体交互的对象,提供状态和奖励
- 状态(State):对环境的完整描述,记为 s ∈ S s \in \mathcal{S} s∈S
- 动作(Action):智能体可执行的操作,记为 a ∈ A a \in \mathcal{A} a∈A
- 策略(Policy):行为函数 π ( a ∣ s ) \pi(a|s) π(a∣s),定义在给定状态下选择动作的概率分布
- 奖励(Reward):环境反馈的即时信号 r = R ( s , a , s ′ ) r = R(s,a,s') r=R(s,a,s′)
- 价值函数(Value Function):长期回报的预测 V π ( s ) V^\pi(s) Vπ(s)或 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)
- 环境模型(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(s′∣s,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+γa′maxQ(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+1∣st,at)=