前言
每个人在不同的人生阶段做出不同的人生选择,最终拥有不同的人生经历和收获。在机器学习领域,强化学习(reinforcement learning)就是这样一种算法,它针对智能体的状态(当前的人生阶段),做一个动作决策(人生选择),该决策与环境交互返回一个奖励(人生经历与收获)。

基于智能体的三要素
- 感知状态(S)。
- 决策动作(A)。
- 奖励(R)。
我们可以推导强化学习的最终目标。
状态转移概率 (Transition Probability) —— 环境的客观规律
- $S_{t+1}$ :表示智能体在时间步 t+1t+1 时所处的状态,是一个随机变量。
- $∼$ :表示“服从于”或“采样自”,说明下一状态不是确定性的,而是从某个概率分布中随机抽取的。
-
$P(⋅ S_t,A)$:条件概率分布,表示在给定当前状态和智能体的动作前提下,下一状态的概率分布。
奖励信号 (Reward) —— 及时反馈
- 智能体在状态 $S_t$ 执行动作 $A_t$ 后,环境转移到 $S_{t+1}$,并给出一个标量(实数) $r_{t+1}$ 作为即时反馈。
回报 (Return) —— 累加的整体分数
$G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k+1}$
- $G_t$ 代表从当前时刻 $t$ 开始,未来所有奖励的总和。整个交互过程的每一轮获得的奖励信号可以进行累加,形成智能体的整体回报(return)。在实际应用中,未来的奖励通常是不确定的,所以我们会乘上一个折扣因子 $\gamma$($0 \le \gamma \le 1$)。
环境的动态性 (Stochasticity) —— 结果的不确定性
-
$G_t$ 是一个随机变量。因为状态转移概率 $P(S_{t+1} S_t, A_t)$ 本身带有随机性,即使每次都采取同样的策略 $\pi$,每次算出来的 $G_t$ 都不一样。
价值 (Value) —— 真正的优化目标
- 单次回报 $G_t$ 不稳定,因此需要数学期望(平均值)。$V^{\pi}(s)$ 叫做状态价值函数(State-Value Function)。如果我们把时间轴“压缩”,从空间分布的角度来看,期望回报可以转化为奖励函数在占用度量上的期望。占用度量 $\rho^\pi(s, a)$ 描述了在策略 $\pi$ 下,智能体长期访问特定“状态-动作对”的概率分布。因此,价值函数可以等价地写成:
强化学习的终极目标
强化学习的终极目标,就是找到一个最优策略 $\pi^*$,使得价值函数最大化,而寻找最优策略,等价于寻找最优的占用度量。
智能体在环境中通过奖励 $r$ 获得反馈,计算出总回报 $G$;因为环境有随机性导致 $G$ 不稳定,所以智能体转而追求 $G$ 的数学期望,也就是价值 $V$。
而强化学习的全部意义,就是通过不断试错,在满足环境物理规律(状态转移概率 $P$)的前提下,找到一张最优的“路线热力图”(最优占用度量 $\rho^*$),让智能体尽可能多地停留在高奖励的区域,从而实现价值 $V$ 的最大化。
强化学习与监督学习的区别
监督学习有一个固定的“标准答案(标签)”,监督学习像传统的闭卷考试,每道题都有标准答案。模型的任务就是不断调整自己的参数,让自己的预测输出无限逼近这个标准答案。它的数学本质是最小化预测值和真实标签之间的误差(Loss)。
强化学习没有固定的“标准答案”,强化学习像面试,根据你的回答,临时决定问你下一个问题。智能体做出的每一个决策(动作),都会影响下一步状态。它的数学本质是当你改变了策略 π ,你就改变了智能体在环境中的行为轨迹,从而改变了它的占用度量 $\rho$。
多臂老虎机(multi-armed bandit,MAB)
多臂老虎机问题,可以被看作简化版的强化学习,它不考虑状态信息,只有动作和奖励。
问题描述
一个拥有K根拉杆的老虎机,拉动每根拉杆对应关于奖励的概率分布R,每拉动一根拉杆,可以获得实际奖励r。我们希望在奖励分布R未知的情况下,获得T次拉杆的最大累积奖励。

