chan算法matlab(强化学习——Q-Learning算法原理)
一 、Q-Learning :异策略时序差分控制
从决策方式来看 ,强化学习可以分为基于策略的方法(policy-based)和基于价值的方法(value-based
) 。基于策略的方法直接对策略进行优化 ,使制定的的策略能够获得最大的奖励 。基于价值的强化学习方法中 ,智能体不需要制定显式的策略 ,它维护一个价值表格或价值函数 ,通过这个价值表格或价值函数来选取价值最大的动作 。
Q-Learning 算法就是一种value-based的强化学习算法 。二 、算法思想:
Q(s,a)是状态价值函数 ,表示在某一具体初始状态s和动作a的情况下 ,对未来收益的期望值 。
Q-Learning算法维护一个Q-table ,Q-table记录了不同状态下s(s∈S) ,采取不同动作a(a∈A)的所获得的Q值 。 Q-table a1 a2 a3 … s1 Q(s1,a1) Q(s1,a2) Q(s1,a3) s2 Q(s2,a1) Q(s2,a2) Q(s2,a3) s3 Q(s3,a1) Q(s3,a2) Q(s3,a3) …探索环境之前 ,初始化Q-table ,当agent与环境交互的过程中 ,算法利用贝尔曼方程(ballman equation)来迭代更新Q(s,a),每一轮结束后就生成了一个新的Q-table 。agent不断与环境进行交互 ,不断更新这个表格 ,使其最终能收敛 。最终,agent就能通过表格判断在某个转态s下采取什么动作 ,才能获得最大的Q值 。
三 、更新过程
更新方法:
Q
(
s
t
,
a
t
)
←
Q
(
s
t
,
a
t
)
+
α
[
r
t
+
1
+
γ
max
a
Q
(
s
t
+
1
,
a
)
−
Q
(
s
t
,
a
t
)
]
Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha [r_{t+1}+ \gamma \max_aQ(s_{t+1},a) - Q(s_t,a_t) ]
Q(st,at)←Q(st,at)+α[rt+1+γamaxQ(st+1,a)−Q(st,at)]Q
(
s
t
,
a
t
)
{\color{Red} Q(s_t,a_t)}
Q(st,at) 是在状态s
t
s_t
st下采取动作a
t
a_t
at的长期回报 ,是一个估计Q值r
t
+
1
{\color{Red} r_{t+1}}
rt+1 是在状态s
t
s_t
st下执行动作a
t
a_t
at得到的回报rewardmax
a
Q
(
s
t
+
1
,
a
)
{\color{Red} \max_aQ(s_{t+1},a)}
maxaQ(st+1,a) 指的是在状态s
t
+
1
s_{t+1}
st+1下所获得的最大Q值 ,直接看Q-table ,取它的最大化的值 。γ
\gamma
γ是折扣因子 ,含义是看重近期收益 ,弱化远期收益 ,同时也保证Q函数收敛 。(
r
t
+
1
+
γ
max
a
Q
(
s
t
+
1
,
a
)
{\color{Red} (r_{t+1}+ \gamma \max_aQ(s_{t+1},a)}
(rt+1+γmaxaQ(st+1,a) 即为目标值 ,就是时序差分目标 ,是Q
(
s
t
,
a
t
)
Q(s_t,a_t)
Q(st,at) 想要逼近的目标 。α
\alpha
α是学习率 ,衡量更新的幅度。当目标值和估计值的差值趋于0的时候 ,Q(s,a)就不再继续变化 ,Q 表趋于稳定,说明得到了一个收敛的结果 。这就是算法想要达到的效果 。
注意:
max
a
Q
(
s
t
+
1
,
a
)
{\color{Red} \max_aQ(s_{t+1},a)}
maxaQ(st+1,a)所对应的动作不一定是下一步会执行的实际动作!
这里引出ε
−
g
r
e
e
d
y
{\color{Red} \varepsilon-greedy}
ε−greedy ,即ε
−
\varepsilon-
ε−贪心算法。
在智能体探索过程中 ,执行的动作采用ε
−
g
r
e
e
d
y
{\color{Red} \varepsilon-greedy}
ε−greedy策略,是权衡exploitation-exploration(利用和探索)的超参数 。 exploration:探索环境 ,通过尝试不同的动作来得到最佳策略(带来最大奖励的策略) exploitation:不去尝试新的动作 ,利用已知的可以带来很大奖励的动作 。Q-Learning算法中 ,就是根据Q-table选择当前状态下能使Q值最大的动作 。在刚开始的时候 ,智能体不知道采取某个动作后会发生什么 ,所以只能通过试错去探索 。利用是指直接采取已知的可以带来很好奖励的动作 。这里面临一个权衡问题 ,即怎么通过牺牲一些短期的奖励来理解动作 ,从而学习到更好的策略 。因此 ,提出
ε
−
g
r
e
e
d
y
\varepsilon-greedy
ε−greedy ,ε
\varepsilon
ε就是权衡这两方面的超参数 。这篇博客https://blog.csdn.net/zhm2229/article/details/99351831对这部分的理解讲的很好 ,在此引用一下:
做exploitation和exploration的目的是获得一种长期收益最高的策略 ,这个过程可能对short-term reward有损失 。如果exploitation太多 ,那么模型比较容易陷入局部最优,但是exploration太多 ,模型收敛速度太慢 。这就是exploitation-exploration权衡 。
比如我们设
ε
\varepsilon
ε=0.9 ,随机化一个[0,1]的值,如果它小于ε
\varepsilon
ε ,则进行exploration ,随机选择动作;如果它大于ε
\varepsilon
ε,则进行exploitation ,选择Q value最大的动作 。
在训练过程中 ,ε
\varepsilon
ε在刚开始的时候会被设得比较大 ,让agent充分探索 ,然后ε
\varepsilon
ε逐步减少 ,agent会开始慢慢选择Q value最大的动作三 、伪代码
图源于:百度飞桨AlStudio
参考:
[1] 王琦.强化学习教程[M]
[2] https://blog.csdn.net/zhm2229/article/details/99351831创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!