説明
この GitHub リポジトリ `karpathy/pytorch-made` は、PyTorch を使用した MADE (Masked Autoencoder Density Estimation) の簡潔な実装を提供します。MADE の中心的な概念は、標準的なオートエンコーダーを自己回帰型密度モデルに変換することです。これは、多層パーセプトロン (MLP) 内の接続を戦略的にマスキングし、入力次元を順序付けることによって達成されます。重要なのは、モデルは各出力次元が、定義された順序でより前に現れる入力次元のみに依存することを保証することです。
続きを読む
char-rnn や pixel cnns のような他の自己回帰型モデルと同様に、MADE はネットワークを一度順方向に通過させるだけで、非常に効率的な尤度評価を可能にします。しかし、新しいデータポイントをサンプリングするプロセスは、次元数に対して線形です。元の論文の実装は、機能的ではありましたが、冗長で Theano に依存していることが指摘されていました。この PyTorch バージョンは、シンプルさと明瞭さを目指しており、コアロジックは約 150 行のコードに含まれています。
このリポジトリには、特に二値化 MNIST データセットを使用して MADE モデルを使用する方法を示す例が含まれています。ユーザーは、1 層 MLP をトレーニングして二値クロスエントロピー損失 94.5 を達成するなど、元の論文の結果を再現できます。また、例では、単一の MLP 内で重み共有を活用し、テスト時に予測を平均化してパフォーマンスを向上させることで、10 個の順序付けでテスト損失 79.3 を達成する、より大きなモデルアンサンブルをトレーニングする方法も示しています。
主要なクラスである `MADE` は `made.py` に実装されており、PyTorch の `nn.Module` を継承しているため、より大きなニューラルネットワークアーキテクチャに簡単に統合できます。インスタンス化プロセスには、入力および出力次元、隠れ層のサイズ、および使用するマスクの数を指定することが含まれます。出力次元パラメータは柔軟であり、ガウス分布やビン化されたソフトマックス予測など、さまざまな出力分布を可能にします。MNIST の二値予測で示されている最も単純なケースでは、入力次元ごとに 1 つの出力パラメータが使用されます。
- カテゴリーAIモデルとLLM
- 料金モデルオープンソース
- デプロイクラウド, セルフホスト
- プラットフォームWeb
PyTorch MADEの主要機能
Masked Autoencoder Density Estimation (MADE) の実装
統合の容易さのために PyTorch で構築
自己回帰型密度モデリングを可能にする
単一の順方向パスによる効率的な尤度評価
次元に対する線形サンプリング複雑性
二値化 MNIST データセットの例を含む
モデルアンサンブルのトレーニングをサポート
さまざまな分布のための柔軟な出力層
簡潔なコードベース (コアロジックは約 150 行)
自己回帰のための MLP 接続のマスキング
条件付き依存関係のための入力次元順序付け
PyTorch MADEをはじめる
モデルへのアクセス: GitHub リポジトリをクローンします。
環境設定: PyTorch およびその他の依存関係をインストールします。
API による統合: `made.py` から `MADE` クラスをインスタンス化します。
モデルの設定: 入力/出力次元、隠れ層、マスク数を指定します。
モデルのトレーニング: 指定されたデータセットとパラメータで `run.py` スクリプトを使用します。
尤度の評価: 単一の順方向パスを実行します。
データのサンプリング: 次元に対して線形にサンプリングプロセスを実行します。
PyTorch MADEの使用例
- 尤度推定
- 自己回帰モデリング
- 画像生成
- 確率モデリング
- 機械学習研究
- データ圧縮








