描述
这个 GitHub 存储库 `karpathy/pytorch-made` 使用 PyTorch 提供了一个简洁的 MADE(掩码自编码器密度估计)实现。MADE 的核心概念是将标准的自编码器转化为自回归密度模型。这是通过策略性地掩码多层感知机 (MLP) 中的连接以及对输入维度进行排序来实现的。至关重要的是,该模型确保每个输出维度仅依赖于在定义顺序中较早出现的输入维度。
阅读更多
与 char-rnn 和 pixel cnns 等其他自回归模型类似,MADE 支持非常高效的似然评估,只需通过网络进行一次前向传播即可。然而,采样新数据点的过程与维度数量成线性关系。原始论文的实现虽然功能齐全,但因其冗长和对 Theano 的依赖而受到诟病。此 PyTorch 版本旨在简洁明了,核心逻辑包含在约 150 行代码中。
该存储库包含演示如何使用 MADE 模型(特别是二值化 MNIST 数据集)的示例。用户可以重现原始论文中的结果,例如训练一个单层 MLP 以在二值化 MNIST 上获得 94.5 的二元交叉熵损失。示例还说明了如何训练更大的模型集成,利用单个 MLP 内的权重共享,并在测试时平均预测以提高性能,通过 10 种排序实现了 79.3 的测试损失。
核心类 `MADE` 实现于 `made.py`,并继承自 PyTorch 的 `nn.Module`,使其易于集成到更大的神经网络架构中。实例化过程涉及指定输入和输出维度、隐藏层大小以及要使用的掩码数量。输出维度参数是灵活的,允许各种输出分布,如高斯分布或分箱的 softmax 预测。最简单的情况,如 MNIST 的二元预测所示,每个输入维度使用一个输出参数。
- 类别AI 模型与大语言模型
- 定价模式开源
- 部署云端, 自托管
- 平台网页版
PyTorch MADE的核心功能
实现了掩码自编码器密度估计 (MADE)
使用 PyTorch 构建,易于集成
支持自回归密度建模
通过单次前向传播实现高效似然评估
采样复杂度与维度成线性关系
包含二值化 MNIST 数据集的示例
支持模型集成训练
灵活的输出层,支持多种分布
简洁的代码库(核心逻辑约 150 行)
掩码 MLP 连接以实现自回归
输入维度排序以实现条件依赖
PyTorch MADE入门
访问模型:克隆 GitHub 存储库。
设置环境:安装 PyTorch 和其他依赖项。
通过 API 集成:从 `made.py` 实例化 `MADE` 类。
配置模型:指定输入/输出维度、隐藏层和掩码数量。
训练模型:使用 `run.py` 脚本,指定数据集和参数。
评估似然:执行一次前向传播。
采样数据:以与维度成线性的方式执行采样过程。
PyTorch MADE的使用案例
- 密度估计
- 自回归建模
- 图像生成
- 概率建模
- 机器学习研究
- 数据压缩








