强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE 算法

本文介绍了强化学习的基础知识,包括智能体、环境、状态、动作、策略和奖励。接着讲解了马尔科夫决策过程(MDP)及其在吃豆人游戏中的应用。探讨了策略梯度定理,以及如何利用蒙特卡洛策略梯度定理改进策略。最后,阐述了REINFORCE算法的工作原理,用于优化策略参数。
摘要由CSDN通过智能技术生成

在这里插入图片描述
【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现

在这里插入图片描述
专栏详细介绍【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现

对于深度强化学习这块规划为:

  • 基础单智能算法教学(gym环境为主)
  • 主流多智能算法教学(gym环境为主)
  • 一些趣味项目(超级玛丽、下五子棋、斗地主、各种游戏上应用)
  • 单智能多智能题实战(论文复现偏业务如:无人机优化调度、电力资源调度等项目应用)

本专栏主要方便入门同学快速掌握强化学习单智能体|多智能体算法原理+项目实战。后续会持续把深度学习涉及知识原理分析给大家,让大家在项目实操的同时也能知识储备,知其然、知其所以然、知何由以知其所以然。

声明:部分项目为网络经典项目方便大家快速学习,后续会不断增添实战环节(比赛、论文、现实应用等)

强化学习基础篇[1]:知识点

1.强化学习基础知识点

智能体(agent):智能体是强化学习算法的主体,它能够根据经验做出主观判断并执行动作,是整个智能系统的核心。

环境(environment):智能体以外的一切统称为环境,环境在与智能体的交互中,能被智能体所采取的动作影响,同时环境也能向智能体反馈状态和奖励。虽说智能体以外的一切都可视为环境,但在设计算法时常常会排除不相关的因素建立一个理想的环境模型来对算法功能进行模拟。

状态(state):状态可以理解为智能体对环境的一种理解和编码,通常包含了对智能体所采取决策产生影响的信息。

动作(action):动作是智能体对环境产生影响的方式,这里说的动作常常指概念上的动作,如果是在设计机器人时还需考虑动作的执行机构。

策略(policy):策略是智能体在所处状态下去执行某个动作的依据,即给定一个状态,智能体可根据一个策略来选择应该采取的动作。

奖励(reward):奖励是智能体贯式采取一系列动作后从环境获得的收益。注意奖励概念是现实中奖励和惩罚的统合,一般用正值来代表奖励,用负值代表实际惩罚。
:

在flappy bird游戏中,小鸟即为智能体,除小鸟以外的整个游戏环境可统称为环境,状态可以理解为在当前时间点的游戏图像。在本游戏中,智能体可以执行的动作为向上飞,或什么都不做靠重力下降。策略则指小鸟依据什么来判断是要执行向上飞的动作还是什么都不做,这个策略可能是根据值函数大小判断,也可能是依据在当前状态下执行不同动作的概率或是其他的判断方法。奖励分为奖励和惩罚两种,每当小鸟安全的飞过一个柱子都会获得一分的奖励,而如果小鸟掉到地上或者撞到柱子则或获得惩罚。

2.马尔科夫决策过程

图1: 经典吃豆人游戏

在经典的吃豆人游戏中,吃豆人通过对环境进行观察,选择上下左右四种动作中的一种进行自身移动,吃掉豆子获得分数奖励,并同时躲避幽灵防止被吃。吃豆人每更新一次动作后,都会获得环境反馈的新的状态,以及对该动作的分数奖励。在这个学习过程中,吃豆人就是智能体,游戏地图、豆子和幽灵位置等即为环境,而智能体与环境交互进行学习最终实现目标的过程就是马尔科夫决策过程(Markov decision process,MDP)。

图2: 马尔科夫决策过程中的智能体-环境交互

上图形式化的描述了强化学习的框架,智能体(Agent)与环境(Environment)交互的过程:在 t t t 时刻,智能体在当前状态 S t S_t St 采取动作 A t A_t At。在下一时刻 t + 1 t+1 t+1,智能体接收到环境反馈的对于动作 A t A_t At 的奖励 R t + 1 R_{t+1} Rt+1,以及该时刻状态 S t + 1 S_{t+1} St+1。从而,MDP和智能体共同给出一个轨迹:

