MCP HubMCP Hub
스킬 목록으로 돌아가기

simulate-stochastic-process

pjt222
업데이트됨 Yesterday
6 조회
17
2
17
GitHub에서 보기
기타general

정보

이 스킬은 마르코프 체인, 랜덤 워크, 확률미분방정식(SDE), 수렴 진단 및 시각화 기능을 갖춘 MCMC를 포함한 확률적 과정을 시뮬레이션합니다. 해석적 해를 구할 수 없을 때, 수렴 보장이 필요한 몬테카를로 추정을 수행할 때, 또는 복잡한 사후 분포로부터 샘플링이 필요할 때 유용합니다. 개발자는 이를 통해 추정, 예측 또는 해석적 결과와의 검증을 위한 샘플 경로를 생성할 수 있습니다.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/simulate-stochastic-process

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

随机过程模拟

模拟随机过程的样本路径——包括离散马尔可夫链、连续时间过程、随机微分方程和 MCMC 采样器——并进行收敛诊断、方差缩减技术和轨迹可视化。

适用场景

  • 需要从随机过程生成用于估计、预测或可视化的样本路径
  • 解析解不可得,模拟是唯一可行的方法
  • 正在运行蒙特卡洛估计,需要收敛保证和不确定性量化
  • 想要对比解析结果(平稳分布、命中时间)与经验模拟进行验证
  • 需要使用 MCMC 从复杂后验分布中采样
  • 在承诺进行完整解析处理之前对随机模型进行原型验证

输入

必需

输入类型描述
process_typestring过程类型:"dtmc""ctmc""random_walk""brownian_motion""sde""mcmc"
parametersdict过程特定参数(转移矩阵、漂移/扩散系数、目标密度等)
n_pathsinteger独立样本路径数量
n_stepsinteger每条路径的时间步数(或 MCMC 总迭代数)

可选

输入类型默认值描述
initial_statescalar/vector过程特定每条路径的起始状态或分布
dtfloat0.01连续时间离散化的时间步长
seedintegerrandom用于可重复性的随机种子
burn_inintegern_steps / 10要丢弃的初始步数(MCMC)
thinninginteger1保留每第 k 个样本以减少自相关
variance_reductionstring"none"方法:"none""antithetic""stratified""control_variate"
target_functioncallablenone沿路径评估的用于蒙特卡洛估计的函数

步骤

第 1 步:定义过程模型和参数

1.1. 识别过程类型并收集所有必需参数:

  • DTMC:转移矩阵 P 和状态空间。验证 P 是行随机的。
  • CTMC:速率矩阵 Q。验证行和为 0 且非对角线元素非负。
  • 随机游走:步长分布(例如 {-1, +1} 等概率),边界(如有)。
  • 布朗运动:漂移 mu,波动率 sigma,维度 d
  • SDE(伊藤):漂移函数 a(x,t),扩散函数 b(x,t)
  • MCMC:目标对数密度,提议机制(随机游走 Metropolis、Hamilton、Gibbs 分量)。

1.2. 验证参数一致性:

  • 矩阵维度与状态空间大小匹配。
  • SDE 系数满足增长和 Lipschitz 条件(至少非正式地)以适应所选求解器。
  • MCMC 提议在目标分布的支撑上有良好定义。

1.3. 设置随机种子以确保可重复性。

预期结果: 一个完全指定的随机模型,参数已验证,随机状态可重复。

失败处理: 如果参数不一致(例如非随机矩阵),在继续之前修正。如果 SDE 系数具有病理性,考虑使用不同的离散化方案。

第 2 步:选择模拟方法

2.1. 根据过程类型选择适当的算法:

