Daily AI 20250403 (深度强化学习算法)

参考资料:神经网络与深度学习

深度强化学习

1.4.深度 Q Q Q-网络

为在连续的状态和动作空间中计算值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) ,我们可以用一个函数 Q ϕ ( s , a ) Q_\phi(\boldsymbol{s}, \boldsymbol{a}) Qϕ(s,a) 来表示近似计算,称为值函数近似:
Q ϕ ( s , a ) ≈ Q π ( s , a ) Q_\phi(\boldsymbol{s}, \boldsymbol{a}) \approx Q^\pi(s, a) Qϕ(s,a)Qπ(s,a)
其中 s , a \boldsymbol{s}, \boldsymbol{a} s,a 分别是状态 s s s 和动作 a a a 的向量表示;函数 Q ϕ ( s , a ) Q_\phi(\boldsymbol{s}, \boldsymbol{a}) Qϕ(s,a) 通常是一个参数为 ϕ \phi ϕ的函数,比如神经网络,输出为一个实数,称为 Q 网络。对于 M M M个离散动作而言,Q网络可相应输出相应的值函数的值:
Q ϕ ( s ) = [ Q ϕ ( s , a 1 ) ⋮ Q ϕ ( s , a M ) ] ≈ [ Q π ( s , a 1 ) ⋮ Q π ( s , a M ) ] Q_\phi(\boldsymbol{s})=\left[\begin{array}{c} Q_\phi\left(\boldsymbol{s}, a_1\right) \\ \vdots \\ Q_\phi\left(\boldsymbol{s}, a_M\right) \end{array}\right] \approx\left[\begin{array}{c} Q^\pi\left(s, a_1\right) \\ \vdots \\ Q^\pi\left(s, a_M\right) \end{array}\right] Qϕ(s)= Qϕ(s,a1)Qϕ(s,aM) Qπ(s,a1)Qπ(s,aM)
为解决传统Q-learning在高维状态空间中无法保存完整Q表的问题,深度Q网络(Deep Q-Network,DQN)是将深度学习方法与Q-learning相结合,通过学习参数 ϕ \phi ϕ,利用深度神经网络来逼近Q函数。相应的损失函数为:
L ( ϕ ) = E ( s , a , r , s ′ ) ∼ D [ ( y − Q ϕ ( s , a ) ) 2 ] \mathcal{L}(\phi)=\mathbb{E}_{\left(s, a, r, s^{\prime}\right) \sim D}\left[(y-Q_{\phi}(s, a))^2\right] L(ϕ)=E(s,a,r,s)D[(yQϕ(s,a))2]

  • ϕ \phi ϕ :当前 Q 网络参数;
  • ϕ − \phi^{-} ϕ:目标网络参数,每隔C步从 ϕ \phi ϕ 更新一次;
  • D D D :经验回放缓冲池(replay buffer)。

具体执行过程为:

  • 通过 ε \varepsilon ε-greedy 选择动作 a
  • 执行动作 a a a ,观察 ( s , a , r , s ′ ) \left(s, a, r, s^{\prime}\right) (s,a,r,s)
  • ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s)存入经验回放池 D D D
  • 从经验回放池 D 采样一批数据
  • 计算目标值 y = r + γ max ⁡ a ′ Q ( s ′ , a ′ ; ϕ − ) y=r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; \phi^{-}\right) y=r+γmaxaQ(s,a;ϕ)
  • 通过梯度下降更新 Q Q Q 网络参数 ϕ \phi ϕ
  • 定期更新目标网络 ϕ − \phi^{-} ϕ (反向传播 梯度更新)

在基于值函数(即 Q Q Q-Function)的学习方法中,策略一般为确定性策略。策略优化通常都依赖于值函数(即策略被值函数的性质所决定),比如贪心策略 π ( s ) = arg ⁡ max ⁡ a Q ( s , a ) \pi(s)=\arg \max _a Q(s, a) π(s)=argmaxaQ(s,a) 。最优策略一般需要遍历当前状态 s 下的所有动作,并找出最优的 Q ( s , a ) Q(s, a) Q(s,a) 。当动作空间离散但是很大时,遍历求最大需要很高的时间复杂度;当动作空间是连续的并且 Q ( s , a ) Q(s, a) Q(s,a) 非凸时,也很难求解出最佳的策略.

2.基于策略函数的学习方法

