强化学习
机器通过“试错”的方式进行学习,类似于动物训练的模式:
智能体Agent与环境Env进行交互,根据Env反馈的reward来进行动作action的优化,逐步形成对reward的预期,最终产生能获得最大利益的习惯性行为,即策略。
目标: 最大化长期回报
下图来自:https://blog.youkuaiyun.com/aliceyangxi1987/article/details/73327378
基本实现过程
- 如果agent的某个行为【a】策略导致环境Env反馈一个正向奖赏(强化信号r),则agent以后产生此行为策略的趋势加强,反之则减弱。
- agent根据强化信号【r】和环境当前状态【s】再选择下一个动作【a】,选择的原则是使受到正向奖赏的概率增大。
- 选择的动作不仅影响立即强化值,且影响环境下一个状态的r和最终的r
与监督学习的区别:
-
没有标记样本。强化信号是对agent动作的好坏做出评价,而非告诉agent如何产生正确的动作——就像直接测试而不上课的老师。
-
监督学习相当于直接为各状态进行标记:
x=状态,y=应采取的正确动作
,
若已知r/A的梯度信息,则可以直接使用监督学习算法,但有时候强化信号r与产生的动作A没有明确的函数形式描述,所以梯度信息无法得到。 -
因此在强化学习中,需要某种随机单元,使agent在可能动作空间中进行搜索并发现正确的动作。
简要术语&符号
基本概念
Agent
- 智能体。学习者、决策者。
Environment/Env
- 环境。agent外部的一切。
s
s
s - 状态(state)。一个表示环境的数据。
a
a
a - 行动(action)。agent可以做的动作。
A
(
s
)
\mathcal{A(s)}
A(s) - 状态s的行动集合。agent在状态s下,可以做的所有动作。
r
/
R
r/R
r/R - 奖赏(reward)。agent在一个行动后,获得的奖赏。
R
\mathcal{R}
R - 所有奖赏集合。本体可以获得的所有奖赏。
s
t
s_t
st - 第t步的状态(state)。t from 0
a
t
a_t
at - 第t步的行动(select action)。t from 0
r
t
r_t
rt - 第t步的奖赏(reward)。t from 1
G
t
G_t
Gt - 第t步的长期回报(return)。t from 0
π π π : 策略(policy)。
策略规定了状态s时,应该选择的行动a。
π
=
[
π
(
s
1
)
,
⋯
,
π
(
s
n
)
]
π=[π(s1),⋯,π(sn)]
π=[π(s1),⋯,π(sn)]
π
(
s
)
\pi(s)
π(s) - 策略π在状态s下,选择的行动。
π
∗
\pi^∗
π∗ - 最优策略(optimal policy)。
π
(
a
∣
s
)
\pi(a|s)
π(a∣s) - 随机策略π在状态s下,选择的行动a的概率。
r
(
s
,
a
)
r(s,a)
r(s,a) - 在状态s下,选择行动a的奖赏。
r
(
s
,
a
,
s
′
)
r(s,a,s′)
r(s,a,s′) - 在状态s下,选择行动a,变成(状态s’)的奖赏。
p
(
s
′
,
r
∣
s
,
a
)
p(s',r|s,a)
p(s′,r∣s,a) - (状态s、行动a)的前提下,变成(状态s’、奖赏r)的概率。
p
(
s
′
∣
s
,
a
)
p(s'|s,a)
p(s′∣s,a)- (状态s、行动a)的前提下,变成(状态s’)的概率。
以下只出现于值函数方法
v π ( s ) v_π(s) vπ(s)- 状态价值。使用策略π,(状态s的)长期奖赏 G t G_t Gt。
q π ( s , a ) q_π(s,a) qπ(s,a) - 行动价值。使用策略π,(状态s,行动a的)长期奖赏 G t G_t Gt。
v ∗ ( s ) v^∗(s) v∗(s)- 最佳状态价值。
q ∗ ( s , a ) q^∗(s,a) q∗(s,a) - 最佳行动价值。
V ( s ) V(s) V(s)- v π ( s ) v_π(s) vπ(s)的集合。
Q ( s , a ) Q(s,a) Q(s,a) - q π ( s , a ) q_π(s,a) qπ(s,a)的集合。
Returns的计算
Returns即 r r r——采取相应动作所能得到的奖励(rewards)。
- 计算式1:把未来发生的奖励和现在将要得到的奖励放在了同等重要的地位上。从当前时刻的状态到最终结束状态被称作一个片段(episode),每个时刻的状态被称作一个task(episodic task):
- 计算式2:往往不会将将来的reward和当前reward放在同等重要的地位上,因此我们需要加入discount这个元素。公式如下:
G t ≐ ∑ k = 0 ∞ γ k R t + k + 1 w h e r e k - the sequence number of an action. γ - discount rate, 0 ⩽ γ ⩽ 1 G_t \doteq \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} \\ where \\ k \text{ - the sequence number of an action.} \\ \gamma \text{ - discount rate,} \ 0 \leqslant \gamma \leqslant 1 Gt≐k=0∑∞γkRt+k+1wherek - the sequence number of an action.γ - discount rate, 0⩽γ⩽1
即:
γ
\gamma
γ是个衰减系数,这样离当前状态越远的reward考虑的程度越弱,
γ
=
1
\gamma=1
γ=1时退化为公式1
Policy Gradient 方法
目标函数:
U
(
θ
)
=
E
(
∑
t
=
0
T
R
(
s
t
,
a
t
)
;
π
θ
)
=
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
U( \theta ) =E\left(\sum\limits ^{T}_{t=0} R( s_{t} ,a_{t}) ;\pi _{\theta }\right) =\sum\limits _{\tau } P( \tau ;\theta ) R( \tau )
U(θ)=E(t=0∑TR(st,at);πθ)=τ∑P(τ;θ)R(τ)
τ = { s 0 , a 0 , . . . , s T , a T } \tau=\{s_0,a_0,...,s_T,a_T\} τ={s0,a0,...,sT,aT}
R ( τ ) = ∑ t = 0 T r ( s t , a t ) R( \tau ) =\sum\limits ^{T}_{t=0} r( s_{t} ,a_{t}) R(τ)=t=0∑Tr(st,at),序列 τ \tau τ的reward之和
P ( τ ; θ ) = p ( s 0 ) ∏ t = 0 T π θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) P( \tau ;\theta)=p(s_{0})\prod_{t=0}^{T}\pi_\theta( a_{t} | s_{t})p(s_{t+1}|s_{t},a_{t}) P(τ;θ)=p(s0)∏t=0Tπθ(at∣st)p(st+1∣st,at) 代表序列 τ \tau τ出现的概率
表示在参数 θ \theta θ控制的策略 π \pi π下,序列 τ \tau τ的reward之和的期望
目的:找到最优参数
θ
\theta
θ,使
m
a
x
U
(
θ
)
=
m
a
x
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
maxU( \theta ) =max\sum\limits _{\tau } P( \tau ;\theta ) R( \tau )
maxU(θ)=maxτ∑P(τ;θ)R(τ)
在PG里,用梯度下降法解决,即
θ
n
e
w
=
θ
o
l
d
+
α
∇
θ
U
(
θ
)
\theta _{new} =\theta _{old} +\alpha \nabla _{\theta } U( \theta )
θnew=θold+α∇θU(θ)
如何计算目标函数的梯度?下面一个变换给出:
∇
θ
U
(
θ
)
=
∇
θ
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
=
∑
τ
P
(
τ
;
θ
)
∇
θ
P
(
τ
;
θ
)
R
(
τ
)
P
(
τ
;
θ
)
=
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
∇
θ
l
o
g
P
(
τ
;
θ
)
\nabla _{\theta } U( \theta )=\nabla _{\theta }\sum\limits _{\tau } P( \tau ;\theta ) R( \tau ) =\sum\limits _{\tau } P( \tau ;\theta )\frac{\nabla _{\theta } P( \tau ;\theta ) R( \tau )}{P( \tau ;\theta )}=\sum\limits _{\tau } P( \tau ;\theta ) R( \tau ) \nabla _{\theta } logP( \tau ;\theta )
∇θU(θ)=∇θτ∑P(τ;θ)R(τ)=τ∑P(τ;θ)P(τ;θ)∇θP(τ;θ)R(τ)=τ∑P(τ;θ)R(τ)∇θlogP(τ;θ)
从而梯度的计算转换为“求解
R
(
τ
)
∇
θ
l
o
g
P
(
τ
;
θ
)
R( \tau ) \nabla _{\theta } logP( \tau ;\theta )
R(τ)∇θlogP(τ;θ)的期望”
利用【蒙特卡洛法】近似估计,根据当前的策略
π
\pi
π采样得到m条轨迹:
∇
θ
U
(
θ
)
≈
1
m
∑
i
=
0
m
R
(
τ
)
∇
θ
log
[
P
(
τ
;
θ
)
]
\nabla _{\theta } U( \theta ) \approx \frac{1}{m}\sum\limits ^{m}_{i=0} R( \tau ) \nabla _{\theta } \log[P( \tau ;\theta )]
∇θU(θ)≈m1i=0∑mR(τ)∇θlog[P(τ;θ)]
接下来需要求解:
∇
θ
log
[
P
(
τ
;
θ
)
]
=
∇
θ
log
[
p
(
s
0
)
∏
t
=
0
T
π
θ
(
a
t
∣
s
t
)
p
(
s
t
+
1
∣
s
t
,
a
t
)
]
\nabla_{\theta}\log[P( \tau ;\theta )] = \nabla_{\theta}\log[p(s_{0})\prod_{t=0}^{T}\pi_\theta( a_{t} | s_{t})p(s_{t+1}|s_{t},a_{t})]
∇θlog[P(τ;θ)]=∇θlog[p(s0)t=0∏Tπθ(at∣st)p(st+1∣st,at)]
=
∇
θ
[
log
p
(
s
0
)
+
∑
t
=
0
T
log
[
π
θ
(
a
t
∣
s
t
)
]
+
∑
t
=
0
T
log
p
(
s
t
+
1
∣
s
t
,
a
t
)
]
= \nabla_{\theta}[\log p(s_{0}) + \sum_{t=0}^{T}\log[\pi_\theta( a_{t} | s_{t})] + \sum_{t=0}^{T}\log p(s_{t+1}|s_{t},a_{t})]
=∇θ[logp(s0)+t=0∑Tlog[πθ(at∣st)]+t=0∑Tlogp(st+1∣st,at)]
=
∑
t
=
0
T
∇
θ
log
[
π
θ
(
a
t
∣
s
t
)
]
= \sum_{t=0}^{T}\nabla_{\theta}\log[\pi_\theta( a_{t} | s_{t})]
=t=0∑T∇θlog[πθ(at∣st)]
将结果带回原式:
∇
θ
U
(
θ
)
≈
1
m
∑
i
=
0
m
R
(
τ
)
∇
θ
log
[
P
(
τ
;
θ
)
]
=
1
m
∑
i
=
0
m
[
[
∑
t
=
0
T
r
(
s
i
,
t
,
a
i
,
t
)
]
∑
t
=
0
T
∇
θ
log
[
π
θ
(
a
t
∣
s
t
)
]
\nabla _{\theta } U( \theta ) \approx \frac{1}{m}\sum\limits ^{m}_{i=0} R( \tau ) \nabla _{\theta } \log[P( \tau ;\theta )]=\frac{1}{m}\sum\limits ^{m}_{i=0} [[ \sum\limits ^{T}_{t=0} r( s_{i,t} ,a_{i,t}) ]\sum_{t=0}^{T}\nabla_{\theta}\log[\pi_\theta( a_{t} | s_{t})]
∇θU(θ)≈m1i=0∑mR(τ)∇θlog[P(τ;θ)]=m1i=0∑m[[t=0∑Tr(si,t,ai,t)]t=0∑T∇θlog[πθ(at∣st)]
从而得到更新的参数:
θ
n
e
w
=
θ
o
l
d
+
α
∇
θ
U
(
θ
)
\theta _{new} =\theta _{old} +\alpha \nabla _{\theta } U( \theta )
θnew=θold+α∇θU(θ)
12/06 尚未整理 DPG 和 DDPG
附:RL方法分类
[1] 强化学习基本概念
[2] 增强学习–策略梯度算法(Policy Gradient)
[3] 浅谈强化学习中的策略梯度算法
[4] 强化学习读书笔记 - 00 - 术语和数学符号