深度强化学习(一)术语概念

190 阅读1分钟

强化学习

强化学习的理念是 Agent 通过与环境交互并获得正负反馈从而学习与环境交互的行为方式。

Reinforcement learning is a framework for solving control tasks (also called decision problems) by building agents that learn from the environment by interacting with it through trial and error and receiving rewards (positive or negative) as unique feedback.

RL_process.jpg

基本流程如下:

  1. Agent 从环境中获得初始 state S0S_0
  2. 基于 s0s_0 Agent 采取动作 a0a_0
  3. 环境进入一个新的状态 state s1s_1
  4. Agent 获得 reward r1r_1

在强化学习中涉及到很多术语和概念,这里做一个总结归纳以便及时复习。

概念

随机变量

随机变量是不确定的量,它的值取决于一个随机事件。我们可以使用概率质量函数或者概率密度函数描述随机变量在某个确定值(附近)的可能性。对于一个随机变量 XX,其定义域为 χ\chi,概率质量(密度)函数为 p(x)p(x),其满足如下性质:

  • 对于离散型随机变量
xχp(x)=1\sum_{x \in \chi}p(x)=1
  • 对于连续型随机变量
χp(x)dx=1\int_{\chi}p(x)dx=1

随机变量的函数 f(X)f(X) 的期望计算如下:

  • 对于离散型随机变量
E[f(X)]=xχp(x)f(x)E[f(X)]=\sum_{x \in \chi}p(x) \cdot f(x)
  • 对于连续性随机变量
E[f(X)]=χp(x)f(x)dxE[f(X)]=\int_{\chi}p(x) \cdot f(x)dx

通过期望可以消除随机变量的随机性,当存在多个随机变量时,可以对其中一个或者多个求期望从而观察剩下随机变量的影响。

状态、观测和动作

  • 状态(state)是对当前环境的完整描述,例如象棋比赛可以完整看到棋盘上所有信息。
  • 观测(observation)是对当前环境的局部描述,例如游戏只能观察当前屏幕部分信息。
  • 状态空间(state space)是所有可能存在的状态的集合。状态空间可以是离散的,也可以是连续的;可以是有限集合,也可以是无限可数集合。
  • 动作(action)是智能体对当前状态做出的决策,例如游戏中上下左右移动。
  • 动作空间(action space)是所有可能动作的集合,动作空间可以是离散集合或连续集合,可以是有限集合或无限集合。

有时候会把状态和观测统称为状态。

策略

策略(policy)是在给定状态情况下,智能体采用动作的概率分布。

π(as)=P(A=aS=s)\pi(a|s)=P(A=a|S=s)

对于给定的状态 SS,智能体采取的动作是随机的。

状态转移

状态转移(state transition)是指环境从一个当前状态转移到一个新状态,它与当前状态以及智能体的动作有关,状态转移也是随机的。

