  ProSper is a python library containing probabilistic algorithms to learn
dictionaries. Given a set of data points, the implemented algorithms seek to
learn the elementary components that have generated the data. The library
widens the scope of dictionary learning approaches beyond implementations of
standard approaches such as ICA, NMF or standard L1 sparse coding. The
implemented algorithms are especially well-suited in cases when data consist of
components that combine non-linearly and/or for data requiring flexible prior
distributions. Furthermore, the implemented algorithms go beyond standard
approaches by inferring prior and noise parameters of the data, and they
provide rich a-posteriori approximations for inference. The library is designed
to be extendable and it currently includes: Binary Sparse Coding (BSC), Ternary
Sparse Coding (TSC), Discrete Sparse Coding (DSC), Maximal Causes Analysis
(MCA), Maximum Magnitude Causes Analysis (MMCA), and Gaussian Sparse Coding
(GSC, a recent spike-and-slab sparse coding approach). The algorithms are
scalable due to a combination of variational approximations and
parallelization. Implementations of all algorithms allow for parallel execution
on multiple CPUs and multiple machines for medium to large-scale applications.
Typical large-scale runs of the algorithms can use hundreds of CPUs to learn
hundreds of dictionary elements from data with tens of millions of
floating-point numbers such that models with several hundred thousand
parameters can be optimized. The library is designed to have minimal
dependencies and to be easy to use. It targets users of dictionary learning
algorithms and Machine Learning researchers.
