Turing.jl:Julia语言中的概率编程系统及其在生命科学建模中的应用与进展

《ACM Transactions on Probabilistic Machine Learning》:Turing.jl: A General-Purpose Probabilistic Programming Language

【字体: 时间:2025年11月07日 来源:ACM Transactions on Probabilistic Machine Learning

编辑推荐:

  这篇综述系统介绍了基于Julia语言开发的概率编程系统Turing.jl,详细阐述了其核心架构(DynamicPPL.jl建模语言和AbstractMCMC.jl推理接口)、创新特性(非侵入式模型声明、上下文评估系统)以及在流行病学(SIR模型)、金融(MS-GARCH模型)等领域的应用。文章重点展示了该系统如何通过自动微分(AD)、哈密尔顿蒙特卡洛(HMC)等先进算法实现高效贝叶斯推断,并强调了其与Julia生态(DifferentialEquations.jl、Distributions.jl)的无缝集成优势。

  

Turing.jl的概率编程范式与架构设计

Turing.jl作为Julia语言生态中的概率编程语言(Probabilistic Programming Language, PPL),其核心设计理念是通过声明式语法将概率模型规范与推断算法实现分离。该系统采用@model宏实现非侵入式模型定义,用户只需编写标准的Julia函数即可描述生成过程。例如线性回归模型可通过y ~ Normal(x' * β + γ, σ)语句直观表达,其背后通过DynamicPPL.jl将~操作符转换为assume(假设)、observe(观测)或fix(固定)三种指令,分别对应先验分布、似然函数和确定性变量操作。
系统的上下文评估机制支持多模式运行:在采样模式下执行随机变量采样,在概率计算模式下累积对数概率密度。这种灵活性使得同一模型可适配哈密尔顿蒙特卡洛(Hamiltonian Monte Carlo, HMC)、无回转采样(No-U-Turn Sampler, NUTS)、粒子吉布斯采样等多种推断算法。

高级建模能力与生态集成

Turing.jl支持层次模型和子模型嵌套,例如在流行病学应用中可将时空高斯过程(Spatio-Temporal Gaussian Process)作为子模块嵌入主传输模型。通过return语句可提取模型内部的确定性变量(如基本再生数R0),为后验预测分析提供丰富输出。
该系统与Julia科学计算生态深度集成:
  • 使用Distributions.jl提供200+概率分布
  • 通过DifferentialEquations.jl求解常微分方程(如SIR模型)
  • 利用ForwardDiff.jl/Zygote.jl实现自动微分(Automatic Differentiation, AD)
  • 结合HiddenMarkovModels.jl处理隐马尔可夫模型(Hidden Markov Model, HMM)的边际化

实际应用案例展示

金融波动率建模

采用马尔可夫转换广义自回归条件异方差(MS-GARCH)模型分析标普500指数波动特征。模型包含两个隐状态(高波动/低波动 regime),通过狄利克雷先验控制状态转移概率。利用HiddenMarkovModels.jl对离散状态变量进行边际化处理,使NUTS采样器能高效估计连续参数(波动率ω、α、β参数),成功识别市场波动模式的结构性转变。

传染病动力学推断

基于英国寄宿学校流感疫情数据,构建易感-感染-恢复(Susceptible-Infectious-Recovered, SIR) compartmental模型。通过微分方程求解器计算人群动态,负二项分布处理过离散观测数据。后验分析不仅恢复传播率(β≈1.99)和恢复率(γ≈0.47)参数,还得到基本再生数R0=4.23(95% CI: 3.76–4.75)的精确估计, demonstrating 在复杂动力学系统中的推断能力。

性能优化与类型稳定化

Turing.jl采用双重trace结构设计:类型不稳定模式使用字典式存储(VarName→Any)保证灵活性,类型稳定模式基于NamedTuple实现编译时类型推断。系统通过初始探测运行确定变量类型后,自动切换至高效类型稳定模式,使HMC等梯度方法的计算速度提升10倍以上。
对于自定义推断算法开发者,AbstractMCMC.jl提供标准化接口(init/step方法),支持与LogDensityProblems.jl无缝对接。这种设计使外部采样器(如Pigeons.jl的并行回火算法)可通过externalsampler包装直接集成到Turing生态中。

对比分析与领域定位

相较于Stan(专用DSL+C++编译)、Pyro/PyMC(依赖PyTorch/Theano框架)等PPL,Turing.jl的核心优势体现在:
  1. 1.1.
    原生Julia实现避免两语言问题
  2. 2.2.
    无需计算图编译的即时编译(JIT)优势
  3. 3.3.
    通过多重分派(multiple dispatch)实现算法特化
  4. 4.4.
    支持突变操作和自定义数据结构
在生命科学领域,该系统已成功应用于神经科学(脑网络建模)、系统生物学(基因调控网络推断)、药物开发(药代动力学建模)等场景,为研究者提供兼具表达力与计算效率的概率编程工具。
相关新闻
生物通微信公众号
微信
新浪微博
  • 急聘职位
  • 高薪职位

知名企业招聘

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号