强化学习笔记:Sarsa算法

1 Sarsa(0)

Sarsa算法和TD类似,只不过TD是更新状态的奖励函数V,这里是更新Q函数强化学习笔记:Q-learning :temporal difference 方法_UQI-LIUWJ的博客-CSDN博客

TD
Sarsa

 该算法由于每次更新值函数需要知道当前的状态(state)、当前的动作(action)、奖励(reward)、下一步的状态(state)、下一步的动作(action),即 (St​,At​,Rt+1​,St+1​,At+1​) 这几个值 ,由此得名 Sarsa 算法。

1.1 表格形式的SARSA

  • SARSA算法由如下的贝尔曼方程推导出

 其中:

 

 2 n-step Sarsa

 3 与环境交互

         右边是环境,左边是 agent 。

        我们每次跟环境交互一次之后呢,就可以 learn 一下,向环境输出 action,然后从环境当中拿到 state 和 reward。

        Agent 主要实现两个方法:

  • 一个就是根据 Q 表格去选择动作,输出 action。
  • 另外一个就是拿到 (St​,At​,Rt+1​,St+1​,At+1​) 这几个值去更新我们的 Q 表格。

4 Sarsa on-policy

        Sarsa 是一种 on-policy 策略。

        Sarsa 优化的是它实际执行的策略,它直接拿下一步会执行的 action (At+1) 来去优化 Q 表格,所以 on-policy 在学习的过程中,只存在一种确定的策略,它用这种确定的策略去做 action 的选取,也用一种这种确定的策略去做优化。

5 和Q-learning的区别

Q-learningSARSA
表格形式
表格形式中每一个单元的意义

最优动作价值函数Q*

某种策略\pi对应的价值函数Q_\pi

贝尔曼方程

Q_*(s_t,a_t)

\large =E_{S_{t+1}~p(\dot|s_t,a_t)}[R_t+\gamma \max_{A\in A}Q_* (S_{t+1},A)|S_t=s_t,A_t=a_t]

【对于t+1时刻的action,Q-learning选择Q最大的那个】

Q_\pi(s_t,a_t)

=E_{S_{t+1},A_{t+1}}[R_t+\gamma Q_\pi (S_{t+1},A_{t+1})|S_t=s_t,A_t=a_t]

【对于t+1时刻的action,SARSA根据\pi来加权】

q的更新

贝尔曼放是关于什么的期望方程右边的期望是关于下一时刻状态S_{t+1} 求的(给定s_ta_t,t+1取什么状态是一个概率【这个由environment决定】)

方程右边的期望是关于下一时刻状态S_{t+1} 和下一时刻所采取的动作A_{t+1}求的(给定s_ta_t,t+1取什么状态是一个概率【这个由environment决定】;给定S_{t+1},采取什么动作也是一个概率【这个由策略\pi决定】)

——>相比于Q-learning,SARSA依赖于具体的策略!

异策略(Off policy)

【因为Q-learning的目标是学习Q*,这个与具体的策略无关(换句话说,Q-learning t+1步之后的策略就是每次选择Q最大的action】

同策略(On policy)
是否允许经验回放可以使用经验回放不可以使用经验回放
神经网络形式
神经网络的训练流程
  • 观测到当前状态s_t随机抽样得到一个actiona_t
  • agent执行动作a_t后,environment返回奖励r_t和新的状态S_{t+1}
  • 给定一个四元组(s_t,a_t,r_t,s_{t+1}),我们计算出DQN的预测值\hat{q_t}=Q(s_t,a_t;w)
  • 计算TD目标\hat{y_t}=r_t+\gamma \max_{\alpha \in A}Q(s_{t+1},a;w)
  • 计算TD误差\delta_t=\hat{q_t}-\hat{y_t}
  • 更新DQN参数w \leftarrow w-\alpha \delta_t \nabla_w Q(s_t,a_t;w)

【Q(s,a;w)是用来估算Q*(s,a)的】

  • 观测到当前状态s_t根据当前策略\pi,对action做采样a_t \sim \pi_{now}(\cdot|st)
  •  agent执行动作a_t后,environment返回奖励r_t和新的状态S_{t+1}

  • 根据当前策略做采样\widetilde{a_{t+1}} \sim \pi_{now}(\cdot|s_{t+1})

  • 给定一个五元组(s_t,a_t,r_t,s_{t+1},\widetilde{a_{t+1}}),我们计算出DQN的预测值\hat{q_t}=Q(s_t,a_t;w)
  • 计算TD目标\hat{y_t}=r_t+\gamma q(s_{t+1},\widetilde{a_{t+1}};w)
  • 计算TD误差\delta_t=\hat{q_t}-\hat{y_t}
  • 更新SARSA参数w \leftarrow w-\alpha \delta_t \nabla_w Q(s_t,a_t;w) 

 【Q(s,a;w)是用来估算Q\pi(s,a)的】

6 关于经验回放的一个疑问(欢迎讨论)

在学习了DPG确定策略梯度后,有一个小问题想和大家探讨一下:就是像SARSA这样的同策略,就算是用了经验回放,会有很大的影响嘛?

因为我更新sarsa的五元组里面(s_t,a_t,r_t,s_{t+1},\widetilde{a_{t+1}}),受到策略\pi影响的就是(a_t,\widetilde{a_{t+1}})s_t是已知,(r_t,s_{t+1})是和环境交互的结果,与策略\pi关系不大。

策略\pi输出的是基于s_t的action的一个概率分布。换句话说,不管 策略\pi 的参数是什么,某一个动作a都能取到,只不过是取到的概率的不同。

那么这样的话,我agent实时交互得到动作(a_t,\widetilde{a_{t+1}})和使用过去的经验(a_t,\widetilde{a_{t+1}}),有什么区别嘛?(因为  策略\pi 参数的变动,影响的也只是取到 动作(a_t,\widetilde{a_{t+1}}) 的概率,不代表 \pi 参数更新后,(a_t,\widetilde{a_{t+1}})取不到啊。。。)

那这样的话,我像SARSA这样的同策略模型,也不是不可以使用经验回放?

 

 

 

 

 

 

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
Sarsa算法是一种基于Q-learning的强化学习算法,用于解决马尔可夫决策过程(MDP)中的问题。Sarsa是State-Action-Reward-State-Action的缩写,它是一种在线学习算法,能够逐步更新Q值函数来寻找最优的动作策略。 Sarsa算法的基本思想是通过不断地与环境进行交互来学习最优的行动策略。在每个时间步骤中,算法会根据当前的状态选择一个行动,并观察到下一个状态和获得的奖励。然后,它会根据这些信息来更新Q值函数,以改进行动策略。 具体来说,Sarsa算法的更新规则如下: 1. 在当前状态s,选择一个行动a,可以使用ε-greedy策略来进行行动选择,即以ε的概率选择一个随机行动,以1-ε的概率选择具有最大Q值的行动。 2. 执行行动a,观察到下一个状态s'和获得的奖励r。 3. 根据新的状态s'和选择的行动a',使用Sarsa的更新规则来更新Q值函数: Q(s, a) = Q(s, a) + α * (r + γ * Q(s', a') - Q(s, a)) 其中,α是学习率,γ是折扣因子,用于衡量当前状态与下一个状态之间的重要性。 通过不断地迭代和更新Q值函数,Sarsa算法能够逐步收敛到最优的Q值函数,从而得到最优的行动策略。 总结起来,Sarsa算法是一种基于Q-learning的在线强化学习算法,通过与环境的交互和不断的Q值函数更新来学习最优的行动策略。它适用于解决马尔可夫决策过程中的问题,并可以在各种应用领域中得到有效的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值