https://www.freecodecamp.org/news/an-introduction-to-reinforcement-learning-4339519de419/
本文,我们要学的是:
- 什么是强化学习,为什么reward是强化学习的中心思想
- 强化学习的三种方法
- 深度强化学习中”深度“的含义是什么
The Reinforcement Learning Process
依然以马里奥作为例子。RL的流程如下:
- Agent从env中接收到state S 0 S0 S0(在这个例子中我们接受到的就是超级马里奥(env)里的游戏第一帧(state))
- 基于state S 0 S0 S0,agent采取 action A 0 A0 A0(向右)
- env进入到新的state S 1 S1 S1(新的一帧)
- env给agent一些reward R 1 R1 R1(没死:+1)
这个RL循环输出一系列 state,action和reward。
agent的目标是最大化期望累积reward。
The central idea of the Reward Hypothesis
强化学习是基于reward假设的思想的。所有的目标都被描述为最大化期望累积reward。
G
t
=
R
t
+
1
+
R
t
+
2
+
.
.
.
G_t=R_{t+1}+R_{t+2}+...
Gt=Rt+1+Rt+2+...
也就是
G
t
=
∑
k
=
0
T
R
t
+
k
+
1
G_t=\sum^{T}_{k=0}R_{t+k+1}
Gt=k=0∑TRt+k+1
但是现实中,我们不能单纯的把rewards加起来。游戏早期的reward
是更可能发生的,因为它们比长期的未来reward要更容易预测。这里就引入
γ
\gamma
γ,来对reward进行抑制。该值越大,说明我们越重视长期reward,相反,我们更看重短期reward。
那么我们的带衰减的累积期望reward就是:
G
t
=
∑
k
=
0
T
γ
k
R
t
+
k
+
1
G_t =\sum^{T}_{k=0}\gamma^k R_{t+k+1}
Gt=k=0∑TγkRt+k+1
Episodic or Continuing tasks
一个任务就是一个RL的一个实例。我们有两种类型的任务:情节式的和连续式的。
Episodic tasks
在这个例子里,我们有一个起始点和一个终点(一个终止state)。这就创建了一个片段:states,actions,rewards和new states的列表。
就拿超级马里奥来说,一个片段开始于游戏的开始,结束于马里奥死掉或者到达终点。
Continuous tasks
这类任务是永久持续的(没有终止state)。在该case下,agent就要学会如何选择最优动作并且同时与env进行交互。
例如,一个agent在进行自动股票交易。对于这个任务来说,没有起始点和终点。agent不断运行知道我们停止它为止。
Monte Carlo vs TD Learning methods
我们有两种学习方式:
- 在片段的结束收集reward,然后计算最大期望未来reward:蒙特卡洛方法
- 每一步估计reward:Temporal Difference Learning(TD,时间差学习)
Monte Carlo
每次到达终止状态,agent得到总共累积的reward,看这次到底做的如何。在该方法下,只有游戏结束时才得到reward。
然后我们带着以前的知识开始新一轮的游戏。agent每次迭代之后会做出更好的决策。
V
(
S
t
)
←
V
(
S
t
)
+
α
[
G
t
−
V
(
S
t
)
]
V(S_{t})\leftarrow V(S_{t})+\alpha [G_t-V(S_{t})]
V(St)←V(St)+α[Gt−V(St)]
V
(
S
t
)
V(S_t)
V(St)代表从当前state开始的最大期望未来reward。方程左边是该次的
V
V
V,右边是上次的
V
V
V。
举个例子,我们考虑一个迷宫环境:
- 我们总是从同一个起始点开始。
- 我们终止这次学习当猫吃了老鼠或者老鼠移动了超过20步。
- 在该次学习的结束,我们有一系列的State,Actions,Rewards和New States。
- agent会对rewards进行求和。
- 然后更新 V ( S t ) V(S_t) V(St)。
- 然后带着新知识开始新的游戏。
随着跑的次数越来越多,agent玩的越来越好。
Temporal Difference Learning : learning at each time step
TD Learning,相反就是不等到游戏结束就更新最大预期未来报酬估计:对于经历中发生的不终止状态都会更新它的价值估计。
这个方法叫做
T
D
(
0
)
TD(0)
TD(0)或者 one step TD(每一步都更新价值函数)
V
(
S
t
)
←
V
(
S
t
)
⎵
Previous estimate
+
α
[
R
t
+
1
⎵
Reward t+1
+
γ
V
(
S
t
+
1
)
⎵
Discounted value on the next step
⎵
TD Target
−
V
(
S
t
)
]
V(S_{t})\leftarrow \underbrace{V(S_{t})}_{\text{Previous estimate}}+\alpha [\underbrace{\underbrace{R_{t+1}}_{\text{Reward t+1}}+\underbrace{\gamma V(S_{t+1})}_{\text{Discounted value on the next step}}}_{\text{TD Target}}-V(S_t)]
V(St)←Previous estimate
V(St)+α[TD Target
Reward t+1
Rt+1+Discounted value on the next step
γV(St+1)−V(St)]
Exploration/Exploitation trade off
在我们了解不同的解决RL的问题的策略之前,我们必须了解一个重要的概念:探索/利用权衡。
- 探索是尽可能的得到环境的更多信息。
- 利用是就已知的知识来最大化reward。
记住,我们的目标是最大化期望累计报酬。但是,我们会因此落入共同陷阱中。
依然以这个迷宫为例,老鼠周围的小cheese个数是无限的,但是每次只能+1,角落里的cheese+1000,如果仅仅注重reward,那么老鼠只能利用最近的reward(exploitation)。
但如果agent做一点点的探索,它就能发现巨大的reward。
Three approaches to Reinforcement Learning
Value Based
在该方法中,目标是最大化价值函数
V
(
s
)
V(s)
V(s)
价值函数能够告诉我们每个state的最大期望未来报酬。
每个state的价值是agent从该state开始在未来所能累积的reward。
v
π
(
s
)
=
E
π
[
R
t
+
1
+
γ
R
t
+
2
+
.
.
.
∣
S
t
=
s
]
v_{\pi}(s)=\mathbb E_{\pi}[R_{t+1}+\gamma R_{t+2}+... | S_t=s]
vπ(s)=Eπ[Rt+1+γRt+2+...∣St=s]
agent会根据价值函数在每一步选择state最大的进行移动。
Policy Based
该方法,我们想要直接优化一个方针函数
π
(
s
)
\pi(s)
π(s),不使用价值函数。
策略就是定义在给定状态下的agent的行为。
a
=
π
(
s
)
a=\pi(s)
a=π(s)
有两种策略:
- 确定的:对于给定的state,我们总是返回同一动作。
- 随机的:输出一个关于动作的概率分布。
Stochastic policy:
π
(
a
∣
s
)
=
P
[
A
t
=
a
∣
S
t
=
s
]
\text{Stochastic policy: } \pi(a|s)=\mathbb P[A_t=a|S_t=s]
Stochastic policy: π(a∣s)=P[At=a∣St=s]
如上图,策略告诉我们每一步的最优动作。
Model Based
该方法中,我们对环境进行建模。这就意味着我们创建了一个环境行为的模型。
问题是对于每个环境,我们就需要不同的模型表达。所以在本系列中,我们步探讨这种RL。
Introducing Deep Reinforcement Learning
深度强化学习就是引入深度神经网络来解决强化学习问题——所以命名“深度”。
例如,下一章我们会着眼于Q-Learning和Deep Q-Learning。
你会发现在第一种方法中,我们使用传统的算法来创建一个Q table 来帮助我们寻找每个state所采取的动作。
在第二种方法中,我们使用神经网络(来逼近基于state的reward:q value)。