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 a3 | 10 |
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表格填充如下:
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.总结
Sarsa | Q-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》第二版