该问题可以表示为一个元组<A,R>:
- A为动作集合,对于K根拉杆,动作空间对应集合${a_1, …, a_k}$。
-
R为奖励概率分布,拉动每根拉杆的动作对应奖励概率分布 $\mathcal R(r a)$。
整个问题的目标是 $max\sum^T_{t=1}r_t$ 。
累计懊悔
| 对于每一个动作a,我们定义其期望奖励为(Q(a) = \mathbb{E}_{r\sim\mathcal{R}(\cdot | a)} \left[r\right])。 |
至少存在一根拉杆,它的期望奖励不小于拉动其他任意一根拉杆,我们将该最优期望奖励表示为 (Q^* = \max_{a\in\mathcal{A}} Q(a)),该值是环境本身固有的真实常量。
引入懊悔(regret)概念:懊悔定义为拉动当前拉杆的动作a与最优拉杆的期望奖励差,即 (R(a) = Q^* - Q(a))。
累积懊悔(cumulative regret)即操作T次拉杆后累积的懊悔总量,对于一次完整的T步决策({a_1,a_2,\dots,a_T}),累积懊悔为 (\sigma_R = \sum_{t=1}^{T} R(a_t))。MAB 问题的目标为最大化累积奖励,等价于最小化累积懊悔。
估计期望奖励
为了计算累积懊悔,我们首先需要估算每个动作的期望奖励 $Q(a)$ 。
在T步决策内,我们将期望奖励设为0,则
对于$\forall a \in \mathcal{A}$,初始化计数器$(N(a)=0)$和期望奖励估值$\hat{Q}(a)=0$
- $\mathbf{for}\ t = 1 \to T\ \mathbf{do}$
- 选取某根拉杆,该动作记为$a_t$
- 得到奖励$r_t$
- 更新计数器: $N(a_t)=N(a_t)+1$
- 更新期望奖励估值: $\hat{Q}(a_t)=\hat{Q}(a_t)+\frac{1}{N(a_t)}\big[r_t-\hat{Q}(a_t)\big]$
- $\mathbf{end\ for}$
如果将所有数求和再除以次数,其缺点是每次更新的时间复杂度和空间复杂度均为(O(n))。而采用增量式更新,时间复杂度和空间复杂度均为(O(1)),公式如下。
$\begin{align*} Q_k &= \frac{1}{k}\sum_{i=1}^{k} r_i \\ &= \frac{1}{k}\left(r_k+\sum_{i=1}^{k-1} r_i\right) \\ &= \frac{1}{k}\big(r_k+(k-1)Q_{k-1}\big) \\ &= \frac{1}{k}\big(r_k+kQ_{k-1}-Q_{k-1}\big) \\ &= Q_{k-1}+\frac{1}{k}\big[r_k-Q_{k-1}\big] \end{align*}$
如果将所有数求和再除以次数,其缺点是每次更新的时间复杂度和空间复杂度均为$(O(n))$。而采用增量式更新,时间复杂度和空间复杂度均为$(O(1))$。
策略设计
接下来,我们需要设计一个策略,来决定选择什么动作。在多臂老虎机问题中,探索(exploration)与利用(exploitation)是非常经典的问题。探索是尝试拉动更多摇杆,摸清所有拉杆的获奖情况。利用是指拉动已知期望奖励最大的摇杆。
设计策略时,我们应该平衡探索与利用,近可能获得准确的摇杆奖励情况,并尽可能拉动奖励最大的摇杆。
(\epsilon)- 贪婪算法
完全贪婪算法即在每一时刻采取期望奖励估值最大的动作(拉动拉杆),这就是纯粹的利用,而没有探索。(\epsilon)- 贪婪算法在完全贪婪算法的基础上添加了噪声,每次以概率(1-\epsilon)选择以往经验中期望奖励估值最大的那根拉杆(利用),以概率(\epsilon)随机选择一根拉杆(探索),公式如下:
(a_t= \begin{cases} \arg\max_{a\in\mathcal{A}} \hat{Q}(a), & \text{采样概率:}1-\epsilon\ \text{从}\ \mathcal{A}\ \text{中随机选择}, & \text{采样概率:}\epsilon \end{cases})
随着探索次数的不断增加,我们对各个动作的奖励估计得越来越准,此时就没必要继续花大力气进行探索。所以在 (\epsilon)- 贪婪算法的具体实现中, (\epsilon) 随时间衰减,即探索的概率将会不断降低。但是请注意,(\epsilon) 不会在有限的步数内衰减至 0,因为基于有限步数观测的完全贪婪算法仍然是一个局部信息的贪婪算法,永远距离最优解有一个固定的差距。

