强化学习的数学原理学习笔记 - 值函数近似(Value Function Approximation)

文章目录

  • 概览:RL方法分类
  • 值函数近似(Value function approximation)
    • Basic idea
      • 目标函数(objective function)
      • 优化算法(optimization algorithm)
    • Sarsa / Q-learning with function approximation
      • Sarsa with function approximation
      • Q-learning with function approximation
    • 🟦DQN (Deep Q-learning)
      • 关键技术1:两个网络
      • 关键技术2:经验回放(Experience replay)
      • DQN算法步骤(off-policy)


本系列文章介绍强化学习基础知识与经典算法原理,大部分内容来自西湖大学赵世钰老师的强化学习的数学原理课程(参考资料1),并参考了部分参考资料2、3的内容进行补充。

系列博文索引:

参考资料:

  1. 强化学习的数学原理】课程:从零开始到透彻理解(完结)(主要)
  2. Sutton & Barto Book: Reinforcement Learning: An Introduction
  3. 机器学习笔记

*注:【】内文字为个人想法,不一定准确

概览:RL方法分类

图源:https://zhuanlan.zhihu.com/p/36494307
*图源:https://zhuanlan.zhihu.com/p/36494307

值函数近似(Value function approximation)

在先前的方法中,状态/动作值均以表格的(tabular)形式呈现。但是当状态/动作空间较大或者连续时,以上算法会面临存储开销和泛化能力的问题。因此,考虑通过特定函数的形式近似状态值。

Basic idea

*A simple example
假设状态值 v ( s ) v(s) v(s)与状态 s s s之间呈线性关系,设 v ^ ( s , w ) \hat{v}(s, w) v^(s,w)是对 v ( s ) v(s) v(s)的估计,则有下式:
image.png
其中, w w w为参数向量, ϕ ( s ) \phi(s) ϕ(s)为状态 s s s的特征向量。
这样做的好处在于大大降低了存储开销:不需要存储每个状态值,只需要存储 w w w(即 a a a b b b两个参数)即可。但是弊端在于通过函数近似得到的结果并不一定准确。这种思想可以继续推广到高阶及非线性函数,以提升估计的准确性。

值函数近似的idea:使用参数化(parameterized)的函数近似状态和动作值,即 v ^ ( s , w ) ≈ v π ( s ) \hat{v}(s, w) \approx v_\pi(s) v^(s,w)vπ(s),其中 w ∈ R m w \in \mathbb{R}^m wRm是参数向量。

好处:(1) 便于存储:只需要存储参数,不需要存储状态,而参数的维度往往远小于状态的数量;(2) 泛化能力:当访问一个状态后,参数值发生改变,则整个函数估计发生改变,其余未被访问的状态的状态值同样会发生改变,因此不需要访问每个状态来完成学习过程。

目标函数(objective function)

值函数近似的目标是使得估计值尽可能接近真实状态值,其目标函数为:
J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] J(w) = \mathbb{E} [ (v_\pi(S) - \hat{v}(S,w))^2 ] J(w)=E[(vπ(S)v^(S,w))2]
值函数近似的目标,即找到能够使得 J ( w ) J(w) J(w)最小的 w w w。本质上是做策略评估中的状态值估计。
其中, S ∈ S S \in \mathcal{S} SS为随机变量,其概率分布为平稳分布(stationary distribution),描述长期行为(long-run behavior),也被称为steady-state distribution或limiting distribution【*一个随机过程/马尔可夫过程中的概念】。直观理解:如果一个agent按照一个给定策略运行了足够久,其马尔可夫过程最终会达到一个平稳状态【即模型(状态转移概率)是稳定的】。

