Sarsa理论

1.Sarsa是一个基于价值的算法

s:state表示状态
a:action动作
r:reward奖励
p:状态转移概率,在t时刻的S1状态下执行动作A,转移到t+1时刻的状态S2并且拿到R的概率

2.一个重要的概念,动作状态价值Q函数:

它是指未来总收益,可以用来评价当前的动作是好是坏。因为现实生活中的回报往往也是滞后的。
就比如说送病人去医院(+1000),路上有红绿灯(-1),那么这个时候肯定是送到医院的价值更大。

未来总收益可以结合衰减因为γ:还是要务实对哇。
首先是未来总收益,从公式中就可以看出当前的收益是跟未来的收益密切相关的。并且Gt和Gt+1之间存在递推关系
在这里插入图片描述
然后,Sarsa的核心公式如下:Q最终逼近的就是G
在这里插入图片描述

def test_episode(env, agent):
    total_reward = 0
    obs = env.reset()
    while True:
        action = agent.predict(obs)  # greedy
        next_obs, reward, done, _ = env.step(action)
        total_reward += reward
        obs = next_obs
        time.sleep(0.5)
        env.render()
        if done:
            print('test reward = %.1f' % (total_reward))
            break
 def learn(self, obs, action, reward, next_obs, next_action, done):
        """ on-policy
            obs: 交互前的obs, s_t
            action: 本次交互选择的action, a_t
            reward: 本次动作获得的奖励r
            next_obs: 本次交互后的obs, s_t+1
            next_action: 根据当前Q表格, 针对next_obs会选择的动作, a_t+1
            done: episode是否结束
        """
        predict_Q = self.Q[obs, action]
        if done:
            target_Q = reward  # 没有下一个状态了
        else:
            target_Q = reward + self.gamma * self.Q[next_obs,
                                                    next_action]  # Sarsa
        self.Q[obs, action] += self.lr * (target_Q - predict_Q)  # 修正q

3.什么叫MDP?

就是t+1时刻的状态 仅取决于t时刻的状态和动作。
在这里插入图片描述

4.Q表格:

在这里插入图片描述
上图的动作维度就是4个,比如上下左右;观测维度若干。
代码来自paddle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值