-
对于固定(\epsilon)的问题:固定不变的(\epsilon),会永远保留固定概率去随机乱选动作,所以累积懊悔(Regret)随步数t线性往上涨。(\epsilon)越大,随机瞎选的概率越高,犯错次数越多,懊悔增长速度越快。

-
衰减(\boldsymbol{\epsilon_t=\frac1t}):t代表当前时间步。随着迭代步数t变大,探索概率(\epsilon_t)慢慢变小,后期更少做随机探索,更多信任当前学到的最优动作,累计懊悔变成次线性的。
上置信界算法
设想这样一种情况:对于一台双臂老虎机,其中第一根拉杆只被拉动过一次,得到的奖励为 0;第二根拉杆被拉动过很多次,我们对它的奖励分布已经有了大致的把握。这时你会怎么做?或许你会进一步尝试拉动第一根拉杆,从而更加确定其奖励分布。这种思路主要是基于不确定性,因为此时第一根拉杆只被拉动过一次,它的不确定性很高。一根拉杆的不确定性越大,它就越具有探索的价值。
在此引入不确定性度量 (U(a)),它会随着一个动作被尝试次数的增加而减小。我们可以使用一种基于不确定性的策略来综合考虑现有的期望奖励估值和不确定性,其核心问题是如何估计不确定性。
上置信界(upper confidence bound,UCB)算法是一种经典的基于不确定性的策略算法,它的思想用到了一个非常著名的数学原理:霍夫丁不等式(Hoeffding’s inequality)。在霍夫丁不等式中,令 (X_1,\dots,X_n)为n个独立同分布的随机变量,取值范围为([0,1]),其经验期望为(\bar{x}n=\frac{1}{n}\sum{j=1}^{n}X_j),则有
$\mathbb{P}\big\{\mathbb{E}[X] \ge \bar{x}_n + u\big\} \le e^{-2nu^2}$
- (\mathbb{E}[X]):真实期望,我们不知道真值。
- (\bar{x}_n):n次采样算出来的样本平均(多臂老虎机估计的期望奖励(\hat Q))。
- (u>0):我们设置的偏差余量。
- (e^{-2nu^2}):这个坏事发生的概率上界。
在多臂老虎机问题中,(n=N_t(a)):到时刻t为止,这个拉杆一共被拉过多少次。(\bar{x}_n=\hat Q_t(a)):采样得到的估计期望奖励。(u=\hat U_t(a)):不确定性项(置信宽度)。则公式可以写为:
$\mathbb{P}\Big\{Q(a) \ge \hat Q_t(a)+\hat U_t(a)\Big\} \le e^{-2N_t(a)\,\hat U_t(a)^2}$
(Q(a))是拉杆真实期望奖励。令右边等于一个很小的真实概率p表示真实期望超过 (\hat Q+\hat U) 的概率最多是p。
(p = e^{-2N_t(a)\,\hat U_t(a)^2})
(\boldsymbol{\hat U_t(a)=\sqrt{\frac{-\log p}{2N_t(a)}}})
(Q(a) < \hat Q(a)+\hat U(a)),这件事成立的概率至少是 (1-p)。(\boldsymbol{\hat Q(a)+\hat U(a)}) 就是上置信界 UCB:我们以很高概率相信,真实奖励不会超过这个数。
- (N_t(a))越小(拉杆很少被试)(\hat U(a))越大 → 不确定性大,置信区间很宽,鼓励多探索这个拉杆。
- (N_t(a))越大(反复拉过很多次)(\hat U(a))变小 → 估计很可靠,不确定性降低。

