强化学习入门

基本概念

Agent : 是程序里面的决策者,他们需要根据环境交互来做出决策.
Environment :agent会在里面交互.
State : 环境中的状态,比如agent的位置,时间等等。不同的action会有不同的reward.

环境有些是可观测的(比如reward),有些是不可观测的。强化学习的任务就是优化累计reward。

state value function

强化学习最重要的就是计算累计的reward,我们希望能够找到一个平均累计reward最优的policy,而Value Function正是一种用于计算期望累计reward的函数。而state value function刻画了,在给定某个policy下,如果当前状态为s,那么一直到最后结束的期望累计reward是多少:

V π ( s ) ≐ E π [ G t ∣ S t = s ] = E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s ] ,  for all  s ∈ S V^{\pi } (s)\doteq E_{\pi } [G_{t} |S_{t} =s]=E_{\pi } [\sum _{k=0}^{\infty } \gamma ^{k} R_{t+k+1} |S_{t} =s],\text{ for all } s\in S Vπ(s)Eπ[GtSt=s]=Eπ[k=0γkRt+k+1St=s], for all sS

在这里 γ \displaystyle \gamma γ是折扣系数,这是考虑了未来的时间其reward可能没有当前的重要,并且每一个时间步t都会根据给定的策略 π \displaystyle \pi π来决定每一步的action:

π ( a ∣ s ) = P ( A t = a ∣ S t = s ) \pi (a|s)=P(A_{t} =a|S_{t} =s) π(as)=P(At=aSt=s)

从公式来看, V π ( s ) \displaystyle V^{\pi } (s) Vπ(s)测量了在当前state=s,使用policy π {\displaystyle \pi } π下,未来的累积reward的期望值。

需要注意的是,在这里,初始状态的action都是通过policy得到的,而如果初始状态的action是给定的话这个value function 将被称为state-action value function (Q-function)。举个例子,假设一个游戏每走一步的reward是-1,现在还差一步就要结束了,并且我们使用的是最优的polocy,如果使用state value function,我们的 V π ( s ) = − 1 {\displaystyle V^{\pi } (s)=-1} Vπ(s)=1,选择直接选择结束游戏(因为还差一步),但如果指定一个action a {\displaystyle a} a且这个action往外回了一步(-1),那么走到终点需要再走两步,于是 Q π ( s , a ) = − 3 {\displaystyle Q^{\pi } (s,a)=-3} Qπ(s,a)=3,这就是state-value function与state-action value function的区别。

我们考虑一个计算reward的例子:

假设当前状态是class 2,于是根据策略,其中一个agent选择了一个决策序列为 class 2→class 3→pass→sleep,假设discount=0.5那么我们的reward为:

− 2 + ( − 2 ∗ 0.5 ) + 10 ∗ 0. 5 2 + 0 = − 0.5 -2+(-2*0.5)+10*0.5^{2} +0=-0.5 2+(20.5)+100.52+0=0.5

然而这只是其中的一个样本,有没有什么方法可以直接得出这个期望的解析解呢?这时候我们就要介绍bellman equation, 我们可以改写公式1为一个迭代的形式:

V π ( s ) ≐ E π [ R t + 1 + γ V π ( S t + 1 ) ∣ S t = s ] V^{\pi } (s)\doteq E_{\pi } [R_{t+1} +\gamma V^{\pi } (S_{t+1} )|S_{t} =s] Vπ(s)Eπ[Rt+1+γVπ(St+1)St=s]

即当前的reward加上,下一个state下的累积reward,通过这样的分解,我们有:

