Machine Learning, Graphs, Stuff
Recently I've been working a lot with machine learning. I'll be presenting a selection of articles on different areas over the next few weeks.- An alternative introduction to Machine Learning concepts
- A guide to building a nodejs addon connecting to tensorflow c++
- My experiences with machine learning using a small home brewed scala library
- Some helpers for getting started with tensorflow python using Jupyter notebooks
Getting started with machine learning
One of the problems with machine learning is that lots of people have heard of it (and
associate it vaguely with their vague ideas of artificial intelligence), but very few
people have even a basic idea of how it works. I've been sharing an intro with some of
my friends from both technical and non-technical backgrounds and I've had some promising
reactions so as soon as I've replaced any of the diagrams from the web I can't find a license
for I'll post it up.
Even for people who have a reasonable idea, the thought of digging back into their college
maths for linear algebra and derivatives might seem daunting: I'll try and provide some
visual intuitions for matrix/tensor operations in machine learning to help you on your
way.
Tensorflow
The Tensorflow documentation and guides are getting better but they're still pretty thin.
Programming through computational graphs takes a little getting used to by itself and if
you're not overly familiar with machine learning in the first place it can be a difficult
place to start.
There are some resources I've found useful which I'll share links to and I'll be providing
some code and projects to make things adoption easier both in python and c++.
I've also got a Nodejs Express project where I show how to get an addon talking to a
shared c++ library. There are a lot of large frameworks emerging out there but getting
image recognition working as a microservice really only requires a few files. I'll
put these up on github and do a walkthrough (There are a few platform details particularly on
OSX that I'll detail that should save people a bit of time).
There's enough to get started on Tensorflow and Node here
and there's more to come soon.
There are a few thoughts on machine learning in a microservice environment here.
I'll expand on it as I play around.
Other approaches
Writing your own code is always a good way to familiarize yourself with new ideas. There's
a lot of machine learning code knocking around in python - numpy - tensorflow, so I
decided to write some in scala... It was an interesting exercise and a good way to find out
what's missing from scala linear algebra libraries and what I would look for in other
peoples approaches.