上置信界算法的累计懊悔也是次线性的。
汤普森采样算法
汤普森采样算法假设维护每根拉杆的「奖励的概率分布」,不是只维护一个单点平均值(\hat Q(a))。在采样阶段,对每一根拉杆各自的分布抽 1 个随机样本,选抽样结果最大的那根拉杆执行。
- 如果一个拉杆试得很少:它的分布会很宽,抽样有可能抽到很大的值,就有机会被选中,完成探索。
- 如果一个拉杆试很多、表现很好:分布会集中在高数值附近,抽出来的值普遍偏大,更容易被选中,完成利用。
它不直接算期望,用采样代替复杂积分计算,属于蒙特卡洛方法。
场景:拉动拉杆,结果只有两种:奖励 = 1(成功),奖励 = 0(失败),也就是伯努利试验。某根拉杆一共拉了 k次
- (m_1):拿到奖励 1 的次数(成功)
- (m_2):拿到奖励 0 的次数(失败)
- (k=m_1+m_2)
贝叶斯里,伯努利的共轭先验是 Beta 分布。先验:Beta (1,1),等价均匀分布,代表最开始我们对拉杆好坏完全没有先验知识。每次观测到成功就给第一个参数 + 1;观测失败第二个参数 + 1。 所以后验分布:(\text{Beta}(\alpha,\beta)=\text{Beta}(m_1+1,\ m_2+1))。

- 如果拉杆几乎全成功:(\alpha\gg\beta),分布集中靠近 1,抽样大概率抽到高值,经常被选。
- 如果拉杆几乎全失败:(\beta\gg\alpha),分布集中靠近 0,抽样大多数值低,很少被选。
- 如果拉杆只拉过很少几次:(\alpha,\beta)都很小,分布很宽,抽样可能蹦出很大的数,有机会被拿来探索。

