主要内容

哈密顿采样类

Hamiltonian Monte Carlo(HMC)采样器

描述

汉密尔顿蒙特卡罗(HMC)采样器是一种基于梯度的马尔可夫链蒙特卡罗采样器,您可以使用概率密度来生成样本P(x).HMC取样要求规格对数P(x)以及它的梯度。

参数向量x必须是无约束的,这意味着x可以是任何实数。为了采样约束参数,在使用HMC采样器之前,将这些参数转换为无约束变量。

创建采样器后,可以使用此类方法计算MAP(最大后验概率)点估计、调整采样器、绘制样本并检查收敛诊断。有关此工作流的示例,请参阅基于哈密顿蒙特卡罗的贝叶斯线性回归

建设

HMC.= hmcSampler (日志PDF曾经繁荣创建一个汉密尔顿蒙特卡罗(HMC)采样器,返回HamiltonianSampler对象日志PDF是一个函数句柄,用于计算平衡分布及其梯度的概率密度的对数。列向量曾经繁荣是开始HMC抽样的起始点。

HMC.= hmcSampler (___名称,值使用一个或多个名称-值对参数指定其他选项。在所有其他输入参数之后指定名称-值对参数。

输入参数

展开全部

目标密度及其梯度的对数,指定为函数句柄。

日志PDF必须返回两个输出参数:[lpdf, glpdf] = logpdf (X).这里,lpdf基础-E日志概率密度(最多常数),glpdf是对数密度的梯度,和点X是一个列向量,其元素数与曾经繁荣

输入参数X日志PDF必须是无约束的,这意味着X可以是任何实数。在使用HMC采样器之前,将任何受约束的采样参数转换为无约束变量。

如果“UseNumericalGradient”值设置为符合事实的,然后日志PDF不需要返回梯度作为第二个输出。使用数值梯度可以更容易,因为日志PDF不需要计算梯度,但它可以使采样变慢。

数据类型:function_handle

开始采样的起始点,指定为数字列向量。

数据类型:仅有一个的|双倍的

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。名称参数名和价值是对应的值。名称必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:name1,value1,...,namen,valuen

例子:VariableNames,{“拦截”,“Beta”},“MassVectorTuningMethod”、“海赛”指定采样变量名称和要使用的质量向量调整方法“海赛”

哈密顿动力学的步长,指定为逗号分隔对,由“步长”和一个正标量。

为了提出马尔可夫链的新状态,HMC采样器使用蛙跳积分对哈密顿动力学进行积分。此参数控制蛙跳积分的步长。

可以使用自动调整步长tuneSampler

例子:“StepSize”,0.2

哈密顿动力学的步数,指定为逗号分隔对组成“NumSteps”和一个正整数。

为了给出马尔可夫链的一种新的状态,HMC采样器采用跳越式积分的方法集成了哈密顿动力学。这个参数控制跳跃式集成的步骤数。

您可以使用自动调整步骤数tuneSampler

例子:“NumSteps”,20

动量变量的质量矢量,指定为逗号分隔对,由'MassVector'和一个数值列向量,其值为正值,长度与曾经繁荣

在每个马尔可夫链提议中,动量变量与感兴趣变量相关的“质量”控制着哈密顿动力学。

可以使用自动调整质量向量tuneSampler

例子:“质量向量”,兰特(3,1)

用于抖动步长和步数的方法,指定为逗号分隔对,由'jittermethod'以及以下其中之一:

价值 描述
“两个都抖动”

随机抖动每个跳过轨迹的步长和步骤数。

“jitter-numsteps”

抖动只是每个跳跃轨迹的步数。

“没有”

没有抖动。

通过抖动,采样器随机选择步长或每个蛙跳轨迹的步数,作为小于初始值的值“步长”“NumSteps”值。利用抖动来提高哈密顿动力学跳变积分的稳定性。

例子:“JitterMethod”,“jitter-both”

调整采样器步长的方法,指定为包括的逗号分隔对“StepSizeTuningMethod”'双平均'“没有”

如果“StepSizeTuningMethod”值设置为'双平均',然后tuneSampler调整HMC采样器的蛙跳步长,以达到模拟长度固定值的特定接受率。模拟长度等于步长乘以步数。要设置目标接受率,请使用“TargetAcceptanceRatio”的名称-值对参数tuneSampler方法。

例子:“StepSizeTuningMethod”、“没有”

调整采样器质量矢量的方法,指定为包括的逗号分隔对'massvectortuningmethod'和以下值之一

价值 描述
“iterative-sampling”

调优MassVector.通过使用质量向量估计序列绘制样本的连续近似。

“海赛”

设定MassVector.等于负的对角线日志PDF曾经繁荣

“没有”

没有调整MassVector.

要执行调整,请使用tuneSampler方法。

例子:“MassVectorTuningMethod”、“海赛”

用于检查分析梯度的标志,指定为由逗号分隔的对组成'检查机'和任何一种符合事实的(或1)或(或0).

如果'检查机'符合事实的,则采样器计算数值梯度在曾经繁荣并将其与返回的解析梯度进行比较日志PDF

例子:'检查',真实

采样变量名,指定为逗号分隔对,由“变化无常”以及字符向量的字符串数组或单元格数组。数组的元素必须是唯一的。数组的长度必须与数组的长度相同曾经繁荣

提供一个“变化无常”使用HMC采样器标记要素样本的矢量组件的值。

例子:'VariableNames',{'Intercept','Beta'}

使用数值梯度的标志,指定为逗号分隔对组成“UseNumericalGradient”和任何一种符合事实的(或1)或(或0).

如果你设定“UseNumericalGradient”价值符合事实的然后,HMC采样器根据以下公式返回的对数密度数值估计梯度:日志PDF.在这种情况下,日志PDF函数不需要返回日志密度的梯度作为第二个输出。使用数值梯度会使HMC采样变慢。

例子:“UseNumericalGradient”,真的

特性

展开全部

哈密​​顿动态的步长,指定为正标量。

为了给出马尔可夫链的一种新的状态,HMC采样器采用跳越式积分的方法集成了哈密顿动力学。此属性的值控制跳跃式集成的步长。

哈密​​顿动态的步数,指定为正整数。

为了提出马尔可夫链的新状态,HMC采样器使用蛙跳积分来积分哈密顿动力学。此属性的值控制蛙跳集成的步数。

动量变量的质量矢量,指定为具有正值和相同的数字列向量曾经繁荣

在每个马尔可夫链提议中,动量变量与感兴趣变量相关的“质量”控制着哈密顿动力学。

抖动步骤尺寸和步数的方法,指定为以下值之一。

价值 描述
“两个都抖动”

随机抖动每个跳跃轨迹的步长和步数。

“jitter-numsteps”

抖动只是每个跳跃轨迹的步数。

“没有”

没有抖动。

通过抖动,采样器随机选择步长或每个蛙跳轨迹的步数,作为小于初始值的值“步长”“NumSteps”值。利用抖动来提高哈密顿动力学跳变积分的稳定性。

调整采样器步长的方法,具体如下'双平均'“没有”

如果步长调整法等于'双平均',然后tuneSampler调整HMC采样器的蛙跳步长,以达到模拟长度固定值的特定接受率。模拟长度等于步长乘以步数。要设置目标接受率,请使用“TargetAcceptanceRatio”的名称-值对参数tuneSampler方法。

调谐采样器质量矢量的方法,指定为下列值之一。

价值 描述
“iterative-sampling”

调优MassVector.通过使用质量向量估计序列绘制样本的连续近似。

“海赛”

设定MassVector.等于负的对角线日志PDF曾经繁荣

“没有”

没有调整MassVector.

要执行调整,请使用tuneSampler方法。

目标密度及其梯度的对数,指定为函数句柄。

LogPDF返回两个输出参数:[LPDF,GLPDF] = logpdf(x).这里,lpdf是base-e对数概率密度(最大为加性常数)和glpdf这一点的对数密度梯度是多少X.输入参数X必须是具有相同数量元素的列向量起止点财产。

如果你设定“UseNumericalGradient”价值符合事实的当创建采样器时,那么LogPDF返回数值梯度glpdf

开始采样的起始点,指定为数字列向量。

采样变量名称,指定为唯一字符向量的单元格数组。

方法

诊断学 马尔可夫链蒙特卡罗诊断
抽样 使用哈密顿蒙特卡罗(HMC)生成马尔可夫链
estimateMAP 对数概率密度最大值的估计
tuneSampler 调谐哈密顿蒙特卡罗(HMC)采样器

例子

全部折叠

建立一个哈密顿蒙特卡罗(HMC)采样器,从一个正态分布中采样。

首先,保存函数QuancleDistrad.在MATLAB®路径上,返回多元正常日志概率密度及其渐变(QuancleDistrad.在该示例的末尾定义)。然后,调用参数的函数来定义日志PDF将参数输入到HMCSampler.函数。

手段= [1; -3];standevs = [1; 2];logpdf = @(theta)normaldistgrad(θ,意味着,stablevs);

为HMC采样器选择一个起始点。

startpoint = Randn(2,1);

创建HMC采样器并显示其属性。

smp = hmcSampler (logpdf,曾经繁荣);
开关电源
smp = HamiltonianSampler with properties: StepSize: 0.1000 NumSteps: 50 MassVector: [2x1 double] JitterMethod: 'jitter-both' StepSizeTuningMethod: 'dual-averaging' MassVectorTuningMethod: ' iter- sampling' LogPDF: @(theta)normalDistGrad(theta,means,standevs) VariableNames: {2x1 cell} StartPoint: [2x1 double]

QuancleDistrad.函数返回均值为in的多元正态概率密度的对数和标准偏差Sigma.,指定为与相同长度的标量或列向量曾经繁荣.第二个输出参数是相应的渐变。

作用[lpdf,glpdf]=normalDistGrad(X,Mu,Sigma)Z=(X-Mu)。/Sigma;lpdf=sum(-log(Sigma)-.5*log(2*pi)-.5*(Z.^2));glpdf=-Z./Sigma;结束
介绍了R2017a