过程方法关键性质
DTMC从转移行直接采样精确
CTMCGillespie 算法 (SSA)精确,事件驱动
CTMC(近似)Tau-leaping近似,高速率时更快
随机游走直接采样增量精确
布朗运动高斯增量的累积和固定 dt 时精确
SDE(一般)Euler-Maruyama强收敛 0.5 阶,弱收敛 1.0 阶
SDE(高阶)Milstein强收敛 1.0 阶(标量噪声)
SDE(刚性)隐式 Euler-Maruyama刚性漂移稳定
MCMC(一般)Metropolis-Hastings渐近精确
MCMC(梯度)Hamilton 蒙特卡洛 (HMC)高维混合更好
MCMC(条件)Gibbs 采样器条件分布可得时精确

2.2. 对于 SDE 方法,选择足够小的 dt 以确保数值稳定性。一个有用的启发式方法:从 dt = 0.01 开始,减半直到结果稳定。

2.3. 对于 MCMC,调整提议尺度以达到大约以下接受率:

  • 高维随机游走 Metropolis:23.4%
  • 一维目标:57.4%
  • HMC:65-90%(取决于轨迹长度)

2.4. 如果请求方差缩减,进行配置:

  • 对偶变量:对于每条具有随机增量 Z 的路径,同时模拟 -Z
  • 分层采样:将概率空间分区并在每层中采样。
  • 控制变量:识别一个具有已知期望的相关量以减少方差。

预期结果: 选定的模拟算法匹配过程类型,具有适当的调参。

失败处理: 如果所选方法不稳定(例如 Euler-Maruyama 发散),切换到隐式方法或减小 dt

第 3 步:实现并运行模拟

3.1. 为 n_paths 条轨迹分配存储,每条长度为 n_steps(或对事件驱动方法如 Gillespie 动态分配)。

3.2. 对每条路径 i = 1, ..., n_paths

DTMC / 随机游走:

  • 设置 x[0] = initial_state
  • t = 1, ..., n_steps:根据 x[t-1] 从转移分布中采样 x[t]

CTMC (Gillespie):

  • 设置 x[0] = initial_statetime = 0
  • time < T_max 时:
    • 计算总速率 lambda = -Q[x, x]
    • 采样停留时间 tau ~ Exp(lambda)
    • 从转移概率 Q[x, j] / lambdaj != x)采样下一状态
    • 更新 time += tau,记录转移

SDE (Euler-Maruyama):

  • 设置 x[0] = initial_state
  • t = 1, ..., n_steps
    • dW = sqrt(dt) * N(0, I)(Wiener 增量)
    • x[t] = x[t-1] + a(x[t-1], t*dt) * dt + b(x[t-1], t*dt) * dW

