Git Product home page Git Product logo

cumulant-gan's Introduction

Mode Covering versus Mode Selection

Demostration examples from Cumulant GAN paper.

  • Code for all demonstrations can be found in Dip's repo.
  • TensorFlow 2 implementation.

Prerequisites

Python, NumPy, TensorFlow 2, SciPy, Matplotlib

Special cases of cumulant GAN

Alt-txt

Line defined by β + γ = 1 has a point symmetry. The central point, (0.5,0.5) corresponds to the Hellinger distance. For each point, (α, 1 − α), there is a symmetric one, i.e., (1 − α, α), which has the same distance from the symmetry point. The respective divergences have reciprocal probability ratios (e.g., KLD & reverse KLD, χ^2-divergence & reverse χ^2-divergence, etc.). Each point on the ray starting at the origin and pass through the point (α, 1 − α) also corresponds to (scaled) Rényi divergence of order α. These half-lines are called d-rays.

KLD minimization that corresponds to (β, γ) = (0, 1) tends to cover all modes while reverse KLD that corresponds to (β, γ) = (1, 0) tends to select a subset of them. Hellinger distance minimization produces samples with statistics that lie between KLD and reverse KLD minimization while Wasserstein distance minimization has a less controlled behavior.

Visualized Examples

GMM8

The target distribution is a mixture of 8 equiprobable and equidistant-from-the-origin Gaussian random variables.

Wasserstein Distance
(β, γ) = (0, 0)
Kullback-Leibler Divergence
(β, γ) = (0, 1)
Reverse Kullback-Leibler Divergence
(β, γ) = (1, 0)
-4log(1-Hellinger^2)
(β, γ) = (0.5, 0.5)
Alt-txt Alt-txt Alt-txt Alt-txt

TMM6

The target distribution is a mixture of 6 equiprobable Student’s t distributions. The characteristic property of this distribution is that it is heavy-tailed. Thus samples can be observed far from the mean value.

Wasserstein Distance
(β, γ) = (0, 0)
Kullback-Leibler Divergence
(β, γ) = (0, 1)
Reverse Kullback-Leibler Divergence
(β, γ) = (1, 0)
-4log(1-Hellinger^2)
(β, γ) = (0.5, 0.5)
Alt-txt Alt-txt Alt-txt Alt-txt

Swiss roll

The Swiss-roll dataset is a challenging example due to its complex manifold structure. Therefore the number of iterations required for training is increased by one order of magnitude.

Wasserstein Distance
(β, γ) = (0, 0)
Kullback-Leibler Divergence
(β, γ) = (0, 1)
Reverse Kullback-Leibler Divergence
(β, γ) = (1, 0)
-4log(1-Hellinger^2)
(β, γ) = (0.5, 0.5)
Alt-txt Alt-txt Alt-txt Alt-txt

Run Examples

To reproduce the achieved results run the main.py script with the corresponding arguments. The output is a directory with some checkpoints during the traininng proccess, the corresponding plots and finally a gif that visualizes the whole training.

Argument Default Value Info Choices
--epochs 10000 [int] how many generator iterations to train for -
--beta 0.0 [float] cumulant GAN beta parameter -
--gamma 0.0 [float] cumulant GAN gamma parameter -
--data 'gmm8' [str] data target 'gmm8', 'tmm6', 'swissroll'

References

@ARTICLE{9750393,
  author={Pantazis Yannis, Paul Dipjyoti, Fasoulakis Michail, Stylianou Yannis and Katsoulakis Markos A.},
  journal={IEEE Transactions on Neural Networks and Learning Systems},
  title={Cumulant GAN},
  year={2022},
  pages={1-12},
  doi={10.1109/TNNLS.2022.3161127}}

cumulant-gan's People

Contributors

andrewkof avatar

Watchers

 avatar  avatar

Forkers

yannisstyl

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.