S 0 , A 0 , R 1 , S 1 , A 1 , R 2 , S 2 , A 2 , R 3 , S 3 , A 3 , . . . S_0,A_0,R_1,S_1,A_1,R_2,S_2,A_2,R_3,S_3,A_3,... S0,A0,R1,S1,A1,R2,S2,A2,R3,S3,A3,...
接下来,更具体地定义以下标识:

  • S t S_t St 是有限的状态集合
  • A t A_t At 是有限的动作集合
  • P P P 是基于环境的状态转移矩阵:其中每一项为智能体在某个状态 s s s 下,采取动作 a a a 后,与环境交互后转移到其他状态 s ′ s^{'} s 的概率值,表示为 P ( S t + 1 = s ′ ∣ s t = s , a t = a ) P(S_{t+1}=s^{'}|s_{t}=s,a_{t}=a) P(St+1=sst=s,at=a)
  • R是奖励函数:智能体在某个状态 s s s 下,采取动作 a a a 后,与环境交互后所获得的奖励,表示为 R ( s t = s , a t = a ) R(s_{t}=s,a_{t}=a) R(st=s,at=a)
  • γ \gamma γ 是折扣因子(discounted factor),取值区间为 [ 0 , 1 ] [0,1] [0,1]

所以MDP过程可以表示为 ( S , A , P , R , γ ) (S,A,P,R,\gamma) (S,A,P,R,γ),如果该过程中的状态转移矩阵 P P P 和奖励 R ( s , a ) R(s,a) R(s,a) 对智能体都是可见的,我们称这样的Agent为Model-based Agent,否则称为Model-free Agent。

3.策略梯度定理

策略函数的参数化可表示为 π θ ( s , a ) \pi_{\theta}(s,a) πθ(s,a),其中 θ \theta θ为一组参数,函数取值表示在状态 s s s下选择动作 a a a的概率。为了优化策略函数,首先需要有一个对策略函数优劣进行衡量的标准。假设强化学习问题的初始状态为 s 0 s_{0} s0,则希望达到最大化的目标为

J ( θ ) : = V π θ ( s 0 ) J(\theta) := V_{\pi_{\theta}}(s_{0}) J(θ):=Vπθ(s0)
其中, v π θ v_{\pi_{\theta}} vπθ是在策略 π θ \pi_{\theta} πθ下的真实价值函数,这个价值函数代表衡量一个状态的价值,即一个状态采取所有行为后的一个价值的期望值。如果能求出梯度 ∇ θ J ( θ ) \nabla_{\theta}J(\theta) θJ(θ),就可以用梯度上升法求解这个问题,即求解价值函数的最大值。

在这个函数中, J ( θ ) J(\theta) J(θ)既依赖于动作的选择有依赖于动作选择时所处状态的分布。给定一个状态,策略参数对动作选择及收益的影响可以根据参数比较直观地计算出来,但因为状态分布和环境有关,所以策略对状态分布的影响一般很难确切知道。而 J ( θ ) J(\theta) J(θ)对模型参数的梯度却依赖于这种未知影响,那么如何估计这个梯度呢?

Sutton等人在文献中给出了这个梯度的表达式:

∇ θ J ( θ ) ∝ ∑ s μ π θ ( s ) ∑ a q π θ ( s , a ) ∇ θ π θ ( s , a ) \nabla_{\theta}J(\theta)\propto\sum_{s}\mu_{\pi_{\theta}}(s)\sum_{a}q_{\pi_{\theta}}(s,a)\nabla_{\theta}\pi_{\theta}(s,a) θJ(θ)sμπθ(s)aqπθ(s,a)θπθ(s,a)
其中, μ π θ ( s ) \mu_{\pi_{\theta}}(s) μπθ(s)称为策略 π θ \pi_{\theta} πθ的在策略分布。在持续问题中, μ π θ ( s ) \mu_{\pi_{\theta}}(s) μπθ(s)为算法 s 0 s_{0} s0出发经过无限多步后位于状态 s s s的概率。

策略梯度定理的证明:(注意:在证明过程中,为使符号简单,我们在所有公式中隐去了 π \pi π θ \theta θ的依赖)

