本文是对论文Machine learning approximation algorithms for high-dimensional fully nonlinear partial differential equations and second-order backward stochastic dierential equations的初步理解,仅作为笔记。读者切勿被误导。
该文提供的代码将在https://github.com/FanSmale/MFPDE中给出。
1. 引言
偏微分方程(partial differential equation, PDE)是金融、物理领域建模的基础。
有许多解非线性二维偏微分方程组(nonlinear parabalic PDEs) 的近似解法,其中有些依赖于PDE解的适当表示,如基于二阶后向随机微分方程组(second-order backward stochastic differential equations, 2BSDE)的概率表示。
2. 深度2BSDE方法
可参考文献[22-23].
2.1 完全非线性二阶偏微分方程组
令
- d ∈ N = { 1 , 2 , 3 , … } d \in \mathbb{N} = \{1, 2, 3, \dots\} d∈N={1,2,3,…} 表示维度;
- T ∈ ( 0 , ∞ ) T \in (0, \infty) T∈(0,∞)表示终止时间点;
-
u
=
(
u
(
t
,
x
)
)
∈
C
1
,
2
(
[
0
,
T
]
×
R
d
,
R
)
u = (u(t, x)) \in C^{1, 2}([0, T] \times \mathbb{R}^d, \mathbb{R})
u=(u(t,x))∈C1,2([0,T]×Rd,R);
- 其中 t ∈ [ 0 , T ] t \in [0, T] t∈[0,T] 表示时间点;
- x ∈ R d x \in \mathbb{R}^d x∈Rd表示 d d d 维实数向量, 它与时间 t t t相关, 可以写成 x ( t ) x(t) x(t);
- u ∈ R u \in \mathbb{R} u∈R.
- 注意: C C C表示可导; C 1 , 2 C^{1, 2} C1,2 表示对时间 t t t 一阶可导, 对空间 x x x 二阶可导.
- f ∈ C ( [ 0 , T ] × R d × R × R d × R d × d , R ) f \in C([0, T] \times \mathbb{R}^{d} \times \mathbb{R} \times \mathbb{R}^d \times \mathbb{R}^{d \times d}, \mathbb{R}) f∈C([0,T]×Rd×R×Rd×Rd×d,R) 函数有5个参数, 值域为实数;
- g ∈ C ( R d , R ) g \in C(\mathbb{R}^d, \mathbb{R}) g∈C(Rd,R)函数定义域为 d d d 维向量, 值域为实数;
- 假设对任意 t ∈ [ 0 , T ) t \in [0, T) t∈[0,T), x ∈ R d x \in \mathbb{R}^d x∈Rd 满足 u ( T , x ) = g ( x ) u(T, x) = g(x) u(T,x)=g(x) (注意: 从这里可以看出是终值问题, 即根据时间 T T T 的数据, 反推之前的数据);
-
u
u
u对
t
t
t的偏微分满足
∂ u ∂ t ( t , x ) = f ( t , x , u ( t , x ) , ( ∇ x u ) ( t , x ) , ( H e s s x u ) ( t , x ) ) (1) \frac{\partial u}{\partial t}(t, x) = f(t, x, u(t, x), (\nabla_x u)(t, x), (\mathrm{Hess}_x u)(t, x)) \tag{1} ∂t∂u(t,x)=f(t,x,u(t,x),(∇xu)(t,x),(Hessxu)(t,x))(1) - 问题及回答:
- 为什么把偏微分的函数做成5个参数?是为了线性吗?猜测:相当于程序设计中的函数封装。由于直接求偏微分,表达式太长了,就先把函数 ( ∇ x u ) ( t , x ) (\nabla_x u)(t, x) (∇xu)(t,x)和 ( H e s s x u ) ( t , x ) (\mathrm{Hess}_x u)(t, x) (Hessxu)(t,x)写出来。
- ( ∇ x u ) ( t , x ) (\nabla_x u)(t, x) (∇xu)(t,x)是什么函数?回答:梯度,即 u ( t , x ) u(t, x) u(t,x)对于向量 x x x的偏导。
- ( H e s s x u ) ( t , x ) (\mathrm{Hess}_x u)(t, x) (Hessxu)(t,x)是什么函数?海森矩阵相关?回答:先对 u ( t , x ) u(t, x) u(t,x)求向量 x x x的偏导,获得 d d d维向量;再对该向量求向量 x x x的偏导,获得 d × d d \times d d×d的矩阵。
- u ( t , x ) u(t, x) u(t,x) 关于 t t t的偏微分,为什么要用它关于 x x x的一阶、二阶偏微分来表示?回答: 因为 x = x ( t ) x = x(t) x=x(t), 是关于 t t t 的函数。
- 函数 g g g在下一节才用到,这里为什么出现?回答: 表示终值的函数。
2.2 完全非线性二阶偏微分方程组与2BSDE的联系
令
- ( Ω , F , P ) (\Omega, \mathcal{F}, \mathbb{P}) (Ω,F,P) 为一个概率空间;
- W : [ 0 , T ] × Ω → R d W: [0, T] \times \Omega \rightarrow \mathbb{R}^d W:[0,T]×Ω→Rd 标准的布朗运动;
- F = ( F t ) t ∈ [ 0 , T ] \mathbb{F} = (\mathbb{F}_t)_{t \in [0, T]} F=(Ft)t∈[0,T] 是由 W W W 产生的正则滤波(normal filtration);
- Y : [ 0 , T ] × Ω → R Y: [0, T] \times \Omega \rightarrow \mathbb{R} Y:[0,T]×Ω→R;
- Z : [ 0 , T ] × Ω → R d Z: [0, T] \times \Omega \rightarrow \mathbb{R}^d Z:[0,T]×Ω→Rd;
- Γ : [ 0 , T ] × Ω → R d × d \Gamma: [0, T] \times \Omega \rightarrow \mathbb{R}^{d \times d} Γ:[0,T]×Ω→Rd×d;
- A : [ 0 , T ] × Ω → R d A: [0, T] \times \Omega \rightarrow \mathbb{R}^d A:[0,T]×Ω→Rd;
- Y t = g ( ξ + W T ) − ∫ t T ( f ( s , ξ + W s , Y s , Z s , Γ s ) + 1 2 T r a c e ( Γ s ) ) d s − ∫ t T ⟨ Z s , d W s ⟩ R d (2) \begin{array}{ll}Y_t = & g(\xi + W_T) - \int_{t}^T (f(s, \xi + W_s, Y_s, Z_s, \Gamma_s) + \frac{1}{2} \mathrm{Trace}(\Gamma_s)) \mathrm{d}s \\ & - \int_{t}^T \langle Z_s, \mathrm{d} W_s \rangle_{\mathbb{R}^d}\end{array} \tag{2} Yt=g(ξ+WT)−∫tT(f(s,ξ+Ws,Ys,Zs,Γs)+21Trace(Γs))ds−∫tT⟨Zs,dWs⟩Rd(2)
- Z t = Z 0 + ∫ 0 t A s d s + ∫ 0 t Γ s d W s (3) Z_t = Z_0 + \int_{0}^t A_s \mathrm{d}s + \int_{0}^t \Gamma_s \mathrm{d}W_s \tag{3} Zt=Z0+∫0tAsds+∫0tΓsdWs(3)
- 注:
Y
t
Y_t
Yt的计算关注
[
t
,
T
]
[t, T]
[t,T], 而
Z
t
Z_t
Zt的计算关注
[
0
,
t
]
[0, t]
[0,t].
在合适的平滑与正则假设下,式(1)与式(2)(3)存在如下关联: - Y t = u ( t , ξ + W t ) ∈ R (4.1) Y_t = u(t, \xi + W_t) \in \mathbb{R} \tag{4.1} Yt=u(t,ξ+Wt)∈R(4.1)
- 注: Y t Y_t Yt 与式(1)的第3个参数对应, 即原函数。不知道为什么把参数中的随机事件 ω ∈ Ω \omega \in \Omega ω∈Ω省略了;
- Z t = ( ∇ x u ) ( t , ξ + W t ) ∈ R d (4.2) Z_t = (\nabla_x u)(t, \xi + W_t) \in \mathbb{R}^d \tag{4.2} Zt=(∇xu)(t,ξ+Wt)∈Rd(4.2)
- 注: Z t Z_t Zt 与式(1)的第4个参数对应;
- Γ t = ( H e s s x u ) ( t , ξ + W t ) ∈ R d × d (5) \Gamma_t = (\mathrm{Hess}_x u)(t, \xi + W_t) \in \mathbb{R}^{d \times d} \tag{5} Γt=(Hessxu)(t,ξ+Wt)∈Rd×d(5)
- 注: Γ t \Gamma_t Γt 与式(1)的第5个参数对应;
- A t = ( ∂ ∂ t ∇ x u ) ( t , ξ + W t ) + 1 2 ( ∇ x Δ x u ) ( t , ξ + W t ) ∈ R d (6) A_t = (\frac{\partial}{\partial t} \nabla_x u)(t, \xi + W_t) + \frac{1}{2} (\nabla_x \Delta_x u)(t, \xi + W_t) \in \mathbb{R}^d \tag{6} At=(∂t∂∇xu)(t,ξ+Wt)+21(∇xΔxu)(t,ξ+Wt)∈Rd(6)
2.3 合并PDE与2BSDE
由式 (2)(3), 对于任意
0
≤
τ
1
≤
τ
2
≤
T
0 \leq \tau_1 \leq \tau_2 \leq T
0≤τ1≤τ2≤T,
Y
τ
2
=
Y
τ
1
+
∫
τ
1
τ
2
(
f
(
s
,
ξ
+
W
s
,
Y
s
,
Z
s
,
Γ
s
)
+
1
2
T
r
a
c
e
(
Γ
s
)
)
d
s
+
∫
τ
1
τ
2
⟨
Z
s
,
d
W
s
⟩
R
d
(7)
\begin{array}{ll}Y_{\tau_2} = & Y_{\tau_1} + \int_{\tau_1}^{\tau_2} \left(f(s, \xi + W_s, Y_s, Z_s, \Gamma_s) + \frac{1}{2} \rm{Trace}(\Gamma_s)\right)\rm{d} s\\ & + \int_{\tau_1}^{\tau_2} \langle Z_s, \rm{d} W_s \rangle_{\mathbb{R}^d} \end{array}\tag{7}
Yτ2=Yτ1+∫τ1τ2(f(s,ξ+Ws,Ys,Zs,Γs)+21Trace(Γs))ds+∫τ1τ2⟨Zs,dWs⟩Rd(7)
和
Z
τ
2
=
Z
τ
1
+
∫
τ
1
τ
2
A
s
d
s
+
∫
τ
1
τ
2
Γ
s
d
W
s
(8)
Z_{\tau_2} = Z_{\tau_1} + \int_{\tau_1}^{\tau_2} A_s \mathrm{d}s + \int_{\tau_1}^{\tau_2} \Gamma_s \mathrm{d} W_s \tag{8}
Zτ2=Zτ1+∫τ1τ2Asds+∫τ1τ2ΓsdWs(8)
- 问题 :
- 为什么(2)式用了两个减号,而(7)式是两个加号?回答:把
τ
1
\tau_1
τ1 和
τ
2
\tau_2
τ2 直接代入(2)式,再相减,可得(7)式。
将(5)(6)代入(7)(8)可得
Y τ 2 = Y τ 1 + ∫ τ 1 τ 2 ⟨ Z s , d W s ⟩ R d + ∫ τ 1 τ 2 ( f ( s , ξ + W s , Y s , Z s , ( H e s s x u ) ( s , ξ + W s ) ) + 1 2 T r a c e ( ( H e s s x u ) ( s , ξ + W s ) ) ) d s (9) \begin{array}{ll}Y_{\tau_2} = & Y_{\tau_1} + \int_{\tau_1}^{\tau_2} \langle Z_s, \mathrm{d} W_s \rangle_{\mathbb{R}^d}\\ & + \int_{\tau_1}^{\tau_2} \left(f(s, \xi + W_s, Y_s, Z_s, (\mathrm{Hess}_x u)(s, \xi + W_s)) + \frac{1}{2} \rm{Trace}\left((\mathrm{Hess}_x u)(s, \xi + W_s)\right)\right)\mathrm{d} s\end{array} \tag{9} Yτ2=Yτ1+∫τ1τ2⟨Zs,dWs⟩Rd+∫τ1τ2(f(s,ξ+Ws,Ys,Zs,(Hessxu)(s,ξ+Ws))+21Trace((Hessxu)(s,ξ+Ws)))ds(9)
和
Z τ 2 = Z τ 1 + ∫ τ 1 τ 2 ( ( ∂ ∂ t ∇ x u ) ( s , ξ + W s ) + 1 2 ( ∇ x Δ x u ) ( s , ξ + W s ) ) d s + ∫ τ 1 τ 2 ( H e s s x u ) ( s , ξ + W s ) d W s (10) \begin{array}{ll}Z_{\tau_2} = & Z_{\tau_1} + \int_{\tau_1}^{\tau_2} \left((\frac{\partial}{\partial t} \nabla_x u)(s, \xi + W_s) + \frac{1}{2} (\nabla_x \Delta_x u)(s, \xi + W_s) \right) \mathrm{d}s \\& + \int_{\tau_1}^{\tau_2} (\mathrm{Hess}_x u)(s, \xi + W_s) \mathrm{d} W_s\end{array} \tag{10} Zτ2=Zτ1+∫τ1τ2((∂t∂∇xu)(s,ξ+Ws)+21(∇xΔxu)(s,ξ+Ws))ds+∫τ1τ2(Hessxu)(s,ξ+Ws)dWs(10)
- 为什么(2)式用了两个减号,而(7)式是两个加号?回答:把
τ
1
\tau_1
τ1 和
τ
2
\tau_2
τ2 直接代入(2)式,再相减,可得(7)式。
附录A. 程序
- 输入:
- 函数 f f f: 34–35 行
- 函数 g g g: 38–39 行
- 居然没有 d d d (它是常量)
- 输出:
- 预测值?
- 网络
- 单层: 54–68 行;
- 单时间片网络(2个隐藏层): 42–52行;
- 计算 Gamma (113行) 和 A (117行)的网络是分离的。
- 训练过程
- 网络网络训练: 155–171 行
- 关于总体结构
- 不同时间片的网络并未串联。从113和117行可以看出,网络的输入均为 x x x (即 X)。但从 x x x 的更新(118行)仅与 d W \mathrm{d}W dW 有关,而 d W \mathrm{d}W dW 是一个随机数(119行)。从这个角度来看,该算法没未用到"深度”网络。
- Y Y Y 的更新(108行)与 x x x 的更新(118行)是一个渐变(迭代)的过程,考虑了每次的布朗运动 ( d W \mathrm{d}W dW)。
- 相比而言,函数 g g g 的计算(125行)仅考虑了终止时间 ( T T T 时刻) 的 x x x 值。
疑问
- 105行至125行如果是网络搭建的话,获得的数据存在网络的什么地方?节点上吗?
- 157行和158行,调整的是各网络权重吗?
- 这种固定的网络结构合适吗?
- 不给训练数据,而仅仅根据布朗运动进行数据调整合适吗?最后的结果如何印证?
- 155 行之后, Y0 的值在158行和161行被改变,为什么? Y0只是一个标量。
To be continued …