# 基本概念

# 概述

现在有一个智能体(agent)和一个复杂不确定的环境(environment)。智能体会从环境里面获取到当前状态(state)(sSs \in \mathcal{S}),根据这个状态,智能体会根据某种策略 π\pi(policy)来输出一个动作(action)(aAa \in \mathcal{A})。然后环境会根据智能体采取的动作和奖励函数 RR,返回给智能体一个奖励(reward)(rRr \in \mathcal{R})。环境会怎么对动作进行反馈是由一个模型(model)来定义的,这个模型可能是已知的,也可能是未知的。然后智能体会根据转移概率 PP(transition function)转移到一个新的状态。

强化学习(Reinforcement Learning)的目标就是,让智能体通过不断的尝试和获得反馈,学习到一个最优策略,从而最大化它能获得的累计奖励 GG(cumulative future reward),也被叫做回报(return)。

rl illustration

# Model-Based / Model-Free

首先是 model-free 和 mode-based 的区别,需要理解的是强化学习中的 model 跟智能体没有关系,model 只跟环境有关,它决定了奖励函数 RR 和转移概率 PP。因此:

  • model-based:已知环境,即已知转移概率和奖励函数,那么可以用动态规划(dynamic programming)来解决问题
  • model-free:未知环境

# 回合与轨迹

对于时间步 t=1,2,,Tt = 1, 2, \dots, T轨迹(trajectory)是指一个回合(episode)中,智能体观测到的所有的状态、动作、奖励序列:

s1,a1,r2,s2,a2,,sTs_1, a_1, r_2, s_2, a_2, \dots, s_T

# 状态转移概率与奖励函数

model 是对环境的描述,它包含两个部分:转移概率 PP 与奖励函数 RR

假设智能体目前处于状态 ss,然后它采取了一个动作,并转移到了状态 ss',并得到了一个奖励 rr,我们可以把这一步表示为:(s,a,s,r)(s, a, s', r)

转移概率 PP 是一个条件概率密度函数,它表示了在状态 ss 采取动作 aa,能转移到状态 ss' 并得到奖励 rr 的概率:

P(s,rs,a)=P(St+1=s,Rt+1=rSt=s,At=a)P(s', r \mid s, a) = \mathbb{P}(S_{t+1} = s', R_{t+1} = r \mid S_t = s, A_t = a)

而状态转移概率 PssaP_{ss'}^a(state-transition function)消去了奖励这一项,表示在状态 ss 采取动作 aa,能转移到状态 ss' 的概率:

Pssa=P(ss,a)=P(St+1=sSt=s,At=a)=rRP(s,rs,a)P_{ss'}^a = P(s' \mid s, a) = \mathbb{P}(S_{t+1} = s' \mid S_t = s, A_t = a) = \sum_{r \in \mathcal{R}} P(s', r \mid s, a)

奖励函数 RR 估计了在状态 ss 采取动作 aa 后能得到的奖励的期望:

R(s,a)=E(Rt+1St=s,At=a)=rRrsSP(s,rs,a)R(s, a) = \mathbb{E}(R_{t+1} \mid S_t = s, A_t = a) = \sum_{r \in \mathcal{R}} r \sum_{s' \in \mathcal{S}} P(s', r \mid s, a)

# 回报与折扣

强化学习最大化的是回报 GG,也叫累计奖励。回报是从当前时刻 tt 开始到一回合结束的所有折扣奖励的总和:

Gt=Rt+1+γRt+2+=k=0γkRt+k+1G_t = R_{t+1} + \gamma R_{t+2} + \dots = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}

γ(0,1]\gamma \in (0, 1] 是一个超参数折扣因子(discount factor),它会给未来的奖励打折扣,越久远的未来的奖励的折扣越大,因为:

  • 越是未来的奖励不确定性越大(比如股市)
  • 未来的奖励对当下并没有用,比如你现在给我一万块,或是一年后给我一万块,那我肯定选择现在就把一万块拿了
  • 不打折扣的话就需要考虑无限的时间步
  • 有些马尔可夫过程是带环的,它并没有终结的时候,我们想避免这个无穷的奖励