p(ss,a)=p(S=sS=s,A=a)p(s'|s,a)=p(S'=s'|S=s,A=a)

动作随机性状态转移随机性是强化学习随机性来源。

奖励

奖励(reward)是在当前状态下智能体做出某个动作后,环境给出的反馈,奖励与当前状态 ss、智能体动作 aa 有关(有时也与下一个状态 ss' 有关),奖励可以正的也可以是负的。

回报

回报(return)是从当前时刻开始到回合结束所有奖励的总和,是未来奖励的累计。强化学习的目标是最大化回报

Ut=Rt+Rt+1+Rt+2+Rt+3+...U_t = R_t + R_{t+1} + R_{t+2} + R_{t+3} + ...

但是 tt 时刻的奖励 RtR_tt+1t+1 时刻的奖励 Rt+1R_{t+1} 不是同等重要的,未来的奖励具有更大的不确定性,因此考虑回报时,应该更多考虑当前奖励而不是未来奖励。所以我们在计算回报时对未来奖励添加一个折扣:

Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+...U_t = R_t + \gamma R_{t+1} + \gamma^{2} R_{t+2} + \gamma^{3} R_{t+3} + ...

其中 γ\gamma 称为折扣系数,它是一个超参数,下面讨论的回报都是折扣回报。

奖励取决于当前状态和动作,由于动作具有随机性,状态转移具有随机性,所以奖励也是随机变量,回报也是随机变量。

价值函数

价值函数是回报的期望,可以反映当前状态、动作的好坏程度。

动作价值函数

动作价值函数(action-value function)相当于一个先知,对于某个策略 π\pi,动作价值函数根据当前状态和动作得出回报。

根据回报的公式,回报 UtU_t 取决于 St,St+1,St+2,St+3...S_t, S_{t+1}, S_{t+2}, S_{t+3}... 以及 At,At+1,At+2,At+3...A_t, A_{t+1}, A_{t+2}, A_{t+3}... 我们只有当前 tt 时刻的状态 sts_t 和动作 ata_t,之后的状态和动作都是随机变量,为了消除这些随机变量的影响,我们对其求期望,因此有:

Qπ(st,at)=E[UtSt=st,At=at]Q_{\pi}(s_{t}, a_{t})=E[U_t|S_t=s_t, A_t=a_t]

消除多余随机变量后,动作价值函数只与 tt 时刻的状态 sts_t 和动作 ata_t 有关。有了动作价值函数,就可以知道在当前状态 ss 下,采取动作 aa,并按照策略 π\pi 继续进行下去的回报的期望。

最优动作价值函数

动作价值函数是对于某个策略得出当前状态和动作下的回报,最优动作价值函数是当前状态和动作下所有策略的回报的最优值。

Q(st,at)=maxπQπ(st,at)Q^* (s_t, a_t) = \underset {\pi} {\max} Q_{\pi}(s_t, a_t)

有了最优动作价值函数,可以知道在当前状态下采取某个动作的回报期望的最大值。

状态价值函数

状态价值函数是对当前状态的评估,可以知道在当前状态下能获得多少回报,状态价值函数是动作价值函数对动作的期望。

Vπ(st)=EA[Qπ(st,A)]V_{\pi} (s_t) = E_A [Q_{\pi}(s_t, A)]

其中 AA 服从 Aπ(st)A \sim \pi (\cdot | s_t),因此状态价值函数可以写成如下形式:

  • 对于离散动作
Vπ(st)=EA[Qπ(st,A)]=aπ(ast)Qπ(st,a)V_{\pi} (s_t) = E_A [Q_{\pi}(s_t, A)] = \sum_a \pi(a|s_t) \cdot Q_{\pi}(s_t, a)
  • 对于连续动作
Vπ(st)=EA[Qπ(st,A)]=aπ(ast)Qπ(st,a)daV_{\pi} (s_t) = E_A [Q_{\pi}(s_t, A)] = \int_a \pi(a|s_t) \cdot Q_{\pi}(s_t, a)da

两种价值函数的含义

  • 动作价值函数:给定策略 π\piQπ(s,a)Q_{\pi}(s, a) 评估在当前状态 ss 下选择动作 aa 的好坏。
  • 最优动作价值函数:Q(s,a)Q^* (s, a) 评估当前状态 ss 下选择动作 aa 回报的上限,与策略无关,选取所有策略中最优值。
  • 状态价值函数:给定策略 π\piVπ(s)V_{\pi}(s) 评估当前状态 ss 的好坏。

状态价值函数只与策略和状态有关,我们对状态求期望就可以消除状态这个随机变量,而从量化策略的好坏。ES[Vπ(S)]E_S[V_{\pi}(S)]。一个直观的理解是好的策略总会出现优势局面。

如何控制 Agent

如果我们有一个较好的策略函数 π(as)\pi(a|s),我们可以基于当前状态求出各个动作的概率,然后按照概率对动作进行采样。

如果我们没有策略函数 π\pi,我们可以利用最优动作价值函数 Q(s,a)Q^* (s, a),对于当前状态,我们采取使得 QQ^* 的值最大的动作,at=argmaxaQ(st,a)a_t = \underset {a} {\arg \max} Q^* (s_t, a)