MCMC (Metropolis-Hastings):

  • 设置 x[0] = initial_state
  • t = 1, ..., n_steps
    • 提议 x' ~ q(x' | x[t-1])
    • 计算接受率 alpha = min(1, p(x') * q(x[t-1]|x') / (p(x[t-1]) * q(x'|x[t-1])))
    • 以概率 alpha 接受:如果接受则 x[t] = x',否则 x[t] = x[t-1]
    • 记录接受决策

3.3. 如果提供了 target_function,在每条路径的每个状态上评估它并存储结果。

3.4. 应用稀疏化:保留每第 thinning 个样本。

3.5. 丢弃每条路径开头的 burn_in 个样本(主要用于 MCMC)。

预期结果: n_paths 条完整轨迹存储在内存中,带有可选的函数评估。MCMC 接受率在目标范围内。

失败处理: 如果模拟产生 NaN 或 Inf 值,对 SDE 方法减小 dt 或检查参数有效性。如果 MCMC 接受率接近 0% 或 100%,调整提议尺度。

第 4 步:应用收敛诊断

4.1. 轨迹图:为路径子集绘制每个分量随时间的值。对平稳性进行目视检查(无趋势、方差稳定)。

4.2. Gelman-Rubin 诊断 (R-hat):对于多链 MCMC:

  • 计算链内方差 W 和链间方差 B
  • R_hat = sqrt((n-1)/n + B/(n*W))
  • R_hat < 1.01(严格)或 R_hat < 1.1(宽松)表示收敛。

4.3. 有效样本量 (ESS)

  • 估计递增滞后处的自相关。
  • ESS = n_samples / (1 + 2 * sum(autocorrelations))
  • 经验法则:ESS > 400 用于可靠的后验总结。

4.4. Geweke 诊断:比较每条链前 10% 和后 50% 的均值。z 分数应在 [-2, 2] 范围内表示收敛。

4.5. 非 MCMC 过程:验证时间平均统计量(均值、方差)随路径长度增加而稳定。绘制运行平均值。

4.6. 报告汇总表:

诊断指标阈值状态
R-hat(最大)...< 1.01...
ESS(最小)...> 400...
Geweke z(最大绝对值)...< 2.0...
接受率...0.15-0.50...

预期结果: 所有收敛诊断通过其阈值。轨迹图显示稳定、良好混合的链。

失败处理: 如果 R-hat > 1.1,运行更长的链或改进提议。如果 ESS 非常低,增加稀疏化或切换到更好的采样器(例如 HMC)。如果 Geweke 失败,延长预热期。

第 5 步:计算带置信区间的汇总统计量

5.1. 对每个感兴趣的量(状态占用、函数期望、命中时间):

  • 计算点估计为路径间的样本均值(预热和稀疏化之后)。
  • 使用有效样本量计算标准误:SE = SD / sqrt(ESS)

5.2. 构造置信区间:

  • 正态近似:estimate +/- z_{alpha/2} * SE
  • 对偏斜分布,使用百分位 bootstrap 或批次均值。

5.3. 如果应用了方差缩减,计算方差缩减因子:

  • VRF = Var(朴素估计量) / Var(缩减估计量)
  • 报告有效加速比。

5.4. 对蒙特卡洛积分估计:

  • 报告估计值、标准误、95% CI、ESS 和函数评估次数。

5.5. 对分布估计:

  • 计算经验分位数(中位数、2.5 百分位、97.5 百分位)。
  • 连续量的核密度估计。

5.6. 将所有汇总统计量及其不确定性制表。

预期结果: 点估计及其标准误和置信区间。方差缩减(如已应用)产生 VRF > 1。

失败处理: 如果置信区间太宽,增加 n_pathsn_steps。如果方差缩减恶化了估计(VRF < 1),禁用它——控制变量或对偶方案可能不适合该问题。

第 6 步:可视化轨迹和分布

6.1. 轨迹图:绘制样本路径的代表性子集(5-20 条路径)随时间的变化。使用透明度处理重叠路径。

6.2. 集合统计:叠加所有路径的平均轨迹和逐点 95% 置信带。

6.3. 边际分布:在选定的时间点,绘制跨路径的状态分布直方图或密度估计。

6.4. 平稳分布比较:如果有解析平稳分布可用,将其叠加在最终时间切片的经验直方图上。

6.5. 自相关图:对 MCMC,绘制每个分量到合理滞后的自相关函数 (ACF)。

6.6. 诊断仪表板:将轨迹图、ACF 图、运行均值图和边际密度组合成单一多面板图形,进行综合评估。

6.7. 将所有图形保存为矢量格式(PDF/SVG)和光栅格式(PNG),用于文档记录。

预期结果: 出版质量的图形,展示轨迹行为、分布收敛和诊断摘要。解析解(如可用)与经验结果匹配。

失败处理: 如果可视化揭示了模型未预期的非平稳性或多模态,回到第 1-2 步检查参数或方法错误。如果图形杂乱,减少显示的路径数量或增加图形尺寸。

验证清单

  • 所有模拟轨迹保持在有效状态空间内(无越界值、无 NaN/Inf)
  • 对 DTMC/CTMC:经验平稳分布收敛到解析分布(在预期蒙特卡洛误差范围内)
  • 对 SDE:将 dt 减半不会定性地改变结果(收敛阶检查)
  • 对 MCMC:R-hat < 1.01,ESS > 400,Geweke z 分数在 [-2, 2] 范围内
  • 置信区间宽度按 1/sqrt(n_paths) 比例减小(中心极限定理)
  • 方差缩减技术产生 VRF > 1(估计改善而非恶化)
  • 可重复性:使用相同种子重新运行产生相同结果

常见问题

  • MCMC 预热不足:从不良初始状态开始需要长时间预热,样本才能代表目标分布。始终检查轨迹图并使用收敛诊断,而不是猜测预热长度
  • 刚性 SDE 的 Euler-Maruyama 不稳定性:如果漂移项有大梯度,显式 Euler-Maruyama 可能发散。切换到隐式方法或使用自适应步长
  • 混淆 SDE 的强收敛和弱收敛:强收敛衡量逐路径误差(对单个轨迹重要);弱收敛衡量分布误差(对期望足够)。Euler-Maruyama 弱阶 1.0 但强阶 0.5
  • 伪随机数生成器质量:对于非常长的模拟,低质量 RNG 可能产生相关样本。使用经过良好测试的生成器(Mersenne Twister、PCG 或 Xoshiro)并验证独立性
  • 忽略 MCMC 中的自相关:将自相关的 MCMC 样本视为独立会低估不确定性。始终使用有效样本量而非原始样本数来计算标准误
  • 非单调函数的对偶变量:对偶采样仅在估计量是底层均匀分布的单调函数时减少方差。对非单调函数,它可能增加方差
  • 大规模模拟的内存:存储许多长路径的所有时间步可能耗尽内存。当不需要完整轨迹用于可视化时,使用在线统计(运行均值、方差)

相关技能

GitHub 저장소

pjt222/agent-almanac
경로: i18n/zh-CN/skills/simulate-stochastic-process
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

llamaguard

기타

LlamaGuard는 폭력 및 혐오 발언 등 6가지 안전 범주에서 LLM 입력과 출력을 조정하기 위한 Meta의 70-80억 파라미터 모델입니다. 94-95% 정확도를 제공하며 vLLM, Hugging Face 또는 Amazon SageMaker를 사용해 배포할 수 있습니다. 이 기술을 사용하여 AI 애플리케이션에 콘텐츠 필터링 및 안전 가드레일을 손쉽게 통합하세요.

스킬 보기

cost-optimization

기타

이 Claude Skill은 리소스 적정화, 태깅 전략, 지출 분석을 통해 개발자들이 클라우드 비용을 최적화할 수 있도록 지원합니다. AWS, Azure, GCP에서 클라우드 비용을 절감하고 비용 거버넌스를 구현하기 위한 프레임워크를 제공합니다. 인프라 비용을 분석하거나, 리소스를 적정화하거나, 예산 제약을 충족해야 할 때 사용하세요.

스킬 보기

quantizing-models-bitsandbytes

기타

이 스킬은 bitsandbytes를 사용하여 LLM을 8비트 또는 4비트 정밀도로 양자화하며, 최소한의 정확도 손실로 50-75%의 메모리 감소를 달성합니다. 제한된 GPU 메모리에서 더 큰 모델을 실행하거나 추론을 가속화하는 데 이상적이며, INT8, NF4, FP4와 같은 형식을 지원합니다. 이 스킬은 HuggingFace Transformers와 통합되어 QLoRA 학습 및 8비트 옵티마이저를 가능하게 합니다.

스킬 보기

dispatching-parallel-agents

기타

이 Claude Skill은 3개 이상의 독립적인 문제를 동시에 조사하고 해결하기 위해 다중 에이전트를 배치합니다. 공유 상태나 의존성 없이 해결 가능한 무관련 장애 시나리오에 맞게 설계되었습니다. 핵심 기능은 병렬 문제 해결로, 각 독립 문제 영역마다 하나의 에이전트를 할당하여 효율성을 극대화합니다.

스킬 보기