You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What are Gaussian Mixture Models (GMM) useful for in the age of deep learning? GMMs might have come out of fashion for classification tasks, but they still
46
+
have a few properties that make them useful in certain scenarios:
47
+
48
+
- They are universal approximators, meaning that given enough components they can approximate any distribution.
49
+
- Their likelihood can be evaluated in closed form, which makes them useful for generative modeling.
50
+
- They are rather fast to train and evaluate.
51
+
52
+
One of these applications is in the context of image reconstruction, where GMMs can be used to model the distribution and pixel correlations of local (patch based)
53
+
image features. This can be useful for tasks like image denoising or inpainting. One of these methods I have used them for is [Jolideco](https://github.com/jolideco/jolideco).
54
+
Speed up the training of O(10^6) patches was the main motivation for `gmmx`.
55
+
40
56
## Benchmarks
41
57
42
58
Here are some results from the benchmarks in the `benchmarks` folder comparing against Scikit-Learn. The benchmarks were run on a 2021 MacBook Pro with an M1 Pro chip.
43
59
44
-
### Prediction Time
60
+
### Prediction
45
61
46
62
| Time vs. Number of Components | Time vs. Number of Samples | Time vs. Number of Features |
||||
49
65
66
+
For prediction the speedup is around 2x for varying number of components and features. For the number of samples the cross-over point is around O(10^4) samples.
67
+
50
68
### Training Time
51
69
52
70
| Time vs. Number of Components | Time vs. Number of Samples | Time vs. Number of Features |
||||
73
+
74
+
For training the speedup is around 10x on the same architecture. However there is no guarantee that it will converge to the same solution as Scikit-Learn. But there are some tests in the `tests` folder that compare the results of the two implementations.
0 commit comments