强化学习是一种机器学习方法,通过agent与environment的互动,学习适当的action policy以取得更大的奖励reward。本篇博客介绍强化学习的基础知识,与两类强化学习模型。
目录
- 强化学习的基础设定
- policy based 强化学习的目标
- 3个注意事项
- 实际训练过程
- 重要性采样
- value based 强化学习的目标
- Temporal Differential learning (TD learning)
- 参考
强化学习的基础设定
强化学习和监督学习,非监督学习一样是一种基本学习模式,在强化学习的框架中,一共有2个主体:agent
与environment
。environment
会给agent
一些状态信息state
,agent
可以根据state
的情况进行action
的选择,并从environment
获得一些奖励reward
。
强化学习分为2类:policy based
和value based
。二者并非互斥关系,存在一些模型既是policy based
又是value based
例如:A3C[ICML2016]。
policy based 强化学习的目标
强化学习的目标是学习一个policy使得最终全场决策下来得到的总reward最大。具体展开而言,给定一个state,agent决策采取action的策略模型,用 π \pi π表示, π \pi π的参数是 θ \theta θ,由于policy根据state采取action,我们可以用公式: a = π θ ( s ) a=\pi_\theta(s) a=πθ(s)表示。当agent做出action操作后,environment会给出一个reward并更新状态,至此一轮决策结束。多轮决策组成一个由state, action, reward组成的序列,我们定义为 τ = ( s 1 , a 1 , r 1 , . . . s T , a T , r T ) \tau=(s_1, a_1,r_1,...s_T,a_T,r_T) τ=(s1,a1,r1,...sT,aT,rT)。 R τ R_\tau Rτ是整场决策结束后总共的奖励, R τ = ∑ t = 1 T r t R_\tau=\sum_{t=1}^Tr_t Rτ=∑t=1Trt,强化学习的目的是最大化 R τ R_\tau Rτ。
在实际决策过程中,即便 π \pi π和environment不变,每一步的action依旧有随机性,因而最终的奖励 R τ R_\tau Rτ也不会完全一致,而是具有一些随机性。因此强化学习的目标为最大化一个 π \pi π下的平均 R τ R_\tau Rτ,即 E [ R τ ] = ∑ τ R ( τ ) p ( τ ∣ θ ) E[R_\tau]=\sum_{\tau}R(\tau)p(\tau|\theta) E[Rτ]=∑τR(τ)p(τ∣θ),很显然我们无法得到准确的期望,因为我们无法把一个参数设定下所有的决策路径全都取一个遍,因而实际使用中,通过采样取平均值的方法得到一个期望的近似值。 R ( θ ) ≈ 1 N ∑ n = 1 N R ( τ n ) R(\theta)\approx \frac{1}{N}\sum_{n=1}^{N}R(\tau_n) R(θ)≈N1∑n=1NR(τn)。
强化学习的优化目标即为: R ( θ ) ≈ 1 N ∑ n = 1 N R ( τ n ) R(\theta)\approx \frac{1}{N}\sum_{n=1}^{N}R(\tau_n) R(θ)≈N1∑n=1NR(τn)。
通过梯度下降提升优化目标,这一步需要求
R
(
θ
)
R(\theta)
R(θ)的导数。
∇
R
θ
=
∑
τ
R
(
τ
)
∇
p
(
τ
∣
θ
)
=
∑
τ
R
(
τ
)
p
(
τ
∣
θ
)
∇
p
(
τ
∣
θ
)
p
(
τ
∣
θ
)
=
∑
τ
R
(
τ
)
p
(
τ
∣
θ
)
∇
l
o
g
(
p
(
τ
∣
θ
)
)
p
(
τ
∣
θ
)
=
p
(
s
1
)
p
(
a
1
∣
s
1
)
p
(
s
2
,
r
1
∣
s
1
,
a
1
)
.
.
.
p
(
s
T
,
r
T
−
1
∣
s
T
−
1
,
a
T
)
l
o
g
(
p
(
τ
∣
θ
)
)
=
l
o
g
(
p
(
s
1
)
)
+
∑
t
=
1
T
l
o
g
(
p
(
a
t
∣
s
t
,
θ
)
)
+
∑
t
=
1
T
l
o
g
(
p
(
r
t
,
s
t
−
1
∣
s
t
,
a
t
)
)
∇
l
o
g
(
p
(
τ
∣
θ
)
)
=
∑
t
=
1
T
∇
l
o
g
(
p
(
a
t
∣
s
t
,
θ
)
)
\nabla R_\theta=\sum_{\tau}R(\tau)\nabla p(\tau|\theta)=\sum_{\tau} R(\tau)p(\tau|\theta)\frac{\nabla p(\tau|\theta)}{p(\tau|\theta)}=\sum_{\tau}R(\tau)p(\tau|\theta)\nabla log(p(\tau|\theta))\\ p(\tau|\theta)=p(s_1)p(a_1|s_1)p(s_2,r_1|s_1,a_1)...p(s_T,r_{T-1}|s_{T-1},a_{T})\\ log(p(\tau|\theta))=log(p(s_1))+\sum_{t=1}^Tlog(p(a_t|s_t,\theta))+\sum_{t=1}^Tlog(p(r_t,s_{t-1}|s_t,a_t))\\ \nabla log(p(\tau|\theta))=\sum_{t=1}^T\nabla log(p(a_t|s_{t},\theta))
∇Rθ=τ∑R(τ)∇p(τ∣θ)=τ∑R(τ)p(τ∣θ)p(τ∣θ)∇p(τ∣θ)=τ∑R(τ)p(τ∣θ)∇log(p(τ∣θ))p(τ∣θ)=p(s1)p(a1∣s1)p(s2,r1∣s1,a1)...p(sT,rT−1∣sT−1,aT)log(p(τ∣θ))=log(p(s1))+t=1∑Tlog(p(at∣st,θ))+t=1∑Tlog(p(rt,st−1∣st,at))∇log(p(τ∣θ))=t=1∑T∇log(p(at∣st,θ))
最终得到
∇
R
θ
\nabla R_\theta
∇Rθ的表达式:
∇
R
θ
≈
1
N
∑
n
=
1
N
∑
t
=
1
T
R
(
τ
n
)
∇
l
o
g
(
p
(
a
t
∣
s
t
,
θ
)
)
\nabla R_\theta \approx \frac{1}{N}\sum_{n=1}^N\sum_{t=1}^TR(\tau_n) \nabla log(p(a_t|s_{t},\theta))
∇Rθ≈N1∑n=1N∑t=1TR(τn)∇log(p(at∣st,θ)) (*)
3个注意事项
- 为什么要构成log的形式:进行归一化,降低采样偶然性对于低
reward
但高频对梯度的影响 - 由于采样具有偶然性,考虑到不被采样到的点以及 R ( τ ) R(\tau) R(τ)有时候可能一直取正数,将公式里的 R ( τ ) R(\tau) R(τ)替换为 R ( τ ) − b R(\tau)-b R(τ)−b进行修正
- (*)给每个梯度的权重只考虑了整场决策的
reward
,忽略了每个action
的独特性,对其进行改进,我们引入advantage function
: A θ ( s t , a t ) A^\theta(s_t,a_t) Aθ(st,at)用于衡量 s t s_t st状态下采用 a t a_t at相对于其他action
有多好的程度。
实际训练过程
给定初始化的参数
θ
0
\theta_0
θ0,采样
N
N
N个
τ
\tau
τ计算每个
τ
\tau
τ的reward
,计算当前参数下的
∇
l
o
g
(
p
(
a
t
∣
s
t
,
θ
)
)
\nabla log(p(a_t|s_{t},\theta))
∇log(p(at∣st,θ)),进行参数
θ
\theta
θ的梯度更新得到
θ
1
\theta_1
θ1,然后对新得到的参数进行下一轮的采样与梯度更新直至训练停止。
这种训练方法被有一个问题:每次更新参数都需要重新采样,消耗了大量的时间。因而提出了off policy的方法减少采样带来的时间开销。
重要性采样
重要性采样(importance sampling)方法可以减小采样的个数,极大地提升了采样的效率。其具体实现如下:假定我们有一个分布
p
p
p,我们从分布
p
p
p中进行采样得到
x
x
x,我们希望计算得到函数
f
(
x
)
f(x)
f(x)的期望值,即
E
x
∼
p
[
f
(
x
)
]
E_{x\sim p}[f(x)]
Ex∼p[f(x)]。一个直观的思路是我们先根据分布
p
p
p采样
N
N
N个点,然后计算这
N
N
N个点的均值作为期望的估计。然而有时候我们无法直接从分布
p
p
p进行采样,这种时候可以从一个与分布
p
p
p接近的分布
q
q
q进行采样,然后将结果转化为依据分布
p
p
p采样的均值。
E
x
∼
p
[
f
(
x
)
]
=
E
x
∼
q
[
f
(
x
)
p
(
x
)
q
(
x
)
]
E_{x\sim p}[f(x)]=E_{x\sim q}[f(x)\frac{p(x)}{q(x)}]
Ex∼p[f(x)]=Ex∼q[f(x)q(x)p(x)]这里的分布
q
q
q应该尽可能接近分布
p
p
p时,公式才能在采样意义下成立。
off policy的方法使用重要性采样的方法降低了采样的次数进而减小了采样带来的时间开销。on policy方法与off policy方法最大的区别就是二者采样的方式是不同的,on policy方法使用梯度下降方法更新参数后按照新参数进行采样,而off policy方法依旧使用之前旧参数采样的结果(这里假设了参数更新并未很多因而分布变化并不大)。
on policy:
∇
R
θ
=
E
τ
∼
p
θ
(
τ
)
[
R
(
τ
n
)
∇
l
o
g
(
p
θ
(
τ
)
)
]
\nabla R_\theta=E_{\tau \sim p_\theta(\tau)}[R(\tau_n)\nabla log(p_\theta(\tau))]
∇Rθ=Eτ∼pθ(τ)[R(τn)∇log(pθ(τ))]
off policy:
∇
R
θ
=
E
τ
∼
p
θ
′
(
τ
)
[
R
(
τ
n
)
p
θ
(
τ
)
p
θ
′
(
τ
)
∇
l
o
g
(
p
θ
(
τ
)
)
]
\nabla R_\theta=E_{\tau \sim p_{\theta '}(\tau)}[R(\tau_n)\frac{p_\theta(\tau)}{p_{\theta '}(\tau)}\nabla log(p_\theta(\tau))]
∇Rθ=Eτ∼pθ′(τ)[R(τn)pθ′(τ)pθ(τ)∇log(pθ(τ))]
可以发现off policy在参数设定为 θ ′ \theta ' θ′下进行采样,梯度下降更新的是 θ \theta θ而非 θ ′ \theta ' θ′,因此采样可以复用。
value based 强化学习的目标
与policy based强化学习不同,value based模型通过神经网络学习environment针对给定state以及action的reward,帮助agent进行当前state进行action的决策。value based强化学习假定存在一个类似于先知的函数 Q ( s , a ; θ ) Q(s,a;\theta) Q(s,a;θ)它可以在给定state的条件下计算出每个action的奖励期望是多大,并且用一个神经网络来学习它。有了这样的先知后,模型自然可以通过选择当前state下reward最高的action进行操作。
Temporal Differential learning (TD learning)
TD learning是训练上述
Q
(
s
,
a
;
θ
)
Q(s,a;\theta)
Q(s,a;θ)模型的方法,其训练思想基于监督学习,需要一个“真实标签”。但由于真实标签在这个训练场景下获取需要大量时间开销,因此我们会用TD target
来拟合真实的标签即拟合真实的reward
y
t
=
r
t
+
max
γ
Q
(
s
t
+
1
,
a
t
+
1
;
θ
)
y_t=r_t+\max \gamma Q(s_{t+1}, a_{t+1}; \theta)
yt=rt+maxγQ(st+1,at+1;θ),并使用梯度下降方法来使得
Q
(
s
t
,
a
t
;
θ
)
Q(s_t,a_t;\theta)
Q(st,at;θ)接近
y
t
y_t
yt。
参考
- 价值学习__Value-Based_Reinforcement_Learning(ps:这个up也出了视频介绍policy-based reinforcement learning视频不长,讲的很清晰)
- 李弘毅老师强化学习教学视频合集(ps:里面有一些视频内容是重合的可以挑着看)