{ d π ( s ) } s ∈ S \{ d_\pi (s) \}_{s\in \mathcal{S}} {dπ(s)}sS表示策略 π \pi π下的马尔可夫过程的平稳分布,有 d π ( s ) ≥ 0 d_\pi (s) \geq 0 dπ(s)0 ∑ s ∈ S d π ( s ) = 1 \textstyle \sum_{s\in \mathcal{S}} d_\pi(s) =1 sSdπ(s)=1。则值函数近似的目标函数可以写作:
J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] = ∑ s ∈ S d π ( s ) ( v π ( S ) − v ^ ( S , w ) ) 2 J(w) = \mathbb{E} [ (v_\pi(S) - \hat{v}(S,w))^2 ] = \sum_{s\in \mathcal{S}} d_\pi (s) (v_\pi(S) - \hat{v}(S,w))^2 J(w)=E[(vπ(S)v^(S,w))2]=sSdπ(s)(vπ(S)v^(S,w))2
其中, d π ( s ) d_\pi (s) dπ(s)表示agent处于状态 s s s的概率,同时也是该状态的(重要性)权重值,因此上式可以看作是对不同状态的估计误差的平方的加权平均。

优化算法(optimization algorithm)

采用随机梯度下降(SGD)算法优化(最小化)目标函数 J ( w ) J(w) J(w)(推导过程略):
w t + 1 = w t − α t ( v π ( s t ) − v ^ ( s t , w t ) ) ∇ w v ^ ( s t , w t ) w_{t+1} = w_t - \alpha_t (v_\pi(s_t) - \hat{v}(s_t, w_t)) \nabla_w \hat{v}(s_t, w_t) wt+1=wtαt(vπ(st)v^(st,wt))wv^(st,wt)

注意到其中 v π ( s t ) v_\pi(s_t) vπ(st)是未知的,其可以用MC或TD近似:

  • MC with 值函数近似:用 g t g_t gt(从 s t s_t st出发的累计折扣回报)近似 v π ( s t ) v_\pi(s_t) vπ(st)
    • w t + 1 = w t − α t ( g t − v ^ ( s t , w t ) ) ∇ w v ^ ( s t , w t ) w_{t+1} = w_t - \alpha_t (g_t - \hat{v}(s_t, w_t)) \nabla_w \hat{v}(s_t, w_t) wt+1=wtαt(gtv^(st,wt))wv^(st,wt)
  • TD with 值函数近似:用 r t + 1 + γ v ^ ( s t + 1 , w t ) r_{t+1} + \gamma \hat{v}(s_{t+1}, w_t) rt+1+γv^(st+1,wt)近似 v π ( s t ) v_\pi(s_t) vπ(st)
    • w t + 1 = w t − α t [ r t + 1 + γ v ^ ( s t + 1 , w t ) − v ^ ( s t , w t ) ] ∇ w v ^ ( s t , w t ) w_{t+1} = w_t - \alpha_t [r_{t+1} + \gamma \hat{v}(s_{t+1}, w_t) - \hat{v}(s_t, w_t)] \nabla_w \hat{v}(s_t, w_t) wt+1=wtαt[rt+1+γv^(st+1,wt)v^(st,wt)]wv^(st,wt)
      • TD target: r t + 1 + γ v ^ ( s t + 1 , w t ) r_{t+1} + \gamma \hat{v}(s_{t+1}, w_t) rt+1+γv^(st+1,wt)
    • *实际上这种方法并不是在优化原本的目标函数,而是在优化另一个相关的目标函数,称作projected Bellman error(详细内容略)

v ^ ( s , w ) \hat{v} (s, w) v^(s,w)的形式选择:早期用线性函数,目前通用神经网络(Neural Network,NN)来拟合未知非线性函数。线性函数的好处在于其理论性非常容易分析,弊端在于其特征向量(比如其阶数)难以选择。
*若 v ^ ( s , w ) \hat{v} (s, w) v^(s,w)为线性函数,则其等价于tabular representation,因此可以将tabular representation看作linear function approximation的一种特殊情况。

Sarsa / Q-learning with function approximation

Sarsa with function approximation

