Skip to content

elslush/HLearn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Homomorphic machine learning

This project is meant to analyze the HLearn framework in Haskell for comparison. Homomorphism allows for extreme parallelization. This concept is explored in this experiment.

What is Homomorphism?

“A map between two algebraic structures that preserves the operations of the structures”

F (x * y) = F (x) * F (y)

The exponential function x -> ex, ex + y = exey

Monoid Homomorphisms

A homomorphism between two monoids (M, ∗) and (N, •) is a function f : M → N such that

  1. f(x ∗ y) = f(x) • f(y) for all x, y in M
  2. f(eM) = eN,

where eM and eN are the identities on M and N respectively.

A map between monoids that

  1. preserves the monoid operation
  2. maps the identity element of the first monoid to that of the second monoid

Homomorphisms in machine learning

  • parallel batch training -> Monoid
  • online training -> Monoid
  • fast cross-validation -> Monoid
  • "untraining" of data points -> Abelian Group
  • more fast cross-validation -> Abelian Group
  • weighted data points -> R-Module
  • fractionally weighted data points -> Vector Space
  • fast simple preprocessing of data -> Functor
  • fast complex preprocessing of data -> Monad

References:

  1. https://izbicki.me/public/papers/tfp2013-hlearn-a-machine-learning-library-for-haskell.pdf
  2. https://en.wikipedia.org/wiki/Homomorphism

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published