Machine Learning for Newbies
In recent years there has been a huge uprise and general interest in Machine Learning and Deep Learning. You could say these technologies have almost become mainstream by now. The term “machine learning” (ml) was first defined in 1959 as “the ability to learn without being explicitly programmed”. Which basically means that a machine could learn from past experience and reprogram itself in order to work better. Computers are therefore trained to learn from data. Artificial Intelligence and machine learning sometimes get mixed up, even though they are both very distinct fields. But other than AI, which is in nutshell about machines mimicking cognitive function associated with humans, machine learning is related very closely to statistics. You will see why a little later on.
If you are interested in the idea of machine learning, I want to give you an introduction and show you the best ways for you to start working with it!
The difference between machine learning and usual software programming is that machines learn from experience and not stick to hard coded rules. Among others, this technology brought us self-driving cars, search engines like Google, Facebook’s algorithms for proposing relevant posts and ads and speech or face recognition. Also, I just read that Google’s machine learning framework tensorflow can protect endangered sea cows.
Yes you heard right ;)
The first you have to ask yourself when starting with (ml) is, if your problem is solvable with (ml). Then, the first big and important step you do is collecting data and further preparing the data for training. This can be any data from excel sheets to text files, audio files, images and so on. The better the variety, density and volume of relevant data, the better the learning prospects for the machine becomes. Therefore the next step would be to prepare the data for training. You have to check on the quality of the data and if there’s data missing.
Consequently having the best data set possible should be the thing. When you have all your relevant, high quality data together you can start with the training of the model.
Another important step before training a classifier is pre-processing of the data.
It is very dependent on the domain (images, audio files, measurements,…) which pre-processing techniques are applied. But the main idea is to make the data “pretty” for the classifier, so that it can learn its parameters much faster. For example subtracting the mean value and dividing by the standard deviation of the training samples, etc.
In general there are these three different learning methods:
With unsupervised learning the machine learns with an unlabelled data set. Simply put this means that you don’t tell the machine what is what. Therefore it will try to figure it out itself and cluster the data in different groups and learn from that.
Reinforcement learning means that the model is trying to figure out the parameters for maximizing the outcome only by a simple reward feedback look. Imagine you want to train a dog. He doesn’t know which tricks you want him to learn, but you reward him with positive feedback such as treats or praise so he gets an idea. And every time you repeat this, the dog will know the trick better. It may sound funny, but it’s the same with machine learning ;)
Supervised learning means that labelled data is provided, and the model is learning its parameters, so that the number of misclassified samples (based on an error function) is minimized.
You can also combine all those learning methods. For example you could start with unsupervised learning and then move on to supervised learning.
Training a classifier
Like we’ve just learned, to do supervised training you need a well labelled data set. The goal is then to train a classifier that will be able to label the data by itself. So, if I wanted to distinguish between a whale and a dog, I would have to define features, which describe the characteristics of the data, in this case animals. Some features would be for example the shape, the length and the texture. For the beginning, a set of training data could look similar to something like this:
With this data, the classifier can be trained. The input to the classifier should be the features. The output should be the correct labelled data.
With a black and white picture – for example text on a sheet of paper – it basically works the same. If you’d want to seperate a 1 from an 8, you’d just have different features you’d use to train the classifier. The features could be for example if the number has roundness or if it has holes.
The chart below shows an example of a linear classifier, which was trained to distinguish between two classes (red / blue points). Here each point represents a set of measured features of a sample, for example the height and width of an animal.
So, enough with the terms and the theoretical stuff. When it comes to tutorials, there are many great websites with videos and papers on how to start working with machine learning!
Springboard offers a free machine learning in Python course. You’ll learn computer science techniques and how to build basic deep neural networks. It’s a great introduction to data science and can be completed in 2-4 weeks.
Udacity is always a good tip when it comes to programming courses. This intro to machine learning course is for free and takes about 10 weeks. The required programming skills are listed with “intermediate”.
On this CS231N website you can find parts of the Standford Computer Science class. This is a great written tutorial on Image Classification, Python and Neural Networks!
Another course with a lot of very good reviews is on coursera , also from Stanford University. The basis description says that “this course provides a broad introduction to machine learning, datamining, and statistical pattern recognition.”
Neural Networks and Deep Learning is a free online book that “helps you master the core concepts of neural networks, including modern techniques for deep learning.”
You have your own company and are interested in machine learning? Check out this article about how to make your company machine learning ready. If you want to get to know people in Vienna that have Computer Vision or Machine Learning background, please join our awesome community! Maybe we see each other at the next meetup!
QUESTIONS? LET US KNOW!