awesome-normalizing-flows

GitHub
1.6k 131 非常简单 1 次阅读 5天前MIT开发框架
AI 解读 由 AI 自动生成,仅供参考

awesome-normalizing-flows 是一个专注于“归一化流”(Normalizing Flows)技术的精选资源合集。归一化流是一种强大的统计建模工具,它通过一系列可学习的平滑变换,将简单的概率分布转化为复杂的真实数据分布,从而在保持计算高效的同时实现高精度的密度估计与样本生成。

该资源库主要解决了研究人员和开发者在面对这一前沿领域时,难以系统性获取高质量论文、代码实现及教程的痛点。它精心整理了包括 60 多篇核心学术论文、多个主流框架(如 PyTorch、TensorFlow、JAX)的代码包、开源项目复现以及视频讲解和博客文章,覆盖了从理论基础到分子动力学模拟等实际应用场景的全方位内容。

无论是希望深入理解生成模型原理的 AI 研究人员,还是急需寻找可靠代码库进行项目开发的工程师,awesome-normalizing-flows 都是极佳的入门指南与案头参考。其独特亮点在于不仅提供了丰富的文献列表,还特别关注了如 Boltzmann Generators 等最新前沿进展,并持续维护链接的有效性,帮助用户高效追踪该领域的技术演进,避免在碎片化信息中迷失方向。

使用场景

某生物制药公司的算法团队正致力于利用机器学习加速新药研发,具体任务是通过生成模型模拟复杂分子系统的平衡态分布,以预测未知药物的结合亲和力。

没有 awesome-normalizing-flows 时

  • 文献调研效率低下:团队成员需手动在 arXiv 和谷歌学术中大海捞针,难以系统性地追踪如“可迁移玻尔兹曼生成器”等前沿论文,导致技术选型滞后。
  • 复现门槛极高:缺乏统一的代码资源索引,研究人员往往找不到官方实现的 PyTorch 或 JAX 仓库,不得不从零编写复杂的可逆变换逻辑,耗时数周且易出错。
  • 理论理解碎片化:由于缺少高质量的博客解读和可视化图解(如 MAF 层的前向传播流程),初级工程师难以直观理解归一化流如何通过微分同胚链构建概率分布,沟通成本高昂。
  • 应用落地盲目:不清楚该技术在分子动力学之外的具体应用场景,难以评估将其引入当前药物筛选流水线的可行性与预期收益。

使用 awesome-normalizing-flows 后

  • 前沿技术一键直达:团队直接查阅其精选的 60+ 篇出版物列表,迅速锁定了能泛化到未见分子的最新算法,将技术调研周期从两周缩短至两天。
  • 开箱即用的代码库:依托其整理的框架专用包(PyTorch/TensorFlow/JAX)和 18 个高质量仓库,开发人员直接复用成熟的卷积层和采样器,立即着手进行模型微调。
  • 直观的学习路径:借助收录的视频教程和博客文章,团队快速统一了对核心概念的理解,利用清晰的流程图大幅降低了内部培训难度。
  • 明确的应用指引:通过分类清晰的应用案例,团队迅速确认了该技术在二肽分子模拟中的成功先例,坚定了将其部署到生产环境的信心。

awesome-normalizing-flows 通过聚合分散的理论、代码与应用资源,将归一化流技术的探索成本降至最低,让研发团队能专注于解决实际的分子模拟难题而非重复造轮子。

运行环境要求

GPU

未说明

内存

未说明

依赖
notes该仓库是一个资源列表(Awesome List),汇集了关于归一化流(Normalizing Flows)的论文、应用、视频和代码库链接,本身不是一个可直接运行的单一软件工具。列表中提及的子项目分别基于 PyTorch、TensorFlow、JAX 和 Julia 等不同框架,具体运行环境需求需参考各个子项目的独立文档。部分子项目(如 FInC Flow)提到了在 GPU 上实现并行算法,但未指定具体的显卡型号或显存要求。
python未说明
awesome-normalizing-flows hero image

快速开始

令人惊叹的归一化流

Awesome 欢迎提交 Pull 请求 链接检查 DOI

一份关于理解和应用归一化流(NF)的优秀资源列表:归一化流是一种相对简单但功能强大的统计学新工具,它通过一系列可训练的光滑双射变换(微分同胚),将简单的基础分布转化为表达能力强的概率分布。

掩码自回归流(MAF)层缓慢(顺序)前向传播示意图

该图灵感来自 Lilian Weng。由 CeTZ 创作。查看源代码.


Contents  目录

  1. 目录
  2. 📝 出版物(60篇)
  3. 🛠️ 应用(8个)
  4. 📺 视频(8个)
  5. 📦 软件包(14个)
    1. PyTorch 软件包
    2. TensorFlow 软件包
    3. JAX 软件包
    4. Julia 软件包
  6. 🧑‍💻 仓库(18个)
    1. PyTorch 仓库
    2. TensorFlow 仓库
    3. JAX 仓库
    4. 其他仓库
  7. 🌐 博客文章(5篇)
  8. 🚧 贡献

