强化学习笔记

本文(不断更新)是学习以下课程/文献的笔记:


1. 强化学习是什么

强化学习是机器学习的一种,它要解决的是“在某种状态下,应该做什么”的时序决策(sequential decision making)问题。
强化学习和监督学习的差别在于:监督学习需要利用标注数据集进行训练,训练出一个模型后在进行判断;强化学习也要训练,但不需要标注数据集,而是通过不断“尝试-试错”的模式进行学习。
对于一个智能体(agent)来说,它要在环境(environment)中达到某种目标。为了达到目标,它会观察到环境中的某些信息,然后做出某项动作(action),这个动作会作用到环境中,然后环境会给智能体一个激励/奖赏(reward):智能体做出正确的动作则有正奖赏,反之则是负奖赏(即惩罚)。智能体就是在这种奖赏机制下学到正确的动作,即为强化学习。
source: UCL RL

强化学习的几个要素
  • 状态(state)
    状态可以理解为关于agent和环境的信息,比如某个地点、agent所处的位置、agent自身的速度等。状态是需要agent去获取的。因为强化学习是一个时序决策的问题,即存在 S 0 S_0 S0, S 1 S_1 S1,… S t S_t St, S t + 1 S_{t+1} St+1个状态,如果”下一个状态只与当前状态有关,而与更早之前的状态无关”, 即条件概率满足:
    P ( S t + 1 ∣ S t ) = P ( S t + 1 ∣ S t , S t − 1 , . . . , S 0 ) P(S_{t+1}|S_t)=P(S_{t+1}|S_t,S_{t-1},...,S_0) P(St+1St)=P(St+1St,St1,...,S0)
    那么我们说该问题具有马尔科夫性,我们的强化学习问题也变成马尔科夫决策问题(MDP).
  • 动作(action)
    即agent的动作
  • 策略(policy)
    策略就是状态到动作的映射:处在某一状态下应该做什么动作
  • 目标(goal)
    在一个问题中agent要达到的目标,比如是从迷宫中达到出口。目标可以用激励来量化表示
  • 激励(reward)
    这是环境给agent的反馈,agent的终极目标就是要把累积的reward最大化. 需要注意的是,当下行为会得到一个即时的reward,但其真正的价值,可能要等到一定时间后才体现,正所谓“不是不报,时候未到”
  • 值函数(value function)
    激励表示对动作的即时奖惩,而值函数表示某个策略的终极价值

2. Markov Decision Process (MDP)

