强化学习的概念

​ Reinforcement Learning,强化学习,有时也称作增强学习。简单来说,强化学习就是希望受试者能够基于经验,对当前环境做出反应,以获得最大的长期回报。

​ 在这个简单描述中涉及到了几个强化学习中的常见概念:

Agent: 译作智能体,也就是上述的受试者。

System Environment: 系统环境,它可以看作强化学习的设定,因而拥有上帝视角,可以看到环境转化中各个过程的变化情况。在具体的实验中,可以看作试验的操控者。

Observation / State: 观察或者状态,即上述的当前环境。

Action: 动作,是 Agent(受试者)做出的反应。

Reward: 回报,Agent每做出一个动作,都会与当前的状态一起发生作用,产生一个回报。强化学习的目标则是希望长期回报最大。

​ 拥有这些概念之后,我们可以对上述的简单描述做一个更为具体的扩充:

​ 每一个时刻,环境都处在一个状态中,Agent会设法得到当前状态的一个观测值,然后基于这个观测值,基于历史的行为规则(一般称之为策略,Policy),给出一个反应,即Action。显然,这个动作会对当前环境的状态产生影响,这个时候会产生两个新的新的信息:新的环境观测值以及得到的汇报。这个回报既可以是积极的,也可以是消极的。一般而言,强化学习希望在一连串的动作之后,环境可以处在一个期望的状态中,此时的Reward也必然是最大的。也就是所谓的长期回报最大。

​ 这样,也很容易想到,在强化学习的过程中,每次做出的动作并不一定会对长期回报最优做出共享,也可能会起到完全相反的作用。所以,整个学习过程也是试错的过程,在一次次的失败中找到成功的方法。

强化学习与监督学习

​ 从学习目标来看,监督学习的学习目标很明确。在做出具体的判断之前,我们已经事先知道,结果可能出现的情况。基于这样的事实,我们总是将可能的结果套用到待判断的个体上,计算出此种情况下的误差,选择误差最小的哪一个。并且,由于可能结果的确定与否,还有非监督学习、半监督学习。

​ 但是,强化学习并没有那么明确的目标。基于长期回报最大的准则,我们可能会有多种动作与状态的组合。

马尔可夫决策过程

Markov Decision Process, MDP, 是强化学习的重要基础。

​ 在MDP中,会有一条状态-动作链: { s 0 , a 0 , s 1 , a 1 , ⋯   , s t − 1 , a t − 1 , s t } \{s_0,a_0,s_1,a_1,\cdots,s_{t-1},a_{t-1},s_t\} {s0,a0,s1,a1,,st1,at1,st}。这条链中包含了两种状态转换,一种是从状态到动作的转换,另一种从动作到状态的转换。基于我们上述的描述,也就不难理解为什么会出现这样的转换了。首先:初始时,环境呈现一种状态,Agent基于这种状态,做出反应(Action),这个动作会使得环境状态发生改变。Agent做出动作是由策略决定的,状态转换则是由于环境造成的。

​ 首先,我们来观察这个策略。可是,处在每个状态的时候,Agent都有多个动作选择。具体做出哪个动作,需要看这个动作会带来多少Reward。这样就会有公式:
a t ∗ = a r g   m a x a t , i P ( a t , i ∣ ( s 0 , a 0 , s 1 , a 1 , ⋯   , s t ) ) a_t^*=\mathtt{arg}\ \mathtt{max}_{a_{t,i}} \mathbb{P}(a_{t,i}|(s_0,a_0,s_1,a_1,\cdots,s_t)) at=arg maxat,iP(at,i(s0,a0,s1,a1,,st))
可以看到,在前面一连串动作之后,我们希望现在所做出的动作,是在当前状态下最可能做出的动作(使得长期回报最大)。

​ 由于序列的马尔可夫性,也就是说下一刻的动作只和此刻的状态有关,与此刻的前面时间的状态无关,则上述公式又可以写成: a r g   m a x a i P ( a i ∣ S t ) \mathtt{arg}\ \mathtt{max}_{a_i} \mathbb{P}(a_i|S_t) arg maxaiP(aiSt)。有一点需要明确的是,当前状态其实也是之前所有动作所造成的状态转换的结果。

​ 接下来,我们来分析状态的变化情况。 P ( S t + 1 ∣ S t , a t ) \mathbb{P}(S_{t+1}|S_t,a_t) P(St+1St,at)。与上述的分析类似,由于序列的马尔可夫性,下一刻的状态只与当前的状态和当前状态下的动作有关。

​ 有了上面的分析,我们可以进一步深化马尔可夫过程的理解:

(1)马尔可夫表示状态之间的依赖关系。

(2)每次状态下的决策由Agent决定。

(3)过程表示了时间的属性。表示的是某一时刻下多方面的观测值。

