文章目录
基本概念
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π[Gt∣St=s]=Eπ[k=0∑∞γkRt+k+1∣St=s], for all s∈S
在这里 γ \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) π(a∣s)=P(At=a∣St=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+(−2∗0.5)+10∗0.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+1∣St=s]+γs′∈S∑p(s′∣s)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+1∣St=s1]Eπ[Rt+1∣St=s2]⋮Eπ[Rt+1∣St=sn]⎠⎟⎟⎟⎞+γP ⎝⎜⎜⎛p(s1∣s1)p(s1∣s2)p(s1∣sn)p(s2∣s1)p(s1∣s2)p(s1∣sn)p(sn∣s1)p(s1∣s2)p(s1∣sn)⎠⎟⎟⎞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=s′∣St=s]=P[St+2=s′∣St+1=s]=...
于是我们才能写成这种简单的递归形式。
此外,这个方法虽然可以算出解析解,但是因为求逆的复杂度为 O ( ∣ S ∣ 3 ) {\displaystyle O\left( |S|^{3}\right)} O(∣S∣3),状态数量越多则越慢,在实际里面,这是不可接受的。因此,有许多近似的算法,如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] Pss′a=P[St+1=s′∣St=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+1∣St=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π[Gt∣St=s,At=a]=Eπ[k=0∑∞γkRt+k+1∣St=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)=a∈A∑π(a∣x)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)=a∈A(s)maxQ∗(s,a)=amaxEπ∗[Gt∣St=s,At=a]=amaxEπ∗[k=0∑∞γkRt+k+1∣St=s,At=a]=amaxEπ∗[Rt+1+γk=0∑∞γkRt+k+2∣St=s,At=a]=amaxE[Rt+1+γV∗(St+1)∣St=s,At=a]=a∈A(s)maxs′,r∑p(s′,r∣s,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) ∀s∈S:V^π(s):=R(s)+γs∈S∑P(s′∣s,π(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) ∀s∈S:V^⋆(s):=R(s)+γa∈Amaxs∈S∑P(s′∣s,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) ∀s∈S,a∈A:Q^π(s,a):=R(s,a)+γs∈S∑P(s′∣s,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+γs∈S∑P(s′∣st,at)V^π(s′)
但问题是, 在model-free中我们不知道P,所以, P ( s ′ ∣ s t , a t ) P(s'|s_{t} ,a_{t} ) P(s′∣st,at)是无法计算的,那能不能强行假设 P ( s t + 1 ∣ s t , a t ) = 1 P(s_{t+1} |s_{t} ,a_{t} )=1 P(st+1∣st,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=0∑Tγ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=0∑Tγ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+1∈AmaxQ^∗(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[a∣x,θ]
并用梯度更新来学习一个最优的策略。直观来看,策略梯度的方法仍然是在最优化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∼πθ(a∣s)[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∼πθ(a∣s)[Qπ(s,a)∇θlogπθ(a∣s)]
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