V π ( s ) = E π [ R t + 1 ∣ S t = s ] + γ ∑ s ′ ∈ S p ( s ′ ∣ s ) V π ( s ′ ) V^{\pi } (s)=E_{\pi } [R_{t+1} |S_{t} =s]+\gamma \sum _{s'\in S} p(s'|s)V^{\pi } (s') Vπ(s)=Eπ[Rt+1St=s]+γsSp(ss)Vπ(s)

考虑不同的状态 s 1 , . . . , s n {\displaystyle s_{1} ,...,s_{n}} s1,...,sn我们可以写成矩阵的形式:

( V π ( s 1 ) V π ( s 2 ) ⋮ V π ( s n ) ) ⏟ v = ( E π [ R t + 1 ∣ S t = s 1 ] E π [ R t + 1 ∣ S t = s 2 ] ⋮ E π [ R t + 1 ∣ S t = s n ] ) ⏟ R + γ ( p ( s 1 ∣ s 1 ) p ( s 2 ∣ s 1 ) p ( s n ∣ s 1 ) p ( s 1 ∣ s 2 ) p ( s 1 ∣ s 2 ) p ( s 1 ∣ s 2 ) p ( s 1 ∣ s n ) p ( s 1 ∣ s n ) p ( s 1 ∣ s n ) ) ⏟ P ( V π ( s 1 ) V π ( s 2 ) ⋮ V π ( s n ) ) ⏟ v \underbrace{\begin{pmatrix} V^{\pi } (s_{1} )\\ V^{\pi } (s_{2} )\\ \vdots \\ V^{\pi } (s_{n} ) \end{pmatrix}}_{v} =\underbrace{\begin{pmatrix} E_{\pi } [R_{t+1} |S_{t} =s_{1} ]\\ E_{\pi } [R_{t+1} |S_{t} =s_{2} ]\\ \vdots \\ E_{\pi } [R_{t+1} |S_{t} =s_{n} ] \end{pmatrix}}_{R} +\gamma \underbrace{\begin{pmatrix} p(s_{1} |s_{1} ) & p(s_{2} |s_{1} ) & & p(s_{n} |s_{1} )\\ p(s_{1} |s_{2} ) & p(s_{1} |s_{2} ) & & p(s_{1} |s_{2} )\\ & & & \\ p(s_{1} |s_{n} ) & p(s_{1} |s_{n} ) & & p(s_{1} |s_{n} ) \end{pmatrix}}_{P}\underbrace{\begin{pmatrix} V^{\pi } (s_{1} )\\ V^{\pi } (s_{2} )\\ \vdots \\ V^{\pi } (s_{n} ) \end{pmatrix}}_{v} v Vπ(s1)Vπ(s2)Vπ(sn)=R Eπ[Rt+1St=s1]Eπ[Rt+1St=s2]Eπ[Rt+1St=sn]+γP p(s1s1)p(s1s2)p(s1sn)p(s2s1)p(s1s2)p(s1sn)p(sns1)p(s1s2)p(s1sn)v Vπ(s1)Vπ(s2)Vπ(sn)

于是有Bellman Linear Equation:

v = R + γ P v ( I − γ P ) v = R v = R ( I − γ P ) − 1 v=R+\gamma Pv\\ (I-\gamma P)v=R\\ v=R(I-\gamma P)^{-1} v=R+γPv(IγP)v=Rv=R(IγP)1

通过这个式子,我们可以求解出state-value function在各个状态s下的累积reward. 需要注意的是,这个bellman equation显然只有在Markov条件下才成立的,因为你会发现左边的 v {\displaystyle v} v应该是关于 ( t + 1 , t ) {\displaystyle (t+1,t)} (t+1,t)的,而右边的 v {\displaystyle v} v是关于 ( t + 2 , t + 1 ) {\displaystyle (t+2,t+1)} (t+2,t+1),而这个性质能成立正是因为Markov的性质只跟其上一时刻的状态有关,类似的对于P同样有:

P s s ′ = P [ S t + 1 = s ′ ∣ S t = s ] = P [ S t + 2 = s ′ ∣ S t + 1 = s ] = . . . \mathcal{P}_{ss^{\prime }} =\mathbb{P}\left[ S_{t+1} =s^{\prime } \mid S_{t} =s\right] =\mathbb{P}\left[ S_{t+2} =s^{\prime } \mid S_{t+1} =s\right] =... Pss=P[St+1=sSt=s]=P[St+2=sSt+1=s]=...

于是我们才能写成这种简单的递归形式。

此外,这个方法虽然可以算出解析解,但是因为求逆的复杂度为 O ( ∣ S ∣ 3 ) {\displaystyle O\left( |S|^{3}\right)} O(S3),状态数量越多则越慢,在实际里面,这是不可接受的。因此,有许多近似的算法,如Dynamic Programming (Value iteration and Policy iteration), Monte-Claro methods, TD-Learning。

state-action value function(Q-function)

在上面,我们考虑了state-value function,其action是完全由policy决定的,但如果我们自定义了初始的action,其最后的累计reward的期望是怎样的呢?在这种情况,因为任意的action的选择会打破state之间转换的稳定性,换句话说,action是会改变state转换的分布的,因此,对于Transition Probability Matrix:

P s s ′ a = P [ S t + 1 = s ′ ∣ S t = s , A t = a ] \mathcal{P}_{ss^{\prime }}^{a} =\mathbb{P}\left[ S_{t+1} =s^{\prime } \mid S_{t} =s,A_{t} =a\right] Pssa=P[St+1=sSt=s,At=a]

同理对于reward function:

R s a = E [ R t + 1 ∣ S t = s , A t = a ] \mathcal{R}_{s}^{a} =\mathbb{E} [R_{t+1} \mid S_{t} =s,A_{t} =a] Rsa=E[Rt+1St=s,At=a]

结合两者,我们有State-action value function(Q-Function):

Q π ( s , a ) ≐ E π [ G t ∣ S t = s , A t = a ] = E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s , A t = a ] Q^{\pi } (s,a)\doteq \mathbb{E}_{\pi } [G_{t} \mid S_{t} =s,A_{t} =a]=\mathbb{E}_{\pi }\left[\sum _{k=0}^{\infty } \gamma ^{k} R_{t+k+1} \mid S_{t} =s,A_{t} =a\right] Qπ(s,a)Eπ[GtSt=s,At=a]=Eπ[k=0γkRt+k+1St=s,At=a]

