학술논문

An open source C++ implementation of multi-threaded Gaussian mixture models, k-means and expectation maximisation
Document Type
Conference
Source
2017 11th International Conference on Signal Processing and Communication Systems (ICSPCS) Signal Processing and Communication Systems (ICSPCS), 2017 11th International Conference on. :1-8 Dec, 2017
Subject
Bioengineering
Communication, Networking and Broadcast Technologies
Computing and Processing
Fields, Waves and Electromagnetics
Robotics and Control Systems
Signal Processing and Analysis
Covariance matrices
Clustering algorithms
C++ languages
Hidden Markov models
Training
Biological system modeling
Computational modeling
Language
Abstract
Modelling of multivariate densities is a core component in many signal processing, pattern recognition and machine learning applications. The modelling is often done via Gaussian mixture models (GMMs), which use computationally expensive and potentially unstable training algorithms. We provide an overview of a fast and robust implementation of GMMs in the C++ language, employing multi-threaded versions of the Expectation Maximisation (EM) and k-means training algorithms. Multi-threading is achieved through reformulation of the EM and k-means algorithms into a MapReduce-like framework. Furthermore, the implementation uses several techniques to improve numerical stability and modelling accuracy. We demonstrate that the multi-threaded implementation achieves a speedup of an order of magnitude on a recent 16 core machine, and that it can achieve higher modelling accuracy than a previously well-established publically accessible implementation. The multi-threaded implementation is included as a user-friendly class in recent releases of the open source Armadillo C++ linear algebra library. The library is provided under the permissive Apache 2.0 license, allowing unencumbered use in commercial products.