强化学习第6章——价值函数的近似表示

六、价值函数的近似表示

对于状态数量较多/连续状态很难用离散形式表示,所以需要找到一个函数(线性函数,神经网络等)来近似表示价值函数:

使得, v ( s ) ≈ v ( s , w ) v(s) \approx v(s, w) v(s)v(s,w) or q ( s , a ) ≈ q ( s , a , w ) q(s, a) \approx q(s, a, w) q(s,a)q(s,a,w)

ω \omega ω表示引入的参数,通常是一个矩阵或至少是一个向量。

价值函数的近似表示主要有两种方法:递增方法和批处理。“递增方法”,针对每一步,近似函数得到一些信息,立即优化近似函数,主要用于在线学习;“批方法”,针对一批历史数据集中进行近似。

递增方法:

目标:找到参数向量 ω \omega ω, 最小化近似函数 v ^ ( S , w ) \hat{v}(S, w) v^(S,w) 与实际函数 v π ( S ) v_{\pi}(S) vπ(S)的均方差(最小化代价函数):
J ( w ) = E π [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] Δ w = − 1 2 α ∇ w J ( w ) w t + 1 = w t + Δ w J(\mathbf{w})=\mathbb{E}_{\pi}\left[\left(v_{\pi}(S)-\hat{v}(S, \mathbf{w})\right)^{2}\right]\\ \begin{aligned} \Delta \mathbf{w} &=-\frac{1}{2} \alpha \nabla_{\mathbf{w}} J(\mathbf{w}) \\ \mathbf{w}_{t+1} &=\mathbf{w}_{t}+\Delta \mathbf{w} \end{aligned} J(w)=Eπ[(vπ(S)v^(S,w))2]Δwwt+1=21αwJ(w)=wt+Δw
方法:通过梯度下降进行求解

用特征向量x(s)表示状态,向量的元素表示不同维度的特征
x ( S ) = ( x 1 ( S ) ⋮ x n ( S ) ) \mathbf{x}(S)=\left(\begin{array}{c} \mathbf{x}_{1}(S) \\ \vdots \\ \mathbf{x}_{n}(S) \end{array}\right) x(S)=x1(S)xn(S)

  • 线性近似函数:

通过对特征向量中的元素线性求和表示价值函数:
v ^ ( S , w ) = x ( S ) ⊤ w = ∑ j = 1 n x j ( S ) w j \hat{v}(S, \mathbf{w})=\mathbf{x}(S)^{\top} \mathbf{w}=\sum_{j=1}^{n} \mathbf{x}_{j}(S) \mathbf{w}_{j} v^(S,w)=x(S)w=j=1nxj(S)wj
因此,代价函数为:
J ( w ) = E π [ ( v π ( S ) − x ( S ) ⊤ w ) 2 ] Δ w = α ( v π ( s ) − v ^ ( s , w ) ) x ( s ) J(\mathbf{w})=\mathbb{E}_{\pi}\left[\left(v_{\pi}(S)-\mathbf{x}(S)^{\top} \mathbf{w}\right)^{2}\right]\\ \Delta \mathbf{w}= \alpha(v^\pi(s) - \hat{v}(s,w))x(s) J(w)=Eπ[(vπ(S)x(S)w)2]Δw=α(vπ(s)v^(s,w))x(s)
Update ( Δ w \Delta w Δw)= StepSize × PredictionError × FeatureValue

通过SGD可以求得全局最优,因为在线性近似函数中只可能有一个最优值,因此局部最优一定能收敛到全局最优

比如查表可以转化为线性函数近似

model-free policy evaluation策略评估中,一般没有实际真实的价值,只能通过预估得到的目标值表示收获,