显然,V和Q的联系是:

V π ( s ) = ∑ a ∈ A π ( a ∣ x ) Q π ( s , a ) V^{\pi }( s) =\sum _{a\in A} \pi ( a|x) Q^{\pi } (s,a) Vπ(s)=aAπ(ax)Qπ(s,a)

上面式子告诉我们,如果初始的action是用policy得到的,那么Q等价于V。

Optimal Value Function

那么我们可以定义取得最优的期望累计reward的policy为最优的策略:

V ∗ ( s ) = max ⁡ π V π ( s ) V^{*}( s) =\max_{\pi } V^{\pi }( s) V(s)=πmaxVπ(s)

类似的,最优的Q-function是

Q ∗ ( s ) = max ⁡ π Q π ( s , a ) = E π [ R t + 1 + γ V ∗ ( S t + 1 ) ∣ S t = s , A t = a ] Q^{*}( s) =\max_{\pi } Q^{\pi }( s,a) =\mathbb{E}_{\pi }\left[ R_{t+1} +\gamma V^{*} (S_{t+1} )\mid S_{t} =s,A_{t} =a\right] Q(s)=πmaxQπ(s,a)=Eπ[Rt+1+γV(St+1)St=s,At=a]

注意在MDP中,达到最优policy的时候,这个policy一定是确定性的。这个确定性的意思是,存在一个或多个action在当前环境是同等最优的(当然你可以在共同最优的action中随机选择),但是最优的action是确定存在的。因此,当policy最优时,我们有以下的关系式:

V ∗ ( s ) = max ⁡ a ∈ A ( s ) Q ∗ ( s , a ) = max ⁡ a E π ∗ [ G t ∣ S t = s , A t = a ] = max ⁡ a E π ∗ [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s , A t = a ] = max ⁡ a E π ∗ [ R t + 1 + γ ∑ k = 0 ∞ γ k R t + k + 2 ∣ S t = s , A t = a ] = max ⁡ a E [ R t + 1 + γ V ∗ ( S t + 1 ) ∣ S t = s , A t = a ] = max ⁡ a ∈ A ( s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v ∗ ( s ′ ) ] . \begin{aligned} V^{*}( s) & =\max_{a\in \mathcal{A} (s)} Q^{*}( s,a)\\ & =\max_{a}\mathbb{E}_{\pi ^{*}}[ G_{t} \mid S_{t} =s,A_{t} =a]\\ & =\max_{a}\mathbb{E}_{\pi ^{*}}\left[\sum _{k=0}^{\infty } \gamma ^{k} R_{t+k+1} \mid S_{t} =s,A_{t} =a\right]\\ & =\max_{a}\mathbb{E}_{\pi ^{*}}\left[ R_{t+1} +\gamma \sum _{k=0}^{\infty } \gamma ^{k} R_{t+k+2} \mid S_{t} =s,A_{t} =a\right]\\ & =\max_{a}\mathbb{E}\left[ R_{t+1} +\gamma V^{*}( S_{t+1}) \mid S_{t} =s,A_{t} =a\right]\\ & =\max_{a\in \mathcal{A} (s)}\sum _{s^{\prime } ,r} p\left( s^{\prime } ,r\mid s,a\right)\left[ r+\gamma v_{*}\left( s^{\prime }\right)\right] . \end{aligned} V(s)=aA(s)maxQ(s,a)=amaxEπ[GtSt=s,At=a]=amaxEπ[k=0γkRt+k+1St=s,At=a]=amaxEπ[Rt+1+γk=0γkRt+k+2St=s,At=a]=amaxE[Rt+1+γV(St+1)St=s,At=a]=aA(s)maxs,rp(s,rs,a)[r+γv(s)].

显然,value function的好处就是,一旦我们有了最优的value function,我们就能用贪婪法找出最优的策略。为什么?因为

尽管我们在当前一步取得了最优值,但其实value function本身已经是一种考虑了长期效应的函数,因此,当前一步的最优一定也是长期下的最优。

强化学习分类

有了这些,我们可以给强化学习的方法分下类:

  • Model-based
    • 学R和P
    • 知道环境(模型)的信息,如下棋,可以“想象”出走某一步的reward而不需要真的走一步
  • Model-free
    • 不需要学R和P
    • value-based
      • Monte-Carlo update
      • TD update
    • policy-based
    • Actor-Critic= Value-based(Actor) + Policy-based(Critic)

Model-based

如果我们从数据中拟合出P和R,也就是说,我们知道每个state的转换概率,以及知道每个state下的reward是多少,这时候,我们就能够计算任意策略下的value function(Policy evaluation):

∀ s ∈ S : V ^ π ( s ) : = R ( s ) + γ ∑ s ∈ S P ( s ′ ∣ s , π ( s ) ) V ^ π ( s ′ ) \forall s \in \mathcal{S}: \hat{V}^{\pi}(s):=R(s)+\gamma \sum_{s \in \mathcal{S}} P\left(s^{\prime} \mid s, \pi(s)\right) \hat{V}^{\pi}\left(s^{\prime}\right) sS:V^π(s):=R(s)+γsSP(ss,π(s))V^π(s)

由于我们可以计算任意policy下的value function,那我们也自然能够通过value function找到那个最优的policy(Value iteration):