强化学习往往可以由马尔科夫决策过程(MDP)来描述。MDP是一个时序问题,在每个时刻 t t t它都被这样一个元组 ⟨ S , A , P , R , γ ⟩ \langle S, A, P, R, \gamma \rangle S,A,P,R,γ所定义, 其中:

  • S S S 为有限的state组成的状态空间
  • A A A 为有限的action组成的动作空间
  • P P P 是状态转移概率矩阵,即在状态 s s s时,采取 a a a动作,状态转移到 s ′ s^{\prime} s的概率:
    P s , s ′ a = P [ S t + 1 = s ′ ∣ S t = s , A = a ] P_{s,s^{\prime}}^a = P[S_{t+1} = s^{\prime} | S_{t} = s, A = a] Ps,sa=P[St+1=sSt=s,A=a]
    为什么从一个状态到另一个状态是概率性的呢?例如一个机器人在A点( s s s)决定采取动作"跳"转移到B点( s ′ s^{\prime} s),但由于控制的bug等原因,它有可能只有90%的可能性成功到达B点,而有10%的可能性停留在A点。
  • R R R 是激励函数,即在状态 s s s时,采取 a a a动作,能够得到的期望奖励(任何实数):
    R s a = E [ R t + 1 ∣ S t = s , A = a ] R_{s}^a = \mathbb{E}[R_{t+1} | S_t = s, A = a] Rsa=E[Rt+1St=s,A=a]
    这个奖励跟 t + 1 t+1 t+1时刻的状态没关系,比如上面说的机器人,只要它在A点采取“跳”这个动作了,那么就会有一个奖励。
  • γ \gamma γ 是discount factor,这个是用来表述总回报(returns) G t G_t Gt的:
    G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . = ∑ k = 0 ∞ γ k R t + k + 1 , ( γ ∈ [ 0 , 1 ] ) G_t = R_{t+1} + \gamma R_{t+2} +\gamma^2 R_{t+3} + ... = \sum_{k=0}^\infty \gamma^k R_{t+k+1}, (\gamma \in [0, 1]) Gt=Rt+1+γRt+2+γ2Rt+3+...=k=0γkRt+k+1,(γ[0,1])
    t t t时刻开始,之后的每个 t + k + 1 t+k+1 t+k+1时刻会有激励 R t + k + 1 R_{t+k+1} Rt+k+1,但是总的回报不是所有 R t + k + 1 R_{t+k+1} Rt+k+1的直接加和,而是会把离 t t t越远的的激励discount掉越多、再加和,这么做有两个理由:一是,这比较符合生物智能的特点——一般生物都是考虑眼前好处,而缺乏长远目光;二是数学上有助于后面我们求解收敛,因为:
    G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . ≤ R m a x ∑ k = 0 ∞ γ k = R m a x 1 − γ \begin{aligned} G_t &= R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} +...\\ &\leq R_{max}\sum_{k=0}^{\infty}\gamma^k \\ &=\frac{R_{max}}{1-\gamma} \end{aligned} Gt=Rt+1+γRt+2+γ2Rt+3+...Rmaxk=0γk=1γRmax
    只要 γ \gamma γ 小于1,回报 G t G_t Gt,是收敛的,即使时间无限长。

下图是一个MDP的例子:每个圆圈或者正方形表示一个状态;每个红色字体表示一个动作,每个箭头表示采取该动作将使状态转移;每个R表示激励
在这里插入图片描述
在MDP中,智能体从一个状态转移到另一个状态,上面说了可以由转移概率分布来描述,而实际上这种转移由具体动作来实现。在某个状态时采取某种行动,我们称之为策略(policy),记为 π \pi π:
π ( a ∣ s ) = P r o b [ A t = a ∣ S t = s ] \pi(a|s) = Prob[A_t = a|S_t = s] π(as)=Prob[At=aSt=s]
π \pi π是一个概率分布,就是说某个状态下有可能采取不同的动作。考虑下面这个状态转移例子:空心圆圈表示状态,实心黑点表示动作。从最上面的状态 s s s出发,我们有一定的概率分布 π \pi π可以采取3种不同的动作 a a a. 而采取某一个动作后,我们即会获得激励 r r r, 并且有一定转移概率 p p p会使状态转移到下一个 s ′ s^{\prime} s. 本例子中最下层空心圆圈表示,某个动作后都有两种新的状态的可能性。
在这里插入图片描述

2.1 状态值函数(state value function)

