基于价值的学习算法

1.背景

    本博客主要介绍了两种基于价值的强化学习算法,Sarsa算法和Q-Learning算法,并总结了两种方法的异同点。

2.算法介绍

    在基于价值的学习算法中,是根据Q函数的打分去评估当前状态 s t s_t st下每个动作的好坏,从而根据 a r g m a x Q π ( s t , a t ) argmaxQ_\pi(s_t,a_t) argmaxQπ(st,at),选取最佳的动作。在sarsa算法中,是结合了e-greedy探索和利用 a r g m a x Q π ( s t , a t ) argmaxQ_\pi(s_t,a_t) argmaxQπ(st,at)相结合的算法;而Q-learning算法则更加激进,agent每次选取最佳的动作,即 a r g m a x Q π ( s t , a t ) argmaxQ_\pi(s_t,a_t) argmaxQπ(st,at)对应的a .回顾其动作价值函数的学习方法,都是去更新Q表格,并且都是单步更新,其具体的过程是:
先得到 s t s_t st,然后agent做出动作 a t a_t at,环境发出动作 s t + 1 s_{t+1} st+1和奖励 r t r_t rt, 对于sarsa算法,其Q函数的更新方式是:
Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ ( Q ( s t + 1 , a t + 1 ) − Q ( s t , a t ) ] Q(s_t,a_t) \leftarrow Q(s_t,a_t)+\alpha[r_t+\gamma(Q(s_{t+1},a_{t+1})-Q(s_t,a_t)] Q(st,at)Q(st,at)+α[rt+γ(Q(st+1,at+1)Q(st,at)]
上述公式的含义为:

现在的Q值=原来的Q值+学习率*(立即回报+gamma*后继状态的最大Q值-原来的Q值)

    上式中, r t r_t rt是t时刻的奖励值,右边括号中的 Q ( s t + 1 , a t ) − Q ( s t , a t ) Q(s_{t+1},a_t)-Q(s_t,a_t) Q(st+1,at)Q(st,at)是表示时序差分(TD Error),即下一个时刻动作价值减去当前时刻的动作价值, Q ( s t + 1 , a t ) Q(s_{t+1},a_t) Q(st+1,at)中的 a t + 1 a_{t+1} at+1是下一步一定会执行的动作。由于状态 s t + 1 s_{t+1} st+1的不确定性,前面乘了一个折扣因子 γ \gamma γ, α \alpha α表示学习率。该公式的含义就表示在t时刻在状态 s t s_t st下选择动作 a t a_t at的价值是 Q ( s t , a t ) Q(s_t,a_t) Q(st,at),它是由当前时刻的奖励与时序差分价值的折扣之和,是一种单步更新Q表格的方法。sarsa算法在做动作时,有两种方法,一种是以 ϵ \epsilon ϵ的概率从动作集合中取探索,随机选择一个动作;另一种方法是以 1 − ϵ 1-\epsilon 1ϵ的概率利用已有的Q表格,选取价值最大的动作,即a= a r g m a x Q π ( s t , a t ) argmaxQ_\pi(s_t,a_t) argmaxQπ(st,at)
    在Q-learning中,Q表格的更新不需要用到下一个状态,因为agent的动作更加激进,每次选择价值最大的动作,即a= a r g m a x Q π ( s t , a t ) argmaxQ_\pi(s_t,a_t) argmaxQπ(st,at),其更新Q函数的方式是:
Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ ( m a x Q ( s t + 1 , a t ) − Q ( s t , a t ) ) ] Q(s_t,a_t) \leftarrow Q(s_t,a_t)+\alpha[r_t+\gamma(maxQ(s_{t+1},a_{t})-Q(s_t,a_t))] Q(st,at)Q(st,at)+α[rt+γ(maxQ(st+1,at)Q(st,at))]
    可以看到,与Sara不同的是,Q-Learning在更新Q表格的时候,不需要下一时刻的状态 s t + 1 s_{t+1} st+1

举个例子:
    在马里奥游戏中,假设当前状态是初始状态, s 1 s_1 s1,下一个状态是遇到前方是蘑菇这个状态,记作 s 2 s_2 s2,agent一共有4个动作, a 1 a_1 a1:往右, a 2 a_2 a2:往上, a 3 a_3 a3:往左, a 4 a_4 a4:往下
在这里插入图片描述
    那么它在状态 s 2 s_2 s2下选择不同的动作,对游戏的结果会造成不同影响;选择 a 1 a_1 a1会立即触碰蘑菇,agent由大变小;奖励为-50,选择 a 2 a_2 a2,可以躲避蘑菇,并顺便踩死蘑菇,奖励为+100;选择 a 3 a_3 a3,不会立即碰到蘑菇,奖励值为10;选择 a 4 a_4 a4,过一秒就会碰到蘑菇,奖励值为-20。

动作奖励
a 1 a_1 a1-50
a 2 a_2 a2+100
a 3 a_3 a310
a 4 a_4 a4-20

    我们使用q-learning算法,每次选取最有的动作;根据Q-learning的公式我们来填充Q表格
Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ ( Q ( s t , a t + 1 ) − Q ( s t , a t ) ] Q(s_t,a_t) \leftarrow Q(s_t,a_t)+\alpha[r_t+\gamma(Q(s_{t},a_{t+1})-Q(s_t,a_t)] Q(st,at)Q(st,at)+α[rt+γ(Q(st,at+1)Q(st,at)]
    并且,这里假设q的初始值为10,下一个状态对应的q值统一为20,假设衰减因子 γ \gamma γ取0.8, 学习率 α \alpha α取0.6, 则每个动作对应的q值计算如下:

Q(s2,a1) = 10+0.6*[-50+0.8*(20-10)] = -15.2
Q(s2,a2) = 10+0.6*[100+0.8*(20-10)] = 74.8
Q(s2,a3) = 10+0.6*[10+0.8*(20-10)] = 20.8
Q(s2,a4) = 10+0.6*[-20+0.8*(20-10)] = 2.8

    q值可以用来评估当前状态 s t s_t st下,动作 a t a_t at的好坏。我们将q表格填充如下:

表1 Q表格
a1 a2 a3 a4
s1 10 10 10 10
s2 -15.2 74.8 20.8 2.8
s3 ... ... ... ...

    因此,对应Q-learning算法,在状态s2下,我们可以选择q值最大的动作即 a 2 a_2 a2,作为当前的动作。

3.算法过程

    sarsa算法的学习过程如下图所示,在两个地方用到q表格,一个是在选择动作的时候,以 ϵ \epsilon ϵ的概率去随机选择动作,以 1 − ϵ 1-\epsilon 1ϵ的概率利用Q表格,选择价值最大的动作;另一个是在更新Q表格的时候,学习新的Q值
在这里插入图片描述
    Q-Learning的学习过程如下图所示
在这里插入图片描述

Q现实:采取该动作获得的立即回报以及和下一个状态动作的Q值的加权和(Agent的经历中实际采取该动作后得到的Q值)
Q估计:从Q-Table中获得的当前状态和动作下的Q值(Agent学得的Q-Table中记录的Q值)

q现实为使用 ϵ − g r e e d y \epsilon-greedy ϵgreedy选择动作所获得的价值,q估计为预计的最高收益。
r + γ m a x Q ( S t + 1 , a ) − Q ( S t , A t ) r+\gamma maxQ(S_{t+1},a)-Q(S_t,A_t) r+γmaxQ(St+1,a)Q(St,At)
    对下一步的衰减的最大估计与当前所得到的奖励当成这一步的现实,减去这一步估计的预期收益,得到选择当前动作的收益(可能为负)。
    另外,可以发现Sarsa算法在更新Q表格的时候需要用到下一步的动作A’和下一个状态S’,是一种在线的学习算法; 而Q-Learning算法只需要用到下一步的状态,并选择Q值最大的动作, r + γ m a x a ( Q ( S t + 1 , a ) r+\gamma max_a(Q(S_{t+1},a) r+γmaxa(Q(St+1,a)为当前状态 s t s_t st下,使用动作 a t a_t at的Q值(当前回报+未来的折扣价值),是一种离线学习算法。

4.总结

表3 Sarsa算法和Q-learning算法两者的比较
SarsaQ-learning
学习Q表格,指导动作学习Q表格指导动作
选择动作时,使用 ϵ \epsilon ϵ-greedy策略,探索和利用相结合选择动作时,使用Q表格对应最大的Q所对应的动作,是一种贪婪且较激进的方法
在线学习方法,需要用到下一个状态 s t + 1 s_{t+1} st+1和动作 a t + 1 a_{t+1} at+1离线学习方法,更新Q表格时不需要 s t + 1 s_{t+1} st+1

5.参考

[1] 强化学习(二):Q learning 算法
[2] 什么是Q-Learning
[3] 百度飞桨课程
[4] 深度强化学习完整版课程
[5] 《Reinforcement Learning》第二版

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值