# 策略函数与值函数

策略函数和状态值函数都是在强化学习中需要学习的东西。

# 策略函数

策略函数 π(st)\pi(s_t)(一个条件概率密度函数)会控制智能体根据当前状态 sts_t 来选择最优动作,从而最大化累计奖励(即回报)。需要注意的是最大化的是累积奖励而不是当前奖励。

策略函数可能是随机策略(stochastic policy function),也可能是确定策略(deterministic policy function):

  • 随机策略:π(as)=P[A=aS=s]\pi(a \mid s) = \mathbb{P}[A = a \mid S = s]
  • 确定策略:π(s)=a\pi(s) = a

# 动作值函数

之前已经给出了回报 GG 的定义,它是 tt 时刻之后所有奖励的加权和。但在 tt 时刻我们并不知道 GtG_t 的值,此时 GtG_t 仍然是个随机变量,它的随机性来源于 tt 时刻之后的状态和动作 St+1,At+1,S_{t+1}, A_{t+1}, \cdots,而这些状态和动作是有 π\pi 决定的。

因此动作值函数(action-value function,“Q-value”)会对 GtG_t 关于变量 St+1,At+1,S_{t+1}, A_{t+1}, \cdots 求条件期望:

Qπ(st,at)=ESt+1,At+1,[GtSt=st,At=at]=Eπ[GtSt=st,At=at]\begin{aligned} Q_{\pi}(s_t, a_t) &= \mathbb{E}_{S_{t+1}, A_{t+1}, \cdots} \Big [ G_t \mid S_t = s_t, A_t = a_t \Big ] \\ & = \mathbb{E}_{\pi} \Big [ G_t \mid S_t = s_t, A_t = a_t \Big ] \end{aligned}

动作值函数依赖于当前状态 sts_t、当前动作 ata_t 和策略 π\pi

能让动作值函数最大的策略就是最优策略:

π=argmaxπQπ(st,at)\pi_* = \arg \max_{\pi} Q_{\pi}(s_t, a_t)

还可以定义一个最优动作值函数:

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

显然有:

Qπ(st,at)=Q(st,at)Q_{\pi_*}(s_t, a_t) = Q_*(s_t, a_t)

# 状态值函数

每个状态 sts_t 还有一个对应的状态值函数 Vπ(st)V_{\pi}(s_t)(state-value function),它是动作值函数对当前动作 AtA_t 求期望:

Vπ(st)=EAtπ(st)[Qπ(st,At)]=aAQπ(st,a)π(ast)\begin{aligned} V_{\pi}(s_t)& = \mathbb{E}_{A_t \thicksim \pi(s_t)} \Big [ Q_{\pi}(s_t, A_t) \Big ] \\ & = \sum_{a \in \mathcal{A}} Q_{\pi}(s_t, a) \pi(a \mid s_t) \end{aligned}

状态值函数 Vπ(st)V_{\pi}(s_t) 只依赖于策略 π\pi 和当前状态 sts_t,不依赖于动作,因此它评估了策略 π\pi 和当前状态 sts_t 的好坏。

能让状态值函数最大的策略就是最优策略:

π=argmaxπVπ(st)\pi_* = \arg \max_{\pi} V_{\pi}(s_t)

最优状态值函数:

V(st)=maxπVπ(st)V_*(s_t) = \max_{\pi} V_{\pi}(s_t)

显然有:

Vπ(st)=V(st)V_{\pi_*}(s_t) = V_*(s_t)

# 优势函数

动作值函数减状态值函数就是优势函数(advantage function):

Aπ(st,at)=Qπ(st,at)Vπ(st)A_{\pi}(s_t, a_t) = Q_{\pi}(s_t, a_t) - V_{\pi}(s_t)