arXivDaily arXiv每日学术速递 周一至周五更新
arXiv周末暂无论文更新,休息一下吧,周末愉快~~
arXiv 1707.09094cs.MScs.LG
收藏

多线程高斯混合模型、k-Means和期望最大化的开源C++实现

An Open Source C++ Implementation of Multi-Threaded Gaussian Mixture Models, k-Means and Expectation Maximisation

Data61, CSIRO(澳大利亚联邦科学与工业研究组织数据61中心);Symantec Corporation(赛门铁克公司);University of Queensland(昆士兰大学)

Conrad Sanderson, Ryan Curtin

摘要:

多变量密度的建模是许多信号处理、模式识别和机器学习应用中的核心组成部分。建模通常通过高斯混合模型(GARCH)完成,该模型使用计算昂贵且可能不稳定的训练算法。我们提供了一个快速和强大的实现的GRESS在C++语言的概述,采用多线程版本的期望最大化(EM)和k-means训练算法。多线程是通过将EM和k-means算法重新表述为类似MapReduce的框架来实现的。此外,实施使用几种技术,以提高数值稳定性和建模精度。我们证明,多线程实现在最近的16个核心的机器上实现了一个数量级的加速,并且它可以实现比以前完善的可访问实现更高的建模精度。多线程实现作为一个用户友好的类包含在开源Armadillo C++线性代数库的最新版本中。该库是在Apache~2.0许可下提供的,允许在商业产品中不受限制地使用。

英文摘要:

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.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