写在前面
本文内容参考莫凡大神的强化学习教程:
莫凡大神RL教程
Q-Learning的思想
当今社会每个人有自己的做事方式,有些人做事是不顾后果先做了再说,而且从来不吸取教训,比如HK废青;而有些人就不一样了,做事前会拟定策略(policy),并且根据采取不同策略产生的后果(reward or penalty) 来更新自己的计划表,当然这里的后果在每一次更新自己的计划表前并没有实践,而是靠想象(就好比海贼王里借用强大的见闻色霸气短暂的看到未来),这就是Q-learning的思想。
具体说说Q-Learning
Q-learning的决策过程中涉及到状态 s s s和行为 a a a,过程中的后果可以用 Q Q Q值来表示,具体举个例子来说明。比如我现在的状态是认真学习(嗯没错),我们记为 s 1 s_1 s1,现在有两个行为摆在我面前,一个是摸鱼,记为 a 1 a_1 a1,另一个是接着认真学习,记为 a 2 a_2 a2,选择不同的行为会引发不同的潜在后果(好好学习才是王道),假设 Q ( s 1 , a 1 ) Q(s_1, a_1) Q(s1,a1)为-3, Q ( s 1 , a 2 ) Q(s_1, a_2) Q(s1,a2)为3,明显 Q ( s 1 , a 2 ) > Q ( s 1 , a 1 ) Q(s_1, a_2) > Q(s_1, a_1) Q(s1,a2)>Q(s1,a1),所以采取了行动 a 2 a_2 a2,这时状态便变成了 s 2 s_2 s2,这时依然面临上述的两种选择 a 1 a_1 a1和 a 2 a_2 a2,此时需继续比较 Q ( s 2 , a 1 ) Q(s_2, a_1) Q(s2,a1)和 Q ( s 2 , a 2 ) Q(s_2, a_2) Q(s2,a2)的的值,取较大的执行并得到 s 3 s_3 s3,如此重复下去。我们将前两步的Q表罗列出来:
a 1 a_1 a1 | a 2 a_2 a2 | |
---|---|---|
s 1 s_1 s1 | -3 | 3 |
s 2 s_2 s2 | -2 | 3 |
那么我们来看看这张Q表的更新机制。
上述过程中我们选择了在
s
1
s_1
s1时执行
a
2
a_2
a2得到
s
2
s_2
s2,这时候我们就需要用到我们的见闻色霸气了,想象
s
2
s_2
s2时采取两种行为的
Q
Q
Q值分别是
Q
(
s
2
,
a
1
)
Q(s_2, a_1)
Q(s2,a1)为-2,
Q
(
s
2
,
a
2
)
Q(s_2, a_2)
Q(s2,a2)为3,这时候给
Q
(
s
2
,
a
2
)
Q(s_2, a_2)
Q(s2,a2)乘上一个衰减系数
γ
\gamma
γ再加上到
s
2
s_2
s2为止的后果(奖励/惩罚)
R
R
R(这一步还没有获取到奖励,因此为0),我们将这一结果记为
Q
(
s
1
,
a
2
)
Q(s_1, a_2)
Q(s1,a2)现实:
Q
(
s
1
,
a
2
)
现
实
=
R
+
γ
∗
m
a
x
(
Q
(
s
2
)
)
(1)
Q(s_1, a_2)现实 = R + \gamma * max(Q(s_2))\tag{1}
Q(s1,a2)现实=R+γ∗max(Q(s2))(1)
∵
\because
∵这里的
m
a
x
(
Q
(
s
2
)
)
max(Q(s_2))
max(Q(s2))取了
Q
(
s
2
,
a
2
)
Q(s_2, a_2)
Q(s2,a2),所以(1)式也可以写为:
Q
(
s
1
,
a
2
)
现
实
=
R
+
γ
∗
Q
(
s
2
,
a
2
)
(2)
Q(s_1, a_2)现实 = R + \gamma * Q(s_2, a_2)\tag{2}
Q(s1,a2)现实=R+γ∗Q(s2,a2)(2)
∵
\because
∵在状态转变到
s
2
s_2
s2的过程中我们用到了Q表中的
Q
(
s
1
,
a
2
)
Q(s_1, a_2)
Q(s1,a2),将其记为
Q
(
s
1
,
a
2
)
Q(s_1, a_2)
Q(s1,a2)估计,有了现实和估计就可以跟新Q表啦:将现实与估计做差得到差距,给差距乘上一个学习率
α
\alpha
α再加上原来表中的
Q
(
s
1
,
a
2
)
Q(s_1, a_2)
Q(s1,a2)便得到了新的
Q
(
s
1
,
a
2
)
Q(s_1, a_2)
Q(s1,a2),即
Q
(
s
1
,
a
2
)
=
Q
(
s
1
,
a
2
)
+
α
∗
(
R
+
γ
∗
Q
(
s
2
,
a
2
)
−
Q
(
s
1
,
a
2
)
)
(3)
Q(s_1, a_2) = Q(s_1, a_2) + \alpha * (R + \gamma * Q(s_2, a_2) - Q(s_1, a_2))\tag{3}
Q(s1,a2)=Q(s1,a2)+α∗(R+γ∗Q(s2,a2)−Q(s1,a2))(3)
remark:
s
2
s_2
s2的决策在更新前并没有执行,在更新完后用以上方法继续做。
算法大致如下(盗莫凡大神的图):
其中
ϵ
−
g
r
e
e
d
y
\epsilon-greedy
ϵ−greedy是一种策略,若
ϵ
=
0.1
\epsilon=0.1
ϵ=0.1就代表有90%的概率我们会按照Q表的最优值来选择要执行的行为(利用操作,exploitation),另外10%的情况随机选择行为(探索操作,exploration)。
上述更新过程继续写下去如下:
Q
(
s
1
)
=
r
2
+
γ
Q
(
s
2
)
=
r
2
+
γ
[
r
3
+
γ
Q
(
s
3
)
]
=
r
2
+
γ
[
r
3
+
γ
[
r
4
+
γ
Q
(
s
4
)
]
]
=
.
.
.
(4)
Q(s_1) = r_2 + \gamma Q(s_2) = r_2 +\gamma [r_3 + \gamma Q(s_3)] = r_2 + \gamma [r_3 + \gamma [r_4 + \gamma Q(s_4)]] = ...\tag{4}
Q(s1)=r2+γQ(s2)=r2+γ[r3+γQ(s3)]=r2+γ[r3+γ[r4+γQ(s4)]]=...(4)
即
Q
(
s
1
)
=
r
2
+
γ
r
3
+
γ
2
r
4
+
γ
3
r
5
+
γ
4
r
6
+
.
.
.
(5)
Q(s_1) = r_2 + \gamma r_3 + \gamma^2 r_4 + \gamma^3 r_5 + \gamma^4 r_6 + ...\tag{5}
Q(s1)=r2+γr3+γ2r4+γ3r5+γ4r6+...(5)
若
γ
=
0
\gamma = 0
γ=0,则只能看见眼前的后果,若
γ
=
1
\gamma = 1
γ=1,则能看到之后所有的后果,即
γ
\gamma
γ由0到1就看的越来越远。