介绍强化学习的概念
介绍Policy-based Approach算法,关键在于如何理解用采样近似求期望。
pdf 视频1 视频2
Scenario of Reinforcement Learning
强化学习大致流程
强化学习:
输入:Observation(State)
Actor/Policy 产生Action
输出:Action (改变环境)
环境反馈 Reward
Policy-based Approach
参照机器学习3个步骤:
Step 1: define a set of function (Neural network as Actor)
输入:图像 最后转向量或者矩阵输入
输出:对应输入的action
使用神经网络的好处:
- 输入总有输出
- NN的特性,比如CNN还有最大池化这些
所以是比较泛化(generalization)的
Step 2: goodness of function
常规分类器的loss定义,也就是决定好坏
强化学习的loss是在参数
θ
\theta
θ时的总反馈
R
θ
R_{\theta}
Rθ(reward)
但是就算 θ \theta θ一样,但是 R θ R_{\theta} Rθ每次并不一样,导致的原因:
- 环境具有随机性
- Actor也具有随机性
所以是希望得到总反馈的期望 R ˉ θ \bar{R}_{\theta} Rˉθ
具体步骤可以描述为:
上面:求期望可以近似为采用N次取平均
Step 3: pick the best function
强化学习的loss是总反馈,所以是期望越大越好,所以要做梯度上升(Gradient Ascent)
关键就是怎么对
R
ˉ
θ
\bar{R}_{\theta}
Rˉθ求导?
其实也就是:
∇
P
(
τ
∣
θ
)
P
(
τ
∣
θ
)
=
1
P
(
τ
∣
θ
)
d
P
(
τ
∣
θ
)
d
θ
=
d
l
o
g
(
P
(
τ
∣
θ
)
)
d
θ
=
∇
log
P
(
τ
∣
θ
)
\frac{\nabla P(\tau \mid \theta)}{P(\tau \mid \theta)} =\frac{1}{P(\tau \mid \theta)} \frac{d P(\tau \mid \theta)}{d \theta} = \frac{d log(P(\tau \mid \theta))}{d \theta} = \nabla \log P(\tau \mid \theta)
P(τ∣θ)∇P(τ∣θ)=P(τ∣θ)1dθdP(τ∣θ)=dθdlog(P(τ∣θ))=∇logP(τ∣θ)
然后也是通过采样N次来近似,注意到最后的近似结果可以写成如下形式:
∇
R
ˉ
θ
=
1
N
∑
n
=
1
N
R
(
τ
n
)
∇
log
P
(
τ
n
∣
θ
)
=
1
N
∑
n
=
1
N
R
(
τ
n
)
∇
P
(
τ
∣
θ
)
P
(
τ
∣
θ
)
\nabla \bar{R}_{\theta} = \frac{1}{N} \sum_{n=1}^{N} R\left(\tau^{n}\right) {\nabla \log P\left(\tau^{n} \mid \theta\right)} = \frac{1}{N} \sum_{n=1}^{N} R\left(\tau^{n}\right) \frac{\nabla P(\tau \mid \theta)}{P(\tau \mid \theta)}
∇Rˉθ=N1n=1∑NR(τn)∇logP(τn∣θ)=N1n=1∑NR(τn)P(τ∣θ)∇P(τ∣θ)
上面的式子本应该:
R
(
τ
n
)
R\left(\tau^{n}\right)
R(τn)为正,梯度向上
R
(
τ
n
)
R\left(\tau^{n}\right)
R(τn)为负,梯度向下
为什么要除以
P
(
τ
∣
θ
)
P(\tau \mid \theta)
P(τ∣θ)?
除以
P
(
τ
∣
θ
)
P(\tau \mid \theta)
P(τ∣θ)是防止反馈少但是出现次数多的
θ
\theta
θ
现在的问题变成求: ∇ log P ( τ ∣ θ ) \nabla \log P(\tau \mid \theta) ∇logP(τ∣θ)
而
P
(
τ
∣
θ
)
P(\tau \mid \theta)
P(τ∣θ)可以变为
p
(
s
1
)
∏
t
=
1
T
p
(
a
t
∣
s
t
,
θ
)
p
(
r
t
,
s
t
+
1
∣
s
t
,
a
t
)
p\left(s_{1}\right) \prod_{t=1}^{T} {p\left(a_{t} \mid s_{t}, \theta\right) p\left(r_{t}, s_{t+1} \mid s_{t}, a_{t}\right)}
p(s1)∏t=1Tp(at∣st,θ)p(rt,st+1∣st,at)
发现有和
θ
\theta
θ无关的项,刚好我们的目标函数是对:
log
P
(
τ
∣
θ
)
\log P(\tau \mid \theta)
logP(τ∣θ)求导
所以最后
总结起来就是这样:
和什么要除以
P
(
τ
∣
θ
)
P(\tau \mid \theta)
P(τ∣θ)一样的原因除以
p
(
a
t
n
∣
s
t
n
,
θ
)
p\left(a_{t}^{n} \mid s_{t}^{n}, \theta\right)
p(atn∣stn,θ),注意:
∇
p
(
a
t
n
∣
s
t
n
,
θ
)
p
(
a
t
n
∣
s
t
n
,
θ
)
=
∇
log
p
(
a
t
n
∣
s
t
n
,
θ
)
\frac{\nabla p\left(a_{t}^{n} \mid s_{t}^{n}, \theta\right)}{p\left(a_{t}^{n} \mid s_{t}^{n}, \theta\right)} = \nabla \log p\left(a_{t}^{n} \mid s_{t}^{n}, \theta\right)
p(atn∣stn,θ)∇p(atn∣stn,θ)=∇logp(atn∣stn,θ)
总之最后的梯度表达式为:
∇ R ˙ θ = = 1 N ∑ n = 1 N ∑ t = 1 T n R ( τ n ) ∇ log p ( a t n ∣ s t n , θ ) \nabla \dot{R}_{\theta}= = \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}} R\left(\tau^{n}\right) \nabla \log p\left(a_{t}^{n} \mid s_{t}^{n}, \theta\right) ∇R˙θ==N1n=1∑Nt=1∑TnR(τn)∇logp(atn∣stn,θ)
回顾分类问题中交叉熵作为损失
如果类标是left,那么就有 θ ← θ + η ∇ log P ( " l e f t " ∣ s ) \theta \leftarrow \theta+\eta \nabla \log P\left("left" \mid s\right) θ←θ+η∇logP("left"∣s)
同样类比到强化学习的梯度上升式子中,比如:
输入环境
s
1
1
s_{1}^{1}
s11,期望网络输出就是
a
1
1
a_{1}^{1}
a11
输入环境 s 2 1 s_{2}^{1} s21,期望网络输出就是 a 2 1 a_{2}^{1} a21
但是 a 1 1 a_{1}^{1} a11… a 2 1 a_{2}^{1} a21这些不是已经知道了吗,为什么要在使NN去学习?
注意还有 R ( τ n ) R\left(\tau^{n}\right) R(τn),也就是说反馈越好的action,就要NN多次去学习。
Add a Baseline
有些系统的反馈总是正的
sample的
θ
\theta
θ的reward有多有少,理想情况是各种情况都被sample,所以差异会延续
但是如果有的
θ
\theta
θ没有被sample,那么它相当于对应的梯度自动减少。
所以提出添加偏移项,从而使有比较小reward变为负数。