对于MC, 目标值就是收获:
Δ w = α ( G t − v ^ ( S t , w ) ) ∇ w v ^ ( S t , w ) \Delta \mathbf{w}=\alpha\left(G_{t}-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{v}\left(S_{t}, \mathbf{w}\right) Δw=α(Gtv^(St,w))wv^(St,w)
对于 T D ( 0 ) \mathrm{TD}(0) TD(0), 目标值就是TD目标值:
Δ w = α ( R t + 1 + γ v ^ ( S t + 1 , w ) − v ^ ( S t , w ) ) ∇ w v ^ ( S t , w ) \Delta \mathbf{w}=\alpha\left(R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}\right)-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{v}\left(S_{t}, \mathbf{w}\right) Δw=α(Rt+1+γv^(St+1,w)v^(St,w))wv^(St,w)
对于 T D ( λ ) \mathrm{TD}(\lambda) TD(λ), 目标值是 $\lambda $收获 :
Δ w = α ( G t λ − v ^ ( S t , w ) ) ∇ w v ^ ( S t , w ) \Delta \mathbf{w}=\alpha\left(G_{t}^{\lambda}-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{v}\left(S_{t}, \mathbf{w}\right) Δw=α(Gtλv^(St,w))wv^(St,w)

MC使用的数据是有噪声、无偏采样,近似价值函数得到局部最优,在线性和非线性近似函数中都收敛

TD(0)和TD( λ \lambda λ)使用的是有噪声、有偏采样,得到全局最优。

model-free policy improvement 策略迭代:采用 ϵ − \epsilon- ϵ贪婪策略

  • 近似价值函数控制算法:

行为价值近似函数: q ^ ( S , A , w ) ≈ q π ( S , A ) \hat{q}(S, A, \mathbf{w}) \approx q_{\pi}(S, A) q^(S,A,w)qπ(S,A)

通过均方差来优化:
J ( w ) = E π [ ( q π ( s , a ) − q ^ ( s , a , w ) ) 2 ] Δ w = α ( q π ( s , a ) − a ^ ( s , a , w ) ) ∇ w q ^ ( s , a , w ) J(\mathbf{w})=\mathbb{E}_{\pi}\left[\left(q_{\pi}(s,a)-\hat{q}(s,a,w)\right)^{2}\right]\\ \Delta \mathbf{w}= \alpha(q^\pi(s,a) - \hat{a}(s,a,w))\nabla_w\hat{q}(s,a,w) J(w)=Eπ[(qπ(s,a)q^(s,a,w))2]Δw=α(qπ(s,a)a^(s,a,w))wq^(s,a,w)

**递增控制算法:**每输入一个样本就优化更新一次

线性近似函数: Δ w = α ( q π ( s , a ) − a ^ ( s , a , w ) ) x ( s , a ) \Delta \mathbf{w}= \alpha(q^\pi(s,a) - \hat{a}(s,a,w))x(s,a) Δw=α(qπ(s,a)a^(s,a,w))x(s,a)

对于MC, 目标值就是收获:
Δ w = α ( G t − v ^ ( S t , A t , w ) ) ∇ w v ^ ( S t , w ) \Delta \mathbf{w}=\alpha\left(G_{t}-\hat{v}\left(S_{t}, A_{t},\mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{v}\left(S_{t}, \mathbf{w}\right) Δw=α(Gtv^(St,At,w))wv^(St,w)
对于 T D ( 0 ) \mathrm{TD}(0) TD(0), 目标值就是TD目标值:
Δ w = α ( R t + 1 + γ v ^ ( S t + 1 , A t + 1 , w ) − v ^ ( S t , w ) ) ∇ w v ^ ( S t , w ) \Delta \mathbf{w}=\alpha\left(R_{t+1}+\gamma \hat{v}\left(S_{t+1},A_{t+1}, \mathbf{w}\right)-\hat{v}\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{v}\left(S_{t}, \mathbf{w}\right) Δw=α(Rt+1+γv^(St+1,At+1,w)v^(St,w))wv^(St,w)
对于 T D ( λ ) \mathrm{TD}(\lambda) TD(λ), 目标值是 $\lambda $收获 :
Δ w = α ( G t λ − v ^ ( S t , A t , w ) ) ∇ w v ^ ( S t , w ) \Delta \mathbf{w}=\alpha\left(G_{t}^{\lambda}-\hat{v}\left(S_{t}, A_{t},\mathbf{w}\right)\right) \nabla_{\mathbf{w}} \hat{v}\left(S_{t}, \mathbf{w}\right) Δw=α(Gtλv^(St,At,w))wv^(St,w)
基于TD学习方式(Sarsa, Q-learning)的近似函数在非线形情况下或者离线策略学习很容易发散,因为在计算目标值时进行预测(此时还包含没有训练完成的参数w),所以参数w和目标值都是不确定的。

批方法:

批方法则是把一段时期内的数据集中起来,通过学习来使得参数能较好地符合这段时期内所有的数据。

近似价值函数: v ^ ( s , w ) ≈ v π ( s ) \hat{v}(s, \mathbf{w}) \approx v_\pi(s) v^(s,w)vπ(s)

最小均方差的预测和控制:

最小平方差:
L S ( w ) = a r g m i n ∑ t = 1 T ( v t π − v ^ ( s t , w ) ) 2 LS(\mathbf{w} )=argmin\sum_{t=1}^{T}(v_t^\pi - \hat{v}(s_{t}, \mathbf{w}))^2 LS(w)=argmint=1T(vtπv^(st,w))2
采用了经历重现(experience replay):随机从一段时期内的经历采样一个mini-batch作为数据,使用SGD进行训练更新参数。

  • DQN

TD在非线性近似函数中使用可能不会收敛,但DQN可以。

DQN(深度Q网络):使用了经历重现 和 固定的q目标值,可以收敛并具有鲁棒性。

步骤:

  1. 依据Ɛ-greedy执行策略决定t时刻的行为;

  2. 将大量经历序列 ( s t , a t , r t + 1 , s t + 1 ) (s_t, a_t, r_{t+1}, s_{t+1}) (st,at,rt+1,st+1)存储在记忆D里

  3. 再从记忆中随机抽取部分数据存储在replay buffer中作为批数据(mini-batch),

  4. 计算Q-learning目标值

  5. 最小化Q网络和Q目标值之间的均方差:
    L i ( w i ) = E s , a , r , s ′ ∼ D i [ ( r + γ max ⁡ a ′ Q ( s ′ , a ′ ; w i − ) − Q ( s , a ; w i ) ) 2 ] \mathcal{L}_{i}\left(w_{i}\right)=\mathbb{E}_{s, a, r, s^{\prime} \sim \mathcal{D}_{i}}\left[\left(r+\gamma \max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime} ; w_{i}^{-}\right)-Q\left(s, a ; w_{i}\right)\right)^{2}\right] Li(wi)=Es,a,r,sDi[(r+γamaxQ(s,a;wi)Q(s,a;wi))2]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EwDAFmnx-1636285184765)(https://www.zhihu.com/equation?tex=w%5E-)] 在批学习过程中是固定的, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H5G11ASS-1636285184767)(https://www.zhihu.com/equation?tex=w_i)] 则是动态更新的参数。

  6. 使用随机梯度下降(SGD)更新参数

采用experience replay的好处:

经验是可以重复利用的,而如果不使用经验回放则每个片段transition ( s t , a t , r t + 1 , s t + 1 ) (s_t, a_t, r_{t+1}, s_{t+1}) (st,at,rt+1,st+1)只使用一次,造成经验浪费。

从以往的记忆中随机采样批处理的数据打破了状态之间的联系,因为 s t s_t st s t + 1 s_{t+1} st+1的状态序列非常相似,这种相关性是有害的(可以理解为样本不够多样化,容易导致过拟合);

replay buffer:

在buffer内数据达到设定值后才会开始学习。

当buffer存满后,每进入一条新的数据,就删除一条最老的数据。

在DQN中可以理解为有2个网络:

Behavior_Q网络:决定下一步采取的动作和target_Q网络:求解收获的目标值

Behavior_Q网络的参数根据训练不断更新参数(优化策略)

target_Q网络的参数在训练时冻结,当训练一段时间后再更新(如训练完一个mini-batch后)

这样可以充分发挥off-policy的优势,behavior policy 用来搜集经验数据,而 target policy 只专注于价值最大化。

神经网络会暂时冻结参数,我们从冻结参数的网络而不是从正在更新参数的网络中获取目标值,这样增加了算法的稳定性。

经过一次批计算后,把冻结参数的网络换成更新的参数后再次冻结,从而计算新一次迭代时要用的目标值。

DQN的缺点:对Q目标值过高估计

基于DQN的改进:

  1. Doubel DQN
  2. Dueling DQN
  3. Prioritized Replay:主要学习TD error较大的数据

DDQN:

DDQN和DQN的网络结构基本一样

DDQN和DQN的区别就是在计算Q-target时,在寻找后续状态的下一步动作时,直接利用Behavior_Q网络找到后续状态的最大价值行为,然后再带入到target_Q中计算目标值。

DQN:在target_Q网络中找后续状态的最大价值的动作
Q target  ( S t , A t ) = R t + γ max ⁡ Q ( S t ′ , A t ′ ; θ − ) Q_{\text {target }}\left(S_{t}, A_{t}\right)=R_{t}+\gamma \max Q\left(S_{t}^{\prime},A_{t}^{\prime} ; \theta^{-}\right) Qtarget (St,At)=Rt+γmaxQ(StAt;θ)
DDQN:在behavior_Q网络中找后续状态的最大价值的动作
Q target  ( S t , A t ) = R t + γ Q ( S t ′ , max ⁡ a ′ Q ( S t ′ , a ′ ; θ ) ; θ − ) Q_{\text {target }}\left(S_{t}, A_{t}\right)=R_{t}+\gamma Q\left(S_{t}^{\prime}, \max _{a^{\prime}} Q\left(S_{t}^{\prime}, a^{\prime} ; \theta\right) ; \theta^{-}\right) Qtarget (St,At)=Rt+γQ(St,amaxQ(St,a;θ);θ)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值