∀ s ∈ S : V ^ ⋆ ( s ) : = R ( s ) + γ max ⁡ a ∈ A ∑ s ∈ S P ( s ′ ∣ s , a ) V ^ ⋆ ( s ′ ) \forall s \in \mathcal{S}: \hat{V}^{\star}(s):=R(s)+\gamma \max _{a \in \mathcal{A}} \sum_{s \in \mathcal{S}} P\left(s^{\prime} \mid s, a\right) \hat{V}^{\star}\left(s^{\prime}\right) sS:V^(s):=R(s)+γaAmaxsSP(ss,a)V^(s)

然而,实际中,我们往往无法准确估计P和R,有没有不需要学P,R的方法呢?一个直觉是,反正value function是一个函数,我们就直接参数化这个函数,然后强行拟合他就好了?这差不多就是model-free方法的思路。

Model-free

为了得到最优的策略,我们需要去学习出value function。那么,有没有可能直接拟合出value function但又不去学R和P呢?这个好像是可以的,最简单的,我们可以收集大量的S,A还有R的数据,然后用拟合一个回归函数 Q ( S , A ) = R Q(S,A)=R Q(S,A)=R就可以了,里面的R和P都可以被丢掉。

Value-based methods – Temporal difference (TD) & Monte-Carlo (MC)methods

首先,回忆下对于Q function,其计算方式如下:

∀ s ∈ S , a ∈ A : Q ^ π ( s , a ) : = R ( s , a ) + γ ∑ s ∈ S P ( s ′ ∣ s , a ) V ^ π ( s ′ ) \forall s\in \mathcal{S} ,a\in A:\hat{Q}^{\pi } (s,a):=R(s,a)+\gamma \sum _{s\in \mathcal{S}} P\left( s^{\prime } \mid s,a\right)\hat{V}^{\pi }\left( s^{\prime }\right) sS,aA:Q^π(s,a):=R(s,a)+γsSP(ss,a)V^π(s)

现在,假设我们在采样一个序列,当前状态为 s t s_{t} st, 进行了action a t a_{t} at, reawrd为 r t + 1 r_{t+1} rt+1, 并得到下一步的状态为 s t + 1 s_{t+1} st+1,此时,我们应该怎样更新这个value function?根据定义,计算这个Q是需要考虑很长一个序列的累积reward的,此时,我们只有一个样本,因为只有 s t s_{t} st,所以我们只能更新状态 s t s_{t} st下的value:

Q ^ π ( s t , a t ) : = r t + 1 + γ ∑ s ∈ S P ( s ′ ∣ s t , a t ) V ^ π ( s ′ ) \hat{Q}^{\pi } (s_{t} ,a_{t} ):=r_{t+1} +\gamma \sum _{s\in \mathcal{S}} P\left( s^{\prime } \mid s_{t} ,a_{t}\right)\hat{V}^{\pi }\left( s^{\prime }\right) Q^π(st,at):=rt+1+γsSP(sst,at)V^π(s)

