Machine Learning Library for OCaml (available)

Starting Date: June 2020
Duration: 10 Weeks
Time commitment: Full-time
Prerequisites: Familiarity with OCaml or other functional programming languages, and/or the ability and willingness to learn OCaml; some experience with ML frameworks (e.g. TensorFlow).

Frameworks for machine learning include Python’s TensorFlow [1]. These frameworks provide standard ways of specifying models that can be optimised by machine learning algorithms.

OCaml [2] is a mature functional programming language with an expressive type system. DecML [3] is a prototype OCaml extension that facilitates implementing machine learning tasks, based on specifying models as ordinary OCaml functions and indicating which parameters are tunable by the learning procedure. The extension also provides facilities for “decoupling” these functions into parameterised models and their associated vector of parameters, which can then be passed to general machine learning algorithms for optimisation. DecML is an implementation of the theory described in [4].

One aspect of existing frameworks like TensorFlow is that the programmer must take care to explicitly specify the dataflow network of their models. The idea behind DecML is that the dataflow network is constructed and maintained automatically. There is also the potential to automatically analyse the structure of models so that the most appropriate learning algorithms can be applied.

In this project, you will develop the DecML prototype into a fully fledged framework and set of libraries. This will involve several aspects.

  • Implementing, in OCaml, functionality that is found in e.g. TensorFlow for constructing models.
  • Providing a library of standard models and sample applications.
  • Experimenting to determine and analyse the performance of the framework.
  • Investigating how models can be optimised for different learning algorithms.
  • Developing new programming patterns that support machine learning applications.

[4] A Functional Perspective on Machine Learning via Programmable Induction and Abduction. Steven Cheung, Victor Darvariu, Dan R. Ghica, Koko Muroya, Reuben N. S. Rowe.