空闲时间回答一下这个问题,仅供各位同学参考!首先我的答案是这个定理不限于仅证明这类算法的收敛性,我认为很多迭代优化(类似DP)的算法收敛性都可以尝试采用Banach不动点定理去证明。但是在应用这个定理之前,一定要了解这个定理使用的条件。目前没有看到比较详细的这方面的中文材料,在这里粗略回答一下什么是Banach不动点定理以及它是怎么推导出来的。因个人水平有限,内容有错误或者不周到的地方,希望大家批评指正!
在回答这一问题之前,我们需要理解Banach不动点定理(Banach fixed point theorm)具体在讲什么,首先给出他的定义:
Let (\mathcal{X}, d) be a complete metric space and a function f:\mathcal{X} \rightarrow\mathcal{X} be a contractor, then f has a unique fixed point x^*\in\mathcal{X}(i.e:f(x^*)=x^*) such that the sequence f(f(f(\dots f(x)))) converges to x^*.
结合百度百科上的解释大概翻译一下:
设(\mathcal{X}, d)为非空的完备度量空间,设f:\mathcal{X} \rightarrow\mathcal{X}为\mathcal{X}上的一个压缩映射,那么映射f在\mathcal{X}内有且只有一个不动点\mathcal{x^*},使得函数f(f(f(\dots f(x))))收敛到x^*。
这个定理在RL的目前的应用是证明这样一个结论:
对于任何一个有限长度的MDP(finite MDP),存在一个策略\pi^*使得这个策略与其他任何策略相比,都不差(即与其他策略相比,它更好或者至少性能相同)。
这里也给出他的英语表述便于理解:
For any finite MDP, there exist an optimal policy \pi^* such that it is better than or equal to every other possible policy \pi.
其实就是在表明求解贝尔曼方程是可以得到最优策略的。
具体采用Banach不动点定理证明的方法其实和在给定义时加粗的几个关键词息息相关。即:完备度量空间、压缩映射。对于value based的RL问题,我们只要在贝尔曼方程中定义好完备度量空间、以及采用的收缩映射就可以用Banach不动点定理来说明贝尔曼方程能够通过不断的迭代收敛到一个最优解。
具体证明过程大概可以表述为: 在使用无穷范数作为度量的实数完备度量空间上(用前面提到的符号表示就是 (R,L-infinity), 这里实际是在表明在贝尔曼最优方程中采用max实际就是一个完备的度量空间),如果能够证明贝尔曼最优操作符(bellman optimality operator)是在这个度量空间上的收缩映射,则其满足Banach定理的要求,就可以用其表明贝尔曼方程经过迭代会优化到一个不动点。
这里也放上洋文表述,加深理解:
using the Banach fixed point theorem by showing that the Bellman optimality operator is a contraction over a complete metric space of real numbers with metric L-infinity norm.
如果对提到的“完备度量空间”、“贝尔曼最优操作符”熟悉的话,对上述的内容比较容易理解。但是没有接触过的话也不要紧,接下来我会大概介绍一下每个概念的含义。要完全知道怎么证明,就要理解以下几个定理或者概念:
- 不动点定理(fixed point theorem)
- 度量空间(Metric Space)和完备度量空间(Complete Metric space)
- 柯西序列(Cauchy sequence)
- 收缩映射(Contraction or Contractor)
- 巴拿赫不动点定理(Banach fixed point theorem)
不动点定理(fixed point theorem)
首先来定义一些符号:
定义: f^n(x)表示在自变量x上迭代使用n次函数f,例如:f^2(x):=f(f(x)), f^3(x):=f(f(f(x)))
不动点定理主要表明:如果一个函数是收敛的,从任何初始值x_0出发,它最终必然收敛到某个值x^*,此时x^*就表示不动点问题的解。
证明:不妨设x_0为任意值,如果函数f是收敛的,那么有x^*=\lim_{n\to \infty}f^n(x_0),此时我们有:f(x^*)=f(\lim_{n\to \infty}f^n(x_0))=\lim_{n\to\infty}f(f^n(x_0))=\lim_{n\to\infty}f^{n+1}(x_0)=x^*
证明完毕!
度量空间(Metric Space)和完备度量空间(Complete Metric space)
度量空间(Metric Space)在数学中是指一个集合,并且该集合中的任意元素之间的距离是可定义的。通常我们用\mathcal{M}:(\mathcal{X},d)表示一个度量空间,其中\mathcal{M}是一个集合,d是距离(Metric),这个距离可以是任何我们接触过的具体距离,比如:曼哈顿距离、欧式空间距离等等。
在这里也放上便于理解的洋文:
Metric Space: A metric space is simply a set with a metric defined to measure the distance between any two elements of the set.
其中度量空间中的这个距离d必须要满足以下四个条件(百度百科写三个,把下面1,2合并称为正定性):
- 同一性(Identity): d(x,x)=0
- 非负性(Non-Negativity): d(x,y)>0
- 对称性(Symmetry):d(x,y)=d(y,x)
- 三角不等式(Triangular inequality):d(x,z)\le d(x,y)+d(y,z)
提到度量空间中距离的定义是因为后面的证明会用到的。
柯西序列(Cauchy sequence)
在讲完备度量空间之前,我们先来了解一下柯西序列(柯西数列)。简单来说,柯西序列指的是在度量空间\mathcal{M}=(\mathcal{X},d)上,我们取这样一个数列\mathcal{X}=\{x_1,x_2,x_3,\cdots, x_n\},如果对于\forall\epsilon>0,\exists N>0,对于\forall a, b>N,有d(x_a,x_b)<\epsilon。(通俗来讲一个柯西序列是指一个这样一个序列,它的元素随着序数的增加而愈发靠近。更确切地说,在去掉有限个元素后,可以使得余下的元素中任何两点间的距离的最大值不超过任意给定的正的常数。如下图所示就是一个典型的柯西序列)
讲柯西序列的目的在于引出一个很重要的概念:完备度量空间。
完备度量空间(Complete Metric Space)
在了解了什么是度量空间和柯西序列后,我们来引入完备度量空间。
完备度量空间的定义是: 如果一个度量空间 (\mathcal{X},d)是完备的,那么对于集合\mathcal{X}中每个可以构成柯西序列的子集合,其构成的柯西序列最终收敛的值同样在集合\mathcal{X}内。通俗来理解就是:每个柯西数列收敛的极限值就在它集合本身内。
这里也放个洋文原文,便于理解:
A metric space (\mathcal{X},d) is complete if every possible Cauchy sequence of the elements in the set \mathcal{X} converges to an element that also belongs to the set \mathcal{X}. i.e: the convergent limit of every Cauchy sequence of the elements of the set lies in the set itself.
举个友好一点的例子,对于度量空间(\mathcal{X}, 欧式距离),\mathcal{X}是函数e^{-x}在(0, +\infty)的映射值构成的集合,它会收敛到0,但0不在这个集合内,此时这个度量空间就不构成完备度量空间。
在了解了完备度量空间后,我们来了解收缩映射。
收缩映射(Contractor/Contraction)
这部分内容和Lipschitz连续性有一定的关系,对于Lipschitz连续不够了解的同学自行百度看看。下面我们直接上定义:
一个定义在度量空间 $ (\mathcal{X},d)$ 上的函数(操作符/映射关系)f,如果对于度量空间集合\mathcal{X}上的任意两个元素x_1,x_2,存在常数\gamma\in[0,1)使得x_1,x_2都满足 d(f(x_1), f(x_2))\le \gamma d(x_1, x_2)这个不等关系,则称函数(操作符/映射关系)f是收缩映射。其中常数\gamma也被称为Lipschitz常数。
现在我们再回头来看看Banach不动点定理的内容,并对其进行一个粗糙的证明。
Banach不动点定理(Banach fixed point theorem)
Theorem: Let (\mathcal{X}, d) be a complete metric space and a function f:\mathcal{X} \rightarrow\mathcal{X} be a contractor, then f has a unique fixed point x^*\in\mathcal{X}(i.e:f(x^*)=x^*) such that the sequence f(f(f(\dots f(x)))) converges to x^*.
即:设(\mathcal{X}, d)为非空的完备度量空间,设f:\mathcal{X} \rightarrow\mathcal{X}为\mathcal{X}上的一个压缩映射,那么映射f在\mathcal{X}内有且只有一个不动点\mathcal{x^*},使得函数f(f(f(\dots f(x))))收敛到x^*。
我们在了解了完备度量空间和压缩映射的概念后,大概能看懂定理在讲什么,,现在对其进行一个简短的证明,其实就是证明两点:这个不动点的唯一性和存在性。
证明:
唯一性(uniqueness)
在这里用反证法来证明:
假设由集合\mathcal{X}构成的压缩映射的序列收敛到两个不同的值x_1^*,x_2^*,此时有:d(f(x_1^*), f(x_2^*))=d(x_1^*, x_2^*)(不动点定理)。
因为函数(操作符/映射关系)f是压缩映射,此时有:d(f(x_1^*), f(x_2^*))\le\gamma d(x_1^*, x_2^*),因为\gamma<1,此时有:d(f(x_1^*), f(x_2^*))\le\gamma d(x_1^*, x_2^*)<d(x_1^*,x_2^*),与前面等式关系矛盾,即不可能存在两个或两个以上的收敛值,收敛值x^*是唯一的。
存在性(Existence)
存在性证明过程看起来很繁琐,但是其核心思想掌握了还是挺好做的。
假设数列\{x_1, x_2,x_3,\cdots, x_n\}是通过反复使用压缩映射函数f形成的,即:
$ x_n=fn(x_0)$ (别忘了前面约定的f^n(x)的含义!)
在有了这样一个序列后,思路就来了:如果我们这个数列是柯西数列,它必然会收敛到某个值x^*,而如果此时我们的度量空间是完备度量空间,这时候这个x^*就在我们度量空间的集合内,即存在不动点!这时候问题就变成证明这个数列是个柯西数列了。而证明是柯西数列,直接从柯西数列的定义入手就行。
证明:
设x_m,x_n是集合\mathcal{X}中的两个元素,且m>>n,根据度量空间d具有三角不等式的特性,我们有:
d(x_m,x_n)\le d(x_m,x_{m-1})+d(x_{m-1}, x_n)\le d(x_m,x_{m-1})+d(x_{m-1}, x_m-2)+d(x_{m-2}, x_n)\\\le d(x_m,x_{m-1})+\cdots + d(x_{n+1}, x_n)\le d(f^m(x_0), f^{m-1}(x_0))+\cdots+d(f^{n+1}(x_0),f^n(x_0))
因为f是收缩映射,此时有:
d(f^n(x_1), f^n(x_2))\le\gamma d(f^{n-1}(x_1), f^{n-1}(x_2))\le\cdots\le \gamma^{n-1} d(f(x_1), f(x_2))\le\gamma^n d(x_1, x_2)
此时有:
d(x_m, x_n)\le d(f^m(x_0), f^{m-1}(x_0))+\cdots+d(f^{n+1}(x_0),f^n(x_0))\\\le \gamma^{m-1} d(f(x_0), x_0)+\cdots+\gamma^n d(f(x_0), x_0)\\\le d(f(x_0), x_0)\sum_{i=n}^{m-1}\gamma^i\le\gamma^n d(f(x_0), x_0)\sum_{i=0}^{m-n-1}\gamma^i\\\le \frac{\gamma^n}{1-r} d(f(x_0), x_0)<\epsilon
即对于\forall\epsilon>0,\exists N=\lfloor\log_r\frac{\epsilon(1-\gamma)}{d(f(x_0), x_0)}\rfloor,对于\forall m,n>N,使得d(x_m, x_n)\le\epsilon。证明完全是按照定义来的,和高数中采用\epsilon-N语言证明收敛性十分相似。
经过这么长的叙述,终于说明白了Banach不动点定理的来龙去脉,然后我们再来回顾RL中为什么要用到这个定理来证明收敛性:
首先来看在包含贝尔曼最优操作符(Bellman Optimally operator)的最优贝尔曼方程:
\mathcal{B}V(s)=\max_a(R_a^s+\gamma \sum_{s'\in S}P_{ss'}^a V(s'))。
如果我们能够证明最优贝尔曼操作符在某些完备度量空间上是收缩映射,然后就可以直接用Banach不动点定理得出:我们多次重复使用贝尔曼操作符迭代最终会收敛到一个唯一的最优解,这个最优解代表的是最优值函数(optimal value function),然后就可以根据值函数得到最优的策略啦(这也是value based RL方法的思路)。
所以目前的关注点在于:
- 这个度量空间是怎么定义的,是不是完备的?
- 如何证明贝尔曼操作符\mathcal{B}是收缩映射?
第一个问题比较好回答,只要明白我们用贝尔曼方程迭代优化最后希望得到一个收敛的值函数,即值函数会收敛到不动点,所以度量空间 (\mathcal{X},d)中的\mathcal{X}可以定义为:\mathcal{X}:V(s)\in \mathcal{R}。而最优贝尔曼方程中,我们使用max操作符,其度量空间中的距离便可以使用无穷范数来定义:
d=||\mathcal{X}||_\infty=\max_{i\in[0,...,n]}|x_i|,这个范数也被称为L-infinity norm,此时这个度量空间 (V(s),L-infinity)我们很容易得出他是完备的。(实数数列收敛值必然为实数,必然在\mathcal{R}集合内)
在清楚了第一个问题后,我们来证明第二个问题,即证明贝尔曼操作符\mathcal{B}在度量空间 (V(s),L-infinity)上是收缩映射。
证明:
不妨设V_1, V_2是两个值函数,我们还是按照收缩映射的定义来证明:||\mathcal{B}V_1(s)-\mathcal{B}V_2(s)||_\infty\\ =||\max_a(R_s^a+\gamma \sum_{s'\in S}P_{ss'}^aV_1(s'))-\max_{a'}(R_s^{a'}+\gamma \sum_{s'\in S}P_{ss'}^{a'}V_2(s'))||_\infty\ (2)\\ \le||\max_a(R_s^a+\gamma \sum_{s'\in S}P_{ss'}^aV_1(s'))-\max_{a}(R_s^{a}+\gamma \sum_{s'\in S}P_{ss'}^{a}V_2(s'))||_\infty\ (3)\\ \le \max_a||(R_s^a+\gamma \sum_{s'\in S}P_{ss'}^aV_1(s')-R_s^{a}-\gamma \sum_{s'\in S}P_{ss'}^{a}V_2(s')) ||_\infty\ (4)\\ = \gamma \max_a|| (\sum_{s'\in S}P_{ss'}^a(V_1(s')-V_2(s'))||_\infty\ (5)\\ \le \gamma \max_{a,s'} ||\sum_{s'\in S}P_{ss'}^a(V_1(s')-V_2(s'))||\ (6)\\ \le\gamma ||V_1(s')-V_2(s')||\max_{a,s'}\sum_{s'\in S}P_{ss'}\ (7)\\ \le \gamma ||V_1(s')-V_2(s')||\ (8)
证明解释:
在第(2)-(3)步证明中,我们通过用 a 替换第二个值函数的 a' 来引入不等关系。这是因为通过用其他的动作a代替它的optimal action a' ,我们减少了它的总价值,从而引入了不等关系。
在第(3)-(4)步证明中,使用了三角不等式: 对于一个范数空间 (\mathcal{X}, ||\cdot ||),我们有\left| ||x||-||y|| \right|\le ||x-y|| ,在这里表现为norm max <= max norm。
在第(5)-(6)步证明中,我们通过对 s' 取最大值来消除L-infinity norm(可以参考前面关于L-infinity norm的定义)。
最后一步证明中,因为转移概率和为1,可以直接去除。
因为\gamma\in[0,1),所以贝尔曼操作符\mathcal{B}满足收缩映射的所有条件,即证明完毕。
通过上述的证明,我们了解了Banach不动点定理的来源以及如何利用其证明贝尔曼方程的收敛性。再次回到题主问题,我感觉在设计迭代算法时,我们想方设法让优化变量在一个完全度量空间上,同时定义好对应的压缩映射函数,此时便可以利用Banach不动点定理去证明设计的算法是可以收敛的。这是我个人认为除了RL之外它的应用场景!