其实就是把TD with function approximation中的状态值换为动作值:
w t + 1 = w t + α t [ r t + 1 + γ q ^ ( s t + 1 , a t + 1 , w t ) − q ^ ( s t , a t , w t ) ] ∇ w q ^ ( s t , a t , w t ) w_{t+1} = w_t + \alpha_t [r_{t+1} + \gamma \hat{q}(s_{t+1}, a_{t+1}, w_t) - \hat{q}(s_t, a_t, w_t)] \nabla_w \hat{q}(s_t, a_t, w_t) wt+1=wt+αt[rt+1+γq^(st+1,at+1,wt)q^(st,at,wt)]wq^(st,at,wt)

和Tabular Sarsa的区别:不是直接更新动作值 q ( s , a ) q(s,a) q(s,a),而是更新参数值 w w w

采用ε-Greedy方法进行策略提升:
π k + 1 ( a ∣ s t ) = { 1 − ε ∣ A ( s ) ∣ ( ∣ A ( s ) ∣ − 1 ) if  a = arg max ⁡ a ∈ A ( s t ) q ^ ( s t , a , w t + 1 ) ε ∣ A ( s ) ∣ otherwise \pi_{k+1}(a|s_t) = \begin{cases} 1-\frac{\varepsilon}{|\mathcal{A} (s)|} (|\mathcal{A}(s)|-1) &\text{if } a = \argmax_{a\in\mathcal{A(s_t)}} \hat{q}(s_t, a, w_{t+1}) \\ \frac{\varepsilon}{|\mathcal{A}(s)|} &\text{otherwise} \end{cases} πk+1(ast)={1A(s)ε(A(s)1)A(s)εif a=argmaxaA(st)q^(st,a,wt+1)otherwise
注意其中的 q ^ ( s t , a , w t + 1 ) \hat{q}(s_t, a, w_{t+1}) q^(st,a,wt+1)需要通过函数计算得到。

Q-learning with function approximation

w t + 1 = w t + α t [ r t + 1 + γ max ⁡ a ∈ A ( s t + 1 ) q ^ ( s t + 1 , a t , w t ) − q ^ ( s t , a t , w t ) ] ∇ w q ^ ( s t , a t , w t ) w_{t+1} = w_t + \alpha_t [r_{t+1} + \gamma {\color{red} \max_{a \in \mathcal{A}(s_{t+1})} \hat{q}(s_{t+1}, a_{t}, w_t)} - \hat{q}(s_t, a_t, w_t)] \nabla_w \hat{q}(s_t, a_t, w_t) wt+1=wt+αt[rt+1+γaA(st+1)maxq^(st+1,at,wt)q^(st,at,wt)]wq^(st,at,wt)

🟦DQN (Deep Q-learning)

尽管在Q-learning with function approximation中,可以使用神经网络作为 q ^ ( s , a , w ) \hat{q} (s, a, w) q^(s,a,w),但其需要复杂的底层运算(如求梯度),因此提出了DQN(Deep Q-learning / Deep Q Network)作为替代。

DQN的目标函数/损失(loss)函数
J ( w ) = E [ ( R + γ max ⁡ α ∈ A ( S ′ ) q ^ ( S ′ , a , w ) − q ^ ( S , A , w ) ) 2 ] J(w) = \mathbb{E} \Big[ \Big(R + \gamma \max_{\alpha \in \mathcal{A} (S') } \hat{q} (S', a, w) - \hat{q} (S, A ,w) \Big) ^2 \Big] J(w)=E[(R+γαA(S)maxq^(S,a,w)q^(S,A,w))2]
其中, ( S , A , R , S ′ ) (S,A,R,S') (S,A,R,S)均为随机变量, R + γ max ⁡ α ∈ A ( S ′ ) q ^ ( S ′ , a , w ) − q ^ ( S , A , w ) R + \gamma \max_{\alpha \in \mathcal{A} (S') } \hat{q} (S', a, w) - \hat{q} (S, A ,w) R+γmaxαA(S)q^(S,a,w)q^(S,A,w)为Q-learning的TD error,也即Bellman optimlity error,当该值为0时取得最优。

关键技术1:两个网络

直接采用梯度下降优化损失函数并不容易,因为其中两项都包含 w w w,求梯度较复杂。一个简单的思路是,将 y = R + γ max ⁡ α ∈ A ( S ′ ) q ^ ( S ′ , a , w ) y = R + \gamma \textstyle \max_{\alpha \in \mathcal{A} (S') } \hat{q} (S', a, w) y=R+γmaxαA(S)q^(S,a,w)视作常数,只需求解 q ^ ( S , A , w ) \hat{q} (S, A ,w) q^(S,A,w)的梯度即可。
因此,DQN引入了两个网络的设计:

  • main network:对应 q ^ ( S , A , w ) \hat{q} (S, A ,w) q^(S,A,w)
  • target network:对应 q ^ ( S ′ , a , w T ) \hat{q} (S', a, w_T) q^(S,a,wT)

main network的参数 w w w实时更新,但target network的参数 w T w_T wT并非实时更新,而是隔一段时间把main network的 w w w赋值过来,因此在这段时间内, w T w_T wT可以被视为常数。

DQN的basic idea:使用梯度下降(GD)优化损失函数,对应梯度为:
∇ w J = E [ ( R + γ max ⁡ α ∈ A ( S ′ ) q ^ ( S ′ , a , w T ) − q ^ ( S , A , w ) ) ∇ w q ^ ( S , A , w ) ] \nabla_w J = \mathbb{E} \Big[ \Big(R + \gamma \max_{\alpha \in \mathcal{A} (S') } {\color{red} \hat{q} (S', a, w_T) } - {\color{blue} \hat{q} (S, A ,w) } \Big) {\color{blue} \nabla_w \hat{q} (S, A ,w) } \Big] wJ=E[(R+γαA(S)maxq^(S,a,wT)q^(S,A,w))wq^(S,A,w)]

训练过程(详见下):在每次迭代中,DQN从回放缓存(replay buffer)中取mini-batch采样 { ( s , a , r , s ′ ) } \{(s, a, r, s')\} {(s,a,r,s)},以 s s s a a a作为输入计算得到 y T = r + γ max ⁡ α ∈ A ( s ′ ) q ^ ( s ′ , a , w T ) y_T = r + \gamma \textstyle \max_{\alpha \in \mathcal{A} (s') } \hat{q} (s', a, w_T) yT=r+γmaxαA(s)q^(s,a,wT),并基于mini-batch { ( s , a , y T ) } \{ (s, a, y_T) \} {(s,a,yT)}最小化损失函数 ( y T − q ^ ( s , a , w ) ) 2 ( y_T - \hat{q} (s, a ,w) )^2 (yTq^(s,a,w))2以训练main network。之后,将main network的参数 w w w赋值给target network的 w T w_T wT

关键技术2:经验回放(Experience replay)

DQN在收集经验采样后,将其存储在回放缓存(replay buffer) B = { ( s , a , r , s ′ ) } \mathcal{B} = \{ (s, a, r, s') \} B={(s,a,r,s)}中。当需要使用采样训练神经网络时,从回放缓存中按照均匀分布(uniform distribution)随机取mini-batch的采样 ,该过程称为经验回放。

  • 均匀分布:对所有 ( s , a ) (s, a) (s,a)对等概率访问(不等概率的话,需要先验知识才能确定哪些 ( s , a ) (s, a) (s,a)对更重要)
    • 这里是把 ( S , A ) (S,A) (S,A)对看作一个随机变量
  • 回放缓存:经验采样的采集有先后顺序,直接按照其顺序使用可能不满足均匀分布的要求,因此将过往经验先存起来再均匀采样,去除采样间的相关性

*实际上经验回放也可以用于tabular Q-learning中,还能提高其采样效率(因为可以重复利用)。

DQN算法步骤(off-policy)

目标:从行为策略 π b \pi_b πb生成的经验采样中,学习一个最优的target network以近似最优动作值
在每次迭代中:

  1. 从回放缓存 B \mathcal{B} B中均匀取mini-batch采样
  2. 对于每个采样 ( s , a , r , s ′ ) (s, a, r, s') (s,a,r,s),计算 y T = r + γ max ⁡ α ∈ A ( s ′ ) q ^ ( s ′ , a , w T ) y_T = r + \gamma \textstyle \max_{\alpha \in \mathcal{A} (s') } \hat{q} (s', a, w_T) yT=r+γmaxαA(s)q^(s,a,wT),其中 w T w_T wT为target network的参数
  3. 使用mini-batch采样 { ( s , a , y T ) } \{ (s, a, y_T) \} {(s,a,yT)}更新main network,以最小化损失函数 ( y T − q ^ ( s , a , w ) ) 2 ( y_T - \hat{q} (s, a ,w) )^2 (yTq^(s,a,w))2

C C C次迭代后,将 w w w赋值给 w T w_T wT
*注意:这里的表述与DQN原论文不同(原论文的NN更高效),但本质是一样的。


http://www.niftyadmin.cn/n/5315162.html

相关文章

Github 2024-01-06 开源项目日报Top10

根据Github Trendings的统计,今日(2024-01-06统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3Java项目1TypeScript项目1HTML项目1Go项目1HCL项目1Rust项目1Jupyter Notebook项目1非开发语言项目…

基于pytorch的房价预测

简介 本文主要介绍的基于pytorch和房价预测深度学习网络构建。 该系统使用的是网络上的开源数据: 实现了对房价数据的处理,包括词频统计、情感分析等,并将分析结果以图表形式进行展示。通过这个系统,用户可以便捷地进行分析和可…

将Django项目从本地上传至宝塔服务器(踩坑记录)

文章目录 写在前面配置本地文件配置宝塔面板解决遇到问题展示运行结果热门文章 自我介绍 ⭐2022年度CSDN 社区之星 Top6 ⭐2023年度CSDN 博客之星 Top16 ⭐2023年度CSDN 城市之星 Top2(苏州) ⭐CSDN Python领域 优质创作者 ⭐CSDN 内容合伙人 推荐热门…

facebook广告的内容应该怎么写

在编写Facebook广告时,需要注意以下几个方面: 明确目标:在创建广告之前,你需要明确你的目标。你是想要吸引更多的潜在客户,还是提高品牌知名度?或者是增加销售额?你的目标将决定广告的文案和视…

计算机网络——应用层(2)

计算机网络——应用层(2) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) Web和HTTP概念解读HTTPHTTP请求和响应包含内容常见的请求方法Web缓存优点缺点 总结 DNS提供的服务 小程一言 我的计算机网络专栏,是自己在计算机网络学习过程…

洛谷 P8661 [蓝桥杯 2018 省 B] 日志统计

小明维护着一个程序员论坛。现在他收集了一份“点赞”日志,日志共有 N N N 行。其中每一行的格式是 ts id,表示在 t s ts ts 时刻编号 i d id id 的帖子收到一个“赞”。 现在小明想统计有哪些帖子曾经是“热帖”。如果一个帖子曾在任意一个长度为 …

论文阅读 Attention is all u need - transformer

文章目录 1 摘要1.1 核心 2 模型架构2.1 概览2.2 理解encoder-decoder架构2.2.1 对比seq2seq,RNN2.2.2 我的理解 3. Sublayer3.1 多头注意力 multi-head self-attention3.1.1 缩放点乘注意力 Scaled Dot-Product Attention3.1.2 QKV3.1.3 multi-head3.1.4 masked 3.…

Python与人工智能

目录 ​编辑 一、Python 二.使用Python实现人工智能的几个具体案例 2.1图像分类 2.2自然语言处理 2.3语音识别 2.4推荐系统 2.5机器翻译 三.以下是使用Python实现的一个具体案例 案例:垃圾邮件分类器 一、Python 是一种广泛用于人工智能(AI&am…