【学习笔记】强化学习基本概念

为了加强理解,我们以《超级玛丽》游戏为例,让 AI 使用强化学习,操作马里奥走动和跳跃,完成通关任务。

深度强化学习(1/5):基本概念 Deep Reinforcement Learning (1/5)

术语

Agent

用强化学习驱动的作用对象,也就是下面 Action 的作用对象。在《超级玛丽》游戏中,这个 Agent 就是 AI 控制的马里奥。

State

当前系统状态,用 \(s\) 表示。

Action

作用对象执行的操作或动作,用 \(a\) 表示。例如,在《超级玛丽》游戏中,所有的操作包括往左走 (left)、往右走 (right)、往上走 (up)。那么,

\[ a \in \{left, right, up\} \]

Policy

策略函数,用 \(\pi\) 表示。策略函数是根据当前观测到的状态,控制 Agent 如何从动作库(Action)中选择一种动作来执行。策略函数是一个条件概率密度函数,即 \(\pi :(s, a) \mapsto [0, 1]\)

\[ \pi (a | s) = \mathbb{P}(A = a | S = s) \]

例如,

  • \(\pi(left | s) = 0.5\)

  • \(\pi(right | s) = 0.3\)

  • \(\pi(up | s) = 0.2\)

强化学习就是学习出这个策略函数。基于策略函数,控制 Agent 每一步选择出一个最优动作,完成目标。

Reward

奖励,用 \(R\) 表示。Agent 每做一次动作,系统就会给与一定的奖励。奖励定义的好坏非常影响强化学习的结果。例如,在《超级玛丽》游戏中,

  • 搜集到一个金币:\(R = +1\)

  • 赢得比赛:\(R = +10000\)

  • 输掉比赛:\(R = -10000\)

  • 什么都没发生:\(R = 0\)

强化学习的目标,是获得的奖励总和要尽量高

State Transition

状态转移。在执行了一个动作后,系统从一个状态变成另一个状态的过程,就是状态转移。用下面的图表示:


graph LR
A[old state]--action--->B[new state]

状态转移可以是随机的。这种随机性来源于环境 (Environment)。状态转移满足如下的公式:

\[ p(s'|s, a) = \mathbb{P}(S' = s' | S = s, A = a) \]

强化学习的随机性来源

  • Action 有随机性

  • State Transition 有随机性

执行流程


graph TD
S1["s(1)"]-->A1{"a(1)"}
A1-->S2["s(2)"]
A1-.->R1("r(1)")
S2-->A2{"a(2)"}
A2-->S3["s(3)"]
A2-.->R2("r(2)")
S3--"……"--->ST["s(T)"]
ST-->AT{"a(T)"}
AT-->ST1["s(T+1)"]
AT-.->RT("r(T)")

形成 (state, action, reward) 的轨迹 (trajectory): \[ (s_1,a_1,r_1), (s_2,a_2,r_2), \dots , (s_T, a_T, r_T) \]

Return

回报,未来的累计奖励 (Cumulative future reward)。\(t\) 时刻的未来累计回报用 \(U_t\) 表示,有如下公式:

\[ U_t = R_t + R_{t+1} + R_{t+2} + R_{t+3} + \dots \]

从经验来看,未来的奖励 (reward) 有时不如当下的奖励来得有价值。 例如,当下的 100 元比一年后的 100 元更有价值。 为了体现这一点,我们可以给未来的每一项奖励乘上一个取值范围是 [0, 1] 的因子,变成

\[ U_t = R_t + \gamma^{1}R_{t+1} + \gamma^{2}R_{t+2} + \gamma^{3}R_{t+3} + \dots \]

形成折扣回报 (Discounted return,即 Cumulative discounted future reward)。其中 \(\gamma\) 是介于 0 到 1 之间的折扣率 (discount rate)。 折扣率是一项超参数 (Hyper-parameter),可以在训练时被调优。

\(t\) 时刻的回报是随机的,这是因为回报依赖于未来的奖励;而未来的奖励则依赖于未来的动作和状态。 后两者都具有随机性,这也使得回报必然具有随机性。用数学公式再来整理一遍:

由于:

  1. 动作具有随机性: \[\mathbb{P}(A = a | S = s) = \pi (a | s)\]
  2. 状态转移具有随机性: \[\mathbb{P}(S' = s' | S = s, A = a) = p(s'|s, a)\]

对于任意的 \(i \ge t\),奖励 \(R_i\) 依赖于 \(S_i\)\(A_i\)。因此,给定 \(S_t\), 回报 \(U_t\) 应依赖于随机变量:\(A_t, A_{t+1}, A_{t+2}, \dots\)\(S_t, S_{t+1}, S_{t+2}, \dots\)

Value Functions

Action-Value Function

动作价值函数,是在某一时刻 \(t\),对给定的策略函数 \(\pi\),输出某个动作 \(a_t\),得到未来回报期望的函数。用 \(Q\) 表示。即

\[ Q_{\pi}(s_t, a_t) = \mathbb{E}[U_t|S_t=s_t, A_t=a_t] \]

\(U_t\)\(a_t, a_{t+1}, a_{t+2}, \dots\)\(s_t, s_{t+1}, s_{t+2}, \dots\) 的函数。

\[ U_t = U(a_t, a_{t+1}, a_{t+2}, \dots, s_t, s_{t+1}, s_{t+2}, \dots) \]

计算期望时,所有的\(a_{t+1}, a_{t+2}, \dots\)\(s_{t+1}, s_{t+2}, \dots\) 都应被积分(或累加)掉,最后只保留 \(a_t\)\(s_t\)

\(t\) 时刻对不同的策略函数分别求期望,找出期望值最大的那个动作价值函数,即可得到最优动作价值函数 (Optimal action-value function)\[ Q^*(s_t, a_t) = \max_{\pi}Q_{\pi}(s_t, a_t) \]

\(Q^*\)\(\pi\) 无关。

State-Value Function

对所有的动作 \(A\),计算 \(Q\) 的期望,可得到状态价值函数(State-value function)。用下面公式表示:

\[ V_{\pi}(s_t) = \mathbb{E}_A[Q_{\pi}(s_t, A)] \]

因为 \(A\) 服从策略函数定义的概率分布,即 \(A \sim \pi(\cdot|s_t)\),因此上式也可以写成

(动作是离散的情况) \[ V_{\pi}(s_t) = \mathbb{E}_A[Q_{\pi}(s_t, A)] = \sum_a \pi(a|s_t)\cdot Q_{\pi}(s_t, a) \] (动作是连续的情况) \[ V_{\pi}(s_t) = \mathbb{E}_A[Q_{\pi}(s_t, A)] = \int_a \pi(a|s_t)\cdot Q_{\pi}(s_t, a) da \]

两种价值函数的作用

  • 动作价值函数评估的是,对于给定的策略函数 \(\pi\),Agent 处在状态 \(s\) 时,选择动作 \(a\) 的好坏。

  • 状态价值函数评估的是,对于给定的策略函数 \(\pi\),Agent 处在状态 \(s\) 的好坏。

如果要评估策略函数本身的好坏,可以对所有状态 \(S\) 求状态价值函数的期望,即 \[ \mathbb{E}_S[V_{\pi}(S)] \]

AI 如何控制 Agent

  • 假设我们有一个好的策略函数 \(\pi(a|s)\),那么我们只需要基于当前时刻的状态 \(s_t\),随机采样一个动作即可: \[ a_t \sim \pi(\cdot|s_t) \]

  • 假设我们知道最优动作价值函数 \(Q^*(s, a)\),那么我们只需要基于当前时刻的状态 \(s_t\),选择一个可以最大化动作价值函数的动作即可:

\[ a_t = \arg\max_a Q^*(s_t, a) \]

由此可见,强化学习的目标既可以是策略函数 \(\pi(a|s)\),也可以是最优动作价值函数 \(Q^*(s, a)\)

参考


【学习笔记】强化学习基本概念
https://aizpy.com/2023/04/19/drl-study-notes-basic-concept/
作者
aizpy
发布于
2023年4月19日
许可协议