📝 出版物 (60篇)

  1. 2024年6月20日 - 可迁移的玻尔兹曼生成器 作者:Klein、Noé
    玻尔兹曼生成器是一种机器学习方法,它通过归一化流学习从简单先验分布到目标玻尔兹曼分布的变换,从而生成分子系统的平衡样本。最近,流匹配技术已被用于在笛卡尔坐标系中训练小型系统的玻尔兹曼生成器。本研究提出了一种可迁移的玻尔兹曼生成器框架,能够在无需重新训练的情况下预测未见过分子的玻尔兹曼分布。这使得近似采样和高效重加权到目标分布成为可能。该框架在二肽上进行了测试,结果表明其对新系统具有良好的泛化能力,并且与单系统训练相比效率更高。[代码]

  2. 2023年1月3日 - FInC Flow:用于归一化流的快速且可逆的k×k卷积 作者:Kallapa、Nagar等。
    提出了一种k×k卷积层及深度归一化流架构,该架构具备:i) 快速并行反演算法,运行时间为O(nk^2)(n为输入图像的高度和宽度,k为卷积核大小);ii) 每层仅掩码最少数量的可学习参数;iii) 前向传播和采样时间优于其他基于k×k卷积的模型,在真实世界基准测试中表现相当。我们还提供了使用GPU实现的所提出的并行采样算法,以供参考。[代码]

  3. 2022年10月15日 - 用于归一化流的可逆单调算子 作者:Ahn、Kim等。
    本研究提出采用单调形式来解决先前基于ResNet的归一化流中 Lipschitz 常数的问题,并利用单调算子进行了深入的理论分析。此外,研究还构建了一种名为Concatenated Pila (CPila)的激活函数,以改善梯度流动。由此产生的模型——单调流——在多项密度估计基准测试中表现出色(MNIST、CIFAR-10、ImageNet32、ImageNet64)。[代码]

  4. 2022年8月18日 - ManiFlow:用归一化流隐式表示流形 作者:Postels、Danelljan等。
    归一化流的可逆性约束限制了那些嵌入高维空间中的低维流形上的数据分布。通常人们会通过向数据添加噪声来绕过这一限制,但这会影响生成样本的质量。本研究在完全了解扰动分布和噪声模型的情况下,直接从原始数据分布中生成样本。他们发现,在最大似然区域,经过扰动数据训练的归一化流能够隐式地表示流形,进而提出了一种优化目标,即根据来自扰动分布的样本恢复流形上最有可能的点。

  5. 2022年6月3日 - 图形化归一化流 作者:Wehenkel、Louppe。
    本研究将耦合和自回归变换重新视为概率图模型,指出它们可以简化为具有预定义拓扑结构的贝叶斯网络。基于这一新视角,作者提出了图形化归一化流,这是一种新的可逆变换,其图形结构既可以是预先指定的,也可以是可学习的。该模型为将领域知识注入归一化流提供了一条有前景的途径,同时保留了贝叶斯网络的可解释性和归一化流的表征能力。[代码]

  6. 2022年5月16日 - 用于概率时间序列预测的多尺度注意力流 作者:Feng、Xu等。
    提出了一种新型的非自回归深度学习模型——多尺度注意力归一化流(MANF),该模型融合了多尺度注意力和相对位置信息,并利用条件归一化流来表示多变量数据分布。

  7. 2022-03-02 - 基于归一化流的自适应蒙特卡洛方法 由Gabrié、Rotskoff等人提出。
    马尔可夫链蒙特卡洛(MCMC)算法在从高维、多模态分布中采样时面临困难,通常需要大量的计算资源或专门的重要性采样策略。为解决这一问题,研究者提出了一种自适应MCMC方法,该方法结合局部更新与通过归一化流实现的非局部转移。此方法将标准转移核与生成模型的移动相结合,并利用生成的数据自适应地调整生成模型,从而提高采样效率。理论分析和数值实验表明,该算法能够在亚稳态模式之间快速达到平衡,在跨越巨大自由能势垒时仍能有效采样,并且相比传统MCMC方法实现了显著加速。[代码]

  8. 2022-01-14 - E(n) 等变归一化流 由Satorras、Hoogeboom等人提出。
    将等变图神经网络引入归一化流框架,二者结合形成可逆的等变函数。研究表明,这种流模型优于先前的等变模型,并能够对包含原子位置、类型和电荷的分子构型进行采样。

  9. 2021-07-16 - 利用归一化流辅助马尔可夫链蒙特卡洛方法的高效贝叶斯采样 由Gabrié、Rotskoff等人提出。
    归一化流在贝叶斯统计中具有潜力,可作为MCMC的补充或替代方法用于后验分布的采样。然而,通过反向KL散度进行训练可能不足以处理复杂的后验分布。本研究提出了一种新的训练方法,采用直接KL散度,即通过在局部MCMC算法中加入归一化流来提高混合速率,并利用生成的样本进一步训练归一化流。该方法对后验分布的先验知识要求极低,可用于模型验证和证据估计,为高效后验采样提供了一条有前景的途径。

  10. 2021-07-03 - CInC流:可表征的可逆3×3卷积 由Nagar、Dufraisse等人提出。
    旨在改进计算成本高昂的卷积操作。研究探讨了3×3卷积在何种条件下(如填充方式)是可逆的,并实现了显著的速度提升。此外,他们还开发了一种更具表达能力的可逆_Quad耦合_层。[代码]

  11. 2021-04-14 - 利用凯莱变换正交化卷积层 由Trockman、Kolter提出。
    通过凯莱变换将多通道卷积参数化为正交形式(在傅里叶域中使用斜对称卷积)。这使得逆运算可以高效计算。[代码]

  12. 2021-04-14 - 通过更好的正交参数化改进归一化流 由Goliński、Lezcano-Casado等人提出。
    他们通过指数映射和凯莱映射对1×1卷积进行参数化,并展示了对Sylvester归一化流优化效果的提升。

  13. 2020-09-28 - 基于条件归一化流的多变量概率时间序列预测 由Rasul、Sheikh等人提出。
    使用自回归深度学习模型对时间序列的多变量动态进行建模,其中数据分布由条件归一化流表示。[OpenReview.net] [代码]

  14. 2020-09-21 - 基于哈尔小波的分块自回归流用于轨迹建模 由Bhattacharyya、Straehle等人提出。
    引入了一种基于哈尔小波的分块自回归模型。

  15. 2020-07-15 - AdvFlow:利用归一化流的隐蔽黑盒对抗攻击 由Dolatabadi、Erfani等人提出。
    一种针对图像分类器的对抗攻击方法,使用归一化流实现。[代码]

  16. 2020-07-06 - SurVAE流:通过满射弥合VAE与流之间的差距 由Nielsen、Jaini等人提出。
    他们提出了一种通用框架,同时涵盖流(确定性映射)和VAE(随机映射)。通过将确定性映射x = f(z)视为随机映射x ~ p(x|z)的极限情况,ELBO被重新解释为随机映射下的变量变换公式。此外,他们还展示了几种使用随机映射的满射层,并说明这些层可以与流层组合使用。[视频] [代码]

  17. 2020-06-15 - 为什么归一化流无法检测分布外数据 由Kirichenko、Izmailov等人提出。
    该研究探讨了传统归一化流模型在面对分布外数据时可能出现的问题,并提出通过修改耦合层来应对这一挑战。[推文] [代码]

  18. 2020-06-03 - 等变流:针对对称密度的精确似然生成式学习 由Köhler、Klein等人提出。
    研究表明,由等变归一化流生成的分布能够忠实地再现底层密度中的对称性。他们提出了用于构建流的模块,这些模块能够保持物理/化学多体系统中的典型对称性。结果表明,保持对称性的流可以提供更好的泛化能力和采样效率。

  19. 2020-06-02 - 卷积指数与广义Sylvester流 由Hoogeboom、Satorras等人提出。
    引入卷积指数,以在线性层中加入空间依赖关系,作为对1×1卷积的改进。该方法利用矩阵指数创建廉价且可逆的层。他们还利用这一新架构构建了_卷积Sylvester流_和_图卷积指数_。[代码]

  20. 2020-05-11 - iUNets:具有可学习上采样和下采样的全可逆U-Net 由Etmann、Ke等人提出。
    通过引入可逆、正交的上采样和下采样层,将经典的U-Net扩展为完全可逆结构。该方法效率较高,有望支持更深、更大的网络的稳定训练。

  21. 2020年4月8日 - Mahajan、Bhattacharyya等人发表的《具有多尺度自回归先验的归一化流》(https://arxiv.org/abs/2004.03891)
    通过引入多尺度自回归先验(mAR),在潜空间中建立通道间的依赖关系,从而提升基于流模型的表征能力。[代码]

  22. 2020年3月31日 - Brehmer、Cranmer发表的《用于同时进行流形学习和密度估计的流》(https://arxiv.org/abs/2003.13913)
    这种归一化流能够学习数据流形及其上的概率密度函数。[推文] [代码]

  23. 2020年3月4日 - Meng、Song等人发表的《高斯化流》(https://arxiv.org/abs/2003.01941)
    该方法采用可训练核层与正交变换的反复组合。与Real-NVP、Glow和FFJORD等当前最先进模型相比,性能非常有竞争力。[代码]

  24. 2020年2月27日 - Giaquinto、Banerjee发表的《梯度提升归一化流》(https://arxiv.org/abs/2002.11896)
    将传统的归一化流与梯度提升技术相结合。研究结果表明,训练多个模型即可取得良好效果,而无需使用更复杂的分布。[代码]

  25. 2020年2月24日 - Deng、Chang等人发表的《利用动态归一化流建模连续随机过程》(https://arxiv.org/abs/2002.10516)
    提出了一种基于维纳过程微分变形的归一化流,并将其应用于时间序列分析。[推文]

  26. 2020年2月21日 - Hodgkinson、Heide等人发表的《随机归一化流》(https://arxiv.org/abs/2002.09547)
    名称虽与上述SNF相同,但技术完全不同:这是一种基于随机微分方程(SDE)的连续归一化流动态扩展。该方法将SDE中的布朗运动视为潜在变量,并用流对其进行近似。其目标是实现神经网络SDE的高效训练,进而构建高效的马尔可夫链。

  27. 2020年2月16日 - Wu、Köhler等人发表的《随机归一化流(SNF)》(https://arxiv.org/abs/2002.06707)
    提出了SNF的概念,即由任意顺序的确定性可逆函数(流)与MCMC或朗之万动力学等随机过程相结合。其目的是增强所选确定性可逆函数的表达能力,同时通过可训练的流提高采样效率,使其优于纯MCMC方法。[推文])

  28. 2020年1月17日 - Ardizzone、Mackowiak等人发表的《利用信息瓶颈训练归一化流以实现竞争性的生成分类》(https://arxiv.org/abs/2001.06448)
    他们提出了一类带有信息瓶颈目标的条件归一化流。[代码]

  29. 2020年1月15日 - Dolatabadi、Erfani等人发表的《利用线性有理样条进行可逆生成建模》(https://arxiv.org/abs/2001.05168)
    这是神经样条流的后续工作,其特点是逆运算易于计算。

  30. 2019年12月5日 - Papamakarios、Nalisnick等人发表的《用于概率建模与推理的归一化流》(https://arxiv.org/abs/1912.02762)
    这是一篇由DeepMind参与流开发的研究人员撰写的全面且易读的综述文章,强烈推荐。

  31. 2019年9月14日 - Wehenkel、Luppe发表的《无约束单调神经网络》(https://arxiv.org/abs/1908.05164)
    UMNN通过将变换的导数作为无约束神经网络的输出,放宽了对单调神经网络权重和激活函数的限制。变换本身则通过对导数进行数值积分(Clenshaw-Curtis求积法)来计算。[代码]

  32. 2019年8月25日 - Kobyzev、Prince等人发表的《归一化流:简介及当前方法综述》(https://arxiv.org/abs/1908.09257)
    另一篇内容详尽且通俗易懂的综述文章,既介绍了归一化流的基础知识,也涵盖了部分最先进的方法,同样值得推荐。

  33. 2019年7月21日 - Rothfuss、Ferreira等人发表的《用于条件密度估计的噪声正则化》(https://arxiv.org/abs/1907.08982)
    该论文提出了用于条件密度估计的归一化流,并建议采用噪声正则化来减少过拟合。[博客]

  34. 2019年7月18日 - Song、Meng等人发表的《MintNet:利用掩码卷积构建可逆神经网络》(https://arxiv.org/abs/1907.07945)
    通过掩码卷积创建类似自回归的耦合层,评估速度快且高效。[代码]

  35. 2019年7月18日 - Grcić、Grubišić等人发表的《密集连接的归一化流》(https://arxiv.org/abs/2106.04627)
    他们构建了嵌套式耦合结构,以增强标准耦合层的表达能力。此外,还利用切片/因式分解进行降维,并采用Nystrom方法为耦合层的条件网络提供支持。该方法在归一化流模型中取得了SOTA水平的成绩。[代码]

  36. 2019年6月15日 - Karami、Schuurmans等人发表的《可逆卷积流》(https://proceedings.neurips.cc/paper/2019/hash/b1f62fa99de9f27a048344d55c5ef7a6-Abstract.html)
    提出了循环对称的可逆卷积层,该层不仅可逆,而且计算成本低廉。他们还展示了如何通过约束损失函数设计具有特殊性质的非线性逐元素双射。[代码]

  37. 2019年6月15日 - Finzi、Izmailov等人发表的《可逆卷积网络》(https://invertibleworkshop.github.io/INNF_2019/accepted_papers/pdfs/INNF_2019_paper_26.pdf)
    展示了如何通过傅里叶变换使标准卷积层具备可逆性。他们还引入了更适合归一化流的激活函数,例如SneakyRELU。

  38. 2019年6月10日 - Durkan、Bekasov等人发表的《神经样条流》(https://arxiv.org/abs/1906.04032)
    该方法使用单调有理样条作为耦合层,目前属于最先进的技术之一。

  39. 2019年5月30日 - Liu、Kumar等人发表的《图归一化流》(https://arxiv.org/abs/1905.13177)
    这是一种用于预测和生成的新式可逆图网络。在监督任务上,其表现与消息传递神经网络相当,但内存占用显著降低,因此可以扩展到更大的图。结合新型图自编码器用于无监督学习,图归一化流成为一种用于图结构的生成模型。

  40. 2019-05-24 - 通过鲁棒可逆 n×n 卷积实现快速流重建 由 Truong、Luu 等人撰写。
    旨在克服 1×1 卷积的局限性,并提出了一种基于巧妙卷积 仿射 函数的可逆 n×n 卷积。

  41. 2019-05-17 - 整数离散流与无损压缩 由 Hoogeboom、Peters 等人撰写。
    一种用于序数型离散数据的归一化流。他们引入了一种灵活的变换层,称为整数离散耦合层。

  42. 2019-04-09 - 块神经自回归流 由 Cao、Titov 等人撰写。
    提出 (B-NAF),一种更高效的概率密度近似器。声称在多个数据集上与其他流方法相比具有竞争力,同时使用的参数数量少了一个数量级。

  43. 2019-04-09 - 块神经自回归流 由 Wehenkel、Louppe 撰写。
    作为手工设计双射函数的替代方案,Huang 等人(2018)提出了 NAF,这是一种用于密度函数的通用近似器。他们的流是一种神经网络,其参数由另一个神经网络预测。后者的规模随前者的大小呈二次增长,效率较低。我们提出了块神经自回归流 (B-NAF),这是一种更加紧凑的密度函数通用近似器,其中我们直接使用单个前馈网络来建模双射关系。通过精心设计采用块矩阵的仿射变换,确保了流的自回归性和单调性,从而保证了可逆性。我们将 B-NAF 与 NAF 进行了比较,结果表明我们的流在多个数据集上具有竞争力,同时使用的参数数量少了一个数量级。[代码]

  44. 2019-02-19 - MaCow:掩码卷积生成流 由 Ma、Kong 等人撰写。
    引入了一种使用小卷积核捕捉局部连接性的掩码卷积生成流 (MaCow) 层。他们展示了该方法在速度和稳定性方面较 GLOW 模型有所提升。

  45. 2019-01-30 - 用于生成式归一化流的新兴卷积 由 Hoogeboom、Berg 等人撰写。
    提出了类似自回归的卷积层,可在通道 空间两个维度上操作。与标准的 1×1 卷积相比,这种方法显著提升了图像数据集上的性能。不过,其逆运算较为昂贵,但作者提供了一个快速的 C++ 实现。[代码]

  46. 2018-11-06 - FloWaveNet:用于原始音频的生成流 由 Kim、Lee 等人撰写。
    一种基于流的原始音频合成模型。[代码]

  47. 2018-10-02 - FFJORD:用于可扩展可逆生成模型的自由形式连续动力学 由 Grathwohl、Chen 等人撰写。
    使用神经 ODE 作为求解器,以生成连续时间归一化流 (CNF)。

  48. 2018-07-09 - Glow:带有可逆 1×1 卷积的生成流 由 Kingma、Dhariwal 撰写。
    他们证明,使用可逆 1×1 卷积的流在标准生成基准测试中能够达到很高的似然值,并且可以高效地合成逼真的大型图像。

  49. 2018-07-03 - 深度密度破坏者 由 Inouye、Ravikumar 撰写。
    从迭代的角度探讨归一化流,特色是一个基于树结构的密度估计器。

  50. 2018-04-03 - 神经自回归流 由 Huang、Krueger 等人撰写。
    统一并推广了自回归和归一化流的方法,用更一般的可逆一维变换类——即单调递增的神经网络——取代了 MAF/IAF 中的(条件)仿射一维变换。同时也证明了所提出的神经自回归流 (NAF) 是连续概率分布的通用近似器。[代码]

  51. 2018-03-15 - 用于变分推断的 Sylvester 归一化流 由 Berg、Hasenclever 等人撰写。
    引入了 Sylvester 归一化流,它消除了平面流中的单单元瓶颈,从而提高了变分后验分布的灵活性。

  52. 2017-11-17 - 卷积归一化流 由 Zheng、Yang 等人撰写。
    提出了利用卷积优势的归一化流(基于随机输入向量各维度上的卷积),以改善变分推断框架中的后验分布。此外,由于卷积的作用,还减少了参数数量。

  53. 2017-05-19 - 用于密度估计的掩码自回归流 由 Papamakarios、Pavlakou 等人撰写。
    引入了 MAF,即一系列自回归模型组成的归一化流,适用于快速密度估计,但在采样方面较慢。与逆向自回归流 (IAF) 类似,只是前向和逆向传递被互换。它是 RNVP 的一种推广。

    掩码自回归流 (MAF) 层缓慢(顺序)前向传递示意图
  54. 2017-03-06 - 用于变分贝叶斯神经网络的乘法归一化流 由 Louizos、Welling 撰写。
    他们提出了一种新型的变分贝叶斯神经网络,利用流生成辅助随机变量,通过将网络参数的完全分解高斯后验均值相乘,从而提高变分族的灵活性。这使得原本对角线协方差的高斯分布能够支持多模态分布以及网络参数之间的非线性依赖关系。

  55. 2016-06-15 - 利用逆向自回归流改进变分推断 由 Kingma、Salimans 等人撰写。
    引入了逆向自回归流 (IAF),这是一种非常适合高维潜在空间的新型流。[代码]

  56. 2016年5月27日 - Dinh、Sohl-Dickstein 等人发表的《使用 Real NVP 进行密度估计》(https://arxiv.org/abs/1605.08803)
    他们提出了仿射耦合层(RNVP),这是在灵活性方面对具有单位雅可比行列式的加法耦合层(NICE)的重大改进,同时保持了单次前向和逆变换,从而分别实现快速采样和密度估计。

    实值非保体积(RNVP)耦合层示意图
  57. 2015年5月21日 - Rezende、Mohamed 发表的《基于归一化流的变分推断》(https://arxiv.org/abs/1505.05770)
    他们展示了如何通过使用流模型来提高变分分布族的灵活性,从而超越均场变分推断。

  58. 2015年2月12日 - Germain、Gregor 等人发表的《用于分布估计的掩码自编码器》(https://arxiv.org/abs/1502.03509)
    提出了 MADE,这是一种前馈神经网络,通过对权重施加精心设计的二值掩码来控制信息在网络中的精确流动。这些掩码确保每个输出单元仅接收来自按某种任意顺序排列在其之前的输入单元的信号。然而,所有输出仍可在一次前向传播中计算出来。

    将流模型构建为自回归形式的一种流行且高效的方法,就是使用 MADE 网络来实现。

    用于分布估计的掩码自编码器
  59. 2014年10月30日 - Dinh、Krueger 等人发表的《非线性独立成分估计》(https://arxiv.org/abs/1410.8516)
    提出了加法耦合层(NICE),并展示了如何将其用于图像生成和修复。

  60. 2011年4月1日 - Laparra、Camps-Valls 等人发表的《迭代式高斯化:从 ICA 到随机旋转》(https://arxiv.org/abs/1602.00229)
    以迭代形式进行高斯化的归一化流。同时也探讨了其与信息理论的联系。


🛠️ 应用领域 (8)

  1. 2020年12月6日 - Bézenac、Rangapuram 等人发表的《用于多变量时间序列分析的归一化卡尔曼滤波器》(https://assets.amazon.science/ea/0c/88b7bdd54eae8c08983fa4cc3e06/normalizing-kalman-filters-for-multivariate-time-series-analysis.pdf)
    通过引入归一化流来增强状态空间模型,从而缓解由理想化假设引起的不准确性。旨在预测真实世界数据,并处理不同程度的缺失数据。(也可在 Amazon Science 上查阅。)

  2. 2020年11月2日 - Li、Zhou 等人发表的《关于预训练语言模型的句子嵌入》(https://aclweb.org/anthology/2020.emnlp-main.733)
    提议使用流模型将 BERT 的各向异性句子嵌入分布转换为平滑且各向同性的高斯分布,该分布通过无监督目标学习得到。实验表明,在语义文本相似度任务上,性能优于当前最优的句子嵌入方法。代码可在 https://github.com/bohanli/BERT-flow 获取。

  3. 2020年10月13日 - Wirnsberger、Ballard 等人发表的《通过学习映射进行靶向自由能估计》(https://aip.scitation.org/doi/10.1063/5.0018903)
    使用归一化流来估计自由能差。

  4. 2020年7月15日 - Siahkoohi、Rizzuti 等人发表的《利用条件归一化流加速反问题的不确定性量化》(https://arxiv.org/abs/2007.07985)
    将条件归一化流应用于反问题。[视频]

  5. 2020年6月25日 - Lugmayr、Danelljan 等人发表的《SRFlow:利用归一化流学习超分辨率空间》(https://arxiv.org/abs/2006.14200)
    将归一化流用于超分辨率任务。

  6. 2019年3月9日 - Hoffman、Sountsov 等人发表的《使用神经传输消除哈密顿蒙特卡洛中的不良几何结构》(https://arxiv.org/abs/1903.03704)
    将归一化流与蒙特卡洛估计结合使用,以获得更具表达力的分布和更准确的后验估计。

  7. 2018年8月14日 - Ardizzone、Kruse 等人发表的《利用可逆神经网络分析反问题》(https://arxiv.org/abs/1808.04730)
    将归一化流应用于反问题。

  8. 2018年4月9日 - Haarnoja、Hartikainen 等人发表的《面向层次强化学习的潜在空间策略》(https://arxiv.org/abs/1804.02808)
    使用归一化流,特别是 RealNVPs,作为强化学习的策略,并将其应用于层次强化学习场景。


📺 视频 (8)

  1. 2021-01-16 - 归一化流 - 动机、核心思想及基础概念Kapil Sachdeva 演讲
    一篇关于归一化流的全面教程,解释了这一类算法所解决的挑战。提供了应对这些挑战的直观理解,并以简单易懂的逐步方式阐述了背后的数学原理。

  2. 2020-12-07 - 归一化流Marc Deisenroth 演讲
    属于 NeurIPS 2020 系列教程“来回之旅:斜率与期望的故事”的一部分。完整系列链接:这里

  3. 2020-11-23 - 归一化流简介Marcus Brubaker 演讲
    这是由 Stan 的创建者之一在 ECCV 2020 上所做的关于归一化流的精彩介绍。该教程还对各种实际实现进行了出色的回顾。

  4. 2020-02-06 - 流模型Pieter Abbeel 演讲
    对归一化流进行了非常详尽的讲解。还包含一些示例代码。

  5. 2019-12-06 - 什么是归一化流?Ari Seff 演讲
    一段类似 3blue1brown 风格的优秀视频,解释了归一化流的基础知识。

  6. 2019-10-09 - 归一化流入门Laurent Dinh 演讲
    NICE 和 RNVP 论文的第一作者,也是该领域的早期研究者之一,在“2019 年物理学机器学习与物理学习”会议上发表了介绍性演讲。

  7. 2019-09-24 - 图归一化流 由 Jenny Liu 演讲
    介绍了一种用于药物发现等领域的新型图生成模型,通过对已知具有结合、溶解等特性的分子进行训练,有助于生成同样有效的新型分子。

  8. 2018-10-04 - 西尔维斯特归一化流用于变分推断 由 Rianne van den Berg 演讲
    介绍了西尔维斯特归一化流,它消除了平面流中的单单元瓶颈,从而提高了变分后验分布的灵活性。


📦 软件包 (14)


PyTorch  PyTorch 软件包

  1. 2022-05-21 - ZukoFrançois Rozet 开发  

GitHub 仓库星标数
Zuko 是一个在 PyTorch 中实现归一化流的 Python 库。它大量依赖 PyTorch 内置的概率分布和变换功能,使得实现简洁、易于理解和扩展。API 文档齐全,并附有原始论文的参考文献。

Zuko 被用于 LAMPE,以支持使用 PyTorch 的似然无须计算的近似后验估计。

  1. 2021-01-25 - Jammy FlowsThorsten Glüsenkamp 开发  

GitHub 仓库星标数
该软件包用于在流形的张量积上建模联合(条件)概率密度函数——类似于逆自回归流,但能够连接不同的流形、建模条件概率密度函数,并允许使用任意耦合而非仅限于仿射耦合。包含了若干 SOTA 流,如高斯化流。

  1. 2020-12-07 - flowtorchFacebook / Meta 开发  

GitHub 仓库星标数
FlowTorch 是一个基于 PyTorch 的库,用于通过归一化流学习和采样复杂概率分布。

  1. 2020-02-09 - nflowsBayesiains 开发  

GitHub 仓库星标数
这是一套使用 PyTorch 实现的大多数 SOTA 方法的工具集。来自爱丁堡的一个机器学习小组。他们开发了当前 SOTA 的样条归一化流。几乎可以称得上是单一仓库中最为完整的实现。

  1. 2020-01-28 - normflowsVincent Stimper 开发  

GitHub 仓库星标数
该库提供了大多数常见的归一化流架构。还包括随机层、环面和球面上的流以及其他特别适用于物理科学应用的工具。

  1. 2018-09-07 - FrEIAVLL Heidelberg 开发  

GitHub 仓库星标数
易于逆向的架构框架 (FrEIA) 基于 RNVP 流。设置简单,允许从简单的可逆构建模块定义复杂的可逆神经网络 (INN)。


TensorFlow  TensorFlow 软件包

  1. 2018-06-22 - TensorFlow ProbabilityGoogle 开发  

GitHub 仓库星标数
这是一个大型的第一方库,提供 RNVP、MAF 等自回归模型,以及一系列可组合的双射变换。


JAX  JAX 生态包

  1. 2024-07-05 - GWKokabMeesum QazalbashMuhammad Zeeshan 等人开发。  

GitHub 仓库星级
基于 JAX 的引力波种群推断工具包,适用于参数化模型 [文档]

  1. 2022-06-17 - flowMCKaze Wong 开发。  

GitHub 仓库星级
基于归一化流的采样包,用于概率推断 [文档]

  1. 2021-06-17 - pzflowJohn Franklin Crenshaw 开发。  

GitHub 仓库星级
一个专注于表格数据概率建模的软件包,重点在于采样和后验计算。

  1. 2021-04-12 - DistraxDeepMind 开发。  

GitHub 仓库星级
Distrax 是一个轻量级的概率分布与双射变换库。它作为 TensorFlow Probability (TFP) 某些子集的 JAX 原生重实现,同时引入了一些新特性,并强调可扩展性。

  1. 2020-03-09 - NuX 由 马萨诸塞大学信息融合实验室 开发。  

GitHub 仓库星级
一个以 JAX 为后端的归一化流库,包含一些当前最优的方法。此外,还提供了一种基于量化技术的满射流。


Julia  Julia 生态包

  1. 2021-11-07 - ContinuousNormalizingFlows.jlHossein Pourbozorg 开发。  

GitHub 仓库星级
在 Julia 中实现了无穷小连续归一化流算法。[文档]

  1. 2020-02-07 - InvertibleNetworks.jlSLIM 开发。  

GitHub 仓库星级
一个与 Flux 兼容的库,实现了可逆神经网络和归一化流,并采用内存高效的反向传播技术。通过手动实现梯度来利用构建模块的可逆性,从而能够扩展到大规模问题。


🧑‍💻 代码仓库 (18)


PyTorch  PyTorch 仓库

  1. 2021-09-27 - DeeProb-kitLorenzo Loconte 开发  

GitHub 仓库星标数
一个通用的 Python 库,提供了一系列易于使用和扩展的深度概率模型(DPM)。实现了 MAF、RealNVP 和 NICE 等流模型。

  1. 2021-08-21 - NICE:非线性独立成分估计 由 Maxime Vandegar 开发  

GitHub 仓库星标数
一个 PyTorch 实现,用大约 100 行代码复现了论文 NICE 中的结果。

  1. 2020-07-19 - 归一化流——简介(第 1 部分)pyro.ai 开发
    一个关于如何使用基于 PyTorch 的 pyro-ppl 库来应用归一化流的教程。他们提供了包括 NSF 和 MAF 在内的若干 SOTA 方法。第 2 和第 3 部分后续推出

  2. 2020-07-03 - 基于神经 ODE 的密度估计与基于 FFJORD 的密度估计torchdyn 开发
    展示如何将 FFJORD 用作连续归一化流(CNF)的示例。基于 PyTorch 工具包 torchdyn,该工具包提供连续神经网络架构。

  3. 2020-05-26 - StyleFlowRameen Abdal 开发  

GitHub 仓库星标数
使用条件连续归一化流对 StyleGAN 生成的图像进行属性条件探索。[文档]

  1. 2020-02-04 - 图模型归一化流Antoine Wehenkel 开发  

GitHub 仓库星标数
“图模型归一化流”的官方实现及论文中展示的实验。

  1. 2019-12-09 - pytorch-normalizing-flows 由 Andrej Karpathy 开发  

GitHub 仓库星标数
一个 Jupyter 笔记本,包含最常用流模型的 PyTorch 实现:NICE、RNVP、MAF、Glow、NSF。

  1. 2019-09-19 - 无约束单调神经网络(UMNN) 由 Antoine Wehenkel 开发  

GitHub 仓库星标数
“无约束单调神经网络”的官方实现及论文中展示的实验。

  1. 2019-02-06 - pytorch_flowsacids-ircam 开发  

GitHub 仓库星标数
一个优秀的仓库,包含从头开始实现的一些基础归一化流的 PyTorch 代码。

  1. 2018-12-30 - normalizing_flows 由 Kamen Bliznashki 开发  

GitHub 仓库星标数
PyTorch 实现的密度估计算法:BNAF、Glow、MAF、RealNVP、平面流。

  1. 2018-09-01 - pytorch-flows 由 Ilya Kostrikov 开发  

GitHub 仓库星标数
PyTorch 实现的密度估计算法:MAF、RNVP、Glow。


TensorFlow  TensorFlow 仓库

  1. 2020-11-02 - 使用归一化流的变分推断(VINF) 由 Pierre Segonne 开发  

GitHub 仓库星标数
该仓库提供了 TensorFlow 的实践实现,用于实现归一化流,正如介绍这一概念的论文(D. Rezende & S. Mohamed)中所述。

  1. 2020-01-29 - 归一化流Lukas Rinder 开发  

GitHub 仓库星标数
在 TensorFlow 2 中实现了归一化流(平面流、径向流、Real NVP、掩码自回归流(MAF)、逆自回归流(IAF)、神经样条流),并附带一个小教程。

  1. 2019-07-19 - BERT-flow 由 Bohan Li 开发  

GitHub 仓库星标数
“预训练语言模型的句子嵌入”(EMNLP 2020)的 TensorFlow 实现。


JAX  JAX 仓库

  1. 2020-06-12 - 神经传输numpyro 开发
    展示了如何利用归一化流从蒙特卡洛方法中获得更稳健的后验分布。使用了 numpyro 库,这是一个以 JAX 为后端的概率编程库。归一化流的实现包括 IAF 和 BNAF 等基础模型。

其他  其他仓库

  1. 2018-06-11 - 破坏性深度学习 (ddl)David Inouye 提供  

GitHub 仓库星级
这是 Inouye 和 Ravikumar(2018)论文 Deep Density Destructors 的代码库。它包含一整套迭代方法,既有基于树的方法,也有高斯化方法,这些方法与归一化流类似,不同之处在于它们是通过迭代收敛的,而不是完全参数化的。也就是说,它们仍然使用双射变换、计算雅可比行列式、检查似然值,并且可以进行采样和概率密度估计。唯一的区别就是你需要重复以下两个步骤直到收敛:

  1. 计算一层或一个块层(例如,边际高斯化 + PCA 旋转)
  2. 检查是否收敛(例如,使用变量变换公式计算对数似然)

论文中的表 1 对传统归一化流进行了很好的比较。

  1. 2017-07-11 - 归一化流概述 由 PyMC3 提供
    这是一个非常有用的笔记本,展示了如何在实践中使用流,并将其与 PyMC3 基于 NUTS 的 HMC 核心进行了比较。基于 Theano

  2. 2017-03-21 - NormFlows 由 Andy Miller 提供  

GitHub 仓库星级
使用 autograd 的简单教学示例,因此层次较低。


🌐 博客文章 (5)

  1. 2020-08-19 - 《分子与材料深度学习》一书中的流章节Andrew White 提供
    一篇不错的介绍,从变量变换公式(即流方程)开始,接着介绍了几种常见的双射变换,并以一个使用 TensorFlow Probability 拟合双月数据分布的代码示例结束。

  2. 2018-10-21 - 归一化流的变量变换 由 Neal Jean 提供
    简短而清晰地解释了与概率质量守恒相关的变量变换定理。

  3. 2018-10-13 - 基于流的深度生成模型 由 Lilian Weng 提供
    内容涵盖变量变换、NICE、RNVP、MADE、Glow、MAF、IAF、WaveNet、PixelRNN。

  4. 2018-04-03 - 归一化流 由 Adam Kosiorek 提供
    流的入门介绍,内容包括变量变换、平面流、径向流、RNVP 以及像 MAF、IAF 和 Parallel WaveNet 这样的自回归流。

  5. 2018-01-17 - 归一化流教程 由 Eric Jang 提供
    第一部分:分布与行列式。第二部分:现代归一化流。包含大量优秀的图表。


🚧 贡献

如果你发现列表中缺少某些内容,请提交 PR!寻找“仓库”部分新条目的好地方是 GitHub 上的 归一化流话题

注意:请勿直接编辑 README 文件(它是自动生成的)。请将你的贡献添加到相应的 data/*.yml 文件中。

论文应经过同行评审并在期刊上发表。如果你不确定某篇论文或资源是否应列入此列表,欢迎 打开一个问题发起讨论。本仓库旨在成为一个社区协作项目,欢迎大家畅所欲言。

版本历史

v1.0.02023/07/20

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|3天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|4天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

146.8k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.1k|★★☆☆☆|今天
开发框架图像Agent

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|2天前
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|2天前
语言模型图像Agent