强化学习(二):动态规划与蒙特卡洛方法

在得出策略 π \pi π的状态值函数 和 动作值函数之后,那么该如何求出最优策略?根据环境的 动态特性是否已知分为两种方法:动态规划法 和 蒙特卡洛法。

1. 动态规划(Dynamic Programming, DP)

DP是一种求解最优值得常用方法,此处用于求解系统动态特性 p ( s ′ , r ∣ s , a ) p(s',r|s,a) p(s,rs,a)已知情况下的最优策略。

首先我们有一个策略 π \pi π并以此求出最优策略 π ∗ \pi* π

1.1. 策略评估(预测)

策略评估做的事情是:给定策略 π \pi π,求出该策略的价值函数 v π ( s ) v_{\pi}(s) vπ(s) q π ( s , a ) q_{\pi}(s,a) qπ(s,a)

事实上根据马尔科夫决策过程中的描述,状态价值函数 v π ( s ) v_{\pi}(s) vπ(s)满足如下递推特性:

v π ( s ) = ∑ a π ( a ∣ s ) × q π ( s , a ) = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ × v π ( s ′ ) ] (1) v_{\pi}(s)=\sum_{a}\pi(a|s) \times q_{\pi}(s,a) =\sum_{a}\pi(a|s) \sum_{s',r}p(s',r|s,a)[r+\gamma \times v_{\pi}(s')] \tag{1} vπ(s)=aπ(as)×qπ(s,a)=aπ(as)s,rp(s,rs,a)[r+γ×vπ(s)](1)

其中 γ < 1 \gamma <1 γ<1
这实际上是一个有着 ∣ S ∣ |S| S个未知数的 ∣ S ∣ |S| S个方程的方程组,手动求解可能非常复杂,选择迭代策略评估求解。

迭代策略评估

思想是先随机初始化所有变量值,记为 v 0 ( s ) v_0(s) v0(s)。之后用 v 0 ( s ) v_0(s) v0(s)的值按照下式计算 v 1 ( s ) v_1(s) v1(s)的值
v k + 1 ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ × v k ( s ′ ) ] v_{k+1}(s) = \sum_{a}\pi(a|s) \sum_{s',r}p(s',r|s,a)[r+\gamma \times v_{k}(s')] vk+1(s)=aπ(as)s,rp(s,rs,a)[r+γ×vk(s)]
事实上就是用旧的 v k ( s ) v_k(s) vk(s)计算新的 v k + 1 ( s ) v_{k+1}(s) vk+1(s)。由于策略存在,则 v π ( s ) v_{\pi}(s) vπ(s)一定存在,可以证明 v ∞ ( s ) → v π ( s ) v_∞(s)→v_{\pi}(s) v(s)vπ(s)。在实际编程中可以使用 max ⁡ s ∣ v k + 1 ( s ) − v k ( s ) ∣ < ϵ \max_{s}|v_{k+1}(s)-v_k(s)|<\epsilon maxsvk+1(s)vk(s)<ϵ判断是否终止。

得出 v π ( s ) v_{\pi}(s) vπ(s)之后就可以根据 ( 1 ) (1) (1)算出 q π ( s , a ) q_{\pi}(s,a) qπ(s,a)了。

1.2. 策略改进(控制)

在得到策略 π \pi π的值函数之后,就需要对该策略进行改进以获得更优的策略,然后再对更优的策略求更优,如此迭代反复最终找到最优策略。

什么是更优的策略?

状态价值函数更大的策略就是更优的策略,即

如果 ∀ s ∈ S , v π ′ ( s ) ≥ v π ( s ) \forall s \in S, v_{\pi'}(s) ≥v_{\pi}(s) sS,vπ(s)vπ(s)成立且至少存在一个状态 s s s满足严格不等 v π ′ ( s ) > v π ( s ) v_{\pi'}(s) >v_{\pi}(s) vπ(s)>vπ(s),则认为策略 π ′ \pi' π π \pi π更优。

如何获得更优的策略?

寻找比当前策略 π \pi π更优策略 π ′ \pi' π的思路是:先调整一个状态,对于状态 s s s,满足
π ′ ( s ) = arg max ⁡ a q π ( s , a ) (2) \pi'(s)=\argmax_aq_{\pi}(s,a) \tag{2} π(s)=aargmaxqπ(s,a)(2)
即保证状态 s s s下选择的动作 一定是所有可选动作中 q π ( s , a ) q_{\pi}(s,a) qπ(s,a)最大的那个

其实就是修改概率分布,这是因为
v π ( s ) = ∑ a π ( a ∣ s ) × q π ( s , a ) ≤ max ⁡ a q π ( s , a ) = max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ × v k ( s ′ ) ] = v π ′ ( s ) v_{\pi}(s)=\sum_{a}\pi(a|s) \times q_{\pi}(s,a)≤\max_aq_{\pi}(s,a)=\max_a\sum_{s',r}p(s',r|s,a)[r+\gamma \times v_{k}(s')]=v_{\pi'}(s) vπ(s)=aπ(as)×qπ(s,a)amaxqπ(s,a)=amaxs,rp(s,rs,a)[r+γ×vk(s)]=vπ(s)

例如

a / s a/s a/sa1a2a3a4a5
q ( s , a ) q(s,a) q(s,a)12355
π ( a / s ) \pi(a/s) π(a/s)0.10.20.20.40.1
π ′ ( a / s ) \pi'(a/s) π(a/s)0000.50.5

显然下表比上表的状态价值函数更大。

1.3. 策略迭代(价值迭代)

我们要为每个状态 s s s寻找最优策略 v ∗ ( s ) v_*(s) v(s),1.1.和1.2.分别给出了对于策略的完整预测方法 以及 只修改一个状态策略的控制方法。

那么问题来了,如何利用预测与控制 进行迭代以找到最优策略,即 ∀ s ∈ S , v ∗ ( s ) = max ⁡ π [ v π ( s ) ] \forall s \in S, v_*(s) = \max_{\pi}[v_{\pi}(s)] sS,v(s)=maxπ[vπ(s)]

从策略改进 和 最优策略的 π ∗ \pi_* π表达式可以看到,较优的策略一定是选择最大的 q π ( s , a ) q_{\pi}(s,a) qπ(s,a),即式 ( 2 ) (2) (2)。因此如果一开始我们给定的策略就是式 ( 2 ) (2) (2),这样的策略经过多次策略评估之后是不是就是最优策略了呢?

答案是YES!也就是说式 ( 2 ) (2) (2)的策略就是最优策略。那么只需对这个策略进行策略评估,就能找到最优策略的价值函数 v ∗ ( s ) v_*(s) v(s),也就是Bellman最优方程,以及策略 π ( s ) \pi(s) π(s)的确定性表达式(到底选哪个 a a a)。

最优策略的预测方程为:

v k + 1 ( s ) = max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ × v k ( s ′ ) ] v_{k+1}(s) = \max_{a} \sum_{s',r}p(s',r|s,a)[r+\gamma \times v_{k}(s')] vk+1(s)=amaxs,rp(s,rs,a)[r+γ×vk(s)]

k → ∞ k→∞ k时有 v k ( s ) → v ∗ ( s ) v_k(s)→v_*(s) vk(s)v(s)成立。

实际上,计算 v k + 1 ( s ) v_{k+1}(s) vk+1(s)之后再计算 v k + 1 ( s ′ ) v_{k+1}(s') vk+1(s)时,可以直接使用 v k + 1 ( s ) v_{k+1}(s) vk+1(s)的结果,不影响收敛性,即“就地更新”只在一个表中完成策略评估即可,即

v ( s ) = max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ × v ( s ′ ) ] (重要) v(s) = \max_{a} \sum_{s',r}p(s',r|s,a)[r+\gamma \times v(s')]\tag{重要} v(s)=amaxs,rp(s,rs,a)[r+γ×v(s)]()

寻找最优策略及状态价值函数流程如下:

policy FindBestPolicy(S,A,R,p,gamma,delta,maxIterationTimes) 
{
	foreach s in S
	{	
		V(s) = 0;
		policy(s) = rand(a in A(s));
	}
	
 	i = 0;
	while(i <= maxIterationTimes)
	{
		maxDelta = 0;
		foreach s in S
		{	
			v = V(s);
			V(s) = max( sum( p(s',r|s,a) * [r + gamma* V(s')] ) );
			policy(s) = argmax( a, sum( p(s',r|s,a) * [r + gamma* V(s')] ) );
			maxDelta = max(maxDelata,abs(v - V(s)));
		}

		i++;
		if(maxDelta < delta)
			return policy;
	}

	return policy;
}

参考资料

  1. 强化学习. Richard S. Sutton,Andrew G. Barto
  2. 强化学习(三):动态规划求解MDP(Planning by Dynamic Programming)

2. 蒙特卡洛法(MonteCarlo, MC)

当系统动态特性 p ( s ′ , r ∣ s , a ) p(s',r|s,a) p(s,rs,a)未知时,使用MC求解最优策略问题。

MC算法的核心思想是多次实验,用所有实验样本的平均值代表理论值,例如值函数。当实验次数趋于无穷时,就会收敛到理论值。

2.1. MC预测

预测部分用于求取策略的状态值函数。

根据 v π ( s ) v_{\pi}(s) vπ(s)的定义,为当前状态为 s s s时的折扣收益累积和 的期望,因此MC的思路就是多次实验产生多个episodes,对每个episode的每个状态 s s s G G G再做平均

按增量的更新式如下:

V ( S t ) = V ( S t ) + 1 ∣ R e t u r n s ( S t ) ∣ [ G − V ( S t ) ] V(S_t) = V(S_t)+\frac{1}{|Returns(S_t)|}[G-V(S_t)] V(St)=V(St)+Returns(St)1[GV(St)]

此处使用首次访问型MC,即每个episode同一个状态可能出现了很多次,只将第一次出现的状态纳入 v ( s ) v(s) v(s)的计算中。

算法流程如下:

V MCEvaluation(S, A, R, policy, gamma, episodesNum) 
{
	V(S) = 0;
	N(S) = 0;
	
 	i = 0;
	while(i <= episodesNum)
	{
		episodeSequence = createEpisode(S,A,policy);	//完全根据policy生成样本序列
		
		G = 0;						// 折扣收益和
									//计算平均值,按照时间顺序反向遍历
		for last s to first s within episodeSequence
		{	
			G = gamma * G + R(s,a,s');
			if ( is_first(s) == 1 )
				{
					N(s) +=1;
					V(s) += (G - V(s)) / N(s);
					is_first(s) = 0;
				}
		}

		i++;
	}

	return V(S);
}

由于 G G G只能从序列末尾遍历计算,所以只能从倒数第二个状态开始 按照时间 倒序遍历计算 v ( s ) v(s) v(s)

注意以上过程是通过实际实验得出的样本值进行的,即只知道根据 π ( a ∣ s ) \pi(a|s) π(as)计算 a a a实现状态转移至 s ′ s' s并获得奖励 r ( s , a , s ′ ) r(s,a,s') r(s,a,s),但以多大概率转移至 s ′ s' s或得到奖励则是未知的。

2.2. MC控制

即MC策略改进。既然知道式 ( 2 ) (2) (2)就是最优策略,则将该策略进行预测,并时时记录 π ( s ) \pi(s) π(s)的确定行为。即在程序MCEvaluation(S, A, R, policy, gamma, episodesNum)中的循环改成

for last (s,a) to first (s,a) within episodeSequence
{	
	G = gamma * G + R(s,a,s');
	if ( is_first(s,a) == 1 )
		{
			N(s,a) +=1;
			Q(s,a) += (G - Q(s,a)) / N(s,a);
			policy(s) = argmax(a,Q(s,:));		//此处policy变成确定性策略
			is_first(s,a) = 0;
		}
}

按照贪心法则优化策略的错误

注意这种思路大错特错!!,别忘了!样本序列的生成是借助policy的!一句policy(s) = argmax(a,Q(s,:));把policy(s)改成确定性策略了,这以后再生成包含状态 s s s的序列,在状态 s s s处一定只会有确定的行为 a a a,那状态 s s s的其他行为产生的行为值函数就一定比 Q ( s , a ) Q(s,a) Q(s,a)小嘛?不一定!!

例如 s s s为方格中的一个格子,能够上下左右移动,在初始时由于这四种行为的行为值函数未知所以为零, ( 2 ) (2) (2)的贪心策略不能用,假设此时策略为平均分布的随机策略。

行为 a a aUpDownLeftRight
π ( a \pi(a π(al s ) s) s)0.250.250.250.25
Q ( s , a ) Q(s,a) Q(s,a)0000

之后生成了一个episodeSequence包括 s s s,通过随机数选择了行为Right,算得 Q ( s , R i g h t ) = 5 Q(s,Right) = 5 Q(s,Right)=5,根据policy(s) = argmax(a,Q(s,:));因此上表变成

行为 a a aUpDownLeftRight
π ( a \pi(a π(al s ) s) s)0001
Q ( s , a ) Q(s,a) Q(s,a)0005

这一下!嚎么!以后episode的序列episodeSequence如果有状态 s s s一定只有动作 R i g h t Right Right了,其他动作的值函数连算得机会都没有,那 π ( s ) = R i g h t \pi(s) = Right π(s)=Right是最优策略嘛?呸!

根本问题在于优化的策略 和 产生序列样本的策略 是同一个确定性策略,而最优策略又一定是确定性的。但是DP就不会这样,因为DP的遍历是按照状态 S S S遍历的,而非生成的序列样本,序列样本是要有策略指导的!

改进的思路很简单生成样本序列时,要让每个状态 s s s有机会遍历所有的行为 a a a

同轨策略(on-policy) 与 离轨策略(off-policy)

根据上述出现的问题,就需要思考样本采集应该遵循什么策略了。

先上定义
行动策略:每一幕中采集样本序列遵循的策略 b b b
目标策略:待优化的策略 π \pi π

同策略(on-policy) b = π b = \pi b=π
异策略(off-policy) b ≠ π b ≠ \pi b=π

根据定义,2.1.和2.2讲的内容都是同策略,可以看出同策略MC控制不能使用确定性策略,一个思路是使策略最终收敛至最优的确定性策略。

对于off-policy而一个关键问题在于如何使用行动策略 b b b产生的样本 估计或优化 目标策略 π \pi π的值函数呢?

2.3. 离轨MC控制

用策略 b b b采的状态 和 行为,算出来应该是 b b b的值函数,如何找到 b b b π \pi π的值函数关系呢?

覆盖性条件:首先为了能够完整预测 π \pi π,必须保证 π \pi π能做的行动 b b b必须也能做,即 π ( a ∣ s ) > 0 \pi(a|s)>0 π(as)>0必有 b ( a ∣ s ) > 0 b(a|s)>0 b(as)>0成立。

至于值函数的事情,从 折扣累积收益 开始讲起。

重要度采样

对于状态 s s s用策略 b b b采样的 G G G做平均,应该是 b b b的值函数的估计,即 E b ( G t ∣ S t = s , A t = a ) E_b(G_t|St = s,At=a) Eb(GtSt=s,At=a),要想变成 π \pi π的值函数的估计,从值函数定义看。

E ( G t ∣ S t = s , A t = a ) = ∑ G [ p ( G t ∣ S t = s , A t = a ) ⋅ G t ] E(G_t|St = s,At=a)=\sum_{G} [p(G_t|S_t=s,A_t=a)·G_t] E(GtSt=s,At=a)=G[p(GtSt=s,At=a)Gt]

上式是数学期望的定义,注该式可以看作 q ( s , a ) q(s,a) q(s,a)的解。对于策略 b b b π \pi π,二者的区别就体现在 p ( G t ∣ S t = s , A t = a ) p(G_t|St=s,At=a) p(GtSt=s,At=a)上,即在这一幕出现 G t G_t Gt的概率。

那么策略 π \pi π的期望可以重新成

E π ( G t ∣ S t = s , A t = a ) = ∑ G [ p b ( G t ∣ S t = s , A t = a ) ⋅ p π ( G t ∣ S t = s , A t = a ) p b ( G t ∣ S t = s , A t = a ) ⋅ G t ] E_{\pi}(G_t|St = s,At=a)=\sum_{G} [p_{b}(G_t|S_t=s,A_t=a)·\frac{p_{\pi}(G_t|S_t=s,A_t=a)}{p_{b}(G_t|S_t=s,A_t=a)}·G_t] Eπ(GtSt=s,At=a)=G[pb(GtSt=s,At=a)pb(GtSt=s,At=a)pπ(GtSt=s,At=a)Gt]

其中 p π ( G t ∣ S t = s , A t = a ) p b ( G t ∣ S t = s , A t = a ) \frac{p_{\pi}(G_t|S_t=s,A_t=a)}{p_{b}(G_t|S_t=s,A_t=a)} pb(GtSt=s,At=a)pπ(GtSt=s,At=a)就是重要度比,反映了同一个 G t G_t Gt在不同策略下出现的概率比。或者说利用策略 b b b得到的 折扣收益累积 乘以重要度比,再进行平均就是策略 π \pi π的值函数的估计

( s , a ) (s,a) (s,a)时获得 G t G_t Gt的概率就是在这一episode中 ( s , a ) (s,a) (s,a)后续的一系列状态、行为、收益出现的概率,即

p b ( G t ∣ S t = s , A t = a ) = p b ( R t + 1 , S t + 1 , A t + 1 , . . . , S T ∣ S t = s , A t = a ) = p ( R t + 1 , S t + 1 ∣ S t , A t ) ⋅ b ( A t + 1 ∣ S t + 1 ) p ( R t + 2 , S t + 2 ∣ S t + 1 , A t + 1 ) ⋅ . . . ⋅ b ( A T − 1 ∣ S T − 1 ) p ( R T , S T ∣ S T − 1 , A T − 1 ) = p ( R t + 1 , S t + 1 ∣ S t , A t ) ∏ k = t + 2 T b ( A k − 1 ∣ S k − 1 ) p ( R k , S k ∣ S k − 1 , A k − 1 ) p_{b}(G_t|S_t=s,A_t=a) = p_{b}(R_{t+1},S_{t+1},A_{t+1},...,S_{T}|S_t=s,A_t=a) =p(R_{t+1},S_{t+1}|S_t,A_t)·b(A_{t+1}|S_{t+1})p(R_{t+2},S_{t+2}|S_{t+1},A_{t+1})·...·b(A_{T-1}|S_{T-1})p(R_{T},S_{T}|S_{T-1},A_{T-1}) \\=p(R_{t+1},S_{t+1}|S_t,A_t)\prod_{k=t+2}^T b(A_{k-1}|S_{k-1})p(R_{k},S_{k}|S_{k-1},A_{k-1}) pb(GtSt=s,At=a)=pb(Rt+1,St+1,At+1,...,STSt=s,At=a)=p(Rt+1,St+1St,At)b(At+1St+1)p(Rt+2,St+2St+1,At+1)...b(AT1ST1)p(RT,STST1,AT1)=p(Rt+1,St+1St,At)k=t+2Tb(Ak1Sk1)p(Rk,SkSk1,Ak1)

注意到上式涉及到了动态特性 p ( s ′ , a ∣ s , a ) p(s',a|s,a) p(s,as,a)。同理 p π ( G t ∣ S t = s , A t = a ) p_{\pi}(G_t|S_t=s,A_t=a) pπ(GtSt=s,At=a)也有上述关系式,因此重要度比 ρ t : T − 1 \rho_{t:T-1} ρt:T1就为

ρ t : T − 1 = p π ( G t ∣ S t = s , A t = a ) p b ( G t ∣ S t = s , A t = a ) = p ( R t + 1 , S t + 1 ∣ S t , A t ) ∏ k = t + 2 T π ( A k − 1 ∣ S k − 1 ) p ( R k , S k ∣ S k − 1 , A k − 1 ) p ( R t + 1 , S t + 1 ∣ S t , A t ) ∏ k = t + 2 T b ( A k − 1 ∣ S k − 1 ) p ( R k , S k ∣ S k − 1 , A k − 1 ) = ∏ k = t + 1 T − 1 π ( A k ∣ S k ) ∏ k = t + 1 T − 1 b ( A k ∣ S k ) \rho_{t:T-1}=\frac{p_{\pi}(G_t|S_t=s,A_t=a)}{p_{b}(G_t|S_t=s,A_t=a)}=\frac{p(R_{t+1},S_{t+1}|S_t,A_t)\prod_{k=t+2}^T \pi(A_{k-1}|S_{k-1})p(R_{k},S_{k}|S_{k-1},A_{k-1})} {p(R_{t+1},S_{t+1}|S_t,A_t)\prod_{k=t+2}^T b(A_{k-1}|S_{k-1})p(R_{k},S_{k}|S_{k-1},A_{k-1})} =\frac{\prod_{k=t+1}^{T-1} \pi(A_{k}|S_{k})}{\prod_{k=t+1}^{T-1} b(A_{k}|S_{k})} ρt:T1=pb(GtSt=s,At=a)pπ(GtSt=s,At=a)=p(Rt+1,St+1St,At)k=t+2Tb(Ak1Sk1)p(Rk,SkSk1,Ak1)p(Rt+1,St+1St,At)k=t+2Tπ(Ak1Sk1)p(Rk,SkSk1,Ak1)=k=t+1T1b(AkSk)k=t+1T1π(AkSk)

动态特性被分子分母约去了,剩下的都是已知。

注意到重要度比是与目标策略有关的,而目标策略一定是确定性策略,即 π ( A k ∣ S k ) \pi(A_k|S_k) π(AkSk)不是0就是1。因此 ρ t : T − 1 \rho_{t:T-1} ρt:T1的表达式告诉我们,如果在 t + 1 , . . . , T t+1,...,T t+1,...,T时刻中任意一个时刻选择的动作与目标策略不一致,则 0 , . . . , t 0,...,t 0,...,t时刻的策略 π \pi π下的样本收益 G t G_t Gt均为零

加权重要度采样

使用无偏估计的思路就是将 所有访问 s s s的收益 作平均即可,若令 T ( s ) T(s) T(s)为所有访问状态 s s s时刻的集合,因此有

Q ( s , a ) = ∑ t ∈ T ( s ) ρ t : T − 1 G t ∣ T ( s ) ∣ Q(s,a) = \frac{\sum_{t \in T(s)} \rho_{t:T-1} G_t}{|T(s)|} Q(s,a)=T(s)tT(s)ρt:T1Gt

根据书上所说,这样的估计方差会比较大,主要在于重要度采样比的累乘结果 可能会远远大于1,因此常用如下的加权重要度采样

Q ( s , a ) = ∑ t ∈ T ( s ) ρ t : T − 1 G t ∑ t ∈ T ( s ) ρ t : T − 1 Q(s,a) = \frac{\sum_{t \in T(s)} \rho_{t:T-1} G_t}{\sum_{t \in T(s)} \rho_{t:T-1} } Q(s,a)=tT(s)ρt:T1tT(s)ρt:T1Gt

加权重要度采样的估计方法虽然是有偏的,但是方差比较小。

控制算法

算法流程与2.2中的程序类似,只不过 行动策略 和 目标策略要不同,满足覆盖性条件。

还有一点需要说明的是,虽然目标策略 π \pi π在优化过程中变成确定性策略,不会影响到样本的采集(基于策略 b b b)但目标策略 π \pi π的优化会影响重要度采样比 ρ \rho ρ

因此,如果优化之后的 π ( s ) \pi(s) π(s)与样本中的 ( A t ∣ S t = s ) (A_t|S_t = s) (AtSt=s)不相等,则 π ( A t ∣ s ) = 0 \pi(A_t|s) = 0 π(Ats)=0,这将导致这一episode的 ∀ k ∈ [ 0 , t ) , ρ k : T − 1 = 0 \forall k \in [0,t),\rho_{k:T-1} = 0 k[0,t),ρk:T1=0。此时这一episode的遍历可以立即break。

此处使用增量型更新实现,流程如下:

targetPolicy offPolicy_MCControl(S, A, R, behaviorPolicy, gamma, episodesNum) 
{
	Q(S,A) = 0;
	C(S,A) = 0;
	
 	i = 0;
	while(i <= episodesNum)
	{
		episodeSequence = createEpisode(S,A,behaviorPolicy);	//完全根据behaviorPolicy生成样本序列
		W = 1;
		G = 0;						// 折扣收益和
									//计算平均值,按照时间顺序反向遍历
		for t = T-1 to 0
		{	
			G = gamma * G + R(s,a,s');
			C(s(t),a(t)) += W;
			Q(s,a) += W / C(s(t),a(t)) * ( G - Q(s,a) );
			targetPolicy(s(t)) = argmax(a,Q(s(t),:));
			
			if( targetPolicy(s(t)) != a(t) )
				break;
			
			W *= 1/behaviorPolicy( a(t)|s(t) );
		}

		i++;
	}

	return targetPolicy(S);
}

参考资料

  1. 强化学习. Richard S. Sutton,Andrew G. Barto
  2. 重要度采样

3. 总结

下面对DP和MC的优缺点进行分析

DP特点

  1. 需要动态特性 p ( s ′ , a ∣ s , a ) p(s',a|s,a) p(s,as,a)
  2. 自举,用后继值函数的估计更新当前值函数
  3. 效率高,可在 ∣ S ∣ |S| S ∣ A ∣ |A| A的多项式时间内找到最优策略
  4. 维度灾难,状态的总数量经常随着状态变量的增加而指数级上升

MC特点

  1. 无需动态特性 p ( s ′ , a ∣ s , a ) p(s',a|s,a) p(s,as,a),直接通过采样样本进行学习。
  2. 不自举,不同状态之间的价值估计 互不相关
  3. 需要很多episode,每个episode必须产生完整样本
  4. 当一个episode比较长,而 A t ≠ π ( S t ) A_t ≠ \pi(S_t) At=π(St)时必须中途截断,学习速度降低
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Starry丶

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值