习题
4.1 如果我们想让机器人自己玩视频游戏,那么强化学习中三个组成部分(演员、环境、奖励函数)具体代表什么?
- 演员:相当于智能游戏手柄
- 环境:游戏APP,返回智能体的当前状态,以及APP当前的环境状态、奖励等
- 奖励函数:基于游戏APP的规则获取的奖励。
4.2 在一个过程中,一个具体的轨迹s1, a1, s2, a2
出现的概率取决于什么?
主要由两部分造成的影响,智能体和环境。
- 智能体:在初始s1状态,智能体基于策略方式选取行动a1[
p
θ
(
a
t
∣
s
t
)
p_{\theta}(a_t|s_t)
pθ(at∣st) ], 然后环境基于奖励r1。智能体的策略和参数
θ
\theta
θ,决定了
a1, a2
,即不同的行动 - 环境:在智能体的行动
a1
之后,环境会给予随后的状态[ P ( s t + 1 ∣ s t , a t ) P(s_{t+1}|s_t, a_t) P(st+1∣st,at) ]。环境对行动给出反馈,决定s1, s2
4.3 当我们在计算最大期望奖励(maximize expected reward)时, 应该使用什么方法?
使用梯度上升的办法,最大化期望
4.4 我们应该如何理解梯度策略的公式?
∇
R
θ
‾
=
1
N
∑
n
=
1
N
∑
t
=
1
T
n
R
(
τ
n
)
∇
l
o
g
p
θ
(
a
t
b
∣
s
t
n
)
\nabla \overline{R_{\theta}}= \frac{1}{N}\sum^{N}_{n=1}\sum^{T_n}_{t=1}R(\tau^n)\nabla log p_{\theta} (a_t^b|s_t^n)
∇Rθ=N1n=1∑Nt=1∑TnR(τn)∇logpθ(atb∣stn)
在采样的数据中,采样到某一个状态
s
t
s_t
st要执行某一个动作
a
t
a_t
at,如果
τ
\tau
τ的奖励为正,则增加在状态
s
t
s_t
st时执行
a
t
a_t
at的概率,反之则减小概率。
4.5 我们可以使用哪些方法来进行梯度提升的计算?
和一般的神经网络一样基于Tensorflow 或者 Pytorch框架,用Adam、SGD、rmsprop等优化器来进行梯度提升的计算。
4.6 进行梯度策略的优化时的小技巧有哪些?
添加基线
- 增加原因:
- 1)在4.4中我们希望得到的奖励有正有负数,而在实际的项目中奖励是从0开始的。
- 2)我们进行梯度上升参数更新的时候是采用的采样数据,当有一个动作未被采用,且其他动作都计算出需要提升概况的时候,那么未被采用的动作就需要降低概率(所有动作的对数概率和要为0)这显然不合理.
基于以上两点我们可以增加一个基准线就可以避免上述的问题了。即增加基线b
∇
R
θ
‾
=
1
N
∑
n
=
1
N
∑
t
=
1
T
n
(
R
(
τ
n
)
−
b
)
∇
l
o
g
p
θ
(
a
t
b
∣
s
t
n
)
\nabla \overline{R_{\theta}}= \frac{1}{N}\sum^{N}_{n=1}\sum^{T_n}_{t=1}(R(\tau^n) - b)\nabla log p_{\theta} (a_t^b|s_t^n)
∇Rθ=N1n=1∑Nt=1∑Tn(R(τn)−b)∇logpθ(atb∣stn)
b
可以采用奖励的均值
R
=
E
[
R
(
τ
)
]
R=E[R(\tau)]
R=E[R(τ)]
分配合适的分数
在我们增加基线的梯度上升策略的式子中,我们可以看出。所有的动作都是同样的权重进行加权。可以参考我们之前推导贝尔曼方程时用到价值函数的计算:
G
t
=
γ
t
+
1
+
γ
G
t
+
1
G_t=\gamma_{t+1} + \gamma G_{t+1}
Gt=γt+1+γGt+1 ;即当前状态的价值等于当前动作的价值加上未来的价值总和。未来价值用折扣系数进行衰减。那么我们可以将策略梯度优化为如下:
∇
R
θ
‾
=
1
N
∑
n
=
1
N
∑
t
=
1
T
n
(
∑
t
′
=
t
T
n
γ
t
′
−
t
r
t
′
n
−
b
)
∇
l
o
g
p
θ
(
a
t
b
∣
s
t
n
)
\nabla \overline{R_{\theta}}= \frac{1}{N}\sum^{N}_{n=1}\sum^{T_n}_{t=1}(\sum_{t'=t}^{T_n}\gamma^{t'-t}r_{t'}^n - b)\nabla log p_{\theta} (a_t^b|s_t^n)
∇Rθ=N1n=1∑Nt=1∑Tn(t′=t∑Tnγt′−trt′n−b)∇logpθ(atb∣stn)
综合以上两种技巧,我们将其统称为优势函数(advantage function),用A 来代表优势函数。优势函数取决于状态和动作,即我们需计算的是在某一个状态s 采取某一个动作a 的时候,优势函数有多大。优势函数的意义在于,假设我们在某一个状态st 执行某一个动作at,相较于其他可能的动作的优势。
它在意的不是一个绝对,而是相对的好,即相对优势(relative advantage),因为会减掉一个基线b。
A
θ
(
s
t
,
a
t
)
A_\theta (s_t, a_t)
Aθ(st,at)通常可以是由一个网络预估出来的,这个网络叫做评论员。
4.7 对于梯度策略的两种方法, 蒙特卡罗(MC)强化学习和时序差分(TD)强化学习方法有什么联系和区别。
- 蒙特卡罗(MC):更新频率为一个回合结束。
- 时序差分(TD):更新频率为一个动作结束之后。
两者的目的是一致的,更新策略梯度,更新智能体行动策略
4.8 请详细描述REINFORCE的计算过程
- 基于确定的策略模型输出每个动作的概率,对所有的动作概率
- 采用采样的方法去选择动作与环境进行交互,同时环境会反馈一个整个回合的数据
- 将该回合数据计算损失,并用策略梯度进行迭代更新策略模型。