好了,现在在MDP中,状态之间可以通过策略函数 π \pi π和转移函数 P P P函数联系起来。并且,在某一个状态采取某一动作时,智能体会得到一个激励(不管是正的还是负的)。我们说强化学习的终极目标是获得最大化的累积的激励,而不是当下的激励;有可能这一步走出去捡到个宝,获得不错的即时激励,可是却走向了错误的方向,导致长期的累积激励不高。
为了衡量在某个状态时的长期累积激励,我们定义状态值函数 V π ( s ) V_{\pi}(s) Vπ(s)为在策略概率分布和转移概率分布下的长期回报:
V π ( s ) = E π [ G t ∣ S t = s ] = E π [ R t + 1 + γ R t + 2 + γ 2 R t + 3 . . . ∣ S t = s ] \begin{aligned} V_{\pi}(s) &= \mathbb{E}_{\pi}[G_t|S_t = s]\\ &= \mathbb{E}_{\pi}[R_{t+1} + \gamma R_{t+2} +\gamma^2R_{t+3}...|S_t = s]\\ \end{aligned} Vπ(s)=Eπ[GtSt=s]=Eπ[Rt+1+γRt+2+γ2Rt+3...St=s]
发现 V π ( s ) V_{\pi}(s) Vπ(s)具有递归关系:
V π ( s ) = E π [ R t + 1 + γ ( R t + 2 + γ R t + 3 . . . ) ∣ S t = s ] = E π [ R t + 1 + γ V π ( S t + 1 ) ∣ S t = s ] = E π [ R t + 1 ∣ S t = s ] + E π [ γ V π ( S t + 1 ) ∣ S t = s ] = ∑ a ∈ A π ( a ∣ s ) R ( s , a ) + ∑ a ∈ A π ( a ∣ s ) γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V π ( s ′ ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V π ( s ′ ) ) = R π + γ P π V π ( S t + 1 ) \begin{aligned} V_{\pi}(s) &= \mathbb{E}_{\pi}[R_{t+1} + \gamma (R_{t+2} +\gamma R_{t+3}...)|S_t = s]\\ &=\mathbb{E}_{\pi}[R_{t+1}+\gamma V_{\pi}(S_{t+1})|S_t = s] \\ &= \mathbb{E}_{\pi}[R_{t+1}|S_t = s]+E_{\pi}[\gamma V_{\pi}(S_{t+1})|S_t = s]\\ &= \sum_{a\in A}\pi(a|s)R(s,a) + \sum_{a \in A} \pi(a|s) \gamma \sum_{s^{\prime}\in S}P(s^{\prime}|s,a)V_{\pi}(s^{\prime})\\ &= \sum_{a\in A}\pi(a|s)(R(s,a)+\gamma \sum_{s^{\prime}\in S}P(s^{\prime}|s,a)V_{\pi}(s^{\prime})) \\ &= R^{\pi} + \gamma P^{\pi} V_{\pi} (S_{t+1}) \end{aligned} Vπ(s)=Eπ[Rt+1+γ(Rt+2+γRt+3...)St=s]=Eπ[Rt+1+γVπ(St+1)St=s]=Eπ[Rt+1St=s]+Eπ[γVπ(St+1)St=s]=aAπ(as)R(s,a)+aAπ(as)γsSP(ss,a)Vπ(s)=aAπ(as)(R(s,a)+γsSP(ss,a)Vπ(s))=Rπ+γPπVπ(St+1)
可见, s s s状态下的回报,可以从转移到的下一个状态的 S t + 1 S_{t+1} St+1计算/更新而来。这点对于后面的迭代求最优解很重要。

2.2 动作值函数(action value function / Q-value)

和状态值函数类似,我们还可以定义动作值函数:衡量某一状态下采取某个动作的长期累积回报:
q π ( s , a ) = E π [ R t + 1 + γ R t + 2 + γ 2 R t + 3 . . . ∣ S t = s , A t = a ] = E π [ R t + 1 + γ q π ( S t + 1 ) ∣ S t = s , A t = a ] = R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V π ( s ′ ) \begin{aligned} q_{\pi}(s,a) &= \mathbb{E}_{\pi}[R_{t+1} + \gamma R_{t+2} +\gamma^2R_{t+3}...|S_t = s, A_t = a]\\ &= \mathbb{E}_{\pi}[R_{t+1}+\gamma q_{\pi}(S_{t+1})|S_t = s, A_t = a] \\ &= R(s,a)+\gamma \sum_{s^{\prime}\in S}P(s^{\prime}|s,a)V_{\pi}(s^{\prime}) \\ \end{aligned} qπ(s,a)=Eπ[Rt+1+γRt+2+γ2Rt+3...St=s,At=a]=Eπ[Rt+1+γqπ(S

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值