精华内容
下载资源
问答
  • 在统计中,通过马尔可夫链蒙特卡洛(MCMC)采样进行的贝叶斯分析是一种有效的参数估计方法。 但是,现有的MCMC采样仅在实参空间中执行。 在某些情况下,复数值参数化建模更为可取,因为复数表示带来了实值表示无法...
  • 回归参数估计 使用不同方法的回归模型中参数估计的R代码: 最小二乘 梯度下降 大都会-哈丁斯 使用JAGS进行吉布斯采样 该代码用于具有一个预测变量的线性回归问题(单变量回归)。 目的是通过一个简单的示例并为所有...
  • 蒙特卡洛梯度估计方法(MCGE)简述

    千次阅读 2019-09-09 12:17:15
    要了解基于蒙特卡洛采样的梯度估计方法,首先先了解蒙特卡洛采样方法和随机优化方法。 蒙特卡洛采样(MCS) MCS 是一种经典的求解积分方法,公式(1)中的问题通常可以用 MCS 近似求解如下: 其中,  采样自分布 p...

    640


    动机


    机器学习中最常见的优化算法是基于梯度的优化方法,当目标函数是一个类似如下结构的随机函数 F(θ) 时:

    640?wx_fmt=png

    优化该类目标函数,最核心的计算问题是对随机函数 F(θ) 的梯度进行估计,即:

    640?wx_fmt=png

    随机函数梯度估计在机器学习以及诸多领域都是核心计算问题,比如:变分推断,一种常见的近似贝叶斯推断方法;强化学习中的策略梯度算法;实验设计中的贝叶斯优化和主动学习方法等。其中,对于函数期望类目标问题,最常见的是基于蒙特卡洛采样的方法。

    本文将总结以下内容:

    • 随机梯度估计方法的相关背景知识,包括:蒙特卡洛采样和随机优化

    • 几种经典应用,包括:变分推断、强化学习、实验设计

    • 两类经典的梯度估计算法


    背景知识


    要了解基于蒙特卡洛采样的梯度估计方法,首先先了解蒙特卡洛采样方法和随机优化方法。

    蒙特卡洛采样(MCS)

    MCS 是一种经典的求解积分方法,公式(1)中的问题通常可以用 MCS 近似求解如下:

    640?wx_fmt=png

    其中, 640  采样自分布 p(x;θ),由于采样的不确定性和有限性,这里 640 是一个随机变量,公式(3)是公式(1)的蒙特卡洛估计器(MCE)。这类方法非常适用于求解形式如公式(1)的积分问题,尤其是当分布 p(x;θ) 非常容易进行采样的时候。

    在使用 MCE 时,往往关注其以下四个性质:

    1. 一致性,根据大数定理,当所采样的样本数量非常多时,MCE 的估计值将会收敛到积分的真值处。

    2. 无偏性,MCE 是对所求积分的一个无偏估计,简单推导如下:

    640?wx_fmt=png


    MCE 的无偏性是随机优化算法收敛的重要保证。

    3. 小方差,当几个估计方法都是无偏估计时,我们通常会选择方差较小的 MCE,因为更小方差的 MCE 会估计地更准,从而使得优化地效率更高、准确性更好。

    4. 可计算性,很多机器学习问题都是高维问题,如何提高 MCE 的可计算性,比如:减少采样、提高并行能力等变得十分重要。

    随机优化(SO)

    640?wx_fmt=png
    ▲ 图1. 随机优化

    如图 1 所示,随机优化问题通常包含两个过程,一是仿真过程,输入优化变量,获得响应值 F(θ),然后计算出640?wx_fmt=png ,其中是个随机变量 ;二是优化过程,基于梯度,迭代更新优化变量。

    不同于确定性优化,随机优化算法包含两个部分的随机性:

    • 仿真过程中,由于系统响应 F(θ) 是随机变量,因此其梯度以及 Hessian 矩阵等都是随机的,需要近似估计;


    • 优化过程中,由于采用一些近似处理手段,比如用 mini batch 来估计梯度会产生随机性。

    应用


    基于蒙特卡洛采样的梯度估计方法(MCGE)在很多研究领域都起到了核心作用,本节总结一下其在机器学习领域中的典型应用。

    变分推断(Variational Inference, VI)

    640?wx_fmt=png
    ▲ 图2. VI和MCMC

    VI 是贝叶斯推断中的一大类方法,在统计机器学习(贝叶斯视角)中具有广泛的应用。从上图中可以看出,变分推断 (VI) 的思想非常简单。假设一个变分分布簇,在概率空间中找到一个离真实分布最近的分布。VI 巧妙地将一个推断问题转化为了优化问题,优化目标是 KL(Q||P),即待求分布 Q 和真实后验分布 P 的距离,优化的变量是分布 Q 的描述参数。

    VI 方法综述将在另外一篇文章中详细介绍,本文只简单说明其目标函数是一个形如公式(1)的问题。考虑一个生成模型问题 p(z)p(x|z),其中 z 是隐变量,x 是观测变量,p(z) 是先验分布,p(x|z) 是似然函数。根据贝叶斯公式:

    640?wx_fmt=png

    其中 p(x)=ʃp(z)p(z|x),称为 evidence,通常 p(x) 是一个不可积的多重积分,导致后验分布 p(z|x) 无法获得解析解。如上述思路所述,假设后验分布用一个变分分布 q(z|x;θ) 来近似,通过构造如下优化问题:

    640?wx_fmt=png

    来求解使得两个分布距离最小的变分分布参数 θ,从而得到近似后验分布。

    因为真实后验分布是未知的,直接优化公式(6)是一件比较有挑战的事情,VI 巧妙地将其转化为优化 ELBO 的问题。

    简单的推导过程如下:

    640?wx_fmt=png

    等号两边移动一下可得:

    640?wx_fmt=png

    由 KL 散度的定义可知,KL(q(z|x;ф)||p(z|x;θ))≥0,同时 logp(x;θ) 是个常数,所以求优化问题(6)等价于求如下优化问题:

    640?wx_fmt=png

    相当于求解 log evidence lower bound,即 eblo。继续推导如下:

    640?wx_fmt=png

    公式(10)的形式如公式(1),可以用 MCGE 进行梯度估计,从而优化求解。

    变分推断方法是一个热门研究领域,而核心问题是如何高效求解 elbo 优化问题,在统计物理、信息论、贝叶斯推断、机器学习等诸多领域由广泛的应用。

    强化学习

    强化学习是机器学习中一大类热门研究领域,尤其是 AlphaGo 的横空出世,为强化学习带来了更多的关注和更多的研究人员。本文将不对强化学习的任务和各种概念进行赘述,强化学习中的一大类问题是无模型的策略搜索问题,即通过优化累计回报的均值学习到最优策略。所谓累计回报的均值形式如下:

    640?wx_fmt=png

    公式(11)形式亦如公式(1),可以用 MCGE 进行梯度估计,从而优化求解。

    实验设计

    实验设计是个非常广泛的领域,主要是研究如何为实验设置合适的配置,比如:自动机器学习中的超参数调优(HPO)、神经架构搜索(NAS),通过主动学习(Active Learning)选择更加合适的样本进行标注,老虎机问题的求解(Bandit)等等。

    这类任务中经常会遇到一个问题,如何选择下一个更好的配置,使得选择之后比选择之前性能的概率会有所提升。因此需要优化如下问题:

    640?wx_fmt=png

    公式(12)形式亦如公式(1),可以用 MCGE 进行梯度估计,从而优化求解。

    简单总结一下,优化是机器学习训练中最重要的部分,而其中很多优化问题都是形如公式(1)的问题,而 MCGE 是解决这类问题的有效手段,接下来介绍两种经典的 MCGE 方法。

    方法综述


    公式(1)中的积分内是一个分布和代价函数的乘积,在对其梯度进行近似估计时,可以从两个方面进行求导。由此,可以将梯度估计方法大致分为两类:

    • 求解分布测度的导数,包括本文介绍的 score function gradient estimator

    • 求解代价函数的导数,包括本文介绍的 pathwise gradient estimator

    根据公式(2)待估计的梯度是640?wx_fmt=jpeg ,直接计算会非常困难,一个直观的思路是研究如何将期望的梯度转化为梯度的期望,从而可以利用 MCS 做无偏近似估计。本文将会介绍两种经典的方法,来解决这个问题。

    Score Function Gradient Estimator (SFGE)

    SFGE 是最经典的方法,也是适用性最好的方法,在强化学习中的策略梯度优化问题里,有一个算法叫做 REINFORCE,正是基于 SFGE 来做的。SFGE 也常常被用于解决目标函数不可导的优化问题以及一些黑盒优化问题。

    Score Function 简介

    所谓的 score function 是640?wx_fmt=png ,之所以选择这个函数,是因为以下两点原因:

    1. score function 的期望为 0,证明如下:

    640?wx_fmt=png


    这样会带来非常多的便利,比如:一种降低估计方差的思路,将代价函数 f(x) 改造为 f(x)-b,其中 b 是所谓的 baseline。因为 score function 的期望为 0,所以:

    640?wx_fmt=png

    2. score function 的方差是 Fisher 信息量。

    SFGE的推导过程

    640?wx_fmt=png

    推导中,用到了一个复合函数求导的公式,如下:

    640?wx_fmt=png

    利用 MC 采样可以估计出梯度,如下:

    640?wx_fmt=png

    其中, 640

    从上述推导中可以看到,通过引入 score function,可以成功地将期望的梯度变换为梯度的期望,从而实现梯度的近似估计。

    这中间有一个过程是将积分和微分操作的位置进行了对换,此操作并非可以随意进行,需要满足一定的条件,但一般的机器学习问题都会满足。

    SFGE的性质

    • 代价函数 f(x) 可以是任意函数。比如可微的,不可微的;离散的,连续的;白箱的,黑箱的等。这个性质是其最大的优点,使得很多不可微的甚至没有具体函数的黑箱优化问题都可以利用梯度优化求解。


    • 分布函数 p(x;θ) 必须对 θ 是可微的,从公式中也看得出来。


    • 分布函数必须是便于采样的,因为梯度估计都是基于 MC 的,所以希望分布函数便于采样。


    • SFGE 的方差受很多因素影响,包括输入的维度和代价函数。

    SFGE的典型应用

    SFGE 由于其对代价函数没有限制,具有非常广阔的应用场景,以下是几个非常热门的应用:

    • 策略梯度优化算法 REINFORCE 及其变种

    • 基于 GAN 的自然语言生成

    • 基于自动微分的黑盒变分推断

    这些典型的应用,后续可专门写一篇文章进行介绍。

    Pathwise Gradient Estimator (PGE)

    不同于 SFGE 对代价函数没有任何约束,PGE 要求代价函数可微,虽然 SFGE 更具一般性,但 PGE 会有更好的性质。PGE在机器学习领域有一个重要的方法是 reparameterization trick,它是著名的深度生成模型 VAE 中一个重要的步骤。

    PGE简介

    PGE 的思路是将待学习的参数从分布中变换到代价函数中,核心是做分布变换(即所谓的 reparameterization ,重参数化),计算原来分布下的期望梯度时,由于变换后的分布不包含求导参数,可将求导和积分操作进行对换,从而基于 MC 对梯度进行估计。

    640?wx_fmt=png

    如上述公式,从一个含参 θ 分布中采样,等同于从一个简单无参分布中采样,然后进行函数变换,并且此函数的参数也是 θ。变换前,采样是直接从所给分布中进行,而采用重参数化技巧后,采样是间接地从一个简单分布进行,然后再映射回去,这个映射是一个确定性的映射。其中,映射有很多中思路,比如:逆函数、极变换等方法。

    PGE 的一个重要理论依据是 Law of the Unconscious Statistician (LOTUS) ,即:

    640?wx_fmt=png

    从定理中可以看到,计算一个函数的期望,可以不知道其分布,只需要知道一个简单分布,以及从简单分布到当前分布的映射关系即可。

    PGE推导过程

    基于 Law of the Unconscious Statistician (LOTUS) 对 PGE 进行推导,如下:

    640?wx_fmt=png

    利用 MC 可以估计出梯度为:

    640?wx_fmt=png

    其中  640 。从推导中可以看出,分布中的参数被 push 到了代价函数中,从而可以将求导和积分操作进行对换。

    分布变换是统计学中一个基本的操作,在计算机中实际产生各种常见分布的随机数时,都是基于均匀分布的变换来完成的。有一些常见的分布变换可参见下表:

    640?wx_fmt=png

    ▲   图3. 常见分布变换

    PGE的性质

    • 代价函数要求是可微的,比 SFGE 更严格

    • 在使用 PGE 时,并不需要显式知道分布的形式,只需要知道一个基础分布和从该基础分布到原分布的一个映射关系即可,这意味着,不管原来分布多么复杂,只要能获取到以上两点信息,都可以进行梯度估计;而 SFGE 则需要尽量选择一个易采样的分布

    • PGE 的方差受代价函数的光滑性影响

    PGE的典型应用

    • 深度生成模型 VAE 和 GAN 的训练

    • 基于 Normalising Flow 的变分推断

    • 用于连续控制问题的强化学习


    总结


    蒙特卡洛采样(MCS)是求解函数期望的常用近似方法,优点是简单易用,通过一定的变换,可以对期望的梯度进行估计,从而完成对代价函数的优化,实现很多任务。

    但 MCS 的缺点也非常明显,为了保证一定的估计效果,往往需要很大量的采样规模,对于大数据、高维度等实际问题来说,过多的采样会导致算法效率极低,从而降低了算法的实用性。从这个角度来说,如何研究一些新方法,来提高期望或者期望梯度的近似估计效率是一个非常重要的问题。最后,推荐两篇 2019 年的工作 [4] [5] ,旨在尝试解决这个问题。 

    上述研究虽然有一定的局限性,但尝试了新的思路来解决这一问题。其中第 [5] 篇,尝试用一些 Uncertainty Qualification (UQ) 的方法,比如用一些不确定性传播的估计方法,对期望进行确定性估 计,而非随机采样估计,在一定的假设下,确实有非常显著的效果。

    参考文献

    [1] Mohamed, S., Rosca, M., Figurnov, M., & Mnih, A. (2019). Monte Carlo Gradient Estimation in Machine Learning. ArXiv Preprint ArXiv:1906.10652. 

    [2] Fu, M. C. (2005). Stochastic Gradient Estimation, 105–147. 

    [3] Shakir's Machine Learning Blog http://blog.shakirm.com 

    [4] Postels, J., Ferroni, F., Coskun, H., Navab, N., & Tombari, F. (2019). Sampling-free Epistemic Uncertainty Estimation Using Approximated Variance Propagation. ArXiv Preprint ArXiv:1908.00598. 

    [5] Wu, A., Nowozin, S., Meeds, T., Turner, R. E., Lobato, J. M. H., & Gaunt, A. (2019). Deterministic Variational Inference for Robust Bayesian Neural Networks. In ICLR 2019 : 7th International Conference on Learning Representations.

    640?

    点击以下标题查看更多往期内容: 

    640?#投 稿 通 道#

     让你的论文被更多人看到 


    如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

    总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

    PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

    来稿标准:

    • 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

    • 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

    • PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

    ? 投稿邮箱:

    • 投稿邮箱:hr@paperweekly.site 

    • 所有文章配图,请单独在附件中发送 

    • 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

    ?

    现在,在「知乎」也能找到我们了

    进入知乎首页搜索「PaperWeekly」

    点击「关注」订阅我们的专栏吧

    关于PaperWeekly

    PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

    640?

    ▽ 点击 | 阅读原文 | 获取最新论文推荐

    展开全文
  • 对含有MA(3)误差项的面板数据模型,应用半参数计量经济学理论,在相关假设基础上推导出半参数估计方法,并根据蒙特卡洛模拟对这种方法进行实证检验,结果证明这种半参数估计方法是可行的,并且相对参数估计方法(最小二乘...
  • 参数估计的计算方法

    千次阅读 2020-05-27 19:21:58
    参数估计的计算方法极大后验(MAP)及拉普拉斯逼近基于马尔可夫链的蒙特卡洛参数推断(MCMC)期望极大化(EM) (参数估计所有内容) 极大后验(MAP)及拉普拉斯逼近 极大后验估计: MAP是通过确定后验分布的极大值得到的,...

    参数估计所有内容

    极大后验(MAP)及拉普拉斯逼近

    极大后验估计:
    MAP是通过确定后验分布的极大值得到的,在点估计中的表达式为:在这里插入图片描述MAP 估计可等效为能量函数的极小值:
    在这里插入图片描述其中,能量函数表达式为:
    在这里插入图片描述参数的极大似然估计即为一种标准先验概率满足下式的MAP估计:
    在这里插入图片描述

    能量函数的极小值可通过多种基于无梯度或梯度的广义最优算法计算得到。
    若要利用基于梯度的广义最优化算法,需要计算能量函数的导数。计算能量函数导数有两种方法:
    1). 对能量函数的递归方程用一种特殊的方法进行微分,所得的结果称为灵敏度函数,可由类似于滤波过程中递归方程计算得到。
    2). 利用Fisher特性,将能量函数的梯度表示为平滑分布所有数据对数似然导数的期望值。该方法相比于直接微分法优点在于不要计算额外的递归方程。

    MAP估计的缺点:该方法实际运用了狄拉克 δ \bm{\delta} δ 方程逼近后验分布,即:
    在这里插入图片描述从而忽略了后验分布的变化。

    拉普拉斯逼近法:
    利用能量函数的二阶导数(Hessian) 实现对后验分布的高斯逼近,表达式为:
    在这里插入图片描述式中, H ( θ ^ M A P ) \bm{H(\hat\theta^{MAP})} H(θ^MAP)MAP 估计值出的 Hessian 矩阵。该方法需要计算或者逼近能量函数的二阶导数。

    基于马尔可夫链的蒙特卡洛参数推断(MCMC)

    MH算法:
    Metropolis-Hastings(MH)算法是最为常见的一种MCMC方法。MH引入建议密度 q ( θ ( i ) ∣ θ ( i − 1 ) ) \bm{q(\theta^{(i)}|\theta^{(i-1)})} q(θ(i)θ(i1)),通过结合已知采样点 θ ( i − 1 ) \bm{\theta^{(i-1)}} θ(i1),给出新的建议采样点 θ ( i ) \bm{\theta^{(i)}} θ(i)
    MH算法步骤为:
    首选由任意初始分布得到起始点 θ ( 0 ) \bm{\theta^{(0)}} θ(0)
    然后,对于 i = 1 , 2 , ⋅ ⋅ ⋅ , N \bm{i=1,2,\cdot\cdot\cdot,N} i=1,2,,N,有

    1). 从建议密度中选择一个参考点 θ ∗ \bm{\theta^{*}} θ:
    在这里插入图片描述2). 计算接受概率:
    在这里插入图片描述3). 产生均匀分布随机变量 u ∼ U ( 0 , 1 ) \bm{u \sim U(0,1)} uU(0,1),并令:
    在这里插入图片描述

    Metropolis算法为Metropolis-Hastings算法的一种特例,其建议分布为对称的,即 q ( θ ( i ) ∣ θ ( i − 1 ) ) = q ( θ ( i − 1 ) ∣ θ ( i ) ) \bm{q(\theta^{(i)}|\theta^{(i-1)})}=\bm{q(\theta^{(i-1)}|\theta^{(i)})} q(θ(i)θ(i1))=q(θ(i1)θ(i)),此时,接受概率缩减为:
    在这里插入图片描述
    建议分布的选取对Metropolis-Hastings算法的性能影响较大,通常采用高斯部分作为建议分布。即:
    在这里插入图片描述式中, ∑ i − 1 \bm{\sum^{i-1}} i1 为合适的协方差矩阵。
    选定协方差矩阵其中一种方法是自适应马尔可夫链蒙特卡洛法( A M C M C \bm{AMCMC} AMCMC),该方法可以载解算 M C M C \bm{MCMC} MCMC时,自动调整所需要的高斯建议分布协方差阵。
    A M C M C \bm{AMCMC} AMCMC 的思想为:利用先前采样点产生的协方差阵作为后验分布实际协方差阵的估计值。在已知先前的协方差矩阵的情况下,就可以计算建议分布的协方差阵。

    RAM(robust adaptive Metropolis)算法:
    RAM步骤为:
    1). 有初始分布 p 0 ( θ ) \bm{p_0(\theta)} p0(θ) 获得 θ ( 0 ) \bm{\theta^{(0)}} θ(0),利用初始协方差阵的下三角阵 C h o l l e s k y \bm{Chollesky} Chollesky 因子对 S 0 \bm{S_0} S0 进行初始化。
    2). 获取一个采样点 θ ∗ = θ i − 1 + S i − 1 r i , r i ∼ N ( 0 , I ) \bm{\theta^*=\theta_{i-1}+S_{i-1}r_i},r_i\sim N(0,I) θ=θi1+Si1ri,riN(0,I)
    3). 计算接受概率:
    在这里插入图片描述4). 从均匀分布 U ( 0 , 1 ) \bm{U(0,1)} U(0,1) 中采样的到一个服从均匀分布的随机变量 u \bm{u} u
    5).
    在这里插入图片描述6). 计算下三角矩阵 S i \bm{S_i} Si,使得该矩阵满足对角线元素为正,且该阵满足:
    在这里插入图片描述式中, { η } i ≥ 1 ⊂ ( 0 , 1 ] \bm{\{\eta\}_{i\ge1}\subset(0,1]} {η}i1(0,1],为一个自适应步长序列,并逐渐衰减为零。可任意选取,在其他文献中给出一个选取建议: η i = i − γ , γ ∈ ( 1 / 2 , 1 ] \bm{\eta_i=i^{- \gamma},\gamma\in(1/2,1]} ηi=iγ,γ(1/2,1]
    7). i ← i + 1 \bm{i\leftarrow i+1} ii+1,跳至步骤2),直到获取足够多的采样点。

    期望极大化(EM)

    E M \bm{EM} EM 算法适用于边缘似然无法计算但仍能计算得到似然函数下界的情形。设 q ( x 0 : T ) \bm{q(x_{0:T})} q(x0:T) 为状态的任意概率密度函数,则有:
    在这里插入图片描述式中,函数 F \bm{F} F 的定义为:
    在这里插入图片描述
    E M \bm{EM} EM 算法中国最重要的就是通过迭代最大化下界 F [ q ( x 0 : T ) , θ ] \bm{F[q(x_{0:T}),\theta]} F[q(x0:T),θ],进而实现 l o g p ( y 1 : T ∣ θ ) \bm{logp(y_{1:T}|\theta)} logp(y1:Tθ) 的最大化。

    简易的EM算法
    对函数 F \bm{F} F 的最大化,可通过协调提升下述步骤实现:
    假设初始值为: q ( 0 ) , θ ( 0 ) \bm{q^{(0)},\theta^{(0)}} q(0),θ(0)
    对于 n = 0 , 1 , 2 , ⋅ ⋅ ⋅ \bm{n=0,1,2,\cdot\cdot\cdot} n=0,1,2,,执行如下步骤:
    1). E-步骤:获取:
    在这里插入图片描述2). M-步骤:获取:
    在这里插入图片描述
    为实现 E M \bm{EM} EM 算法,上式的极大化必行是可行的,所幸在其他文献中给出 E \bm{E} E 步骤极大化后的结果:
    在这里插入图片描述将上式带入 F \bm{F} F 函数中,得:
    在这里插入图片描述
    由于在实行 M \bm{M} M 步骤中,上式右边第二项与 θ \bm{\theta} θ 无关,故极大化 函数 F \bm{F} F 就得等价于对等式右边第一项对极大化,因此,在 E M \bm{EM} EM 算法中,可表示为:
    在这里插入图片描述上式为 E M \bm{EM} EM 算法得到关于 p ( x 0 : T , y 0 : T ∣ θ ) \bm{p(x_{0:T},y_{0:T}|\theta)} p(x0:T,y0:Tθ) 的期望, p ( x 0 : T , y 0 : T ∣ θ ) \bm{p(x_{0:T},y_{0:T}|\theta)} p(x0:T,y0:Tθ)是在参数 θ \bm{\theta} θ 条件下关于全部状态量和量测量的联合后验似然分布。

    E M \bm{EM} EM 算法:
    假设初始值为 θ ( 0 ) \bm{\theta^{(0)}} θ(0)。对于 n = 0 , 1 , 2 , ⋅ ⋅ ⋅ \bm{n=0,1,2,\cdot\cdot\cdot} n=0,1,2,,执行如下步骤:
    1). E-步骤:计算 Q ( θ , θ ( n ) ) \bm{\mathcal{Q(\theta,\theta^{(n)})}} Q(θ,θ(n))
    2). M-步骤:计算:
    在这里插入图片描述结合下式:状态空间模型的马尔可夫链结构:
    在这里插入图片描述完全数据的对数似然表达式为:
    在这里插入图片描述因此, Q \bm{\mathcal{Q}} Q 的表达式及上述算法的 E \bm{E} E 步骤可以简化为:
    在这里插入图片描述式中:
    在这里插入图片描述上式均为关于平滑分布的期望,即可不必在计算完全后验分布的期望。

    E M \bm{EM} EM 算法的 E \bm{E} E 步骤中,需要对 Q \bm{\mathcal{Q}} Q 的表达式关于参数 θ \bm{\theta} θ 的极大化。
    实用的方法为将梯度设为零,求的此时极大值时候的 θ \bm{\theta} θ 取值:
    在这里插入图片描述
    E M \bm{EM} EM 算法,
    E \bm{E} E 步骤:利用上一步得到的表达式 Q ( θ , θ n ) \bm{\mathcal{Q(\theta,\theta^n)}} Q(θ,θn) 求出满足表达式 Q ( θ , θ n ) \bm{\mathcal{Q(\theta,\theta^n)}} Q(θ,θn) 极大值的 参数 θ n \bm{\theta^n} θn
    M \bm{M} M 步骤:将 E \bm{E} E 步骤求出的参数 θ n \bm{\theta^n} θn 作为下一步已知的值 θ n + 1 \bm{\theta^{n+1}} θn+1 带入表达式 Q ( θ , θ n ) \bm{\mathcal{Q(\theta,\theta^n)}} Q(θ,θn) 中得到 Q ( θ , θ n + 1 ) \bm{\mathcal{Q(\theta,\theta^{n+1})}} Q(θ,θn+1),进而最大化函数 F \bm{F} F 的下限。
    循环重复 E , M \bm{E,M} E,M 步骤,直到满足要求。

    展开全文
  • 作者:量化小白H Python爱好者社区专栏作者个人公众号:量化小白上分记前文传送门:之前几篇总结的方法都是对于向前一日VaR...所以本文总结一种可以对向前k日VaR进行估计的方法,蒙特卡洛方法。需要说明的是,通过蒙...

    作者:量化小白H Python爱好者社区专栏作者

    个人公众号:量化小白上分记

    前文传送门:

    之前几篇总结的方法都是对于向前一日VaR的建模,都以是以VaR=波动率乘以分布函数逆函数为基础。但如果要计算向前k日的VaR,如果还使用上述公式,波动率和分布函数应该换成k日滚动窗口的,好像还没见过这样的Garch模型。

    所以本文总结一种可以对向前k日VaR进行估计的方法,蒙特卡洛方法。需要说明的是,通过蒙特卡洛方法估计VaR可以从很多角度入手,本文只是其中一个角度,并非唯一建模方法。

    01

    模型推导

    Monte-Garch

    前面提到,之前的基础公式不太适用K日VaR的估计,需要寻找其他方法。蒙特卡洛方法从VaR定义出发,要计算资产在给定概率下,未来K日的最大损失,我们可以模拟出资产未来k日的日收益率,计算得到资产的K日收益模拟序列,多次模拟后,类似之前HS和WHS方法,取整个模拟序列的p分位数即可,具体操作如下

    我们依然假设资产的日收益率序列服从正态分布,从而标准化收益率服从标准正态分布。

    kivshibtkc.webp

    同时收益率序列的波动率可以用Garch族模型进行建模,假设波动率服从Garch(1,1)模型

    gsnldllnal.webp

    这样,我们可以用标准正态随机数对向前一天的标准化收益率z进行模拟,记模拟次数为MC。

    tzjrvoghzy.webp

    从而可以得到模拟的收益率为

    ejdmcvkkyg.webp

    同理对向前两天的标准化收益率z进行模拟MC次

    puwoybqjom.webp

    波动率通过Garch模型进行更新

    vhbmksqyyr.webp

    之后可以得到向前两天的日收益率

    mbsmpidhtz.webp

    如果要估计向前K天的VaR,我们将上述过程重复K次,过程可以表述如下

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    这样向前K日的总收益率可以把k日收益率加总得到(如果是算单利的话,复利用乘法)

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    这样我们就得到了对于未来K日总收益的MC个模拟 值,我们用这MC个模拟值估计未来K日的VaR,类似HS方法,直接取p分位数即可

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    Monte-FHS

    上面的方法是将蒙特卡洛模型与Garch组模型相结合,此外,也可以将蒙特卡洛方法与历史模拟方法相结合,即不对未来收益率进行建模,而是直接用过去一段时间的收益率作为未来每日收益率的估计量,对上述方法做一点小的修改,具体如下

    对于过去一段时间的日收益率,我们可以通过Garch模型对波动率进行估计,得到过去一段时间的标准化收益率

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    随后,我们每次都从这个收益率序列中进行有放回抽样,生成对未来k日的收益率模拟序列,再重复波动率的估计和收益率的加总过程

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    最后求出VaR

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    这里做一点分析,这两种方法可以认为属于两类方法:一类可以认为是完全没有模型的方法,包括WHS,HS,FHS,对于收益率的分布不做任何估计,遵循历史会重演的原则,用历史收益率作为未来收益率的估计量,一类是有严密假设前提和模型推导的参数方法,包括Garch,EVT等等。

    两种方法各有优劣,从之前文章的结果来看,没有模型的方法基本上是不能看的,不过从本文之后的两种方法的对比来看还可以。而有假设有模型的方法结果可能会比较好,但前提是能对收益率序列作出合理假设,从正态分布,t分布,渐近t分布等等,理论研究中尝试了各种分布,但显然没有一定最有效的分布,一切都在于尝试。

    Monte-DCC-Garch

    刚才两种方法都是对单个资产的VaR估计,也可以把蒙特卡洛方法与前一篇文章中的DCC方法相结合,估计组合的向前k日VaR。用Monte-Garch或者Monte-FHS都可以,过程差不多,这里以Monte-Garch为例。

    组合VaR估计与单资产VaR估计的不同在于组合不仅需要估计资产的波动率,还需要估计资产之间的相关性,换句话说,需要估计资产的协方差阵。和之前类似,我们可以模拟组合的日标准化收益率序列,用Garch模型更新波动率,用DCC模型跟新相关系数,然后计算组合的日收益率,K日总收益,最后计算组合的向前K日VaR。

    但如果我们直接用之前的方法分别模拟每个但资产的收益率,显然各个资产之间是不相关的,因此我们必须得到符合给定相关系数矩阵的模拟收益率序列,以2个资产为例进行说明

    根据之前的方法我们可以得到如下的两个不相关的标准化收益率序列

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    我们的目标是得到符合给定相关系数rho的标准化收益率序列

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    显然通过如下转换即可完成

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    两资产情况下,相关系数矩阵的平方根很容易算出来

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    多资产情况下,相关系数矩阵的平方根不是很好算,但也可以算出来,用到cholesky分解,不过如果是写代码的话,也就是一行代码调个函数的事情。

    综上,计算向前K日VaR整个过程可以表述如下:

    1. 模拟生成不相关的资产标准化收益率序列,均服从标准正态分布

    2. 将不相关的资产标准化收益率序列转换为相关系数矩阵为给定值的标准化收益率序列

    3. 将标准化收益率转化为收益率,按照各资产的权重进行累加,得到组合的收益率

    4. 通过Garch模型更新波动率,通过DCC模型跟新相关系数矩阵

    5. 重复1-4过程K次,将K次的收益率序列相加总收益率

    6. 重复1-5过程MC次,得到MC个总收益率,取p分位数即可。

    02

    实证分析

    软件:python3.6

    数据:S&P500、US 10yr T-Note Fixed Term(同上一篇)

    区间:2001-2010

    蒙特卡洛模拟次数:10000次

    数据和代码在后台回复“VaR4”获取

    单资产的VaR估计均在数据序列最后一天向前估计,估计K=500天

    波动率初始值使用当天的波动率,波动率建模用之前文章中的Ngarch(1,1)模型,两资产组合的VaR估计类似

    Monte-Garch(代码见VaR_Monte_NGarch)

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    上一篇中提到,Garch模型具有均值回归的特性,最终会回到长期平均水平,如果我们将波动率初始值分别改为高初始波动率:3倍长期平均波动率和低初始波动率:0.5倍长期平均波动,结果如下

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    高初始值的结果先升高再降低,低初始值的结果持续升高,这个结果看起来不是特别明显,文献中的文献中的结果要比我的好很多

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    Monte-FHS(代码VaR_Monte_FHS)

    wlmsrjoddr.webp

    对比Monte-Garch和Monte-FHS的结果,整体趋势差不多,不过Monte-FHS得到的值要相对小一些。不同初始波动率的结果对比如下

    lfcxhvsrso.webp

    此外,代码中同时还对比了用RM,Monte-Garch、Monte-FHS计算出的向前一日VaR,其中

    RM:0.045864978982555343;

    Monte-Garch:0.052665510343511503;

    Monte-FHS:0.053369497694956955

    组合VaR估计(代码见getVaR_Monte)

    khmlmdgrti.webp

    这里与上一篇中DCC模型估计的向前一日VaR结果进行对比

    zzhktfhfmr.webp

    黑色为Monte-Garch-DCC的结果,红色为DCC的结果,几乎是完全重合的,黑色被覆盖。但效率上讲,蒙特卡洛的运行速度较慢,远不如DCC。

    03

    代码

    这里只给出主要函数代码,全部代码后台获取,另外代码实现的过程实际是参考文献中Chapter8中的习题,注释写的不多,看不明白的可以翻一翻文献,如果想把代码用到别处,需要做一些修改,比如组合收益率中,因为这里考虑的是等权重组合,所以并没有设置权重参数,直接取的平均,如果要考虑非等权,函数输入参数中需加上权重参数。Monte-Garch1def VaR_Monte_NGarch(num,p,sigma_first,ndays,omega,alpha,beta,theta):2 np.random.seed(4)3 MC = num4 sigma2_Garch = sigma_first5 data_MC = pd.DataFrame(index = range(MC))6 data_R = pd.DataFrame(index = range(MC))7 data_MC['z_day1'] = np.random.normal(size = (10000,1))8 data_R['R_day1'] = sigma2_Garch**0.5 * data_MC['z_day1']9 data_MC['sigma2_day1'] = omega + alpha*(data_R['R_day1'] - theta*sigma2_Garch**0.5)**2 + beta*sigma2_Garch1011 # 低2-10天公式一样,循环12 for i in range(2,ndays +1):13 exec("data_MC['z_day" + str(i) + "'] = np.random.normal(size = (10000,1))")14 exec("data_R['R_day" + str(i) + "'] = data_MC['sigma2_day" + str(i-1) + "']**0.5 * data_MC['z_day" + str(i) + "']")15 exec("data_MC['sigma2_day" + str(i) + "'] = omega + alpha*(data_R['R_day" + str(i) + "'] - theta*data_MC['sigma2_day" + \ str(i -1) + "']**0.5)**2 + beta*data_MC['sigma2_day" + str(i-1) + "']")16 VaR = pd.DataFrame(index = range(ndays))17 VaR['ndays'] = np.arange(1,ndays+1)18 VaR['VaR'] = 019 for i in range(ndays):20 R_ndays = data_R.iloc[:,:i+1].sum(axis = 1)21 VaR.loc[i,'VaR'] = - np.percentile(R_ndays,p) 22 return VaRMonte-FHS1def VaR_Monte_FHS(num,p,sigma_first,ndays,omega,alpha,beta,theta):2 np.random.seed(4)3 MC = num4 sigma2_FHS = sigma_first5 data_FHS = pd.DataFrame(index = range(MC))6 data_FHS_R = pd.DataFrame(index = range(MC))7 data_FHS['z_day1'] = data.loc[np.random.randint(0,data.shape[0]-1,MC),'z_Garch'].values8 data_FHS_R['R_day1'] = sigma2_Garch**0.5 * data_FHS['z_day1']9 data_FHS['sigma2_day1'] = omega + alpha*(data_FHS_R['R_day1'] - theta*sigma2_FHS**0.5)**2 + beta*sigma2_FHS1011 # 低2-10天公式一样,循环12 for i in range(2,ndays +1):13 exec("data_FHS['z_day" + str(i) + "'] = data.loc[np.random.randint(0,data.shape[0]-1,MC),'z_Garch'].values")14 exec("data_FHS_R['R_day" + str(i) + "'] = data_FHS['sigma2_day" + str(i-1) + "']**0.5 * data_FHS['z_day" + str(i) + "']")15 exec("data_FHS['sigma2_day" + str(i) + "'] = omega + alpha*(data_FHS_R['R_day" + str(i) + "'] - theta*data_FHS['sigma2_day" + \ str(i -1) + "']**0.5)**2 + beta*data_FHS['sigma2_day" + str(i-1) + "']")1617 VaR = pd.DataFrame(index = range(ndays))18 VaR['ndays'] = np.arange(1,ndays+1)19 VaR['VaR'] = 020 for i in range(ndays):21 R_ndays = data_FHS_R.iloc[:,:i+1].sum(axis = 1)22 VaR.loc[i,'VaR'] = - np.percentile(R_ndays,p) 23 return VaRMonte-DCC-Garch1def getVaR_Monte(n,alpha_DCC,beta_DCC,sigma_first,rho_first,alpha_garch,beta_garch,omega_garch,theta_garch,p):2 MC = 100003 sigma2_Garch = np.dot(np.diag(sigma_first),np.ones([2,MC]))45 np.random.seed(4) 67 VaR = pd.DataFrame(index = range(n))8 VaR['ndays'] = np.arange(1,n+1)9 VaR['VaR'] = 0 10 VaR['rho'] = 011 VaR.loc[0,'rho'] = rho_first121314 # 记录组合的模拟收益15 data_R = pd.DataFrame(index = range(MC))1617 # 模拟组合中各资产的标准化收益率18 z = np.random.normal(0,1,size = (2,MC))19 gamma_half = np.array([[1,0],[VaR.loc[0,'rho'],(1-VaR.loc[0,'rho']**2)**0.5]])20 # 转换为指定相关系数的序列21 z = np.dot(gamma_half,z)2223 # 各资产的真实收益率 = 标准化收益率*波动率24 r = np.multiply(sigma2_Garch**0.5,z)2526 # 两资产等权重,总收益率27 data_R['R_day1'] = np.mean(r,axis = 0)2829 if n==1:3031 R_ndays = data_R.iloc[:,:2].sum(axis = 1)32 VaR.loc[0,'VaR'] = - np.percentile(R_ndays,p) 33 return VaR3435 # 若计算向前多天的VaR,通过DCC,GARCH模型更新参数3637 alpha_garch = np.dot(np.diag(alpha_garch),np.ones([2,MC]))38 beta_garch = np.dot(np.diag(beta_garch),np.ones([2,MC]))39 omega_garch = np.dot(np.diag(omega_garch),np.ones([2,MC]))40 theta_garch = np.dot(np.diag(theta_garch),np.ones([2,MC])) 41 # 波动率更新 - Garch模型42 sigma2_Garch = omega_garch + np.multiply(alpha_garch,(r - np.multiply(theta_garch,sigma2_Garch**0.5)))**2 + np.multiply(beta_garch,sigma2_Garch)4344 # 相关系数更新 - DCC模型45 q11 = pd.DataFrame(index = range(MC))46 q12 = pd.DataFrame(index = range(MC))47 q22 = pd.DataFrame(index = range(MC))48 q11['day1'] = 1 + alpha_DCC*((z[0,]**2)-1) 49 q12['day1'] = VaR.loc[0,'rho'] + alpha_DCC*(z[0,]*z[1,]- VaR.loc[0,'rho']) + beta_DCC*(VaR.loc[0,'rho'] - VaR.loc[0,'rho'])50 q22['day1']= 1 + alpha_DCC*((z[1,]**2)-1)5152 VaR.loc[1,'rho'] = np.mean(q12['day1']/((q11['day1']*q22['day1'])**0.5))53 # gamma更新54 gamma_half = np.array([[1,0],[VaR.loc[1,'rho'],(1-VaR.loc[1,'rho']**2)**0.5]])555657 for i in range(2,n):58 # 生成不相关的随机序列,并转换为指定相关系数的随机数59 z = np.random.normal(0,1,size = (2,MC))60 z = np.dot(gamma_half,z)61 r = np.multiply(sigma2_Garch**0.5,z)62 data_R['R_day' + str(i)] = np.mean(r,axis = 0) 6364 sigma2_Garch = omega_garch + np.multiply(alpha_garch,(r - np.multiply(theta_garch,sigma2_Garch**0.5)))**2 + np.multiply(beta_garch,sigma2_Garch)656667 q11['day'+str(i)] = 1 + alpha_DCC*((z[0,]**2)-1) + beta_DCC*(q11['day'+str(i-1)]-1)68 q12['day'+str(i)] = VaR.loc[0,'rho'] + alpha_DCC*(z[0,]*z[1,]- VaR.loc[0,'rho'])+beta_DCC*(q12['day' + str(i-1)] - VaR.loc[0,'rho'])69 q22['day'+str(i)] = 1 + alpha_DCC*((z[1,]**2)-1) + beta_DCC*(q22['day'+str(i-1)]-1)7071 VaR.loc[i,'rho'] = np.mean(q12['day'+str(i)]/((q11['day'+str(i)]*q22['day'+str(i)])**0.5))72 gamma_half = np.array([[1,0],[VaR.loc[i,'rho'],(1-VaR.loc[i,'rho']**2)**0.5]])7374 for i in range(n):75 R_ndays = data_R.iloc[:,:i+1].sum(axis = 1)76 VaR.loc[i,'VaR'] = - np.percentile(R_ndays,p) 7778 return(VaR)

    04

    总结

    写的有点多,总共三个模型,Monte-Garch,Monte-FHS,Monte-DCC-Garch,前两个模型的实证结果与文献结果一致,大可放心,组合的实证文献中没有给出实证结果,是自己算出来的,不保证正确性,不过仅看一日的是和DCC一致的,所以大概率没什么问题,如果觉得有问题,请和我联系,谢谢。

    此外还想说明的一点是,计算未来K日的VaR,K如果取的过大,结果没有多大实际意义,越往后越趋近于平稳,因为在模型迭代过程中,每一天的收益率都是模拟的误差不会变化太多,但是波动率和相关系数的误差会随着预测天数增加逐步增大,所以还是关注比较近的几天比较有意义,比如,可以看一下K=500时,DCC模型得到的相关系数变化情况,不同曲线是分别取不同初始值时的结果,越往后预测相关性越小。

    ulmhfmvkjt.webp

    最后,本文所有的模型依然是在正态性假设下,没有考虑非正态情况,非正态的情况下需要用到copula模型,在下一篇文章中给出。

    参考文献

    Christoffersen, Peter F. Elements of financial risk management. Academic Press, 2011.

    crrckqbnzu.webp

    Python爱好者社区历史文章大合集:

    zckjppzdxn.webp福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

    关注后在公众号内回复“课程”即可获取:

    小编的Python入门免费视频课程!!!

    【最新免费微课】小编的Python快速上手matplotlib可视化库!!!

    崔老师爬虫实战案例免费学习视频。

    陈老师数据分析报告制作免费学习视频。

    玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

    展开全文
  • 通过考虑与测量误差和模型结构误差相关的不确定性,贝叶斯方法参数估计也可用于获得模型参数的置信区间。 然后,将蒙特卡洛模拟应用于模型参数的后验范围,以获取加氢裂化产物每个单独部分的模型输出的95%置信区间...
  • 河流水质参数估计的蒙特卡罗方法。很强大,,专业对口的人可以过来看看。。有相关项目或实践的 也可进来游一下
  • 状态空间模型中实际参数估计

    千次阅读 2020-05-27 19:23:05
    状态空间模型中实际参数估计状态扩增法线性状态空间模型的参数估计利用高斯滤波与平滑的参数估计(非线性模型)基于粒子滤波与平滑的参数估计参数的 Rao-Blackwell 化 (参数估计所有内容) 状态扩增法 线性状态空间...

    参数估计所有内容

    状态扩增法

    将参数扩充为状态的一部分,例如有一个含有未知参数 θ \bm{\theta} θ 的非线性模型为:
    在这里插入图片描述上述模型可以表述为:
    在这里插入图片描述两个参数的动态模型是一致的,重新定义状态为: x ~ = ( x k , θ k ) \bm{\tilde{x}=(x_k,\theta_k)} x~=(xk,θk),则状态空间模型变为:
    在这里插入图片描述
    此时,模型中不含任何未知参数。状态扩增法在整个系统为线性时,可取得良好的效果。

    线性状态空间模型的参数估计

    假设一个含有未知参数 θ \bm{\theta} θ 的线性高斯状态空间模型为:
    在这里插入图片描述其中,在这里插入图片描述
    线性高斯模型的能量函数:
    能量函数的递归表达式:
    在这里插入图片描述式中, v k ( θ ) , S k ( θ ) \bm{v_k(\theta),S_k(\theta)} vk(θ),Sk(θ) 由只含 θ \bm{\theta} θ 的卡尔曼滤波器给出。
    卡尔曼滤波预测过程:
    在这里插入图片描述卡尔曼滤波更新过程:
    在这里插入图片描述
    因此,若已知 θ \bm{\theta} θ,先计算 k = 0 \bm{k=0} k=0 时刻的值 φ T = − l o g p ( θ ) \bm{\varphi_T=-logp(\theta)} φT=logp(θ),在依次执行上述算法直到 k = T \bm{k=T} k=T,可得全局能量函数 φ T ( θ ) \bm{\varphi_T(\theta)} φT(θ)
    已知能量函数后,可用基于Metropolis-Hastings的MCMC采样,产生后验分布的蒙特卡洛逼近等,得到参数等MAP或ML估计。

    计算线性高斯模型中的 Q \bm{\mathcal{Q}} Q
    如上诉所示的线性高斯模型, Q \bm{\mathcal{Q}} Q 的表达式为:
    在这里插入图片描述式中,所设计的参数由以 θ ( n ) \bm{\theta^{(n)}} θ(n) 为参数的 R T S \bm{RTS} RTS 平滑器 给出:
    在这里插入图片描述
    EM 算法对线性空间模型有效。

    通过分别求:
    在这里插入图片描述上式中各个元素的偏导数 ∂ Q ( θ , θ ( n ) ) / ∂ θ \bm{\partial\mathcal{Q}(\theta,\theta^{(n)})/\partial\theta} Q(θ,θ(n))/θ,并分别令其为0,可得如下定理:

    线性参数模型参数 Q \bm{\mathcal{Q}} Q 的极大化:
    当参数选自模型参数:
    在这里插入图片描述时, θ ∗ \bm{\theta^{*}} θ 的极大值为:
    在这里插入图片描述可由下式计算得到:
    在这里插入图片描述
    最终,得到关于初始均值 θ = m 0 \bm{\theta=m_0} θ=m0 的极大值为:
    在这里插入图片描述

    线性状态空间模型的EM算法
    θ \bm{\theta} θ 包含模型参数 { A , H , Q , R , P 0 , M 0 } \bm\{{A,H,Q,R,P_0,M_0\}} {A,H,Q,R,P0,M0} 的部分子集,利用下述步骤,可获得参数的极大似然估计值。
    首先,假设初始参数为值 θ ( 0 ) \bm{\theta^{(0)}} θ(0)
    对于 n = 0 , 1 , 2 , ⋅ ⋅ ⋅ \bm{n=0,1,2,\cdot\cdot\cdot} n=0,1,2, 执行如下步骤:
    1). E \bm{E} E 步骤:
    利用 θ ( n ) \bm{\theta^{(n)}} θ(n) 中当前的参数值进行 R T S \bm{RTS} RTS 平滑器解算,并结合平滑结果计算下式:
    在这里插入图片描述
    也就是上上一个定理线性高斯模型中的Q中的式子。
    2). M \bm{M} M 步骤:
    结合上一个定理:线性模型参数 Q \bm{\mathcal{Q}} Q 的极大化中的式子,计算新的参数,并将其储存在 θ ( n + 1 ) \bm{\theta^{(n+1)}} θ(n+1) 中。

    Q ( θ , θ ( n ) ) \bm{\mathcal{Q(\theta,\theta^{(n)})}} Q(θ,θ(n)) 的表达式也提供了一种简单的梯度计算方法,利用 F i s h e r \bm{Fisher} Fisher 恒定式计算能量函数的梯度。
    F i s h e r \bm{Fisher} Fisher 恒定式:
    在这里插入图片描述

    利用高斯滤波与平滑的参数估计(非线性模型)

    在非线性模型中,可以用相应的非线性卡尔曼滤波器及 R T S \bm{RTS} RTS 平滑器进行参数估计。
    考虑下述模型的参数估计问题:
    在这里插入图片描述式中,在这里插入图片描述
    此时,能量函数可由下述基于高斯滤波的算法得到。

    基于高斯滤波的能量函数:
    能量函数逼近的迭代表达式为:
    在这里插入图片描述式中, v k ( θ ) , S k ( θ ) \bm{v_k(\theta),S_k(\theta)} vk(θ),Sk(θ) 由只含 θ \bm{\theta} θ 的高斯滤波器给出。
    高斯滤波预测过程:
    在这里插入图片描述
    高斯滤波更新过程:
    在这里插入图片描述
    上述的能量函数可直接应用于MCMC采样
    当然,还有其他如计算ML或MAP估计中的无梯度最优化。

    为计算 E M \bm{EM} EM 算法中所需要的期望值,可用高斯假设密度逼近法(如时矩匹配)对下式进行积分逼近:
    在这里插入图片描述式中,
    在这里插入图片描述
    积分逼近得到的 Q \bm{\mathcal{Q}} Q 表达式如下:
    即:利用高斯平滑计算 Q \bm{\mathcal{Q}} Q:
    对本节中的非线性状态空间模型, Q \bm{\mathcal{Q}} Q 表达式如下:
    在这里插入图片描述式中的期望值由高斯平滑器得到。
    实际中,高斯平滑器和高斯积分可由: E K F / E R T S S \bm{EKF/ERTSS} EKF/ERTSS,或 s i g m a \bm{sigma} sigma 点方法 进行逼近。 s i g m a \bm{sigma} sigma 点方法包括:Gauss-Hermite或球面容积积分,以及无迹变换等计算。
    也可用上一节中线性模型极大化的方法:对于噪声协方差 Q \bm{\mathcal{Q}} Q 的极值表示为:
    在这里插入图片描述
    对于其他参数的 M \bm{M} M 步骤实现,需依据实际的 f , h \bm{f,h} f,h 而定。若是线性的,可用上述类似方法。
    若为非线性, F i s h e r \bm{Fisher} Fisher 恒等式给出一种计算能量函数的方法。

    基于粒子滤波与平滑的参数估计

    粒子滤波也可用于逼近参数估计中的边缘似然函数及能量函数的计算,在粒子滤波中,考虑的一般模型为:
    在这里插入图片描述
    式中, θ ∈ R d \bm{\theta \in \mathbb{R}^d} θRd 为未知参数。

    算法:基于能量函数逼近的 S I R \bm{SIR} SIR:
    参数边缘似然的逼近可以在执行**序列重要性采样(SIR)**算法(粒子滤波)中进行计算,
    具体步骤为:
    先从先验信息中抽取 N \bm{N} N 个采样点 x 0 ( i ) \bm{x_0^{(i)}} x0(i),即有:
    在这里插入图片描述并令 w 0 ( i ) = 1 / N , a n d i = 1 , ⋅ ⋅ ⋅ , N \bm{w_0^{(i)}=1/N}, and i=1,\cdot\cdot\cdot,N w0(i)=1/N,andi=1,,N
    对于每个 k = 1 , ⋅ ⋅ ⋅ , T \bm{k=1,\cdot\cdot\cdot,T} k=1,,T,执行如下操作:
    1). 从重要性分布中抽取采样 x k ( i ) \bm{x_k^{(i)}} xk(i),即有:
    在这里插入图片描述2). 计算权值:
    在这里插入图片描述并计算 p ( y k ∣ y 1 : k − 1 , θ ) \bm{p(y_k|y_{1:k-1},\theta)} p(yky1:k1,θ) 的估计值:
    在这里插入图片描述3). 计算归一化权值:
    在这里插入图片描述4). 若有效粒子数过少,则执行重采样

    参数边缘似然的逼近值为:
    在这里插入图片描述相应的能量函数逼近值为:
    在这里插入图片描述
    能量函数逼近可在执行 S I R \bm{SIR} SIR 算法时进行递归解算。

    E M \bm{EM} EM 算法可由粒子平滑实现。 Q \bm{\mathcal{Q}} Q 逼近的实际表达式根据具体选用的粒子平滑器而定。若选用后向平滑器,可得以下算法:

    算法:利用后向平滑器计算 Q \bm{\mathcal{Q}} Q
    设已知模拟轨迹:在这里插入图片描述
    并利用后向平滑器,参数为 θ ( n ) \bm{\theta^{(n)}} θ(n),并利用下式
    在这里插入图片描述可得上述 Q \bm{\mathcal{Q}} Q 式为:
    在这里插入图片描述
    若选用重新加权粒子平滑器,可得如下算法:

    算法: 利用重新(调整)加权粒子平滑器计算 Q \bm{\mathcal{Q}} Q;
    设粒子集为 { x k ( i ) , k = 0 , ⋅ ⋅ ⋅ T , i = 1 , ⋅ ⋅ ⋅ N } \bm{\{x_k^{(i)},k=0,\cdot\cdot\cdot T, i=1,\cdot\cdot\cdot N\}} {xk(i),k=0,T,i=1,N},并利用重新加权粒子平滑器计算权值 { w k ∣ T ( i ) , k = 0 , ⋅ ⋅ ⋅ T , i = 1 , ⋅ ⋅ ⋅ N } \bm{\{w_{k|T}^{(i)},k=0,\cdot\cdot\cdot T, i=1,\cdot\cdot\cdot N\}} {wkT(i),k=0,T,i=1,N},并利用下式
    在这里插入图片描述可得上述 Q \bm{\mathcal{Q}} Q 式为:
    在这里插入图片描述可利用 F i s h e r \bm{Fisher} Fisher 特性计算能量函数梯度的逼近值。

    参数的 Rao-Blackwell 化

    利用Rao-Blackwell化方法可以边缘化状态空间模型中的静态参数。有下面的普通摆模型介绍:
    设有:
    在这里插入图片描述式中,
    在这里插入图片描述量测噪声 R \bm{R} R 的方差未知,只给出 R \bm{R} R 的逆 c h i \bm{chi} chi 平方先验分布。
    获取 R \bm{R} R 分布参数步骤为:
    1). 设此前产生的粒子群为 { w k ( i ) , w 0 : k ( i ) , i = 1 , ⋅ ⋅ ⋅ , N } \bm{\{w_k^{(i)},w_{0:k}^{(i)},i=1,\cdot\cdot\cdot,N\}} {wk(i),w0:k(i),i=1,,N} 该粒子群逼近的状态完全分布为:
    在这里插入图片描述结合给定的量测值以及采样状态信息时, R \bm{R} R 的条件分布为:
    在这里插入图片描述由此,关于状态及参数的完全分布为:
    在这里插入图片描述2). 对重要性分布进行采样:
    在这里插入图片描述3). 结合 x k ( i ) \bm{x_k^{(i)}} xk(i) 和此前的量测量,可得当前量测量的似然为:
    在这里插入图片描述式中, s t u d e n t \bm{student} student t \bm{t} t 分布参数为:
    在这里插入图片描述由此,可以计算出 S I R \bm{SIR} SIR 算法中,下一步的重要性权值,进而可计算有效粒子数,并判断是否需要进行重采样:
    在这里插入图片描述4). 结合量测量 y 1 : k \bm{y_{1:k}} y1:k 及状态量 x 0 : k ( i ) \bm{x_{0:k}^{(i)}} x0:k(i),可进一步计算出 R \bm{R} R 的条件分布:
    在这里插入图片描述5). 令 k ← k + 1 \bm{k\leftarrow k+1} kk+1,跳至步骤 1)。

    上述的方法就是 Rao-Blackwell粒子滤波器,其中静态参数 R \bm{R} R 已被边缘化,并通过对 v k ( i ) , R K ( i ) \bm{v_k^{(i)},R_K^{(i)}} vk(i),RK(i) 充分统计,结合过去粒子 x 0 : k ( i ) \bm{x_{0:k}^{(i)}} x0:k(i) 和量测量得到。

    展开全文
  • 参数估计的python实现

    2019-12-30 06:48:27
    参数估计 统计学有两大主要分支,分别是描述性统计学和推断统计学。描述性统计学用于描述和概括数据的特征以及绘制各类统计图表。总体数据,往往因为数据量太大而难以被获取,所以就有了通过较小的样本数据推测总体...
  • 对含有MA(3)误差项的面板数据模型,应用半参数计量经济学理论,在相关假设基础上推导出半参数估计方法,并根据蒙特卡洛模拟对这种方法进行实证检验,结果证明这种半参数估计方法是可行的,并且相对参数估计方法(最小二乘...
  • 该文将马尔可夫链蒙特卡洛 (Markov chain MonteCarlo, MCMC)方法和均值似然估计相结合,利用离散调频图(chirpogram)作为起始点的选择方法,提出了一种实现单分量 chirp信号最大似然参数估计的新方法。仿真和分析表明...
  • 蒙特卡洛原理

    千次阅读 2020-12-21 23:01:28
    蒙特卡洛方法的基本原理是,事件的概率可以用大量试验中发生的频率来估计,当样本容量足够大可以认为该事件的发生频率即为其概率.因此,可以先对影响其可靠度的随机变量进行大量的随机抽样,然后把这些抽样值一组一...
  • 3.3 贝叶斯估计估计和极大似然估计方法的优点是比较客观客观,基本由随机采样数据决定。缺点是需要在大样本情况下估计才比较准确。不能把人类知识用于估计。例如,某公司研发新产品,需要估计合格率,这是典型的...
  • 蒙特卡洛模拟

    2012-01-02 13:18:02
    蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。具体的,当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性...
  • 文章目录Zero.写作动机一、模型原理二、编程实现Notice. ...网络上关于蒙特卡洛方法几乎清一色都是在介绍Buffon实验并以此估计某个量。这里,我们介绍蒙特卡洛树用于参数寻优。 一、模型原理 下面推荐几个博客,这些...
  • 注:本文以简单的案例,解释了最大似然估计、最大后验估计以及贝叶斯参数估计的联系和区别。假如你有一个硬币。你把它投掷 3 次,出现了 3 次正面。下一次投掷硬币正面朝上的概率是多少? 这是一个从数据中估计参数的...
  • 蒙特卡洛方法

    万次阅读 多人点赞 2018-02-01 21:30:38
    蒙特卡洛方法(Monte Carlo method,也有翻译成“蒙特卡罗方法”)是以概率和统计的理论、方法为基础的一种数值计算方法,将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解,...
  • 蒙特卡洛模型

    2021-07-17 11:50:57
    蒙特卡洛模型一、蒙特卡洛模拟1. 蒲丰投针试验相交概率的证明蒲丰投针求π\piπ编程实现(MATLAB)2.蒙特卡洛模拟概述 一、蒙特卡洛模拟 1. 蒲丰投针试验  18世纪,法国数学家蒲丰 (buffon,另译“布丰”) 最早设计...
  • 蒙特卡洛There ain’t no such thing as a free lunch, at least according to the popular adage. Well, not anymore! Not when it comes to neural networks, that is to say. Read on to see how to improve your...
  • 为缩短固体电介质寿命试验的时间和使试验切实可行,研究了分组截尾样本及这种情况下指数分布参数估计方法。应用蒙特卡洛方法进行了模拟试验,以分析所需试样数、所得统计特征值的误差、试验时间及试样消耗等。进行...
  • 用于贝叶斯参数估计的伪边际MCMC算法的MATLAB示例。 我们实施(*)粒子边缘MCMC算法(Andrieu和Roberts 2009),对非线性状态空间模型的参数执行精确的贝叶斯推断。 Andrieu和Roberts显着证明(另见Beaumont 2003)...
  • 它的关键特征是使用数值优化方法的可靠,有效的模型校准和参数估计技术,以及对测量和模型不确定性的评估。 为此,提供了各种方法。 实验数据的测量噪声既可以明确提供,也可以与模型动力学同时进行估算。 对于后一...
  • 参数估计 统计学有两大主要分支,分别是描述性统计学和推断统计学。描述性统计学用于描述和概括数据的特征以及绘制各类统计图表。总体数据,往往因为数据量太大而难以被获取,所以就有了通过较小的样本数据推测总体...
  • 是一种非参数蒙特卡洛方法,其实质是对观测信息进行再抽样,进而对总体的分布特性进行统计推断。其核心思想和基本步骤如下: 采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样。 ...
  • 参数随机边界模型会产生企业水平的效率低下的条件分布,该分布被截断为正态。 在这些分布情况下,应该如何评估和评价公司一级的效率? 这项研究比较了估算a)效率低下的条件均值和b)企业最有效率或效率最低的概率的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,535
精华内容 1,414
关键字:

蒙特卡洛参数估计