連載「生成モデルを一から実装する」
公開順に読み進められる連載です。
- 完全なノイズから、三日月形が本当に浮かび上がってくるのか。拡散モデル(DDPM)を自分で実装して確かめてみた
DDPMをNumPyだけで実装し、ノイズからtwo moonsを生成。前向き過程・ノイズ予測・逆向き更新を図とコードで解説します。100ステップ設定で終端に信号が残る問題も訂正・補足しました。
- GAN(敵対的生成ネットワーク)を一から実装したら、損失は理論値に収束したのに生成分布は最後まで揃わなかった
GAN(敵対的生成ネットワーク)をnumpyで一から実装し、生成器と識別器の学習過程を追った実験記録。損失は理論値0.693に収束したのに生成分布は最後まで本物と揃わなかった。GANの学習が難しいと言われる理由を、自分のコードの挙動として確認した。
- 生成モデル三国志、最後の流派。Normalizing Flowをnumpyで一から実装したら、一番静かに学習が終わった
Normalizing Flow(正規化流、RealNVP型)をnumpyだけで実装した記録。可逆なアフィンカップリング層を6枚重ねてガウス分布をtwo moonsに変形し、逆変換の再構成誤差2.07×10⁻¹⁴を確認。拡散モデル・GANと同じデータで学習過程を比較します。
- VAEをtwo moonsでnumpyから実装したら、再構成で2つの三日月が1本のなめらかな曲線に融合した
VAEをNumPyで実装し、two moonsの再構成と生成を可視化。再構成MSEは0.4026で、2つの弧がつながる結果に。潜在空間とKL項、Flowとの比較で注意する点を解説します。