强化学习笔记:Q-learning

本文整理于datawhalechina.github.io的强化学习教程以及莫烦python强化学习教程

这篇写短点吧,要是再写长的话动辄几个小时,真的顶不住了

0x01 简介

在这里插入图片描述
在强化学习中, Q π ( s , a ) Q^\pi(s, a) Qπ(s,a),简记为 Q ( s , a ) Q(s, a) Q(s,a),是指在状态 s s s下,当前步采取策略 a a a,接下来所有的步骤都依据给定的策略 π \pi π来决策直到回合结束所获得的回报的期望值。

为了使得reward最大,这里agent的策略 π \pi π可以认为是在当前的状态 s s s下,无脑选择使得 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a)最大的 a a a

上图是Q-learning的算法流程图。给定agent的策略 π \pi π,我们要通过这么一个算法更新 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a),简记为 Q ( s , a ) Q(s, a) Q(s,a)。为了使收益最大,agent在每一个状态 s s s将无脑选择 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a)值最大的动作 a a a

假设环境状态为 s s s,Q-learning的做法是:

首先,根据当前的 s s s选择一个动作 a a a,这个动作 a a a的选择策略是 ϵ − g r e e d y \epsilon-greedy ϵgreedy,即大概率选择使得 Q ( s , a ) Q(s, a) Q(s,a)的值(这时 Q ( s , a ) Q(s, a) Q(s,a)还没有被训练好)达到最大的 a ∗ a^* a,但是会有 ϵ \epsilon ϵ的概率来随机选择一个动作 a a a

接着,我们选取了动作 a a a之后,就可以采取 a a a,然后获得奖励 r r r,并且到达下一个状态 s ′ s' s

下面,更新 Q ( s , a ) Q(s,a) Q(s,a)

Q ( s , a ) = ( 1 − α ) Q ( s , a ) + α ( r + γ max ⁡ a ′ Q ( s ′ , a ′ ) ) Q(s,a) =(1 - \alpha) Q(s,a) + \alpha (r + \gamma \max_{a'} Q(s', a') ) Q(s,a)=(1α)Q(s,a)+α(r+γamaxQ(s,a))

其中 α \alpha α是学习率, γ \gamma γ是折扣因子。假设我们完全随机地初始了 Q ( s , a ) Q(s, a) Q(s,a)值,但是我们在后来的更新中,逐渐引入了每一步的收益 r r r。并且,因为学习率 α \alpha α的存在,之前的初始项会被慢慢稀释掉,由 r r r组成的 Q ( s , a ) Q(s, a) Q(s,a)值留存的越来越多。

最后,重复上面的动作, Q ( s , a ) Q(s, a) Q(s,a)值逐渐收敛。

猜你喜欢

转载自blog.csdn.net/weixin_43466027/article/details/117081189