vlambda博客
学习文章列表

【数学】动态规划:Blackwell引理,价值函数算法

(封面配图:感谢鲱鱼罐头app)

本期文章着重应用Banach不动点定理于贝尔曼方程/价值函数,并且基于不动点定理介绍一个简单的价值函数算法。

往期回顾:


正文:

上期介绍了Banach不动点定理。这个不动点定理里面有着唯一的不动点。并且我们知道,这个不动点定理是三个(Banach,Brouwer,Kakutani)不动点定理里面唯一一个有着不动点的唯一性结论的不动点定理。并且也是唯一一个能够应用于任何度量空间的不动点定理。

在宏观经济学里面,很多时候我们都会用到动态规划,也就是贝尔曼方程。贝尔曼方程本来就是函数套着函数,要解出下一个函数之前我们必须知道上一个函数是什么。很多时候,贝尔曼方程针对的是无限期动态规划,那么我们就根本不可能知道第一个函数是什么。如果我们根本就不知道第一个函数是什么的话,那么要解出下一个函数那是天方夜谭。

真的是这样吗?

当然不是!别忘了,我们学会了不动点定理,这一强大的数学工具!这个数学工具将会告诉我们,贝尔曼方程是可解的!

因为,贝尔曼方程是一个在函数空间里的压缩映射(contraction mapping)!

一般在函数空间里,如果有两个函数f和g,有着同样的定义域和共域:

那么他们之间的距离是:

如果我们有一个函数集H,这个函数集是所有的从X到Y的映射,那么,我们就有了一个度量空间:

我们来看看H在动态规划里是什么,首先我们看看最简单的宏观经济学里面用到的动态规划:

V是(无限期贴现的)价值函数,c是最优控制,k是状态变量,u是某个当期的价值函数。在经济学里,c是消费,k是资本,k’是下期的资本,β是主观贴现率。

一般来说,左边那个价值函数是Vn,右边的那个价格函数才是V(n+1)。为了序列方便,我们把两个价值函数的序列顺序倒过来。这是因为,在宏观经济学里面,消费者是有前瞻性的,所以是先算未来的Vn,再算现在的V(n+1)。

把条件代入:

那么我们可以看见,这里有一个价值函数的递归序列。为了简化分析,我们定义序列里的V都是:

Blackwell引理,又称Blackwell's Sufficient Condition for Contraction,就是一个把不动点定理应用到贝尔曼方程/动态规划里面的定理。

为了应用不动点定理,我们要先找出压缩映射,那么我们可以把上面的函数这样表达:

那么T就是我们要找的那个映射(叫做贝尔曼算子(Bellman Operator))。首先我们要确认,T是一个自我映射,那么T的定义域是V的度量空间:

其中B代表的是所有有界(bounded)的,定义域是正实数的函数。我们姑且假设价值函数是有界的,其次,我们假设当期的价值函数u(也就是效用函数也是有界的)。(定理证明完了之后再讨论价值函数的有界性质)

接下来,我们要证明T是一个压缩。Blackwell引理说,如果u是有界的,那么T是一个在B(R+)上面的压缩,且压缩参数为β!

证明如下:

我们假设有两个不同的价值函数V和W,都是在这个度量空间里面的元素。对于任何一个正实数k来说,既然u和V都是有界的,那么存在一个T(V(k))的最小上界(称之为c(v))。那么:

上面我们加了一个W,然后再减了一个W不多不少。并且这个W是在v的消费下面的。下面,我们可以把上面几个式子重排一下,然后取一个(V-W)的绝对值:

可是c(v)只最大化了T(V(k))而没有最大化T(W(k)),所以:

然后,第一个方括号里面就是T(W(k)),第二个括号里面是d(V,W):

然后我们把V和W倒过来,我们发现:

根据度量的定义,d(V,W)=d(W,V),所以上面两条不等式告诉我们:

并且这个不等式对于任何k都成立,所以:

并且因为|β|<1,这就足以证明贝尔曼算子T是一个压缩!并且,B(R+)是完整的(这里面是有证明的但是我没学过😂)。那么,根据不动点定理,这个序列存在着一个不动点:

那么这个不动点,就是我们想要的那个价值函数的解!

还记得Banach不动点的唯一性吗?给定任何一个起始的价值函数,不停的用贝尔曼算子递归,我们就可以得到那个唯一的不动点。从这里,我们可以看出一个递归收敛算法来找出价值函数:

  1. 首先给定一个有界的价值函数,比如V(k)=0
  2. 运用贝尔曼算子,在每一个k里面求出最优的c
  3. 把c代入,求出下一个V(k)
  4. 重复2-3,直到收敛

这是一种非常简单的价值函数递归法。还有其他的算法,比如策略递归算法,不过这个算法略为复杂,但是比价值递归更快。

附录:函数的有界性质:

在上面的定理里面,我们假设了两个有界性,一个是u的有界性,另外一个是V的有界性。首先我们探讨u的有界性,如果我们再假设u是连续的话,我们可以定义c的取值范围为:[0,k],在实数空间下,这是一个闭且有界集(closed and bounded set),那么根据Bolzano-Weierstrass定理,这是一个紧凑集(compact set),根据极值定理,u的最大值存在。那么u就是有界的。

如果u是自然对数的话,那么我们就要限定u和V的定义域为大于0的正实数,那么相应的紧凑集是(0,k]。

一般经济学上,根据偏好理论,如果偏好可以用效用来测量/代表的话,那么偏好必须是连续的,而且u也是连续的。所以,u的有界性倒不是什么太大的问题,因为一旦有效用函数来代表偏好,经济学家们会自动把u看成连续的。有些情况下,经济学家们也会分析一些u不一定是连续的情况,那么我们就要强制假设u是有界的。

对于V来说,一般最开始第一个V是V(k)=0,也就是说,存款没有任何价值。而这个函数自动代表着V是有界的。Banach不动点要求初始点一定在这个度量空间里面,要不然不动点不成立。

并且Banach不动点定理也会自动排除初始有界的序列收敛至无界(unbounded)的不动点,因为,Banach不动点一定是在度量空间里面的。一般来说,只要u是有界的,任何一个初始有界的V都会收敛到有界的不动点V*上面。

这里我们可以看出Banach不动点定理的强大之处了:如果一开始一个初始点在某个度量空间里面,只要证明了T是压缩的,那么不动点就一定会在这个度量空间内。

不过,如果一开始假定V不是有界的或者是连续的,那么压缩序列就不一定收敛至有界或连续的价值函数上面,或者说,这个序列都不一定收敛。

如果u是连续的,我们就可以假定V也是连续的。同理。因为一开始的V在一个连续有界函数的度量空间里(V(k)=0其实是连续的),并且T在这个空间里面是压缩,所以不动点一定是一个连续有界的价值函数。V的特性其实通过压缩映射自证。不过证明连续性需要Berge’s最大值定理,着重处理函数和correspondences的连续性。

如果有连续性,根据极值定理,我们还可以把上面的sup改成max。

另外,给定u的其他特性,比如单调性和凸性,我们也可以证出不动点V的单调性和凸性。

一点废话:

我刚开始学动态规划的时候,我是拒绝的。你不能叫我用,我马上去用。直到我学会了不动点定理和Blackwell引理,我才duang的一下知道动态规划怎么解。并且动态规划是没有加特技的。

宏观经济学一般都用动态规划来做分析。可见数学的理论在经济学上有着多么大的用处。

参考资料:

Clausen, A., 2018. Introduction to Economic Theory. University of Edinburgh. [https://andrewclausen.net/teaching/econtheory.pdf]