【强化学习入门笔记】3.2 策略梯度法:REINFORCE
本系列为学习赵世钰老师的《强化学习的数学原理》所作的学习笔记.
课程视频网址:https://space.bilibili.com/2044042934
既然我们可以用函数拟合值函数, 那么是否可以直接拟合策略呢? 本节将介绍策略梯度法.
3.2.1 策略梯度法
3.2.1.1 策略表征
在之前的算法中, 我们的策略都是用离散表格的形式表达:
a 1 a 2 a 3 a 4 a 5 s 1 π ( a 1 ∣ s 1 ) π ( a 2 ∣ s 1 ) π ( a 3 ∣ s 1 ) π ( a 4 ∣ s 1 ) π ( a 5 ∣ s 1 ) ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ s 9 π ( a 1 ∣ s 9 ) π ( a 2 ∣ s 9 ) π ( a 3 ∣ s 9 ) π ( a 4 ∣ s 9 ) π ( a 5 ∣ s 9 ) \begin{array}{c|c|c|c|c|c}\hline & a_1 & a_2 & a_3 & a_4 & a_5 \\\hline s_1 & \pi\left(a_1 \mid s_1\right) & \pi\left(a_2 \mid s_1\right) & \pi\left(a_3 \mid s_1\right) & \pi\left(a_4 \mid s_1\right) & \pi\left(a_5 \mid s_1\right) \\\hline \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\\hline s_9 & \pi\left(a_1 \mid s_9\right) & \pi\left(a_2 \mid s_9\right) & \pi\left(a_3 \mid s_9\right) & \pi\left(a_4 \mid s_9\right) & \pi\left(a_5 \mid s_9\right) \\\hline\end{array} s1⋮s9a1π(a1∣s1)⋮π(a1∣s9)a2π(a2∣s1)⋮π(a2∣s9)a3π(a3∣s1)⋮π(a3∣s9)a4π(a4∣s1)⋮π(a4∣s9)a5π(a5∣s1)⋮π(a5∣s9)
与值函数拟合类似的, 也可以通过一个函数来拟合它, 或者通过神经网络:
其中 θ \theta θ是拟合函数的参数. 显然, 可以通过梯度下降法求最优策略:
θ t + 1 = θ t + α ∇ θ J ( θ t ) , \theta_{t+1}=\theta_t+\alpha \nabla_\theta J\left(\theta_t\right), θt+1=θt+α∇θJ(θt),
既然是一个最优化问题, 首先需要定义评价最优策略的指标. 有以下两种方法.
3.2.1.2 评价最优策略的指标:平均状态值
基于策略 π \pi π的所以状态值的加权平均值, 其中 d ( s ) d(s) d(s)是状态的权重分布:
v ˉ π = ∑ s ∈ S d ( s ) v π ( s ) = E S ∼ d [ v π ( S ) ] \bar{v}_\pi=\sum_{s \in \mathcal{S}} d(s) v_\pi(s)=\mathbb{E}_{S \sim d}\left[v_\pi(S)\right] vˉπ=s∈S∑d(s)vπ(s)=ES∼d[vπ(S)]
- d ( s ) d(s) d(s)与状态值相互独立
此时我们可以简单的采用均匀分布 d ( s ) = 1 / ∣ S ∣ d(s)=1 /|\mathcal{S}| d(s)=1/∣S∣, 也可以只考虑某一个状态 d 0 ( s 0 ) = 1 , d 0 ( s ≠ s 0 ) = 0. d_0\left(s_0\right)=1, \quad d_0\left(s \neq s_0\right)=0 . d0(s0)=1,d0(s=s0)=0.
- d ( s ) d(s) d(s)依赖于状态值
此时 d ( s ) d(s) d(s)是基于策略 π \pi π的静态分布 d π T d_\pi^T dπT, P π P_\pi Pπ是状态转移概率分布
d π T P π = d π T , d_\pi^T P_\pi=d_\pi^T, dπTPπ=dπT,
d π T d_\pi^T dπT被设计为:在马尔科夫决策过程中, 状态被探索到的概率.
总之 v ˉ π \bar{v}_\pi vˉπ代表策略的平均状态值, 我们的目标是调整参数 θ \theta θ, 让 v ˉ π \bar{v}_\pi vˉπ尽可能的大. 接下来我们写出的等价形式:
J ( θ ) = lim n → ∞ E [ ∑ t = 0 n γ t R t + 1 ] = E [ ∑ t = 0 ∞ γ t R t + 1 ] J(\theta)=\lim _{n \rightarrow \infty} \mathbb{E}\left[\sum_{t=0}^n \gamma^t R_{t+1}\right]=\mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R_{t+1}\right] J(θ)=n→∞limE[t=0∑nγtRt+1]=E[t=0∑∞γtRt+1]
上式实际就是马尔科夫决策过程中完整的奖励期望, 将期望按照状态和权重逐个展开:
E [ ∑ t = 0 ∞ γ t R t + 1 ] = ∑ s ∈ S d ( s ) E [ ∑ t = 0 ∞ γ t R t + 1 ∣ S 0 = s ] = ∑ s ∈ S d ( s ) v π ( s ) = v ˉ π \begin{aligned}\mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R_{t+1}\right] & =\sum_{s \in \mathcal{S}} d(s) \mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R_{t+1} \mid S_0=s\right] \\& =\sum_{s \in \mathcal{S}} d(s) v_\pi(s) \\& =\bar{v}_\pi\end{aligned} E[t=0∑∞γtRt+1]=s∈S∑d(s)E[t=0∑∞γtRt+1∣S0=s]=s∈S∑d(s)vπ(s)=vˉπ
另一个较为简单的等价形式:
v ˉ π = d T v π v π = [ … , v π ( s ) , … ] T ∈ R ∣ S ∣ d = [ … , d ( s ) , … ] T ∈ R ∣ S ∣ \begin{aligned} \bar{v}_\pi&=d^T v_\pi \\ v_\pi & =\left[\ldots, v_\pi(s), \ldots\right]^T \in \mathbb{R}^{|\mathcal{S}|} \\d & =[\ldots, d(s), \ldots]^T \in \mathbb{R}^{|\mathcal{S}|}\end{aligned} vˉπvπd=dTvπ=[…,vπ(s),…]T∈R∣S∣=[…,d(s),…]T∈R∣S∣
3.2.1.3 评价最优策略的指标:平均奖励值
也可以用平均奖励值作为指标, 定义如下:
r ˉ π ≐ ∑ s ∈ S d π ( s ) r π ( s ) = E S ∼ d π [ r π ( S ) ] \begin{aligned}\bar{r}_\pi & \doteq \sum_{s \in \mathcal{S}} d_\pi(s) r_\pi(s) \\& =\mathbb{E}_{S \sim d_\pi}\left[r_\pi(S)\right]\end{aligned} rˉπ≐s∈S∑dπ(s)rπ(s)=ES∼dπ[rπ(S)]
d π T d_\pi^T dπT同样是马尔科夫决策过程中, 状态被探索到的概率.
其中具体某一个状态s的奖励值定义为:
r π ( s ) ≐ ∑ a ∈ A π ( a ∣ s , θ ) r ( s , a ) = E A ∼ π ( s , θ ) [ r ( s , A ) ∣ s ] r_\pi(s) \doteq \sum_{a \in \mathcal{A}} \pi(a \mid s, \theta) r(s, a)=\mathbb{E}_{A \sim \pi(s, \theta)}[r(s, A) \mid s] rπ(s)≐a∈A∑π(a∣s,θ)r(s,a)=EA∼π(s,θ)[r(s,A)∣s]
同样我们也可以写出它的两个等价形式, 首先当n趋近无穷时, 下式就是平均奖励值:
lim n → ∞ 1 n E [ ∑ t = 0 n − 1 R t + 1 ] = ∑ s ∈ S d π ( s ) r π ( s ) = r ˉ π . \lim _{n \rightarrow \infty} \frac{1}{n} \mathbb{E}\left[\sum_{t=0}^{n-1} R_{t+1}\right]=\sum_{s \in \mathcal{S}} d_\pi(s) r_\pi(s)=\bar{r}_\pi . n→∞limn1E[t=0∑n−1Rt+1]=s∈S∑dπ(s)rπ(s)=rˉπ.
以及:
r ˉ π = ∑ s ∈ S d π ( s ) r π ( s ) = d π T r π r π = [ … , r π ( s ) , … ] T ∈ R ∣ S ∣ d π = [ … , d π ( s ) , … ] T ∈ R ∣ S ∣ \begin{aligned} &\bar{r}_\pi=\sum_{s \in \mathcal{S}} d_\pi(s) r_\pi(s)=d_\pi^T r_\pi \\ & r_\pi=\left[\ldots, r_\pi(s), \ldots\right]^T \in \mathbb{R}^{|\mathcal{S}|} \\& d_\pi=\left[\ldots, d_\pi(s), \ldots\right]^T \in \mathbb{R}^{|\mathcal{S}|}\end{aligned} rˉπ=s∈S∑dπ(s)rπ(s)=dπTrπrπ=[…,rπ(s),…]T∈R∣S∣dπ=[…,dπ(s),…]T∈R∣S∣
实际上, 平均奖励值是平均状态值的一部分:
r ˉ π = ( 1 − γ ) v ˉ π \bar{r}_\pi=(1-\gamma) \bar{v}_\pi rˉπ=(1−γ)vˉπ
3.2.1.4 梯度计算
策略梯度定义如下:
∇ θ J ( θ ) = ∑ s ∈ S η ( s ) ∑ a ∈ A ∇ θ π ( a ∣ s , θ ) q π ( s , a ) \nabla_\theta J(\theta)=\sum_{s \in \mathcal{S}} \eta(s) \sum_{a \in \mathcal{A}} \nabla_\theta \pi(a \mid s, \theta) q_\pi(s, a) ∇θJ(θ)=s∈S∑η(s)a∈A∑∇θπ(a∣s,θ)qπ(s,a)
其中 η \eta η是状态分布, ∇ θ π \nabla_\theta \pi ∇θπ是基于参数 θ \theta θ的策略 π \pi π. 上式还可以写成:
∇ θ J ( θ ) = E S ∼ η , A ∼ π ( S , θ ) [ ∇ θ ln π ( A ∣ S , θ ) q π ( S , A ) ] \nabla_\theta J(\theta)=\mathbb{E}_{S \sim \eta, A \sim \pi(S, \theta)}\left[\nabla_\theta \ln \pi(A \mid S, \theta) q_\pi(S, A)\right] ∇θJ(θ)=ES∼η,A∼π(S,θ)[∇θlnπ(A∣S,θ)qπ(S,A)]
推导过程如下, 首先对下式求梯度:
∇ θ ln π ( a ∣ s , θ ) = ∇ θ π ( a ∣ s , θ ) π ( a ∣ s , θ ) \nabla_\theta \ln \pi(a \mid s, \theta)=\frac{\nabla_\theta \pi(a \mid s, \theta)}{\pi(a \mid s, \theta)} ∇θlnπ(a∣s,θ)=π(a∣s,θ)∇θπ(a∣s,θ)
然后将其代入到公式中, 即可推导出第二种形式:
∇ θ J ( θ ) = ∑ s ∈ S η ( s ) ∑ a ∈ A ∇ θ π ( a ∣ s , θ ) q π ( s , a ) = E S ∼ η [ ∑ a ∈ A ∇ θ π ( a ∣ S , θ ) q π ( S , a ) ] = E [ ∑ a ∈ A π ( a ∣ S , θ ) ∇ θ ln π ( a ∣ S , θ ) q π ( S , a ) ] = E S ∼ η , A ∼ π ( S , θ ) [ ∇ θ ln π ( A ∣ S , θ ) q π ( S , A ) ] . \begin{aligned}\nabla_\theta J(\theta) & =\sum_{s \in \mathcal{S}} \eta(s) \sum_{a \in \mathcal{A}} \nabla_\theta \pi(a \mid s, \theta) q_\pi(s, a) \\& =\mathbb{E}_{S \sim \eta}\left[\sum_{a \in \mathcal{A}} \nabla_\theta \pi(a \mid S, \theta) q_\pi(S, a)\right]\\ & =\mathbb{E}\left[\sum_{a \in \mathcal{A}} \pi(a \mid S, \theta) \nabla_\theta \ln \pi(a \mid S, \theta) q_\pi(S, a)\right] \\ & =\mathbb{E}_{S \sim \eta, A \sim \pi(S, \theta)}\left[\nabla_\theta \ln \pi(A \mid S, \theta) q_\pi(S, A)\right] . \end{aligned} ∇θJ(θ)=s∈S∑η(s)a∈A∑∇θπ(a∣s,θ)qπ(s,a)=ES∼η[a∈A∑∇θπ(a∣S,θ)qπ(S,a)]=E[a∈A∑π(a∣S,θ)∇θlnπ(a∣S,θ)qπ(S,a)]=ES∼η,A∼π(S,θ)[∇θlnπ(A∣S,θ)qπ(S,A)].
3.2.2 蒙特卡洛策略梯度 (REINFORCE)
首先, 我们写出策略梯度的更新公式:
θ t + 1 = θ t + α ∇ θ J ( θ t ) = θ t + α E [ ∇ θ ln π ( A ∣ S , θ t ) q π ( S , A ) ] , \begin{aligned}\theta_{t+1} & =\theta_t+\alpha \nabla_\theta J\left(\theta_t\right) \\& =\theta_t+\alpha \mathbb{E}\left[\nabla_\theta \ln \pi\left(A \mid S, \theta_t\right) q_\pi(S, A)\right],\end{aligned} θt+1=θt+α∇θJ(θt)=θt+αE[∇θlnπ(A∣S,θt)qπ(S,A)],
但是它的真实梯度期望是不知道的, 因此用随机梯度下降法, 用采样梯度代替:
θ t + 1 = θ t + α ∇ θ ln π ( a t ∣ s t , θ t ) q t ( s t , a t ) \theta_{t+1}=\theta_t+\alpha \nabla_\theta \ln \pi\left(a_t \mid s_t, \theta_t\right) q_t\left(s_t, a_t\right) θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at)
其中采样 q t ( s t , a t ) q_t\left(s_t, a_t\right) qt(st,at)是 q π ( s t , a t ) q_\pi\left(s_t, a_t\right) qπ(st,at)的近似, 如果使用蒙特卡洛估计动作值的方式, 即采样episode并计算discounted return. 那么这种方法就是REINFORCE.
接下来, 我们将详细的解释这个更新公式, 首先将梯度项展开:
∇ θ ln π ( a t ∣ s t , θ t ) = ∇ θ π ( a t ∣ s t , θ t ) π ( a t ∣ s t , θ t ) \nabla_\theta \ln \pi\left(a_t \mid s_t, \theta_t\right)=\frac{\nabla_\theta \pi\left(a_t \mid s_t, \theta_t\right)}{\pi\left(a_t \mid s_t, \theta_t\right)} ∇θlnπ(at∣st,θt)=π(at∣st,θt)∇θπ(at∣st,θt)
将其中的常数项简写为 β t \beta_t βt:
θ t + 1 = θ t + α ( q t ( s t , a t ) π ( a t ∣ s t , θ t ) ) ⏟ β t ∇ θ π ( a t ∣ s t , θ t ) , \theta_{t+1}=\theta_t+\alpha \underbrace{\left(\frac{q_t\left(s_t, a_t\right)}{\pi\left(a_t \mid s_t, \theta_t\right)}\right)}_{\beta_t} \nabla_\theta \pi\left(a_t \mid s_t, \theta_t\right), θt+1=θt+αβt (π(at∣st,θt)qt(st,at))∇θπ(at∣st,θt),
(1) β t \beta_t βt影响策略概率的变化
因为这是一个梯度下降法的更新公式, 因此:
- β t > 0 \beta_t>0 βt>0时, π ( a t ∣ s t , θ t ) \pi\left(a_t \mid s_t, \theta_t\right) π(at∣st,θt)会在此次更新变大, 即选择动作 a t a_t at的概率变大
- β t < 0 \beta_t<0 βt<0时, π ( a t ∣ s t , θ t ) \pi\left(a_t \mid s_t, \theta_t\right) π(at∣st,θt)会在此次更新变小, 即选择动作 a t a_t at的概率变小
- β t \beta_t βt代表探索(exploration)和开发(exploitation)的平衡
上面已经说明了 β t \beta_t βt越大, 会使得选择此动作的概率越大. 那么我们观察 β t \beta_t βt的分子是动作值, 分母是概率值.
- 分子动作值越大, β t \beta_t βt越大, 代表鼓励开发(exploitation)当前动作值已经比较大的动作.
- 分母概率值越小, β t \beta_t βt越大, 代表鼓励探索(exploration)当前概率值还比较小的动作.