Sarsa算法
在给定环境的起始状态s,并且初始化策略
π
ϵ
−
g
r
e
e
d
y
\pi^{\epsilon-greedy}
πϵ−greedy和Q值后,agent使用该策略与环境交互,产生动作a、新状态s’和奖励回馈r:
a
=
π
ϵ
−
g
r
e
e
d
y
(
s
)
s
′
,
r
=
e
n
v
i
r
o
n
m
e
n
t
(
a
)
a=\pi^{\epsilon-greedy}(s)\\ s',r=environment(a)
a=πϵ−greedy(s)s′,r=environment(a)
在状态s’上再根据策略
π
ϵ
−
g
r
e
e
d
y
\pi^{\epsilon-greedy}
πϵ−greedy选择动作a’:
a
′
=
π
ϵ
−
g
r
e
e
d
y
(
s
′
)
a'=\pi^{\epsilon-greedy}(s')
a′=πϵ−greedy(s′)
从而生成序列信息段
<
s
,
a
,
r
,
s
′
,
a
′
>
<s,a,r,s',a'>
<s,a,r,s′,a′>。根据下式对状态动作对
<
s
,
a
>
<s,a>
<s,a>的Q值进行更新:
Q
(
s
,
a
)
=
Q
(
s
,
a
)
+
α
(
r
+
γ
Q
(
s
′
,
a
′
)
−
Q
(
s
,
a
)
)
Q(s,a)=Q(s,a)+\alpha(r+\gamma Q(s',a')-Q(s,a))
Q(s,a)=Q(s,a)+α(r+γQ(s′,a′)−Q(s,a))
再根据下式对策略
π
\pi
π进行改进:
π
(
s
)
=
{
a
r
g
m
a
x
a
′
′
(
Q
(
s
,
a
′
′
)
)
,
以
概
率
1
−
ϵ
随
机
选
取
动
作
,
以
概
率
ϵ
\pi(s)=\begin{cases} argmax_{a''}(Q(s,a'')), \ \ \ \ \ \ \ \ \ \ \ 以概率1-\epsilon \\ 随机选取动作, \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 以概率\epsilon \end{cases}
π(s)={argmaxa′′(Q(s,a′′)), 以概率1−ϵ随机选取动作, 以概率ϵ
再在
<
s
′
,
a
′
>
<s',a'>
<s′,a′>的基础上执行以上过程,基本遵循的就是从策略改进到策略评估的不断循环。
Q-learning算法
在给定环境的起始状态s,并且初始化策略
π
\pi
π和Q值后,agent在该策略中引入
ϵ
−
g
r
e
e
d
y
\epsilon-greedy
ϵ−greedy,并与环境交互,产生动作a、新状态s’和奖励回馈r:
a
=
π
ϵ
−
g
r
e
e
d
y
(
s
)
s
′
,
r
=
e
n
v
i
r
o
n
m
e
n
t
(
a
)
a=\pi^{\epsilon-greedy}(s)\\ s',r=environment(a)
a=πϵ−greedy(s)s′,r=environment(a)
再关闭
ϵ
−
g
r
e
e
d
y
\epsilon-greedy
ϵ−greedy,根据原策略在状态s’上时选择动作a’:
a
′
=
π
(
s
′
)
a'=\pi(s')
a′=π(s′)
从而生成序列信息段
<
s
,
a
,
r
,
s
′
,
a
′
>
<s,a,r,s',a'>
<s,a,r,s′,a′>。根据下式对状态动作对
<
s
,
a
>
<s,a>
<s,a>的Q值进行更新:
Q
(
s
,
a
)
=
Q
(
s
,
a
)
+
α
(
r
+
γ
Q
(
s
′
,
a
′
)
−
Q
(
s
,
a
)
)
Q(s,a)=Q(s,a)+\alpha(r+\gamma Q(s',a')-Q(s,a))
Q(s,a)=Q(s,a)+α(r+γQ(s′,a′)−Q(s,a))
再根据下式对策略
π
\pi
π进行改进:
π
(
s
)
=
a
r
g
m
a
x
a
′
′
(
Q
(
s
,
a
′
′
)
)
\pi(s)=argmax_{a''}(Q(s,a''))
π(s)=argmaxa′′(Q(s,a′′))
再在
<
s
′
,
a
′
>
<s',a'>
<s′,a′>的基础上执行以上过程,不断循环。
关系
Q-learning算法衍生自Sarsa,但是在策略评估和策略改进时的策略并不相同。Q-learning算法的出发点是:策略上引入 ϵ − g r e e d y \epsilon-greedy ϵ−greedy是为了更好地评估策略本身,而不是为了最终使用,假设对所有的Q值评估精确了,策略在探索和利用中应该是完全倾向于利用的。因此Q-learning算法在评估采样时引入 ϵ − g r e e d y \epsilon-greedy ϵ−greedy,在改进策略时关闭 ϵ − g r e e d y \epsilon-greedy ϵ−greedy。