强化学习的目标是学习到一个策略 π θ ( a ∣ s ) 来最大化期望回报,其中 θ 为网络参数 {\color{red}强化学习的目标是学习到一个策略 \pi_\theta(a \mid s) 来最大化期望回报,其中\theta为网络参数} 强化学习的目标是学习到一个策略πθ(as)来最大化期望回报,其中θ为网络参数。一种直接的方法是在策略空间直接搜索来得到最佳策略,称为策略搜索(Policy Search)。策略搜索本质是一个优化问题,可以分为基于梯度的优化和无梯度优化。策略搜索和基于值函数的方法相比,策略搜索可以不需要值函数,直接优化策略。参数化的策略能够处理连续状态和动作,可以直接学出随机性策略。

基于梯度的策略优化,即根据策略梯度进行梯度上升以优化 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(as)中的 θ \theta θ(假定 π \pi π关于 θ \theta θ连续可微)。对于强化学习的目标函数:
J ( θ ) = E τ ∼ p θ ( τ ) [ G ( τ ) ] = E τ ∼ p θ ( τ ) [ ∑ t = 0 T − 1 γ t r t + 1 ] \mathcal{J}(\theta)=\mathbb{E}_{\tau \sim p_\theta(\tau)}[G(\tau)]=\mathbb{E}_{\tau \sim p_\theta(\tau)}\left[\sum_{t=0}^{T-1} \gamma^t r_{t+1}\right] J(θ)=Eτpθ(τ)[G(τ)]=Eτpθ(τ)[t=0T1γtrt+1]
其中 θ \theta θ 为策略函数的参数。 p θ ( τ ) p_\theta(\tau) pθ(τ) 为基于策略 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(as) 得到轨迹 τ \tau τ 的概率。其关于 θ \theta θ的导数为:
∂ J ( θ ) ∂ θ = ∂ ∂ θ ∫ p θ ( τ ) G ( τ ) d τ = ∫ ( ∂ ∂ θ p θ ( τ ) ) G ( τ ) d τ = ∫ p θ ( τ ) ( 1 p θ ( τ ) ∂ ∂ θ p θ ( τ ) ) G ( τ ) d τ = ∫ p θ ( τ ) [ ( ∂ ∂ θ log ⁡ p θ ( τ ) ) G ( τ ) ] d τ = E τ ∼ p θ ( τ ) [ ∂ ∂ θ log ⁡ p θ ( τ ) G ( τ ) ] \begin{aligned} \frac{\partial \mathcal{J}(\theta)}{\partial \theta} & =\frac{\partial}{\partial \theta} \int p_\theta(\tau) G(\tau) \mathrm{d} \tau \\ & =\int\left(\frac{\partial}{\partial \theta} p_\theta(\tau)\right) G(\tau) \mathrm{d} \tau \\ & =\int p_\theta(\tau)\left(\frac{1}{p_\theta(\tau)} \frac{\partial}{\partial \theta} p_\theta(\tau)\right) G(\tau) \mathrm{d} \tau \\ & =\int p_\theta(\tau)\left[\left(\frac{\partial}{\partial \theta} \log p_\theta(\tau)\right) G(\tau) \right] \mathrm{d} \tau \\ & =\mathbb{E}_{\tau \sim p_\theta(\tau)}\left[\frac{\partial}{\partial \theta} \log p_\theta(\tau) G(\tau)\right] \end{aligned} θJ(θ)=θpθ(τ)G(τ)dτ=(θpθ(τ))G(τ)dτ=pθ(τ)(pθ(τ)1θpθ(τ))G(τ)dτ=pθ(τ)[(θlogpθ(τ))G(τ)]dτ=Eτpθ(τ)[θlogpθ(τ)G(τ)]
其中,第二行即莱布尼茨法则,第四行即链式法则。上式表明可通过采样轨迹(用当前策略执行多次)来估计梯度,而不需要知道轨迹分布的精确形式。参数 θ \theta θ 优化的方向是朝向使得 G ( τ ) G(\tau) G(τ) 越大的轨迹 τ \tau τ 的概率 p θ ( τ ) p_\theta(\tau) pθ(τ) 也越大。
∂ ∂ θ log ⁡ p θ ( τ ) \frac{\partial}{\partial \theta} \log p_\theta(\tau) θlogpθ(τ) 可以进一步分解为:
∂ ∂ θ log ⁡ p θ ( τ ) = ∂ ∂ θ log ⁡ ( p ( s 0 ) ∏ t = 0 T − 1 π θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) ) = ∂ ∂ θ ( log ⁡ p ( s 0 ) + ∑ t = 0 T − 1 log ⁡ π θ ( a t ∣ s t ) + ∑ t = 0 T − 1 log ⁡ p ( s t + 1 ∣ s t , a t ) ) = ∑ t = 0 T − 1 [ ∂ ∂ θ log ⁡ π θ ( a t ∣ s t ) ] \begin{aligned} \frac{\partial}{\partial \theta} \log p_\theta(\tau) &=\frac{\partial}{\partial \theta} \log \left(p\left(s_0\right) \prod_{t=0}^{T-1} \pi_\theta\left(a_t \mid s_t\right) p\left(s_{t+1} \mid s_t, a_t\right)\right) \\ & \quad=\frac{\partial}{\partial \theta}\left(\log p\left(s_0\right)+\sum_{t=0}^{T-1} \log \pi_\theta\left(a_t \mid s_t\right)+\sum_{t=0}^{T-1} \log p\left(s_{t+1} \mid s_t, a_t\right)\right) \\ & \quad=\sum_{t=0}^{T-1} \left[ \frac{\partial}{\partial \theta} \log \pi_\theta\left(a_t \mid s_t\right) \right] \end{aligned} θlogpθ(τ)=θlog(p(s0)t=0T1πθ(atst)p(st+1st,at))=θ(logp(s0)+t=0T1logπθ(atst)+t=0T1logp(st+1st,at))=t=0T1[θlogπθ(atst)]
可以看出, ∂ ∂ θ log ⁡ p θ ( τ ) \frac{\partial}{\partial \theta} \log p_\theta(\tau) θlogpθ(τ) 是和状态转移概率无关,只和策略函数相关。基于上式,策略梯度可进一步写为:
∂ J ( θ ) ∂ θ = E τ ∼ p θ ( τ ) [ ( ∑ t = 0 T − 1 ∂ ∂ θ log ⁡ π θ ( a t ∣ s t ) ) G ( τ ) ] = E τ ∼ p θ ( τ ) [ ( ∑ t = 0 T − 1 ∂ ∂ θ log ⁡ π θ ( a t ∣ s t ) ) ( G ( τ 0 : t ) + γ t G ( τ t : T ) ) ] = E τ ∼ p θ ( τ ) [ ∑ t = 0 T − 1 ( ∂ ∂ θ log ⁡ π θ ( a t ∣ s t ) γ t G ( τ t : T ) ) ] , \begin{aligned} \frac{\partial \mathcal{J}(\theta)}{\partial \theta} & =\mathbb{E}_{\tau \sim p_\theta(\tau)}\left[\left(\sum_{t=0}^{T-1} \frac{\partial}{\partial \theta} \log \pi_\theta\left(a_t \mid s_t\right)\right) G(\tau)\right] \\ & =\mathbb{E}_{\tau \sim p_\theta(\tau)}\left[\left(\sum_{t=0}^{T-1} \frac{\partial}{\partial \theta} \log \pi_\theta\left(a_t \mid s_t\right)\right)\left(G\left(\tau_{0: t}\right)+\gamma^t G\left(\tau_{t: T}\right)\right)\right] \\ & ={\color{red} \mathbb{E}_{\tau \sim p_\theta(\tau)}\left[\sum_{t=0}^{T-1}\left(\frac{\partial}{\partial \theta} \log \pi_\theta\left(a_t \mid s_t\right) \gamma^t G\left(\tau_{t: T}\right)\right)\right] }, \end{aligned} θJ(θ)=Eτpθ(τ)[(t=0T1θlogπθ(atst))G(τ)]=Eτpθ(τ)[(t=0T1θlogπθ(atst))(G(τ0:t)+γtG(τt:T))]=Eτpθ(τ)[t=0T1(θlogπθ(atst)γtG(τt:T))],
其中,
第二行是由于: G ( τ ) = ∑ k = 0 T − 1 γ k r k = ( ∑ k = 0 t − 1 γ k r k ) + ( ∑ k = t T − 1 γ k r k ) G(\tau)=\sum_{k=0}^{T-1} \gamma^k r_k=\left(\sum_{k=0}^{t-1} \gamma^k r_k\right)+\left(\sum_{k=t}^{T-1} \gamma^k r_k\right) G(τ)=k=0T1γkrk=(k=0t1γkrk)+(k=tT1γkrk),其中 ∑ k = t T − 1 γ k r k = γ t ⋅ ∑ k = t T − 1 γ k − t r k = γ t G ( τ t : T ) \sum_{k=t}^{T-1} \gamma^k r_k=\gamma^t \cdot \sum_{k=t}^{T-1} \gamma^{k-t} r_k=\gamma^t G\left(\tau_{t: T}\right) k=tT1γkrk=γtk=tT1γktrk=γtG(τt:T),故 G ( τ ) = G ( τ 0 : t ) + γ t G ( τ t : T ) G(\tau)=G\left(\tau_{0: t}\right)+\gamma^t G\left(\tau_{t: T}\right) G(τ)=G(τ0:t)+γtG(τt:T)
第三行是由于:忽略 G ( τ 0 : t ) G\left(\tau_{0: t}\right) G(τ0:t) ,因为它不依赖当前动作 a t a_t at ,而是和之前的动作有关。