前面介绍了单步的策略,从强化学习最初的想法来看,我们是希望得到最大的长期回报,单步的回报记作 r r r,那我们在时刻 t t t产生的动作,在未来所得到的长期回报应该记为:
R e t t = ∑ k = 0 γ k r t + k + 1 Ret_t=\sum_{k=0}\gamma^k r_{t+k+1} Rett=k=0γkrt+k+1
γ \gamma γ几位折扣率,表示当前动作产生的Reward在未来会打折扣。 r r r表示对应时刻的回报Reward。但是这个公式依然问题重重,最棘手的问题在于,我们在 t t t时刻并不能准确得到 t + k + 1 t+k+1 t+k+1时刻的Reward值。因此,我们转而去求策略的价值,对应的价值公式写为:
v π ( s t ) = E s , a ∼ τ [ ∑ k = 0 γ k r t + k + 1 ] v_{\pi}(s_t)=E_{s,a\sim\tau}[\sum_{k=0}\gamma^k r_{t+k+1}] vπ(st)=Es,aτ[k=0γkrt+k+1]
这里, τ \tau τ表示从 s t s_t st出发的一条路径,进一步,上述公式写为:
v π ( s t ) = E τ [ ∑ k = 0 γ k r t + k + 1 ] = ∑ τ P ( τ ) ∑ k = 0 γ k r t + k + 1 = ∑ ( s t , a t , ⋯   ) ∼ τ π ( a t ∣ s t ) P ( s t + 1 ∣ s t , a t ) ⋯ ∑ k = 0 γ k r t + k + 1 = ∑ a t π ( a t ∣ s t ) ∑ s t + 1 P ( s t + 1 ∣ s t , a t ) ∑ ( s t + 1 , a t + 1 , ⋯   ) ∼ τ π ( a t + 1 ∣ s t + 1 ) P ( s t + 2 ∣ s t + 1 , a t + 1 ) ⋯ ∑ k = 0 γ k r t + k + 1 = ∑ a t π ( a t ∣ s t ) ∑ s t + 1 P ( s t + 1 ∣ s t , a t ) ∑ ( s t + 1 , a t + 1 , ⋯   ) ∼ τ π ( a t + 1 ∣ s t + 1 ) P ( s t + 2 ∣ s t + 1 , a t + 1 ) ⋯ ( r t + 1 + ∑ k = 1 γ k r t + k + 1 ) = ∑ a t π ( a t ∣ s t ) ∑ s t + 1 P ( s t + 1 ∣ s t , a t ) [ r t + 1 + ∑ ( s t + 1 , a t + 1 , ⋯   ) ∼ τ π ( a t + 1 ∣ s t + 1 ) P ( s t + 2 ∣ s t + 1 , a t + 1 ) ⋯ ∑ k = 1 γ k r t + k + 1 ] = ∑ a t π ( a t ∣ s t ) ∑ s t + 1 P ( s t + 1 ∣ s t , a t ) [ r t + 1 + v π ( s t + 1 ) ] \begin{aligned} v_\pi(s_t)&=E_{\tau}[\sum_{k=0}\gamma^kr_{t+k+1}]\\ &=\sum_{\tau}\mathbb{P}(\tau)\sum_{k=0}\gamma^kr_{t+k+1}\\ &=\sum_{(s_t,a_t,\cdots)\sim\tau}\pi(a_t|s_t)P(s_{t+1}|s_t,a_t)\cdots\sum_{k=0}\gamma^k r_{t+k+1}\\ &=\sum_{a_t}\pi(a_t|s_t)\sum_{s_{t+1}}P(s_{t+1}|s_t,a_t)\sum_{(s_{t+1},a_{t+1},\cdots)\sim\tau}\pi(a_{t+1}|s_{t+1})P(s_{t+2}|s_{t+1},a_{t+1})\cdots\sum_{k=0}\gamma^k r_{t+k+1}\\ &=\sum_{a_t}\pi(a_t|s_t)\sum_{s_{t+1}}P(s_{t+1}|s_t,a_t)\sum_{(s_{t+1},a_{t+1},\cdots)\sim\tau}\pi(a_{t+1}|s_{t+1})P(s_{t+2}|s_{t+1},a_{t+1})\cdots(r_{t+1}+\sum_{k=1}\gamma^k r_{t+k+1})\\ &=\sum_{a_t}\pi(a_t|s_t)\sum_{s_{t+1}}P(s_{t+1}|s_t,a_t)[r_{t+1}+\sum_{(s_{t+1},a_{t+1},\cdots)\sim\tau}\pi(a_{t+1}|s_{t+1})P(s_{t+2}|s_{t+1},a_{t+1})\cdots\sum_{k=1}\gamma^k r_{t+k+1}]\\ &=\sum_{a_t}\pi(a_t|s_t)\sum_{s_{t+1}}P(s_{t+1}|s_t,a_t)[r_{t+1}+v_\pi(s_{t+1})] \end{aligned} vπ(st)=Eτ[k=0γkrt+k+1]=τP(τ)k=0γkrt+k+1=(st,at,)τπ(atst)P(st+1st,at)k=0γkrt+k+1=atπ(atst)st+1P(st+1st,at)(st+1,at+1,)τπ(at+1st+1)P(st+2st+1,at+1)k=0γkrt+k+1=atπ(atst)st+1P(st+1st,at)(st+1,at+1,)τπ(at+1st+1)P(st+2st+1,at+1)(rt+1+k=1γkrt+k+1)=atπ(atst)st+1P(st+1st,at)[rt+1+(st+1,at+1,)τπ(at+1st+1)P(st+2st+1,at+1)k=1γkrt+k+1]=atπ(atst)st+1P(st+1st,at)[rt+1+vπ(st+1)]
这样就得到了状态值函数。

