diff --git a/glossary.md b/glossary.md index 04d423d..aac543c 100644 --- a/glossary.md +++ b/glossary.md @@ -1,4 +1,5 @@ # 更新至第3章 +——————————————————————test—————————————————————————————————————— # A 1.absorbing state 自循环状态 2.action value 动作价值 diff --git a/multi-armed_bandits/incremental_implementation.md b/multi-armed_bandits/incremental_implementation.md index 5c02fbb..edc47b3 100644 --- a/multi-armed_bandits/incremental_implementation.md +++ b/multi-armed_bandits/incremental_implementation.md @@ -1,2 +1,67 @@ # 2.4 增量法实现 +到目前为止我们所讨论的动作价值方法,都是利用观察奖励的样本均值来估计动作价值,现在我们开始考虑如何基于高效计算的原则计算这些均值,也就是说利用确定的内存和单步运算速度来实现高效运算。 + +为了简化符号表示,我们考虑单一动作。此处我们使用R_{i}表示该动作执行第i次时获得的奖励,使用Q_{n}表示该动作被选择执行{n-1}次后的动作价值估计,记为: + + Q_n=\frac{R_1+R_2+\cdots+R_{n-1}}{n-1}. + +根据上述公式,我们需要记录该动作的全部n次奖励值,并在需要价值估计值时利用该公式计算,然而,如果采取这种计算方式,那么随着时间的增长,观察到的奖励数将不断增加,从而将导致内存和计算的消耗不断增长,每一个新增加的奖励值都需要额外的内存存储,额外的加和计算消耗。 + +就像你可能疑惑的那样,该公式不必如此使用,我们很容易就可以从上述公式中分离出增量部分,计算增量部分可以在很小的计算消耗下更新价值。已知Q_{n}和第n的奖励R_{n},可得新的增量式价值表达式: + + +\begin{align} +Q_{n+1}&=\frac{1}{n}\sum_{i=1}^{n}R_{i}\\ + + &=\frac{1}{n}\left(R_{n}+\sum_{i=1}^{n-1}R_{i}\right)\\ + + & =\frac{1}{n}\left(R_{n}+(n-1)\frac{1}{n-1}\sum_{i=1}^{n-1}R_{i}\right)\\ + + & =\frac{1}{n}\left(R_{n}+(n-1)Q_n\right)\\ + + &=\frac{1}{n}\left(R_{n}+nQ_n-Q_n\right)\\ + + &=Q_n+\frac{1}{n}\left[R_n-Q_n\right], \hfill {(2.3)} +\end{align} + + +当n=1时,对于任意Q_1可得Q_2=R_1。在使用这种增量式计算方法时只需要存储Q_n和n,并且每次仅需很小的计算量。下文将提出完整的老虎机问题算法伪代码,该算法使用增量是样本均值计算方法和\varepsilon-贪婪动作选择策略,假设dandit(a)函数采取动作并返回对应的奖励。 + +一个简单的老虎机算法 + + +初始化,for\ a=1\ to\ k:\\ +Q(a)\gets0\\ +N(a)\gets0\\ +永久循环:\\ +A\gets\left\{ +\begin{aligned} +&argmax_aQ(a) &概率为1-\varepsilon (随机打破连接) \\ +&一个随机动作 &概率为\varepsilon +\end{aligned} +\right.\\ +R\gets bandit(A)\\ +N(A)\gets N(A)+1\\ +Q(A)\gets Q(A)+\frac{1}{N(A)}[R-Q(A)] + + +更新规则(2.3)是本书中经常出现的一种更新规则,其一般形式为: + + NewEstimate\gets OldEstimate\ +\ StepSize\big[Target-OldEstimate\big].(2.4) + +\big[Target-OldEstimate\big]表达式表示了误差的估计,该误差通过向“目标”趋近来减小,目标假定代表了一个合适的移动方向,尽管可能是有噪声的。在上面的例子中目标是第n个奖励。 + + + +值得注意的是,上面增量方法中使用的步长参数(StepSize)会随着时间步的进行而发生变化,在计算动作a的第n个奖励时,步长参数将设为\frac{1}{n},在本书中我们用\alpha,或者更一般的\alpha_t(a),表示步长参数,偶尔在表示\alpha_t(a)=\frac{1}{n}时,也会采用非正式的简写\alpha=\frac{1}{n},这种表示隐含了n对于动作的依赖,就像我们在本节中使用的那样。 + + + + + + + + + + diff --git a/multi-armed_bandits/optimistic_initial_values.md b/multi-armed_bandits/optimistic_initial_values.md index 3ed114a..3e50c25 100644 --- a/multi-armed_bandits/optimistic_initial_values.md +++ b/multi-armed_bandits/optimistic_initial_values.md @@ -1,2 +1,15 @@ # 2.6 乐观初始化价值 +目前我们所讨论的所有方法,都对于动作价值的初始值$Q_1(a)$有不同程度依赖,使用统计学的术语来讲,这些方法都会被初始估计值赋予偏差(biase)。对于样本均值方法,当对于所有动作至少选择一次后,偏差将消失,但对于恒定$\alpha$的方法,偏差是永久存在的,尽管会随着时间衰减,如式(2.6)所示,在实践中,这种偏差通常并不是问题甚至有时非常有用。关于对于初始值的依赖问题,它的缺点是初始价值估计实际上需要由用户选取,我们希望直接将初始值置为0最好;它的优点是,简便的提供了一些关于奖励水平的先验经验。 + +初始动作价值也可以当做一种简单的鼓励探索的方法。假设我们把全部的初始动作价值估计设定为+5,而不是像10臂老虎机问题中那样设为0,已知在该问题中$$q_*(a)$$是从均值为0方差为1的正态分布中选择出的,那么+5的初始估计是非常乐观的,这种乐观估计将激励动作价值方法的探索行为。也就是说,无论最初选择了何种动作,该动作的奖励将小于初始估计;由于对这个奖励的“失望”,学习者将转而选择其他动作。这种行为的结果就是在价值估计收敛前,所有的动作都被选择了多次,即便系统采用贪婪的动作策略,也会做出很多探索动作。 + + + +图2.3:乐观初始动作价值估计对10臂老虎机问题的影响。两种方法均采用了定步长参数,$\alpha=0.1$ 。 + +图2.3绘制了$Q_1(a)=+5$条件下10臂老虎机问题采用贪婪动作策略的表现曲线,为了比较,还绘制了Q_1(a)=0条件下采用\varepsilon-贪婪方法的表现曲线。最初,乐观初始化方法由于探索较多表现更差,但最终该方法表现更好,因为探索量会随着时间减少,我们将这种鼓励探索的技术称为乐观初始值方法(optimistic initial values)。这种小技巧可以在解决稳定问题时产生一定效果,但是这远非一种通用性的激励探索动作的方法。比如,这种方法就不适用于非稳定问题,因为该方法对于探索动作的激励是暂时的,如果任务改变,产生了新的探索需求,这种方法将失去作用。的确,任何以某种特殊方式关注初始条件的方法都不能推广到一般的非稳定情况中,由于初始只有一次,因此我们不应将过多注意力放在初始条件下。这个问题同样存在于样本均值方法中,该方法也将初始条件视为特殊的事件,并将后续的奖励以相同的权值做平均。尽管,所有这些方法都很简单,但它们中的一个或几个的简单联合,经常足够来解决实践中的问题,在本书的后续内容中,我们会经常使用这些简单的探索技术。 + + + +练习2.6 :神秘的尖峰 图2.3中显示的结果应该有很高的可信度,因为这是2000组独立随机的10臂老虎机问题的平均。为什么在乐观方法的早期曲线部分会有波动和尖峰?换句话说,针对平均值或早期的结果,哪些因素可能导致这个方法表现的更好或更糟? diff --git a/multi-armed_bandits/tracking_a_nonstationary_problem.md b/multi-armed_bandits/tracking_a_nonstationary_problem.md index d9d9932..6fd1507 100644 --- a/multi-armed_bandits/tracking_a_nonstationary_problem.md +++ b/multi-armed_bandits/tracking_a_nonstationary_problem.md @@ -1,2 +1,36 @@ # 2.5 解决非固定情况 +目前所讨论的平均方法对于稳定老虎机问题是适宜的,所谓稳定问题也就是奖励概率始终不发生变化的问题。如前所述,在强化学习问题中我们经常遇到带有不稳定特性的问题,在这种问题中,相比很久前的奖励,给予近期奖励更大的权重通常更有效。实现该方法的一个常用手段是使用固定的步长参数,比如在增量式更新规则(2.3)中,我们将过去n-1个奖励的均值Q_n的更新公式修改为: + + Q_{n+1}=Q_n+\alpha\big[R_n-Q_n\big],(2.5) + +式中步长参数\alpha\in(0,1]为定值。^{1} 这种方法使得Q_{n+1}成为过去的奖励和最初的估计Q_1的加权均值: + + +\begin{aligned} +Q_{n+1}\quad &=\quad Q_n+\alpha\big[R_n-Q_n\big]\\ +&=\quad \alpha R_n+(1-\alpha)Q_n\\ +&=\quad \alpha R_n+(1-\alpha)[\alpha R_{n-1}+(1-\alpha)Q_{n-1}]\\ +&=\quad \alpha R_n+(1-\alpha)\alpha R_{n-1}+(1-\alpha)^2Q_{n-1}\\ +&=\quad \alpha R_n+(1-\alpha)\alpha R_{n-1}+(1-\alpha)^2\alpha R_{n-2}+\\ +&\qquad\qquad\qquad\qquad\cdots(1-\alpha)^{n-1}\alpha R_1+(1-\alpha)^{n}Q_1\\ +&=\quad(1-\alpha)^{n}Q_1+\sum_{i=1}^{n}\alpha(1-\alpha)^{n-i}R_i.(2.6) +\end{aligned} + +我们将上式称为加权均值是由于权值和(1-\alpha)^{n}+\sum_{i=1}^{n}\alpha(1-\alpha)^{n-i}=1,读者可自行演算。我们可以注意到在该式中,奖励R_i的权值\alpha(1-\alpha)^{n-i}由该奖励发生距当前的时间步数n-i确定,由于1-\alpha小于1,因此随着奖励R_i发生的到当前动作结束之间奖励数量的增多,赋予R_i的权值将减小。实际上,根据1-\alpha的幂指数,权值将呈指数衰减,(如果1-\alpha=0,那么将只有R_n具有权值,因为0^0=1 )因此,该方法有时被称为指数近因加权平均 。 + +有时每个时间步更新步长参数是很便捷的,设\alpha_n(a)表示第n次选择动作a时计算奖励所使用的步长参数,若令\alpha_n(a)=\frac{1}{n} ,则计算过程为样本均值计算方法,根据大数定律,该方法可以保证收敛至动作价值的真值。但,当然不是所有的序列\{\alpha_n(a)\}都可以保证收敛性。在随机近似理论的一项著名成果中,我们可以得到保证价值估计收敛的条件: + + \sum_{n=1}^{\infty}\alpha_n(a)=\infty和\sum_{n=1}^{\infty}\alpha_{n}^{2}(a)<\infty.(2.7) + +第一个条件可以保证每次更新足够大来克服初始条件或随机扰动带来的影响;第二个条件可以保证最终的更新足够小来实现收敛。 + +我们可以发现,样本均值法中使用的\alpha_n(a)=\frac{1}{n},可以满足上述两个收敛条件。而定步长参数\alpha_n(a)=\alpha的情况无法满足第二个收敛条件,这表示价值估计永远不会完全收敛,而是根据最近的奖励值变化,就像我们前面提到的,这种特性对于解决非稳定环境的问题实际上是有效的,这种非稳定问题在强化学习中是最为常见的。此外,满足条件(2.7)的步长参数经常收敛的非常缓慢,或者需要大量的调整来实现令人满意的收敛率。尽管这种满足收敛条件的步长参数序列经常被用于理论研究,我们很少在实际使用或实证研究中使用它们。 + +练习2.4 如果步长参数\alpha_n不是恒定值,那么价值估计Q_n就是一个过去奖励值的加权均值,且其权重不同于(2.6)中给出的。对于一般情况来说,类比(2.6),考虑步长参数序列,所有奖励的权值如何表示? + +练习2.5(编程) 设计并实现一个实验来说明在解决非稳定问题时样本均值法所面临的困难。使用一个10臂老虎机修改版的实验床,其中全部q_*(a)起始均相等,而后采取随机独立动作(如在每一时间步中为q_*(a)加入均值为0标准差为0.01的正态分布增量)。绘制如图2.2形式的使用增量式样本均值公式的动作价值方法曲线,另外绘制定步长动作价值方法曲线,其中\alpha=0.1 。取\varepsilon=0.1 ,运行多步,如10,000步。 + + + +[1]: 符号(a,b]表示包含b不包含a的两者间的实数区间集合,在此表述的意思也就是0<\alpha\le1 。