最优速度差 跟驰模型 matlab 博客_【方法】可微分编程与宏观模型估计

EDIT: 关于DSGE估计的最新进展可以见一篇大佬新出炉的review paper

---

可微分编程和自动微分这种CS里广泛使用的手段,在计量经济学里才刚刚起步。做机器学习和计量经济学交叉领域的一些人已经摘取了low-hanging fruit:可微分编程已经运用在相对简单的微观结构性模型中了。简单的结构性模型可以很容易在支持可微分编程的Stan语言下实现,而以C为底层的Stan语言速度也有保证,因此开始受到了一些人的喜爱。有做相关内容的同学可以看看Stan这个语言,很有意思,也能直接上手使用。

宏观里比较常用的需要估计的工具是DSGE,更直白地说是一种状态空间模型:

  • 我们想要估计控制模型的参数
  • 给定
    ,解完DSGE之后,我们可以给出状态空间的演进方式
  • 以模型所得
    拟合现实数据
    。最大似然估计或是贝叶斯估计两者都需要似然函数

简而言之,DSGE估计方法框架都相同,在文献中已经有的实践方式可以归类为以下区别:

  1. 估计的参数不同:只估计确定状态空间模型的参数 vs 估计参数同时估计观测不到的潜在状态;
  2. 状态推断方式不同:线性高斯状态下使用Kalman filter,非线性非高斯状态下用Kalman filter的局部变种,或者particle filter
  3. 抽样方式不同:MLE或者MAP是直接最优化函数,而Bayesian方式有用conjugate prior,或者Gibbs抽样,或者直接暴力Random Walk Metropolis-Hastings

这些方法大多不是CS里常用的一阶优化方法,而只是用到函数本身值的性质。倘若基于自动微分的可微分编程能在某些步骤中得到应用,那么就能使用相应的一阶优化方法,从而提高DSGE估计的效率。

最近做的project往这个方向推进了一小步:

  1. 在Julia语言内建立了一个类似Dynare的系统(当然,这一点并不是新的,纽约联储和加拿大央行分别有一个类似的项目),用符号微分处理DSGE系统的各阶微分(这是新的)
  2. 在此基础上,计算了DSGE各阶近似解法,以及非线性projection method法的梯度:
    ;由于时间有限,以Julia实现了一、二阶结果。
  3. 在可微分编程的框架下,自定义反向自动微分的伴随算子计算方法,得到似然函数的关于参数和各时间隐状态的梯度。
  4. 在以上的基础上运用一些在CS和统计里常用的贝叶斯抽样方法,比如Hamiltonian Monte-Carlo (包含No-U-Turn sampler)和Variational Inference方法等等。

有了似然函数的梯度之后,抽样变得更为有效了。在一个中等规模的DSGE下(例如Smets and Wouters)只需要大约2000-3000次抽样就可以获得比较稳定的贝叶斯后验分布。而较老的基于Metropolis-Hastings的方法动辄需要百万次左右。当然,计算梯度的时间复杂度也和参数的数量相关,但相对于Metropolis-Hastings对典型集的遍历不足,HMC/NUTS可以更有效率地遍历典型集。

贝叶斯机器学习中常用的Variational Inference方法也需要梯度信息,而在估计宏观模型中也能展现能力。这种方法虽然一般而言没有收敛的结论,但在DSGE这种比较严格和简单的设定下,只要原模型的识别问题不严重,那Variational Inference就可以收敛。 Variational Inference获得解的速度比HMC快一些。

以上都是在抽样方式上的创新;我们也通过同时估计各阶段的潜在状态变量,摆脱了Kalman filter的桎梏,在方法论上统一了非线性和非高斯模型的估计方法,也摆脱了效率不高的particle filter。这需要我们采用的抽样方式在高阶问题上有良好的表现。实验证明,如果原DSGE模型的识别性比较好,那么基于梯度方法的HMC/NUTS或者是Variational Inference都在高阶问题上表现优异。如果原DSGE模型的识别性本身较弱,那么梯度提供的信息可能也有较大误差。

综上,我们以可微分编程框架拓展了DSGE的估计方法,而新方法在非线性非高斯模型下的表现也不负众望,可以说是把文献向前推进了一小步。(当然DSGE是不是还被广泛应用和喜欢是另一个问题,不过目前各国央行还是在广泛使用这些模型)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值