强化学习(2)
文章目录
传统Q方法的问题:
DQN方法
价值函数近似
价值函数的拟合近似,利用一个函数来表示
Q
(
s
,
a
)
Q(s,a)
Q(s,a),即
Q
(
s
,
a
)
=
f
(
s
,
a
)
Q(s,a)=f(s,a)
Q(s,a)=f(s,a)
f
f
f可以是任意类型的函数,比如线性函数:
Q
(
s
,
a
)
=
w
1
s
+
w
2
a
+
b
Q(s,a)=w_1s+w_2a+b
Q(s,a)=w1s+w2a+b
通过函数表示,无论s的维度有多大,最后都可以通过矩阵运算降维输出为单值的Q值。
如果用𝑤统一表示函数𝑓的参数,那么就有
Q
(
s
,
a
)
=
f
(
s
,
a
,
w
)
Q(s,a)=f(s,a,w)
Q(s,a)=f(s,a,w)
DQN求解
目标:学习一个函数估计器(Q网络):
Q
(
s
,
a
;
w
)
≈
Q
π
(
s
,
a
)
Q(s,a;w)\approx Q_{\pi}(s,a)
Q(s,a;w)≈Qπ(s,a)
定义目标函数为:Q的均方差
L
(
w
)
=
E
s
[
(
r
+
γ
m
a
x
a
′
Q
(
s
′
,
a
′
,
w
)
−
Q
(
s
,
a
,
w
)
)
2
]
L(w)=\mathbb{E}_s[(r+\gamma max_{a'}Q(s',a',w)-Q(s,a,w))^2]
L(w)=Es[(r+γmaxa′Q(s′,a′,w)−Q(s,a,w))2]
梯度计算
∂
L
(
w
)
∂
w
=
E
s
[
(
(
r
+
γ
m
a
x
a
′
Q
(
s
′
,
a
′
,
w
)
−
Q
(
s
,
a
,
w
)
)
(
∂
Q
(
s
,
a
,
w
)
y
∂
w
)
]
\frac{\partial L(w)}{\partial w}=\mathbb{E}_s\bigg[(\big(r+\gamma max_{a'}Q(s',a',w)-Q(s,a,w)\big)\bigg(\frac{\partial Q(s,a,w)y}{\partial w}\bigg)\bigg]
∂w∂L(w)=Es[((r+γmaxa′Q(s′,a′,w)−Q(s,a,w))(∂w∂Q(s,a,w)y)]
图形描述:
DQN的问题
监督学习:
- 需要大量手工标注的训练数据
- 假设数据样本是独立的
- 假设数据分布是固定不变的
强化学习: - 经常需要从稀疏、嘈杂和延迟的奖励信号中学习
- 通常会遇到高度相关的状态序列
- 数据分布不断随算法学习到的新行为而变化
引发了两个问题:
数据高度相关和数据分布非平稳的问题
解决方法:
- 采用经验回放机制
- 随机采样先前的经验并训练
经验回放的几个优势:
- 经验的每一步都可能用于权重更新,大幅提高数据效率。
- 由于经验样本之间存在强相关性,直接从连续样本中学习是低效的。而随机化样本消除了这些相关性,减少了更新过程的方差。
- 由于行为分布在其先前的许多状态上进行平均,从而学习过程更加平滑并避免参数的振荡或发散
算法描述:
目标Q网络动态变化
解决方法:固定目标网络Q
我们使用第二个网络,称为目标网络
Q
(
s
,
a
;
w
−
)
Q(s,a;w^-)
Q(s,a;w−),网络结构和原来的网络
Q
(
s
,
a
;
w
)
Q(s,a;w)
Q(s,a;w)一样,只是参数不同
w
−
≠
w
w^{-}\neq w
w−=w,原来的网络称为评估网络
两个网络的作用不一样:评估网络负责控制智能体,收集经验;目标网络用于计算TD target。
在更新过程中,只更新评估网络的权重
w
w
w,目标网络权重
w
−
w^-
w−
保持不变。在更新一定次数后,再将更新过的评估网络的权重复制给目标网络,进行下一批更新,这样目标网络也能得到更新。由于在目标网络没有变化的一段时间内回报的目标值是相对固定的,因此目标网络的引入增加了学习的稳定性。
定义目标函数为:Q的均方差
L
(
w
)
=
E
s
[
(
r
+
γ
m
a
x
a
′
Q
(
s
′
,
a
′
,
w
−
)
−
Q
(
s
,
a
,
w
)
)
2
]
L(w)=\mathbb{E}_s[(r+\gamma max_{a'}Q(s',a',w^-)-Q(s,a,w))^2]
L(w)=Es[(r+γmaxa′Q(s′,a′,w−)−Q(s,a,w))2]
梯度计算
∂
L
(
w
)
∂
w
=
E
s
[
(
(
r
+
γ
m
a
x
a
′
Q
(
s
′
,
a
′
,
w
−
)
−
Q
(
s
,
a
,
w
)
)
(
∂
Q
(
s
,
a
,
w
)
y
∂
w
)
]
\frac{\partial L(w)}{\partial w}=\mathbb{E}_s\bigg[(\big(r+\gamma max_{a'}Q(s',a',w^-)-Q(s,a,w)\big)\bigg(\frac{\partial Q(s,a,w)y}{\partial w}\bigg)\bigg]
∂w∂L(w)=Es[((r+γmaxa′Q(s′,a′,w−)−Q(s,a,w))(∂w∂Q(s,a,w)y)]
SARSA 方法
SARSA实际上是对五元组 ( S t , A t , R t + 1 , S t + 1 , A t + 1 ) (S_t,A_{t},R_{t+1},S_{t+1},A_{t+1}) (St,At,Rt+1,St+1,At+1)的缩写,顾名思义,该方法是通过这五个参数更新Q网络参数的方法。
核心思想
算法核心思想如图:
SARSA 是 on-policy 学习方法,因为它始终只有一个策略,使用 ϵ \epsilon ϵ贪婪方法选择出 Q ( S t , A t ) Q(S_t,A_t) Q(St,At)和 Q ( S t + 1 ′ , A t + 1 ′ ) Q(S_{t+1}',A_{t+1}') Q(St+1′,At+1′)。而 Q-Learning 算法是 off-policy 算法,选择 Q ( S t , A t ) Q(S_t,A_t) Q(St,At)时使用 ϵ \epsilon ϵ贪婪方法,而计算 Q ( S ′ , A ′ ) Q(S',A') Q(S′,A′)时使用了最大值算法,学习和行动分别采用了两套不同的策略。
基本流程
算法基本流程如下:
初始化Q表(令其值为 0)
对于每个 episode(回合):
1. 初始化状态s
2. 在当前状态s的所有可能动作中选取一个动作a(以
ϵ
\epsilon
ϵ 的概率安装 Q 表数值最大的动作行动,以
1
−
ϵ
1-\epsilon
1−ϵ的概率随机行动)
3. 如果当前状态 s 不是终止状态,则重复执行以下步骤:
(1)执行动作 a 并得到下一个状态 s‘ 和相应的奖励 r
(2)在当前状态 s’ 的所有可能动作中选取一个动作 a’
(3)更新Q表:
Q
(
s
,
a
)
←
Q
(
s
,
a
)
+
α
[
r
+
γ
⋅
Q
(
s
′
,
a
′
)
−
Q
(
s
,
a
)
]
Q(s,a)\leftarrow Q(s,a)+\alpha[r+\gamma\cdot Q(s',a')-Q(s,a)]
Q(s,a)←Q(s,a)+α[r+γ⋅Q(s′,a′)−Q(s,a)]
(4)更新状态和动作:s=s’, a=a’
SARSA属于单步更新算法,也就是说每执行一个动作,就会更新一次价值和策略。如果不进行单步更新,而是采取n步更新或者回合更新,即在执行n步之后再来更新价值和策略,这样
就得到了n步SARSA(n-step SARSA)。
由此可得SARSA(n)的更新策略为 Q ( S t , A t ) ← Q ( S t , A t ) + α ( q t ( n ) − Q ( S t , A t ) ) Q(S_{t},A_{t})\leftarrow Q(S_{t},A_{t})+\alpha(q_{t}^{(n)}-Q(S_{t},A_{t})) Q(St,At)←Q(St,At)+α(qt(n)−Q(St,At))
回顾
Q-learning,DQN和SARSA三种方法实际上都是利用Q网络进行学习的算法,这一类方法可称作基于策略的学习算法。
这类算法对固定的Q网格的学习会带来两个问题:
-
无法产生随机策略
-
无法应对连续动作
因此,考虑直接优化智能体的策略,产生了Reinforce算法
Reinforce
概念解释
- Episode
一个 episode 就是这种互动过程中智能体与环境的一次完整交互,考虑如下交互过程
完整的交互
就是一个episode
2. 蒙特卡洛方法(Monte Carlo Method)
按抽样调查法求取统计值推定未知特性量的计算方法。该方法通过构造一个和系统相似的概率模型,在数字计算机上进行随机试验来模拟系统的随机特性,故适用于对离散系统进行仿真实验,特别适用于一些解析法难以求解甚至无法求解的问题。
例:抛针法求
π
\pi
π值
蒙特卡洛求解问题的三个主要步骤为:
1、描述或构造概率过程
2、利用概率分布抽样
3、建立各种估计量
Reinforce的基本思想
强化学习求解:在策略优化和策略评估的交替迭代中优化参数
蒙特卡洛预测方法
-
试验
给定一个策略 π \pi π,可以基于策略 π \pi π产生N次试验,每次试验能
得到一个完整的交互序列,共有N个交互序列,每个序列作为一个样本: -
状态值函数
在蒙特卡洛思想下,状态值函数 v π ( s ) v_{\pi}(s) vπ(s),表达式如下: v π ( s ) = a v e r a g e ( G t ( s ) ) ≈ 1 N ∗ ( G t 1 ( s ) + G t 2 ( s ) + . . . + G t N ( s ) ) v_{\pi}(s)=average(G_{t}(s))\approx \frac{1}{N} *(G_{t}^{1}(s)+G_{t}^{2}(s)+...+G_{t}^{N}(s)) vπ(s)=average(Gt(s))≈N1∗(Gt1(s)+Gt2(s)+...+GtN(s))
其中: G t i ( s ) = R t + 1 i ( s ) + γ R t + 2 i ( s ) + . . . + γ T − 1 R T i ( s ) G_{t}^{i}(s)=R_{t+1}^i(s)+ \gamma R_{t+2}^i(s)+...+\gamma^{T-1}R_{T}^i(s) Gti(s)=Rt+1i(s)+γRt+2i(s)+...+γT−1RTi(s) -
蒙特卡洛评估
利用策略评估和策略改进交互迭代的思想寻找最优策略,从而求解强化学习
控制问题。
在无模型的强化学习问题中,行动值函数比状态值函数更容易被评估。因此,
利用蒙特卡洛方法求解最优策略时,我们的目标是寻找最优状态-行动值函数。
-
蒙特卡洛控制
- 策略改进是基于式子 v π ′ ( s ) = q π ( s , a ∗ ) ≥ q π ( s , a ) v_{\pi'}(s)=q_{\pi}(s,a_{*})\geq q_{\pi}(s,a) vπ′(s)=qπ(s,a∗)≥qπ(s,a),其中,最优行动 a ∗ = a r g m a x a ∈ A q π ( s , a ) a_{*}=\underset {a\in A}{argmax} q_{\pi}(s,a) a∗=a∈Aargmaxqπ(s,a)
- 在蒙特卡洛法中,策略改进同样是基于贪心策略,对于任意给定的状态-行动值函数 q,相应的贪心策略是: π ( s ) = a r g m a x a ∈ A q π ( s , a ) , ∀ s ∈ S \pi(s)=\underset {a\in A}{argmax} q_{\pi}(s,a),\forall s \in S π(s)=a∈Aargmaxqπ(s,a),∀s∈S
- 蒙特卡洛法的策略改进是基于下式:
q
π
k
(
s
,
π
k
+
1
(
s
)
)
=
q
π
k
(
s
,
a
r
g
m
a
x
a
∈
A
q
π
k
(
s
,
a
)
)
=
m
a
x
a
∈
A
q
π
k
(
s
,
a
)
≥
q
π
k
(
s
,
a
)
\begin{align} q_{\pi_{k}}(s,\pi_{k+1}(s))& =q_{\pi_{k}}(s,\underset {a\in A}{argmax} q_{\pi_k}(s,a))\\ &=\underset {a\in A}{max} q_{\pi_{k}}(s,a)\\&\geq q_{\pi_{k}}(s,a) \end{align}
qπk(s,πk+1(s))=qπk(s,a∈Aargmaxqπk(s,a))=a∈Amaxqπk(s,a)≥qπk(s,a)
迭代过程如下
-
过程描述
-
优点
- 直接与环境交互学习,不需要环境信息;
- 可以通过仿真和抽样模型,在应用中,很容易仿真 episodes;
- 可以高效地集中在某一小部分状态上,以准确地评估一个特别感兴趣的区域,而无需精确评估状态集的其余部分。
Reinforce算法描述
Reinforce算法就是“基础”的基于策略的强化学习算法,其思路是,首先建立策略函数,将策略参数化,通过奖励值估计策略的梯度,并利用策略梯度上升更新策略,不断迭代,直至得到最终策略。
-
基本表示
记一条轨迹为
回报为
不同轨迹对应着不同回报,在当前策略θ下的期望回报为:
最大化长期奖励和的期望:
期望回报的梯度
-
期望函数的梯度推导
由于
所以
则
- Reinforce中的蒙特卡洛估计
时序差分
时序差分法(Temporal-Difference Learning, TD 法),直接从智能体与环境互动的经验中学习,而不需要知道环境的模型,可以边交互边学习。总的来说,时序差分是基于已得到的其他状态的估计值来更新当前状态的价值函数。
时序差分预测
基于更新规则
v
(
S
t
)
=
v
(
S
t
)
+
α
[
R
t
+
1
+
γ
v
π
(
S
t
+
1
)
−
v
(
S
t
)
]
v(S_{t})=v(S_{t})+\alpha \bigg[ R_{t+1}+\gamma v_{\pi}(S_{t+1})-v(S_{t})\bigg]
v(St)=v(St)+α[Rt+1+γvπ(St+1)−v(St)]的时序差分法被称为 TD(0) 法,或者一步时序差分法。
其中,
R
t
+
1
+
γ
v
π
(
S
t
+
1
)
R_{t+1}+\gamma v_{\pi}(S_{t+1})
Rt+1+γvπ(St+1)被称为 TD 目标,
δ
=
R
t
+
1
+
γ
v
π
(
S
t
+
1
)
−
v
(
S
t
)
\delta=R_{t+1}+\gamma v_{\pi}(S_{t+1})-v(S_{t})
δ=Rt+1+γvπ(St+1)−v(St)被称为 TD 误差
时序差分控制
如蒙特卡洛法一样,我们这里也可采用增量均值法来估计状态-行动值函数的均值:
引入自举思想,即引入
R
t
+
1
+
γ
q
(
S
t
+
1
,
A
t
+
1
)
R_{t+1}+\gamma q(S_{t+1},A_{t+1})
Rt+1+γq(St+1,At+1),得到:
将St,At以s,a简写可得
n步时序差分
n步时序差分法归纳出一种基于多步奖励(步数不超过所有总步数)的 n 步时序差分法(N-step TD methods,n=1, 2, 3,…)
G
t
:
t
+
n
G_{t:t+n}
Gt:t+n称为n步回报,n = 1 时,TD(0) 预测和控制求解算法;
n
=
∞
n = \infty
n=∞时,蒙特卡洛法;
1
<
n
<
∞
1 < n < \infty
1<n<∞时,n 步时序差分法.
状态值更新规则:
状态-行动值更新规则:
基于状态-行动值估计的 n 步回报: