2. 递归问题的求解
在上一部分之中, 我们成功把同时需要求解无限个变量的顺序问题, 转化为只需求解下一期的有限变量的递归问题. 这一部分中, 我们将讨论如何求解递归问题.
2.1值函数与策略函数: 一个通俗比喻
描述递归问题的最关键方程是 Bellman 方程, 为如下形式:(2.1)其中, 值函数 是给定初值 之后这一最优化问题可取得的最值, 策略函数 是这一最优化问题的解. 同时, 策略函数满足 Bellman 方程推导出的 Euler 方程.(2.2)
对值函数和策略函数的最好比喻是 “尽人事, 知天命”. 在给定 “生辰八字”(初值 ) 之后, “人事表”(策略函数 ) 告诉我们在此情形下我们应该执行的最优行动, 而 “天命表”(值函数 ) 则告诉我们在 “尽人事” 之后我们能够达到的最好结果.
我们也容易证明值函数与策略函数的对偶关系 (“历览前贤国与家, 成由勤俭败由奢”). 最优化问题取到值函数的对应值, 当且仅当最优化问题的解取策略函数的对应值.
然而求解值函数与策略函数并不容易, 因为 Bellman 方程两侧同时出现了值函数, 意味着我们在求解值函数时已经预先 “知道” 了值函数. 要解决这一问题, 我们需要使用迭代的方法.
2.2迭代法的理论基础: Banach 不动点定理
Banach 不动点定理 (压缩映射定理)
在使用迭代法之前, 我们需要先引入重要的 Banach 不动点定理. 我们先从定义几个概念开始.
定义 2.2.1 (序列的收敛性).
对度量空间 中的一个序列 , 若 , , 使得则称 收敛 (convergent) 至极限 .
定义 2.2.2 (Cauchy 列).
对度量空间 中的一个序列 , 若 , , 使得则称 为 Cauchy 列.
注 2.2.3.
1. | 所有收敛列都是 Cauchy 列. |
2. | 某些度量空间中, Cauchy 列不收敛到该空间之中, Cauchy 列不一定是收敛列. |
例 2.2.5 (几个完备度量空间).
1. | 是完备的, 其中 . |
2. | 是完备的, 其中 |
定义 2.2.6 (压缩映射).
对度量空间 , 映射 , 若 , 使得则称 为压缩映射 (contraction mapping), 称 为该压缩映射的模量 (modulus).
有了上述的准备, 我们可以引入 Banach 不动点定理.
定理 2.2.7 (Banach 不动点定理).
对于完备度量空间 , 若 是模量为 的压缩映射, 则 有唯一不动点 (fixed point) , 使得 .
该定理还有两条推论.
推论 2.2.8.
1. | 给定初始点 , 通过 定义出 , 则 收敛至 . |
2. | 的收敛速率为几何速率, 即 |
Blackwell 充分条件
直接检验一个映射是否为压缩映射有所不便, 故而我们引入 Blackwell 充分条件来简化判定过程.
定理 2.2.9 (Blackwell 充分条件).
令 为有界函数 构成的空间, 令 为度量空间 上的一个算子.
若 有如下两个性质:
1. | 单调性 (monotonicity): , 若 , 则 ; |
2. | 贴现性 (discounting): , , 使得 |
则 是一个模量为 的压缩映射.
证明.
令 . 则有由单调性, 则有: 由贴现性, 则有: 综上有: 调换 与 , 同理可得 .
2.3值函数迭代法的过程
值函数迭代法 (Value Function Iteration) 可以帮助我们求解递归问题.
对于 Bellman 方程:(2.1)传统方法难以求解, 因为要求出方程左边的 , 必须要通过方程右边使用正确的 来求解最大化问题, 从而陷入了 “套娃” 的困难.
但我们可以观察到, 方程的右边天然定义了一个作用于 的映射 :(2.3)而 Bellman 方程则成为:(2.4)
若我们能证明 是压缩映射, 则无论从怎样的初值 出发, 经过足够多次 的作用, 最终总会收敛至不动点 .
命题 2.3.1.
对于度量空间上的如下映射 : 若满足:
1. | 是有界 (bounded) 连续 (continuous) 函数; |
2. | 是紧 (compact-valued) 且连续的对应 (correspondence); |
则 是度量空间 上的压缩映射.
证明.
我们验证 满足 Blackwell 充分条件:
1. | 单调性: 令 , , 则有 |
2. | 贴现性: |
此外, 命题的两个条件确保 运算有意义并能求出最大值, 由最大值原理, 可证明 将有界连续函数 映射为有界连续函数 , 即 .
故而, 值函数迭代的过程可以总结成如下的过程:
1. | 任意定义一个连续的迭代起点 (例如 ); |
2. | 使用 Bellman 算子 作用于 获得 ; |
3. | 计算 ; |
4. | 若 , 则停止迭代, ; 若 , 则将 赋予 进行更新, 重复 2–4 的步骤. |
通过计算机程序的迭代, 我们可以设计程序求出给定的 函数对应的值函数 . 如下是一些关于值函数 的性质, 可由 Banach 不动点定理的变体得出:
推论 2.3.2 (值函数的性质).
在特定条件下:
1. | 若 是 (严格) 凹 (concave) 的, 则 也是 (严格) 凹的; |
2. | 若 是 (严格) 递增的, 则 也是 (严格) 递增的; |
3. | 若 是连续可微 (continuously differentiable) 的, 则 也是连续可微的; |
4. | 对应的策略函数 也是连续且递增的. |
2.4待定系数法: 徒手解法
在计算机发明之前, 只有一些特定形式的 可以通过徒手求解的方式找出 . 然而, 鉴于我们有 Banach 不动点定理保障 的存在性, 对于某些特定形式的 , 我们可以猜测其值函数取某一特殊的形式, 这时即可用待定系数法 (“Guess and Verify”) 进行求解.
例 2.4.1 (Brock-Mirman 模型的待定系数法).
Brock-Mirman 问题的 Bellman 方程是: (2.5)我们猜测值函数取得如下形式: (2.6)则方程右边: 一阶条件为: 则 Bellman 方程变成: 则待定系数需要满足: 解得: 则带入策略函数有: (2.7)
有时, 待定系数法的值函数形式不好直接猜测. 我们可以 “借助” 迭代法的思想, 先将迭代起点设成 迭代 1–2 期, 看少数几期迭代之后的 中出现了怎样的函数成分, 再对值函数进行大胆猜测.