# Machine Learning

## Contents

## Introduction

Traditional software development requires programmers to specify precise instructions to a computer, via a programming language. However in Machine Learning, a programmer provides a *template* (more formally termed as *model*) to a computer for a given task. A computer attempts to learn precise instructions (compliant with the provided *model*) automatically, via pre-processed data (Supervised Learning, Unsupervised Learning) or interaction with a environment (Reinforcement Learning).

Machine Learning has recently received a lot of media attention due to its recent success. Machine Learning is playing an increasingly important role in our lives, and many popular tech companies utilize a Machine Learning arsenal to improve their products. To get you interested, here is a list of exciting breakthroughs in Machine Learning -

- AlphaGo - Recently beat the world champion of the extremely challenging Chinese game Go.
- Differential Neural Computer - Automatically learns simple graph algorithms and data structures!
- Neural Style Transfer - Can paint any scene using Van Gogh's style!
- Self-Driving Cars

## Various kinds of ML Models

There's actually more to the story: The above training paradigm where we use 'labelled' examples(this is a tree; that is not a tree) to train our algorithm is called Supervised Learning.

The paradigm that has been garnering the greatest attention of late is called Reinforcement Learning, finding use in training AlphaGo and other game-playing and behavioural AI. Exciting ideas like Genetic and Evolutionary algorithms are subsumed by this paradigm. Check out this video where a bot learns to play Super Mario. The idea is to reinforce correct behaviour and deter incorrect behaviour, often via a stochastic reward mechanism. More technically, the algorithm must minimise a cost function in a learning environment. Lots of fascinating math comes into play and this field sees the direct application of Game Theory and Markov Decision Processes.

The last broad flavor of ML is called Unsupervised Learning. The algorithm is not given any input or reinforcement at all. Only data. It must draw it's own conclusions or observations. This is extremely challenging due to the open ended nature of the problem and largely lies unsolved. Most of the work in this field has been based on Pattern Finding and Clustering.

### Basic Regressor-Classifier Models

### Decision Trees & Random Forests

### Unsupervised Models

## Deep Learning

### Neural Networks (Feedforward)

### Convolutional Neural Networks

- This video serves as a basic introductory guide to understanding the intuition behind convolutional nets.
- CS 231n is a course on using Convolutional Neural Networks for Visual Recognition, in Stanford. (lecture slides in the video description)
- Convolutional Neural Network Architectures - A lecture by Lana Labzenik
- Understanding ConvNets

### Recurrent Neural Networks

Finally, the most awesome kind of networks which make use of memory and feedback. First up, a blog to boost your spirits - RNN Effectiveness.

## Learning Machine Learning

There are tons of resources online. Here are our recommendations for deep learning -

- Neural Networks and Deep Learning - The best hands on 'mini-course' on understanding and implementing Neural Nets and Deep Learning in Python.
- Mathworks - Machine Learning - Super-fast crash course on getting started in MATLAB.
- Deep Learning Book - A more theoretical treatment of Machine Learning basics and Deep learning.
- Adventures in Machine Learning - Neural Networks Tutorial - A really comprehensive introduction to building neural networks in Python.
- Adventures in Machine Learning - Python TensorFlow Tutorial - A gentle introduction to TensorFlow deep learning in Python.

## Machine Learning Platforms

Machine learning today is powered by very efficient libraries that run on GPUs. Some of the exciting libraries to look at are,

- TensorFlow - The tool powering all your favourite Google products - Gmail, Google Translate, Google Search, Google Speech etc. TensorFlow was recently made open source on Github. TensorFlow has a python API making machine learning easier and efficient. Have a look at our TensorFlow tutorial to find a list of TensorFlow resources.
- Keras
- Torch - Have a look at our Torch guide.
- Theano
- scikit-learn

## Tips for applying ML

- Use pickle to save trained model as objects, which can be called easily, even after the kernel has been stopped.

## Reading Material from CS419 Introduction to ML course

Courtesy for compilation: Prof. Preethi Jyothi, CSE Dept., IIT Bombay

0. Basics of probability for ML

Reading: http://www.deeplearningbook.org/contents/prob.html, Sections 3.1-3.8, 3.10, 3.11, 3.13

1. Linear regression (incl. regularization)

Reading: http://www.stat.cmu.edu/~cshalizi/mreg/15/lectures/03/lecture-03.pdf, Sections 2 & 3 Reading: http://www.stat.cmu.edu/~cshalizi/mreg/15/lectures/04/lecture-04.pdf, Sections 1.2, 1.3 and 2 Reading: https://web.stanford.edu/~hastie/ElemStatLearn/, Chapter 3.4 (everything before Eqn 3.45)

2. Naive Bayes & Logistic regression classifiers

Reading: https://www.cs.cmu.edu/~tom/mlbook/NBayesLogReg.pdf, Entire chapter

3. Decision Trees

Reading: https://www.cse.iitb.ac.in/~pjyothi/cs419/dtrees.pdf, Entire chapter

4. Perceptron Algorithm

Reading: https://www.cs.cmu.edu/~avrim/ML10/lect0125.pdf

5. Basics of statistical learning theory/Bias-Variance tradeoff

Reading: http://cs229.stanford.edu/notes/cs229-notes4.pdf Reading: http://www.cs.huji.ac.il/~shashua/papers/class11-PAC2.pdf, Section 11.1 on VC dimension

6. MLE vs MAP estimation

Reading: http://www.mi.fu-berlin.de/wiki/pub/ABI/Genomics12/MLvsMAP.pdf, Slides 1 to 35

7. SVMs + kernel methods

Reading: http://svms.org/tutorials/Moore2001.pdf, Technical details about QP/lagrangian optimization are not important

Reading: https://www.cise.ufl.edu/class/cis4930sp11dtm/notes/intro_svm_new.pdf, Slides 1 to 32

8. k-means clustering + Gaussian mixture models

Reading: Chapter 9 from the book "Pattern Recognition and Machine Learning" by Chris Bishop, Entire chapter

9. PCA

Reading: https://arxiv.org/pdf/1404.1100.pdf, Sections I to V

10. Feedforward neural networks + backpropagation

Reading: http://ufldl.stanford.edu/tutorial/supervised/MultiLayerNeuralNetworks/

11. Ensemble learning (Boosting/Bagging)

Reading: Chapter 14 from the book "Pattern Recognition and Machine Learning" by Chris Bishop, Sections 14.3, 14.3.1 Reading: http://jessica2.msri.org/attachments/10778/10778-boost.pdf, Slides 1 to 27

12. Fundamentals of hidden Markov Models

Reading: https://web.stanford.edu/~jurafsky/slp3/9.pdf

## See Also

- Christopher Olah's Blog : Excellent visualisations of important concepts on Neural Nets and Deep Learning.
- Awesome Machine Learning - Helpful resources and code snippets for various ML and data analytics implementations on a variety of platforms.
- arXiv-Sanity Preserver : A great way to browse machine learning papers (and more) on arXiv.
- Kaggle is an online Data Science community. You should head out there ASAP.
- Linear Digressions - If you listen to podcasts, check this out. Amazing podcast about Data Science and Machine Learning.
- MNIST_ASCII Challenge - It is a great practice challenge to learn Machine Learning
- Tensorflow
- Torch
- 9 Deep Learning Papers You Need to Know About
- Reddit Resources Reddit Resources
- Reddit Resources#2 - Every single ML resource on internet ranked