How Do I Start Using Deep Learning?
Where you start depends on what you already know.
The prerequisites for really understanding deep learning are linear algebra, calculus and statistics, as well as programming and some machine learning. The prerequisites for applying it are just learning how to deploy a model.
In the case of Deeplearning4j, you should know Java well and be comfortable with tools like the IntelliJ IDE and the automated build tool Maven. Skymind’s SKIL also includes a managed Conda environment for machine learning tools using Python.
Below you’ll find a list of resources. The sections are roughly organized in the order they will be useful.
GET STARTED WITH DEEP LEARNING
Free Machine- and Deep-learning Courses Online
- Andrew Ng’s Machine-Learning Class on YouTube
- Geoff Hinton’s Neural Networks Class on YouTube
- Patrick Winston’s Introduction to Artificial Intelligence @MIT (For those interested in a survey of artificial intelligence.)
- Andrej Karpathy’s Convolutional Neural Networks Class at Stanford (For those interested in image recognition.)
- ML@B: Machine Learning Crash Course: Part 1
- ML@B: Machine Learning Crash Course: Part 2
- Gradient descent, how neural networks learn, Deep learning, part 2
Math
- Seeing Theory: A Visual Introduction to Probability and Statistics
- Andrew Ng’s 6-Part Review of Linear Algebra
- Khan Academy’s Linear Algebra Course
- Linear Algebra for Machine Learning; Patrick van der Smagt
- CMU’s Linear Algebra Review
- Math for Machine Learning
- Immersive Linear Algebra
- Probability Cheatsheet
- The best linear algebra books
- Markov Chains, Explained
- An Introduction to MCMC for Machine Learning
Programming
If you do not know how to program yet, you can start with Java, but you might find other languages easier. Python and Ruby resources convey the basic ideas in a faster feedback loop.
- Learn Java The Hard Way
- Learn Python the Hard Way
- Pyret: A Python Learning Environment
- Scratch: A Visual Programming Environment From MIT
- Learn to Program (Ruby)
- Intro to the Command Line
- Additional command-line tutorial
- A Vim Tutorial and Primer (Vim is an editor accessible from the command line.)
- Intro to Computer Science (CS50 @Harvard edX)
- A Gentle Introduction to Machine Fundamentals
If you want to jump into deep-learning from here without Java, we recommend Theano and the various Python frameworks built atop it, including Keras and Lasagne.
Java
Once you have programming basics down, tackle Java, the world’s most widely used programming language, and the language of Hadoop.
- Think Java: Interactive Web-based Dev Environment
- Learn Java The Hard Way
- Java Resources
- Java Ranch: A Community for Java Beginners
- Intro to Programming in Java @Princeton
- Head First Java
- Java in a Nutshell
Deeplearning4j
With that under your belt, we recommend you approach Deeplearning4j through its examples.
Once you get those up and running, and you’ve understood the API, you’re ready for a full install.
Other Resources
Most of what we know about deep learning is contained in academic papers. We’ve linked to a number of them here.
While individual courses have limits on what they can teach, the Internet does not. Most math and programming questions can be answered by Googling and searching sites like Stackoverflow and Math Stackexchange.
Beginner’s Guides for Deep Learning and Machine Learning
- Introduction to Deep Neural Networks
- Regression & Neural Networks
- Generative Adversarial Networks (GANs)
- Word2vec: Neural Word Embeddings for Natural Language Processing
- Restricted Boltzmann Machines: The Building Blocks of Deep-Belief Networks
- Recurrent Networks and Long Short-Term Memory Units
- Convolutional Networks for Image Processing
- Artificial Intelligence vs. Machine Learning vs. Deep Learning
- Comparing Open-Source Deep Learning Frameworks
- Eigenvectors, PCA, Covariance and Entropy
- The AI Hierarchy of Needs
- Deep Reinforcement Learning
- Symbolic Reasoning & Deep Learning
- Graph Data & Deep Learning
- Open Data Sets for Machine Learning
- ETL Data Pipelines for Machine Learning
- A Glossary of Deep-Learning Terms
- Inference: Machine Learning Model Server