同理可以得到状态-行动值函数:
q π ( s t , a t ) = E τ [ ∑ k = 0 γ k r t + k + 1 ] = ∑ τ P ( τ ) ∑ k = 0 γ k r t + k + 1 = ∑ ( s t + 1 , a t + 1 , ⋯   ) ∼ τ P ( s t + 1 ∣ s t , a t ) P ( a t + 1 ∣ s t + 1 ) ⋯ ∑ k = 0 γ k r t + k + 1 = ∑ s t + 1 P ( s t + 1 ∣ s t . a t ) ∑ a a + 1 ( a t + 1 ∣ s t + 1 ) ∑ ( s t + 2 , a t + 2 , ⋯   ) ∼ τ P ( s t + 2 ∣ s t + 1 , a t + 1 ) P ( a t + 2 ∣ s t + 2 ) ⋯ ( r t + 1 + ∑ k = 1 γ k r t + k + 1 ) = ∑ s t + 1 P ( s t + 1 ∣ s t . a t ) ∑ a a + 1 ( a t + 1 ∣ s t + 1 ) [ r t + 1 + ∑ ( s t + 2 , a t + 2 , ⋯   ) ∼ τ P ( s t + 2 ∣ s t + 1 , a t + 1 ) P ( a t + 2 ∣ s t + 2 ) ⋯ ∑ k = 1 γ k r t + k + 1 ] = ∑ s t + 1 P ( s t + 1 ∣ s t . a t ) ∑ a t + 1 ( a t + 1 ∣ s t + 1 ) [ r t + 1 + q π ( s t + 1 , a t + 1 ) ] \begin{aligned} q_{\pi}(s_t,a_t)&=E_{\tau}[\sum_{k=0}\gamma^kr_{t+k+1}]\\ &=\sum_{\tau}\mathbb{P}(\tau)\sum_{k=0}\gamma^kr_{t+k+1}\\ &=\sum_{(s_{t+1},a_{t+1},\cdots)\sim\tau}P(s_{t+1}|s_t,a_t)P(a_{t+1}|s_{t+1})\cdots\sum_{k=0}\gamma^k r_{t+k+1}\\ &=\sum_{s_{t+1}}P(s_{t+1}|s_t.a_t)\sum_{a_{a+1}}(a_{t+1}|s_{t+1})\sum_{(s_{t+2},a_{t+2},\cdots)\sim\tau}P(s_{t+2}|s_{t+1},a_{t+1})P(a_{t+2}|s_{t+2})\cdots(r_{t+1}+\sum_{k=1}\gamma^k r_{t+k+1})\\ &=\sum_{s_{t+1}}P(s_{t+1}|s_t.a_t)\sum_{a_{a+1}}(a_{t+1}|s_{t+1})[r_{t+1}+\sum_{(s_{t+2},a_{t+2},\cdots)\sim\tau}P(s_{t+2}|s_{t+1},a_{t+1})P(a_{t+2}|s_{t+2})\cdots\sum_{k=1}\gamma^k r_{t+k+1}]\\ &=\sum_{s_{t+1}}P(s_{t+1}|s_t.a_t)\sum_{a_{t+1}}(a_{t+1}|s_{t+1})[r_{t+1}+q_{\pi}(s_{t+1},a_{t+1})] \end{aligned} qπ(st,at)=Eτ[k=0γkrt+k+1]=τP(τ)k=0γkrt+k+1=(st+1,at+1,)τP(st+1st,at)P(at+1st+1)k=0γkrt+k+1=st+1P(st+1st.at)aa+1(at+1st+1)(st+2,at+2,)τP(st+2st+1,at+1)P(at+2st+2)(rt+1+k=1γkrt+k+1)=st+1P(st+1st.at)aa+1(at+1st+1)[rt+1+(st+2,at+2,)τP(st+2st+1,at+1)P(at+2st+2)k=1γkrt+k+1]=st+1P(st+1st.at)at+1(at+1st+1)[rt+1+qπ(st+1,at+1)]
这样,我们就得到了强化学习的两个重要概念:状态值函数以及状态-行动值函数。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