Dynamax是一个用JAX编写的概率状态空间模型(SSMs)库。它包含了各种SSMs的推断(状态估计)和学习(参数估计)代码,包括:
该库由一组核心的、功能纯粹的低级推断算法组成,以及一组提供更友好、面向对象接口的模型类组成。它与JAX生态系统中的其他库兼容,如optax(用于使用随机梯度下降估计参数)和Blackjax(用于使用哈密顿蒙特卡洛(HMC)或序贯蒙特卡洛(SMC)计算参数后验)。
有关教程和API文档,请参见:https://probml.github.io/dynamax/。
对于支持结构化时间序列模型的dynamax扩展,请参见https://github.com/probml/sts-jax。
关于如何在bayeux中使用dynamax对SSM参数进行贝叶斯推断的示例,请参见https://jax-ml.github.io/bayeux/examples/dynamax_and_bayeux/。
要从PyPi安装最新版本的dynamax:
pip install dynamax # 安装dynamax和核心依赖项,或 pip install dynamax[notebooks] # 安装演示笔记本依赖项
要安装最新的开发分支:
pip install git+https://github.com/probml/dynamax.git
最后,如果你是开发者,你可以安装dynamax及其测试和文档依赖项:
git clone git@github.com:probml/dynamax.git cd dynamax pip install -e '.[dev]'
运行测试:
pytest dynamax # 运行所有测试 pytest dynamax/hmm/inference_test.py # 运行特定测试 pytest -k lgssm # 运行名称中包含lgssm的测试
状态空间模型或SSM是一个部分观测的马尔可夫模型,其中隐藏状态$z_t$随时间按照马尔可夫过程演变,可能依赖于外部输入/控制/协变量$u_t$,并生成观测$y_t$。这在下面的图形模型中进行了说明。
<p align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/10522c41-7b8f-4662-b1b0-9ce971cdec66.png"> </p>相应的联合分布具有以下形式(在dynamax中,我们仅关注离散时间系统):
$$p(y_{1:T}, z_{1:T} | u_{1:T}) = p(z_1 | u_1) p(y_1 | z_1, u_1) \prod_{t=1}^T p(z_t | z_{t-1}, u_t) p(y_t | z_t, u_t)$$
这里$p(z_t | z_{t-1}, u_t)$被称为转移或动力学模型,$p(y_t | z_{t}, u_t)$被称为观测或发射模型。在这两种情况下,输入$u_t$是可选的;此外,观测模型可能具有自回归依赖性,在这种情况下我们写为$p(y_t | z_{t}, u_t, y_{1:t-1})$。
我们假设我们看到观测值$y_{1:T}$,并希望推断隐藏状态,可以使用在线滤波(即计算$p(z_t|y_{1:t})$)或离线平滑(即计算$p(z_t|y_{1:T})$)。我们可能还对预测未来状态$p(z_{t+h}|y_{1:t})$或未来观测$p(y_{t+h}|y_{1:t})$感兴趣,其中h是预测时间范围。(注意,通过使用隐藏状态来表示过去的观测,该模型可以具有"无限"记忆,不像标准的自回归模型。)所有这些计算都可以使用我们的库高效完成,我们将在下面讨论。此外,我们可以估计转移和发射模型的参数,我们也将在下面讨论。
更多信息可以在这些书籍中找到:
- "机器学习:高级主题",K. Murphy著,MIT出版社2023年。可在https://probml.github.io/pml-book/book2.html获得。
- "贝叶斯滤波和平滑,第二版",S. Särkkä和L. Svensson著,剑桥大学出版社,2023年。可在http://users.aalto.fi/~ssarkka/pub/bfs_book_2023_online.pdf获得。
Dynamax包含许多种SSM的类。你可以使用这些模型来模拟数据,并可以使用标准学习算法如期望最大化(EM)和随机梯度下降(SGD)来拟合模型。下面我们演示了高斯发射的HMM的高级(面向对象)API。(有关此代码的可运行版本,请参见此笔记本。)
import jax.numpy as jnp import jax.random as jr import matplotlib.pyplot as plt from dynamax.hidden_markov_model import GaussianHMM key1, key2, key3 = jr.split(jr.PRNGKey(0), 3) num_states = 3 emission_dim = 2 num_timesteps = 1000 # 创建高斯HMM并从中采样数据 hmm = GaussianHMM(num_states, emission_dim) true_params, _ = hmm.initialize(key1) true_states, emissions = hmm.sample(true_params, key2, num_timesteps) # 创建新的高斯HMM并用EM拟合 params, props = hmm.initialize(key3, method="kmeans", emissions=emissions) params, lls = hmm.fit_em(params, props, emissions, num_iters=20) # 绘制EM迭代过程中的边际对数概率 plt.plot(lls) plt.xlabel("EM迭代次数") plt.ylabel("边际对数概率") # 使用拟合模型进行后验推断 post = hmm.smoother(params, emissions) print(post.smoothed_probs.shape) # (1000, 3)
JAX允许你使用vmap
轻松地向量化这些操作。例如,你可以如下所示对一批发射进行采样和拟合。
from functools import partial from jax import vmap num_seq = 200 batch_true_states, batch_emissions = \ vmap(partial(hmm.sample, true_params, num_timesteps=num_timesteps))( jr.split(key2, num_seq)) print(batch_true_states.shape, batch_emissions.shape) # (200,1000) 和 (200,1000,2) # 创建新的高斯HMM并用EM拟合 params, props = hmm.initialize(key3, method="kmeans", emissions=batch_emissions) params, lls = hmm.fit_em(params, props, batch_emissions, num_iters=20)
这些示例展示了dynamax模型,但我们也可以直接调用低级推断代码。
有关如何贡献的详细信息,请参见此页面。
核心团队:Peter Chang, Giles Harper-Donnelly, Aleyna Kara, Xinglong Li, Scott Linderman, Kevin Murphy。
其他贡献者:Adrien Corenflos, Elizabeth DuPre, Gerardo Duran-Martin, Colin Schlager, Libby Zhang和其他此处列出的人。
MIT许可证。2022年
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性 。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号