2.1.REINFORCE算法

基于上述梯度形式(红色),期望可以通过采样的方法来近似.根据当前策略 π θ \pi_\theta πθ ,通过随机游走的方式来采集多个轨迹 τ ( 1 ) , τ ( 2 ) , ⋯   , τ ( N ) \tau^{(1)}, \tau^{(2)}, \cdots, \tau^{(N)} τ(1),τ(2),,τ(N) ,其中每一条轨迹 τ ( n ) = \tau^{(n)}= τ(n)= s 0 ( n ) , a 0 ( n ) , s 1 ( n ) , a 1 ( n ) , ⋯ s_0^{(n)}, a_0^{(n)}, s_1^{(n)}, a_1^{(n)}, \cdots s0(n),a0(n),s1(n),a1(n), 。这样,策略梯度 ∂ G ( θ ) ∂ θ \frac{\partial \mathcal{G}(\theta)}{\partial \theta} θG(θ) 可以写为
∂ J ( θ ) ∂ θ ≈ 1 N ∑ n = 1 N ( ∑ t = 0 T − 1 ∂ ∂ θ log ⁡ π θ ( a t ( n ) ∣ s t ( n ) ) γ t G τ t : T ( n ) ) \frac{\partial \mathcal{J}(\theta)}{\partial \theta} \approx \frac{1}{N} \sum_{n=1}^N\left(\sum_{t=0}^{T-1} \frac{\partial}{\partial \theta} \log \pi_\theta\left(a_t^{(n)} \mid s_t^{(n)}\right) \gamma^t G_{\tau_{t: T}^{(n)}}\right) θJ(θ)N1n=1N(t=0T1θlogπθ(at(n)st(n))γtGτt:T(n))
结合随机梯度上升算法,我们可以每次采集一条轨迹,计算每个时刻的梯度并更新参数,即REINFORCE 算法,梯度上升更新策略函数参数:
θ ← θ + α γ t G ( τ t : T ) ∂ ∂ θ log ⁡ π θ ( a t ∣ s t ) \theta \leftarrow \theta+\alpha \gamma^t G\left(\tau_{t: T}\right) \frac{\partial}{\partial \theta} \log \pi_\theta\left(a_t \mid s_t\right) θθ+αγtG(τt:T)θlogπθ(atst)

