title | tags | authors | affiliations | date | bibliography | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ISL: A Julia package for training Implicit Generative Models via an Invariant Statistical Loss |
|
|
|
01 August 2024 |
paper.bib |
Implicit generative models have the capability to learn arbitrary complex data distributions. On the downside, training requires telling apart real data from artificially-generated ones using adversarial discriminators, leading to unstable training and mode-dropping issues. As reported by Zahee et al. (2017), even in the one-dimensional (1D) case, training a generative adversarial network (GAN) is challenging and often suboptimal. In this work, we develop a discriminator-free method for training one-dimensional (1D) generative implicit models and subsequently expand this method to accommodate multivariate cases. Our loss function is a discrepancy measure between a suitably chosen transformation of the model samples and a uniform distribution; hence, it is invariant with respect to the true distribution of the data. We first formulate our method for 1D random variables, providing an effective solution for approximate reparameterization of arbitrary complex distributions. Then, we consider the temporal setting (both univariate and multivariate), in which we model the conditional distribution of each sample given the history of the process.
ISL
is a Julia package specifically designed for training Implicit Generative Models using the innovative Invariant Statistical Loss. Leveraging the Flux framework, ISL
enables the implementation of advanced machine learning capabilities, balancing speed with a flexible, user-friendly interface. The API is crafted to simplify common operations such as training 1D models, univariate time series, and multivariate time series.
In addition to its core functionalities, ISL
offers a suite of utility functions, including support for generative adversarial networks and tools for time series analysis and generation. This makes ISL
a valuable resource for both machine learning researchers and data scientists/software developers who seek to train their models with this novel approach.
ISL
has already contributed in a scientific publications [@de2024training], underscoring its utility and impact in the field. Its combination of speed, thoughtful design, and robust machine learning functionalities for Implicit Generative Models positions ISL
as a powerful tool for advancing scientific research and practical applications alike in the area of Implicit Generative Models.
Implicit generative models employ an
Approximation of 1-dimensional (1D) parametric distributions is a seemingly naive problem for which the above-mentioned models can perform below expectations. In [@zaheer2017gan], the authors report that various types of GANs struggle to approximate relatively simple distributions from samples, emerging with MMD-GAN as the most promising technique. However, the latter implements a kernelized extension of a moment-matching criterion defined over a reproducing kernel Hilbert space, and consequently, the objective function is expensive to compute.
In this work, we introduce a novel approach to train univariate implicit models that relies on a fundamental property of rank statistics. Let
The ISL
repository is organized into several directories that encapsulate different aspects of the project, ranging from the core source code and custom functionalities to examples demonstrating the application of the project's capabilities, as well as testing frameworks to ensure reliability.
-
CustomLossFunction.jl
: This file contains implementations of the ISL custom loss function tailored for the models developed within the repository. -
ISL.jl
: Serves as the main module file of the repository, this file aggregates and exports the functionalities developed inCustomLossFunction.jl
.
-
time_series_predictions/
: This subdirectory showcases how the ISL project's models can be applied to time series prediction tasks. -
Learning1d_distribution/
: Focuses on the task of learning 1D distributions with the ISL.
runtests.jl
: This script is responsible for running automated tests against theISL.jl
module.
Documentation is available at (https://josemanuel22.github.io/ISL/dev/), where there are worked-out examples and tutorials on how to use the package.
This work has been supported by the the Office of Naval Research (award N00014-22-1-2647) and Spain's Agencia Estatal de Investigación (refs. PID2021-125159NB-I00 TYCHE and PID2021-123182OB-I00 EPiCENTER).