但问题是, 在model-free中我们不知道P,所以, P ( s ′ ∣ s t , a t ) P(s'|s_{t} ,a_{t} ) P(sst,at)是无法计算的,那能不能强行假设 P ( s t + 1 ∣ s t , a t ) = 1 P(s_{t+1} |s_{t} ,a_{t} )=1 P(st+1st,at)=1,于是这个东西就可以算了:

Q ^ π ( s t , a t ) = r t + 1 + γ Q ^ π ( s t + 1 , a t + 1 ) \hat{Q}^{\pi } (s_{t} ,a_{t} )=r_{t+1} +\gamma \hat{Q}^{\pi }( s_{t+1} ,a_{t+1}) Q^π(st,at)=rt+1+γQ^π(st+1,at+1)

但是这个假设显然太强了,所以一个温和点的方法是做一个增量更新:

Q ^ π ( s t , a t ) : = ( 1 − α ) Q ^ π ( s t , a t ) + α ( r t + 1 + γ Q ^ π ( s t + 1 , a t + 1 ) ) \hat{Q}^{\pi } (s_{t} ,a_{t} ):=( 1-\alpha )\hat{Q}^{\pi } (s_{t} ,a_{t} )+\alpha \left( r_{t+1} +\gamma \hat{Q}^{\pi }( s_{t+1} ,a_{t+1})\right) Q^π(st,at):=(1α)Q^π(st,at)+α(rt+1+γQ^π(st+1,at+1))

这种更新方法就是Temporal difference (TD) methods。他可以进一步写成:

Q ^ π ( s t , a t ) : = Q ^ π ( s t , a t ) + α ( r t + 1 + γ Q ^ π ( s t + 1 , a t + 1 ) ⏟ ( i ) − Q ^ π ( s t , a t ) ⏟ ( i i ) ) \hat{Q}^{\pi } (s_{t} ,a_{t} ):=\hat{Q}^{\pi } (s_{t} ,a_{t} )+\alpha \left(\underbrace{r_{t+1} +\gamma \hat{Q}^{\pi }( s_{t+1} ,a_{t+1})}_{( i)} -\underbrace{\hat{Q}^{\pi } (s_{t} ,a_{t} )}_{( ii)}\right) Q^π(st,at):=Q^π(st,at)+α(i) rt+1+γQ^π(st+1,at+1)(ii) Q^π(st,at)

直觉上, ( i ) \displaystyle ( i) (i)项就是1-step下 Q ^ π ( s t , a t ) \displaystyle \hat{Q}^{\pi } (s_{t} ,a_{t} ) Q^π(st,at)的应取值,(i)-(ii)可以理解为“真实值“与估计值的残差,因此,为了修正这一差异,我们对原本的 Q ^ π ( s t , a t ) \displaystyle \hat{Q}^{\pi } (s_{t} ,a_{t} ) Q^π(st,at)加上这部分残差,从而修正这个误差。这里真实值要双引号是因为这个只有1 step是真实值,真正的真实值应该是一整条序列真实累计reward: ∑ k = 0 T γ k r t + k + 1 \displaystyle \sum _{k=0}^{T} \gamma ^{k} r_{t+k+1} k=0Tγkrt+k+1,因此,这也导出了另外一种更加准确的Monte-Carlo法:

Q ^ π ( s t , a t ) : = Q ^ π ( s t , a t ) + α ( ∑ k = 0 T γ k r t + k + 1 ⏟ ( i ) − Q ^ π ( s t , a t ) ⏟ ( i i ) ) \hat{Q}^{\pi } (s_{t} ,a_{t} ):=\hat{Q}^{\pi } (s_{t} ,a_{t} )+\alpha \left(\underbrace{\sum _{k=0}^{T} \gamma ^{k} r_{t+k+1}}_{( i)} -\underbrace{\hat{Q}^{\pi } (s_{t} ,a_{t} )}_{( ii)}\right) Q^π(st,at):=Q^π(st,at)+α(i) k=0Tγkrt+k+1(ii) Q^π(st,at)

SARSA & Q-learning

根据TD方法,有两种经典的更新Q的策略:

SARSA:

Q ^ π ( s t , a t ) : = Q ^ π ( s t , a t ) + α ( r t + 1 + γ Q ^ π ( s t + 1 , π ( s t + 1 ) ) − Q ^ π ( s t , a t ) ) \hat{Q}^{\pi } (s_{t} ,a_{t} ):=\hat{Q}^{\pi } (s_{t} ,a_{t} )+\alpha \left( r_{t+1} +\gamma \hat{Q}^{\pi }( s_{t+1} ,\pi ( s_{t+1})) -\hat{Q}^{\pi } (s_{t} ,a_{t} )\right) Q^π(st,at):=Q^π(st,at)+α(rt+1+γQ^π(st+1,π(st+1))Q^π(st,at))

Q-learning:

Q ^ ∗ ( s t , a t ) : = Q ^ ∗ ( s t , a t ) + α ( r t + 1 + γ max ⁡ a t + 1 ∈ A Q ^ ∗ ( s t + 1 , a t + 1 ) − Q ^ ∗ ( s t , a t ) ) \hat{Q}^{*} (s_{t} ,a_{t} ):=\hat{Q}^{*} (s_{t} ,a_{t} )+\alpha \left( r_{t+1} +\gamma \max_{a_{t+1} \in \mathcal{A}}\hat{Q}^{*}( s_{t+1} ,a_{t+1}) -\hat{Q}^{*} (s_{t} ,a_{t} )\right) Q^(st,at):=Q^(st,at)+α(rt+1+γat+1AmaxQ^(st+1,at+1)Q^(st,at))

这两种方法可以分别归类为on policy与off policy,从定义上的区别是:
on policy: 你学习的策略跟你采样的策略是相同的。
off policy: 你学习的策略跟你采样的策略是不同的。

Q-learning就是一个典型的off policy算法,但采样的序列不一样也能学吗?直观上,因为value function是由reward组成的,假设在固定state和action下,reward是确定的,那么只要在采样序列中曾经出现过这个state action,那我们就可以查询其对应的reward,又因为我们能找到任意状态下的reward,那么任意策略的value function都可以被学出来。

DQN

但问题在于,在Q-learning中,采样序列跟实际的序列所覆盖的state可能是不一样的,也就是support不一样,这会导致有一些状态下,我们没有办法查询其state action下的reward是多少,这时候我们就需要模型具有一定的泛化与迁移能力。

一个较为经典的方法是deepmind 在2013年的提出的DQN,既然value-based方法的本质就是拟合一个Q函数,那我用一个神经网络学就好了,于是,用神经网络来学的Q对于没见过的输入S,A也有了一定的预测能力,当然这个准不准就是另一回事了。

Policy-based methods

除了学value function,能不能直接学policy呢?policy-based就是这类算法,通过将策略参数化:

π θ ( s , a ) = P [ a ∣ x , θ ] \pi _{\theta }( s,a) =P[ a|x,\theta ] πθ(s,a)=P[ax,θ]

并用梯度更新来学习一个最优的策略。直观来看,策略梯度的方法仍然是在最优化Q函数,通过找到一个policy使得Q最大化,需要注意的是,因为策略有一定的随机性,其目标函数有个期望,如:

∇ θ E a ∼ π θ ( a ∣ s ) [ Q π ( s , a ) ] \nabla _{\theta } E_{a\sim \pi _{\theta }( a|s)}\left[ Q^{\pi }( s,a)\right] θEaπθ(as)[Qπ(s,a)]

这时候导数是没法求的,一个技巧是REINFORECE(Simple statistical gradient-following algorithms for connectionist reinforcement learning):

∇ θ E π θ [ f ( s , a ) ] = E a ∼ π θ ( a ∣ s ) [ Q π ( s , a ) ∇ θ log ⁡ π θ ( a ∣ s ) ] \nabla _{\theta } E_{\pi _{\theta }}[ f( s,a)] =E_{a\sim \pi _{\theta }( a|s)}\left[ Q^{\pi }( s,a) \nabla _{\theta }\log \pi _{\theta }( a|s)\right] θEπθ[f(s,a)]=Eaπθ(as)[Qπ(s,a)θlogπθ(as)]

Actor-Critic = Value-based + Policy-based

actor-critic是一种TD算法,不同的是,里面的policy也是用网络来学的,其中policy网络是actor(行动者),输出动作。value网络是critic(评价者),用来评价actor网络所选动作的好坏,并且使用TD方法来更新。

参考资料

https://towardsdatascience.com/introduction-to-reinforcement-learning-markov-decision-process-44c533ebf8da

https://amreis.github.io/ml/reinf-learn/2017/12/21/optimal-value-functions.html

Playing Atari with Deep Reinforcement Learning

https://zhuanlan.zhihu.com/p/25239682

https://lilianweng.github.io/lil-log/2020/06/07/exploration-strategies-in-deep-reinforcement-learning.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值