2.2.带基准线的REINFORCE算法

在REINFORCE算法基础上,引入一个控制变量,减小不同采样路径间的方差。

2.3.演员-评论家算法

演员-评论家算法结合策略梯度和时序差分学习,演员是指策略函数 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(as) ,即学习一个策略来得到尽量高的回报,评论员(Critic)是指值函数 V ϕ ( s ) V_\phi(s) Vϕ(s) ,对当前策略的值函数进行估计,即评估演员的好坏。借助于值函数,演员-评论员算法可以进行单步更新参数,不需要等到回合结束才进行更新。在演员-评论员算法中的策略函数 π θ ( s , a ) \pi_\theta(s, a) πθ(s,a) 和值函数 V ϕ ( s ) V_\phi(s) Vϕ(s) 都是待学习的函数,需要在训练过程中同时学习。
假设从时刻 t t t 开始的回报 G ( τ t : T ) G\left(\tau_{t: T}\right) G(τt:T) 用以下公式近似计算:
G ^ ( τ t : T ) = r t + 1 + γ V ϕ ( s t + 1 ) \hat{G}\left(\tau_{t: T}\right)=r_{t+1}+\gamma V_\phi\left(s_{t+1}\right) G^(τt:T)=rt+1+γVϕ(st+1)
在每步更新中,分别进行策略函数 π θ ( s , a ) \pi_\theta(s, a) πθ(s,a) 和值函数 V ϕ ( s ) V_\phi(s) Vϕ(s) 的学习.一方面,更新参数 ϕ \phi ϕ 使得值函数 V ϕ ( s t ) V_\phi\left(s_t\right) Vϕ(st) 接近于估计的真实回报 G ^ ( τ t : T ) \hat{G}\left(\tau_{t: T}\right) G^(τt:T) ,即minimize MSE:
min ⁡ ϕ ( G ^ ( τ t : T ) − V ϕ ( s t ) ) 2 \min _\phi\left(\hat{G}\left(\tau_{t: T}\right)-V_\phi\left(s_t\right)\right)^2 ϕmin(G^(τt:T)Vϕ(st))2
另一方面,将值函数 V ϕ ( S t ) V_\phi\left(S_t\right) Vϕ(St) 作为基线函数来更新参数 θ \theta θ ,减少策略梯度的方差,即
θ ← θ + α γ t ( G ^ ( τ t : T ) − V ϕ ( s t ) ) ∂ ∂ θ log ⁡ π θ ( a t ∣ s t ) . \theta \leftarrow \theta+\alpha \gamma^t {\color{red} \left(\hat{G}\left(\tau_{t: T}\right)-V_\phi\left(s_t\right)\right) } \frac{\partial}{\partial \theta} \log \pi_\theta\left(a_t \mid s_t\right) . θθ+αγt(G^(τt:T)Vϕ(st))θlogπθ(atst).
在每步更新中,演员根据当前的环境状态 s s s 和策略 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ(as) 去执行动作 a a a ,环境状态变为 s ′ s^{\prime} s ,并得到即时奖励 r r r .评论员(值函数 V ϕ ( s ) V_\phi(s) Vϕ(s) )根据环境给出的真实奖励和之前标准下的打分 ( r + γ V ϕ ( s ′ ) ) \left(r+\gamma V_\phi\left(s^{\prime}\right)\right) (r+γVϕ(s)) ,来调整自己的打分标准,使得自己的评分更接近环境的真实回报.演员则跟据评论员的打分,调整自己的策略 π θ \pi_\theta πθ ,争取下次做得更好.开始训练时,演员随机表演,评论员随机打分.通过不断的学习,评论员的评分越来越准,演员的动作越来越好。梯度上升更新策略函数参数与值函数参数:
在状态 s ,选择动作 a = π θ ( a ∣ s ) 执行动作 a ,得到即时奖励 r 和新状态 s ′ δ ← r + γ V ϕ ( s ′ ) − V ϕ ( s ) ; ϕ ← ϕ + β δ ∂ ∂ ϕ V ϕ ( s ) ; − 更新值函数参数 θ ← θ + α λ δ ∂ ∂ θ log ⁡ π θ ( a ∣ s ) ; − 更新策略函数参数 λ ← γ λ ; s ← s ′ ; \begin{aligned} & 在状态 s ,选择动作 a=\pi_\theta(a \mid s) \\ & 执行动作 a,得到即时奖励 r 和新状态 s^{\prime} \\ & \delta \leftarrow r+\gamma V_\phi\left(s^{\prime}\right)-V_\phi(s) ;\\ & \phi \leftarrow \phi+\beta \delta \frac{\partial}{\partial \phi} V_\phi(s) ; -更新值函数参数\\ & \theta \leftarrow \theta+\alpha \lambda \delta \frac{\partial}{\partial \theta} \log \pi_\theta(a \mid s) ; -更新策略函数参数 \\ & \lambda \leftarrow \gamma \lambda ; \\ & s \leftarrow s^{\prime} ; \end{aligned} 在状态s,选择动作a=πθ(as)执行动作a,得到即时奖励r和新状态sδr+γVϕ(s)Vϕ(s);ϕϕ+βδϕVϕ(s);更新值函数参数θθ+αλδθlogπθ(as);更新策略函数参数λγλ;ss;
算法中 λ \lambda λ的作用:

  • 每次更新时,当前 λ \lambda λ 表示"资格迹":某个时间点策略对当前奖励的"责任";
  • 初始化时 λ = 1 \lambda=1 λ=1(或其他初值),表示当前动作立即参与学习;
  • 然后,随着时间推移, λ \lambda λ 会逐渐衰减;
  • 这等价于对之前策略梯度的加权累加更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

idkmn_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值