马尔可夫决策过程
如果要用强化学习解决实际问题,第一步就是需要将问题抽象为一个马尔可夫决策过程。与多臂老虎机问题不同,马尔可夫决策过程包含状态信息以及状态的转移机制。
马尔可夫过程
在随机过程中,随机现象在某时刻的状态表示为 $S_t$ ,在已知历史信息时,下一刻状态为 $S_{t+1}$ 的概率表示为 (P(S_{t+1}|S_1,\dots,S_t))。当且仅当某时刻的状态只取决于上一时刻的状态时,一个随机过程被称为具有马尔可夫性质(Markov property),用公式表示为
$P(S_{t+1}|S_t) = P(S_{t+1}|S_1,\dots,S_t)。$
马尔可夫过程(Markov process)指具有马尔可夫性质的随机过程,也被称为马尔可夫链(Markov chain)。我们通常用元组(\langle \mathcal{S},\mathcal{P}\rangle)描述一个马尔可夫过程,其中(\mathcal{S})是有限数量的状态集合,(\mathcal{P})是状态转移矩阵(state transition matrix)。假设一共有n个状态,此时(\mathcal{S}={s_1,s_2,\dots,s_n})。状态转移矩阵(\mathcal{P})定义了所有状态对之间的转移概率,即
$\mathcal{P}= \begin{bmatrix} P(s_1|s_1) & \dots & P(s_n|s_1) \\ \vdots & \ddots & \vdots \\ P(s_1|s_n) & \dots & P(s_n|s_n) \end{bmatrix}$
矩阵(\mathcal{P})中第i行第j列元素(P(s_j|s_i)=P(S_{t+1}=s_j|S_t=s_i))表示从状态(s_i)转移到状态(s_j)的概率,我们称(P(s’|s))为状态转移函数。从某个状态出发,到达其他状态的概率和必须为 1,即状态转移矩阵(\mathcal{P})的每一行的和为 1。
给定一个马尔可夫过程,我们就可以从某个状态出发,根据它的状态转移矩阵生成一个状态序列(episode),这个步骤也被叫做采样(sampling)。
马尔可夫奖励过程
在马尔可夫过程的基础上加入奖励函数 r 和折扣因子 (\gamma),就可以得到马尔可夫奖励过程(Markov reward process)。一个马尔可夫奖励过程由 (\langle \mathcal{S}, \mathcal{P}, r, \gamma \rangle) 构成,各个组成元素的含义如下所示。
- (\mathcal{S}) 是有限状态的集合。
- (\mathcal{P}) 是状态转移矩阵。
- r 是奖励函数,某个状态s的奖励 (r(s)) 指转移到该状态时可以获得奖励的期望。
- (\gamma) 是折扣因子(discount factor),(\gamma) 的取值范围为 $
在一个马尔可夫奖励过程中,从第t时刻状态(S_t)开始,直到终止状态时,所有奖励的衰减之和称为回报(G_t)(Return),公式如下:
$G_t = R_t + \gamma R_{t+1} + \gamma^2 R_{t+2} + \dots = \sum_{k=0}^{\infty}\gamma^k R_{t+k}$
一个状态的期望回报,被称为这个状态的价值,所有状态的价值组成了价值函数:
$\begin{aligned} V(s)&=\mathbb{E}\left[G_t|S_t=s\right] \\ &=\mathbb{E}\left[R_t+\gamma R_{t+1}+\gamma^2 R_{t+2}+\dots \big|S_t=s\right] \\ &=\mathbb{E}\left[R_t+\gamma\left(R_{t+1}+\gamma R_{t+2}+\dots\right)\big|S_t=s\right] \\ &=\mathbb{E}\left[R_t+\gamma G_{t+1}\big|S_t=s\right] \\ &=\mathbb{E}\left[R_t+\gamma V(S_{t+1})\big|S_t=s\right] \end{aligned}$
在上式的最后一个等号中,一方面,即时奖励的期望正是奖励函数的输出,即(\mathbb{E}[R_t|S_t=s]=r(s));另一方面,等式中剩余部分(\mathbb{E}\left[\gamma V(S_{t+1})\big|S_t=s\right])可以根据从状态s出发的转移概率得到,即可以得到
$V(s)=r(s)+\gamma \sum_{s'\in \mathcal{S}} p(s'|s)V(s')$
上式就是马尔可夫奖励过程中非常有名的贝尔曼方程(Bellman equation),对每一个状态都成立。若一个马尔可夫奖励过程一共有n个状态,即(\mathcal{S}={s_1,s_2,\dots,s_n}),我们将所有状态的价值表示成一个列向量(\mathcal{V}=[V(s_1),V(s_2),\dots,V(s_n)]^T),同理,将奖励函数写成一个列向量(\mathcal{R}=[r(s_1),r(s_2),\dots,r(s_n)]^T)。于是我们可以将贝尔曼方程写成矩阵的形式:
$\mathcal{V}=\mathcal{R}+\gamma \mathcal{P}\mathcal{V}=\begin{bmatrix} V(s_1)\\ V(s_2)\\ \cdots\\ V(s_n) \end{bmatrix} = \begin{bmatrix} r(s_1)\\ r(s_2)\\ \cdots\\ r(s_n) \end{bmatrix} +\gamma \begin{bmatrix} P(s_1|s_1) & P(s_2|s_1) & \dots & P(s_n|s_1)\\ P(s_1|s_2) & P(s_2|s_2) & \dots & P(s_n|s_2)\\ \cdots & & &\\ P(s_1|s_n) & P(s_2|s_n) & \dots & P(s_n|s_n) \end{bmatrix} \begin{bmatrix} V(s_1)\\ V(s_2)\\ \cdots\\ V(s_n) \end{bmatrix}$
我们可以直接根据矩阵运算求解,得到以下解析解:
$\begin{aligned} \mathcal{V}&=\mathcal{R}+\gamma \mathcal{P}\mathcal{V}\\ (I-\gamma \mathcal{P})\mathcal{V}&=\mathcal{R}\\ \mathcal{V}&=(I-\gamma \mathcal{P})^{-1}\mathcal{R} \end{aligned}$
以上解析解的计算复杂度是(O(n^3)),其中n是状态个数,因此这种方法只适用很小的马尔可夫奖励过程。求解较大规模的马尔可夫奖励过程中的价值函数时,可以使用动态规划(dynamic programming)算法、蒙特卡洛方法(Monte‑Carlo method)和时序差分(temporal difference)。
马尔可夫决策过程
在马尔可夫奖励过程的基础上,如果有外界刺激改变状态转移方程,则得到了马尔可夫决策过程(Markov decision process,MDP),所谓外界刺激,这里指的则是智能体动作。马尔可夫决策过程由元组(\langle \mathcal{S}, \mathcal{A}, P, r, \gamma \rangle)构成,其中:
- (\mathcal{S})是状态的集合;
- (\mathcal{A})是动作的集合;
- (\gamma)是折扣因子;
- (r(s,a))是奖励函数,此时奖励可以同时取决于状态s和动作a,在奖励函数只取决于状态s时,则退化为(r(s));
-
(P(s’ s,a))是状态转移函数,表示在状态s执行动作a之后到达状态(s’)的概率。
智能体根据当前状态(S_t)选择动作(A_t);对于状态(S_t)和动作(A_t),MDP 根据奖励函数和状态转移函数得到(S_{t+1})和(R_t)并反馈给智能体。智能体的目标是最大化得到的累计奖励。

| 智能体根据当前状态从动作的集合(\mathcal{A})中选择一个动作的函数,被称为策略。智能体的策略(Policy)通常用字母(\pi)表示。策略(\boldsymbol{\pi(a | s)=P(A_t=a | S_t=s)})是一个函数,表示在输入状态s情况下采取动作a的概率。 |
当一个策略是确定性策略(deterministic policy)时,它在每个状态时只输出一个确定性的动作,即只有该动作的概率为 1,其他动作的概率为 0;当一个策略是随机性策略(stochastic policy)时,它在每个状态时输出的是关于动作的概率分布,然后根据该分布进行采样就可以得到一个动作。
在 MDP 中,由于马尔可夫性质的存在,策略只需要与当前状态有关,不需要考虑历史状态。对于两个不同的策略来说,它们在同一个状态下的价值也很可能是不同的。因为不同的策略会采取不同的动作,从而之后会遇到不同的状态,以及获得不同的奖励,所以它们的累积奖励的期望也就不同,即状态价值不同。
状态价值(V_\pi(s)):从状态s,遵循策略(\pi)得到的期望回报
$V_\pi(s)=\mathbb{E}_\pi\left[G_t \mid S_t=s\right]$
不同于MRP,在MDP中,需要额外定义一个动作价值函数。
动作价值(Q 值)(Q_\pi(s,a)):在状态s执行动作a,之后遵循策略(\pi)得到的期望回报
$\Q_\pi(s,a)=\mathbb{E}_\pi\left[G_t \mid S_t=s,A_t=a\right]$
在使用策略(\pi)中,状态s的价值等于在该状态下基于策略(\pi)采取所有动作的概率与相应的价值相乘再求和的结果:
$Q^{\pi}(s,a) = r(s,a) + \gamma \sum_{s'\in \mathcal{S}} P(s'|s,a)V^{\pi}(s')$
加上 “期望”,用来和贝尔曼最优方程区分,描述固定策略(\boldsymbol{\pi})下价值函数的递推关系,使用贝尔曼期望方程(Bellman Expectation Equation)。
状态价值的贝尔曼期望方程 (V^\pi(s))
含义: 从状态s,按策略(\pi)对动作求期望;做动作a拿到即时奖励(r(s,a)),环境按转移概率跳转到(s’),再加上折扣后的下一状态价值(V^\pi(s’))。
动作价值 (Q) 的贝尔曼期望方程 (Q^\pi(s,a))
含义: 在s执行动作a,得到即时奖励(r(s,a));环境跳转到(s’);到达(s’)之后又按策略(\pi)选择后续动作(a’),对后续(Q^\pi(s’,a’))求期望,乘以折扣(\gamma)。