∇ v π ( s ) = ∇ [ ∑ a π ( a ∣ s ) q π ( s , a ) = ∑ a [ ∇ π ( a ∣ s ) q π ( s , a ) + π ( a ∣ s ) ∇ q π ( s , a ) ] = ∑ a [ ∇ π ( a ∣ s ) q π ( s , a ) + π ( a ∣ s ) ∇ ∑ s ′ , r p ( s ′ , r ∣ s , a ) ( r + v π ( s ′ ) ) ] = ∑ a [ ∇ π ( a ∣ s ) q π ( s , a ) + π ( a ∣ s ) ∑ s ′ p ( s ′ ∣ s , a ) ∇ v π ( s ′ ) ] = ∑ a [ ∇ π ( a ∣ s ) q π ( s , a ) + π ( a ∣ s ) ∑ s ′ p ( s ′ ∣ s , a ) ∑ a ′ [ ∇ π ( a ′ ∣ s ′ ) q π ( s ′ , a ′ ) + π ( a ′ ∣ s ′ ) ∑ s ′ ′ p ( s ′ ′ ∣ s ′ , a ′ ) ∇ v π ( s ′ ′ ) ] ] = ∑ s ∈ S ∑ k = 0 ∞ P r ( s → x , k , π ) ∑ a ∇ π ( a ∣ x ) q π ( x , a ) \scriptsize{ \begin{align} \nabla v_{\pi}(s) &= \nabla[\sum_{a}\pi(a|s)q_{\pi}(s,a) \\ &= \sum_{a}[\nabla\pi(a|s)q_{\pi}(s,a)+\pi(a|s)\nabla q_{\pi}(s,a)] \\ &= \sum_{a}[\nabla\pi(a|s)q_{\pi}(s,a)+\pi(a|s)\nabla\sum_{s^{'},r}p(s^{'},r|s,a)(r+v_{\pi}(s^{'}))] \\ &= \sum_{a}[\nabla\pi(a|s)q_{\pi}(s,a)+\pi(a|s)\sum_{s^{'}}p(s^{'}|s,a)\nabla v_{\pi}(s^{'})] \\ &= \sum_{a}[\nabla\pi(a|s)q_{\pi}(s,a)+\pi(a|s)\sum_{s^{'}}p(s^{'}|s,a)\sum_{a^{'}}[\nabla\pi(a^{'}|s^{'})q_{\pi}(s^{'},a^{'})+\pi(a^{'}|s^{'})\sum_{s^{''}}p(s^{''}|s^{'},a^{'})\nabla v_{\pi}(s^{''})]] \\ &= \sum_{s \in S}\sum_{k=0}^{\infty}Pr(s\rightarrow x,k,\pi)\sum_{a}\nabla\pi(a|x)q_{\pi}(x,a) \end{align}} vπ(s)=[aπ(as)qπ(s,a)=a[π(as)qπ(s,a)+π(as)qπ(s,a)]=a[π(as)qπ(s,a)+π(as)s,rp(s,rs,a)(r+vπ(s))]=a[π(as)qπ(s,a)+π(as)sp(ss,a)vπ(s)]=a[π(as)qπ(s,a)+π(as)sp(ss,a)a[π(as)qπ(s,a)+π(as)s′′p(s′′s,a)vπ(s′′)]]=sSk=0Pr(sx,k,π)aπ(ax)qπ(x,a)
其中, P r ( s → x , k , π ) Pr(s\rightarrow x,k,\pi) Pr(sx,k,π)是在策略 π \pi π下,状态 s s s k k k步内转移到状态 x x x的概率。所以,我们可以得到:

∇ J ( θ ) = ∇ v π ( s 0 ) = ∑ s ( ∑ k = 0 ∞ P r ( s 0 → s , k , π ) ) ∑ a ∇ π ( a ∣ s ) q π ( s , a ) = ∑ s η ( s ) ∑ a ∇ π ( a ∣ s ) q π ( s , a ) = ∑ s ′ η ( s ′ ) ∑ s η ( s ) ∑ s ′ η ( s ′ ) ∑ a ∇ π ( a ∣ s ) q π ( s , a ) = ∑ s ′ η ( s ′ ) ∑ s μ ( s ) ∑ a ∇ π ( a ∣ s ) q π ( s , a ) ∝ ∑ s μ ( s ) ∑ a ∇ π ( a ∣ s ) q π ( s , a ) \begin{align} \nabla J(\theta) &= \nabla v_{\pi}(s_{0}) \\ &= \sum_{s}(\sum_{k=0}^{\infty}Pr(s_{0}\rightarrow s,k,\pi))\sum_{a}\nabla\pi(a|s)q_{\pi}(s,a) \\ &= \sum_{s}\eta(s)\sum_{a}\nabla\pi(a|s)q_{\pi}(s,a) \\ &= \sum_{s^{'}}\eta(s^{'})\sum_{s}\frac{\eta(s)}{\sum_{s^{'}}\eta(s^{'})}\sum_{a}\nabla\pi(a|s)q_{\pi}(s,a) \\ &= \sum_{s^{'}}\eta(s^{'})\sum_{s}\mu(s)\sum_{a}\nabla\pi(a|s)q_{\pi}(s,a) \\ &\propto\sum_{s}\mu(s)\sum_{a}\nabla\pi(a|s)q_{\pi}(s,a) \end{align} J(θ)=vπ(s0)=s(k=0Pr(s0s,k,π))aπ(as)qπ(s,a)=sη(s)aπ(as)qπ(s,a)=sη(s)ssη(s)η(s)aπ(as)qπ(s,a)=sη(s)sμ(s)aπ(as)qπ(s,a)sμ(s)aπ(as)qπ(s,a)

4.蒙特卡洛策略梯度定理

根据策略梯度定理表达式计算策略梯度并不是一个简单的问题,其中对 μ π θ \mu_{\pi_{\theta}} μπθ q π θ q_{\pi_{\theta}} qπθ的准确估计本来就是难题,更不要说进一步求解 ∇ θ J ( θ ) \nabla_{\theta}J(\theta) θJ(θ)了。好在蒙特卡洛法能被用来估计这类问题的取值,因此首先要对策略梯度定理表达式进行如下的变形:

∇ θ J ( θ ) ∝ μ π θ ( s ) ∑ a q π θ ( s , a ) ∇ θ π θ ( s , a ) = ∑ s μ π θ ( s ) ∑ a π θ ( s , a ) [ q π θ ( s , a ) ∇ θ π θ ( s , a ) π θ ( s , a ) ] = E s , a ∼ π [ q π θ ( s , a ) ∇ θ π θ ( s , a ) π θ ( s , a ) ] = E s , a ∼ π [ q π θ ( s , a ) ∇ θ ln ⁡ π θ ( s , a ) ] \begin{align} \nabla_{\theta}J(\theta) &\propto\mu_{\pi_{\theta}}(s)\sum_{a}q_{\pi_{\theta}}(s,a)\nabla_{\theta}\pi_{\theta}(s,a) \\ &= \sum_{s}\mu_{\pi_{\theta}}(s)\sum_{a}\pi_{\theta}(s,a)[q_{\pi_{\theta}}(s,a)\frac{\nabla_{\theta}\pi_{\theta}(s,a)}{\pi_{\theta}(s,a)}] \\ &= \mathbb{E}_{s, a\sim\pi}[q_{\pi_{\theta}}(s,a)\frac{\nabla_{\theta}\pi_{\theta}(s,a)}{\pi_{\theta}(s,a)}] \\ &= \mathbb{E}_{s, a\sim\pi}[q_{\pi_{\theta}}(s,a)\nabla_{\theta}\ln{\pi_{\theta}(s,a)}] \end{align} θJ(θ)μπθ(s)aqπθ(s,a)θπθ(s,a)=sμπθ(s)aπθ(s,a)[qπθ(s,a)πθ(s,a)θπθ(s,a)]=Es,aπ[qπθ(s,a)πθ(s,a)θπθ(s,a)]=Es,aπ[qπθ(s,a)θlnπθ(s,a)]
上式为梯度策略定理的一个常见变形,但由于式中存在 q π θ q_{\pi_{\theta}} qπθ,算法无法直接使用蒙特卡洛法来求取其中的期望。为此,进一步将该式进行变形,得到:

∇ θ J ( θ ) ∝ E s , a ∼ π [ E T ( s , a ) ∼ π [ G t ∣ s , a ] ∇ θ ln ⁡ π θ ( s , a ) ] = E s , a ∼ π [ G t ∇ θ ln ⁡ π θ ( s , a ) ] \begin{align} \nabla_{\theta}J(\theta) &\propto\mathbb{E}_{s, a\sim\pi}[\mathbb{E}_{T(s, a)\sim\pi}[G_{t}|s,a]\nabla_{\theta}\ln{\pi_{\theta}(s,a)}] \\ &= \mathbb{E}_{s, a\sim\pi}[G_{t}\nabla_{\theta}\ln{\pi_{\theta}(s,a)}] \end{align} θJ(θ)Es,aπ[ET(s,a)π[Gts,a]θlnπθ(s,a)]=Es,aπ[Gtθlnπθ(s,a)]
其中, T ( s , a ) T(s,a) T(s,a)表示从状态 s s s开始执行动作 a a a得到的一条轨迹(不包括 s s s a a a), G t G_{t} Gt为从状态 s s s开始沿着轨迹 T ( s , a ) T(s,a) T(s,a)运动所得的回报。可以使用蒙特卡洛采样法来求解(即上述公式),算法只需要根据策略来采样一个状态 s s s、一个动作 a a a和将来的轨迹,就能构造上述公式中求取期望所对应的一个样本。

5.REINFORCE 算法

REINFORCE (蒙特卡洛策略梯度) 算法是一种策略参数学习方法,其中策略参数 θ \theta θ 的更新方法为梯度上升法,它的目标是为了最大化性能指标 J ( θ ) J(\theta) J(θ) , 其更新公式为:

θ t + 1 = θ t + α ∇ J ( θ t ) ^ \theta_{t+1} = \theta_{t} + \alpha\widehat{\nabla J(\theta_t)} θt+1=θt+αJ(θt)
根据蒙特卡洛定理中对 ∇ θ J ( θ ) \nabla_{\theta}J(\theta) θJ(θ) 的计算,则有:

∇ θ J ( θ ) = E s , a ∼ π [ G t ∇ θ ln ⁡ π θ ( s , a ) ] \nabla_{\theta}J(\theta) = \mathbb{E}_{s, a\sim\pi}[G_{t}\nabla_{\theta}\ln{\pi_{\theta}(s,a)}] θJ(θ)=Es,aπ[Gtθlnπθ(s,a)]
根据上述梯度更新公式, 得到蒙特卡洛策略梯度更新公式:

θ = θ + η γ ′ G ∇ θ ln ⁡ π θ ( s t , a t ) \theta = \theta + \eta\gamma^{'} G\nabla_\theta\ln\pi_\theta(s_t, a_t) θ=θ+ηγGθlnπθ(st,at)
其中, η \eta η 为学习率, γ ′ \gamma^{'} γ 为衰减率,在REINFORCE算法中,暂不考虑衰减问题,设置 γ ′ = 1 \gamma^{'} = 1 γ=1

REINFORCE 算法流程:

输入:马尔可夫决策过程 M D P = ( S , A , P , R , γ ) MDP=(S, A, P, R, \gamma) MDP=(S,A,P,R,γ),即状态,智能体,决策,奖励和折现系数, γ = 1 \gamma = 1 γ=1,暂不讨论。
输出:策略 π ( a ∣ s , θ ) \pi(a|s, \theta) π(as,θ),即在状态为s,参数为 θ \theta θ的条件下,选择动作a的概率。
算法的具体流程:

  1. 随机初始化;
  2. repeat
  3. 根据策略 π θ \pi_\theta πθ采样一个片段(episode,即智能体由初始状态不断通过动作与环境交互,直至终止状态的过程),获得 s 0 , a 0 , R 1 , s 1 , . . . , s T − 1 , a T − 1 , R T s_0, a_0, R_1, s_1, ..., s_T-1, a_T-1, R_T s0,a0,R1,s1,...,sT1,aT1,RT
    2. for t ← 0 t \leftarrow 0 t0 to T − 1 T - 1 T1 do
    1. G ← ∑ k = 1 T − t γ k − 1 R t + k G \leftarrow \sum_{k=1}^{T-t} \gamma_{k-1} R_{t+k} Gk=1Ttγk1Rt+k,G是对回报的计算,回报是奖励随时间步的积累,在本实验中, γ = 1 \gamma = 1 γ=1
      2. θ = θ + η γ ′ G ∇ θ ln ⁡ π θ ( s t , a t ) \theta = \theta + \eta\gamma^{'} G\nabla_\theta\ln\pi_\theta(s_t, a_t) θ=θ+ηγGθlnπθ(st,at),其中 η \eta η是学习率。策略梯度算法采用神经网络来拟合策略梯度函数,计算策略梯度用于优化策略网络。
  4. 直到 θ \theta θ收敛
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汀、人工智能

十分感谢您的支持

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

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

打赏作者

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

抵扣说明:

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

余额充值