‘Everything should be made as simple as possible, but not simpler’ Albert Einstein.
Deep learning is one of the most promising and powerful branches of Machine Learning, however many people struggle to grasp what it is about, understand it from its very core, and lastly, efficiently take the theory to practice and develop applications that make use of it.
It is so attractive that most people dive into it with very little previous knowledge of Machine Learning, programming, or math, and end up being overwhelmed by the derivatives in Gradient Descent, the chain rule of Back-Propagation, and the vast amount of Deep Learning programming frameworks out there like Pytorch, Keras, or Tensorflow.
This rush is probably caused by seeing out there the amazing achievements of Deep Learning, like AlphaGo, image recognition feats, and knowing that it is the technology that powers voice assistants like Siri, or Alexa. Fear of missing out (FOMO) makes people hurry to learn Deep Learning and how to apply its powers to all kinds of problems.
However, there are so many resources out there, that knowing which one to pick in order to get started in Deep Learning can be an extremely challenging search, that most times is overlooked and not carried out in the best possible way. Some of these resources are:
- The famous Coursera Deep Learning specialisation (full review here).
- Theoretical Deep learning books like ‘Deep Learning’ by Ian Goodfellow et al (full review here).
- ‘Easy tutorials’ like Brandon Roher’s Guides, or Geoffreys Hinton’s Youtube series, which you can find here, that have a step learning curve and are best if we have some previous knowledge of Machine Learning.
Because of this, I have long been searching for a resource that could take people with just a little Python programming knowledge, and in a single, compact, and elegant manner teach them Deep Learning without any complex maths, previous expertise in Machine Learning, or amazing programming skills.
And I think I have found it.
If you want to learn all about it, keep reading and check out the review of this awesome, fun, and illuminating book!
Heads up: This article contains affiliate links so that you can comfortably buy this book without any extra charge while contributing to the creation of more posts like this one.
Grokking Deep Learning is authored by Andrew Trask, lead researcher at OpenMind, Sr Research Scientist at Deepmind, PhD at Oxford University, and a prolific author, with many similar texts, and all that by the age of 30!
Right now he is also working initiatives about Federated Learning, and the future of AI, you can check him out in the following video:
He is a born teacher, and at the beginning of Grokking Deep Learning, he clarifies his intentions with the book: to make the entry to deep learning as low as possible, so no knowledge of Linear Algebra, Calculus, optimisation, or even Machine Learning is needed, as every single block required will be slowly and carefully explained as the book advances.
All you need is a high-school level mathematics (sums and multiplications) and a little Python programming and you are good to go.
The book takes a first principles approach, like ‘Deep Learning from Scratch’ but assuming even less knowledge: you will first learn what Machine Learning is, the different types, then go into deep learning and learn about every single one of its main building blocks, covering the theory and learning to implement them from 0.
This practical and bottom up approach makes the reader fully understand what happens in every single step of a neural network: from how it is trained using gradient descent and back-propagation (learning to implement both algorithms from 0), to how it makes predictions.
This contrasts with other texts that directly teach you how to program using Keras for example, where you don’t know really what is under the hood of the API’s that are being taught.
For anyone that wants to fully understand Deep Learning, and learn how to later make the most out of any programming framework that implements it, this is the book to use.
Lets check out its contents.
The contents of this Deep Learning book are layed out in a manner where theoretical text, insightful examples, highly illustrative figures, and code snippets all live and complement each other in a perfect way. The are rolled out along the following chapters:
- Chapter 1 — Introducing deep learning: why you should learn it: why you should learn deep learning, and what you need to get started
- Chapter 2 — Fundamental Concepts: how do Machines Learn?: fundamental concepts of Machine Learning, supervised and unsupervised, parametric and non parametric learning.
- Chapter 3 — Introduction to neural prediction: forward propagation: how to use a neural network to make predictions, using weights as knowledge and inputs as information.
- Chapter 4 — Introduction to neural learning: gradient descent: the most well known optimisation technique of ANN, how to correct errors and improve through iteration.
- Chapter 5 — Learning multiple weights at a time: generalizing gradient descent: finishing the learning process of an Artificial Neural Network
- Chapter 6 — Building your first neural network: introduction to back propagation: in this chapter you will code your first end to end neural network, with all its elements from scratch.
- Chapter 7 — How to picture neural networks: in your head and on paper: A high level overview of Artificial Neural Networks, a very illustrative chapter to gather everything that you have learned until now and order all the knowledge in your head.
- Chapter 8 — Learning signal and ignoring noise: introduction to regularization and batching: introduction to overfitting and how to avoid it with dropout, and batch gradient descent as a new optimisation method.
- Chapter 9 — Modelling probabilities and nonlinearities: activation functions: activation functions and how to use them to give neural networks the ability to learn non linear mappings and output probabilities.
- Chapter 10 — Neural learning about edges and corners: intro to convolutional neural networks: the SOTA networks for image tasks, and a lot of code.
- Chapter 11 — Neural Networks that understand language: king-man+woman == ?: A dive into the Natural Language Processing (NLP) field, and some of the most used techniques and strategies in Deep Learning that have made ANN stand out as the de-facto family of models for NLP like word embeddings.
- Chapter 12 — Neural Networks that write like Shakespeare: recurrent layers for variable length data: recurrent neural networks, why and how they work.
- Chapter 13 — Introducing automatic optimization: let’s build a deep learning framework: how to build your own deep learning framework and encapsulate all you have learned up to now in clean, concise, and efficient code.
- Chapter 14 — Learning to write like Shakespeare: long short-term memory: the evolution of recurrent neural networks to learn and process larger texts and model language, LSTMs.
- Chapter 15 — Deep learning on unseen data: introducing federated learning: privacy in data, and why it is so relevant, as well as introduction to concepts like federated learning and encryption. This chapter is specially interesting, as it is a topic that is not covered very frequently in these kind of texts. If you want to learn what Federated Learning is, you can check out the following site.
- Chapter 16 — Where to go from here: a brief guide: tools and resources to keep learning Deep learning and advance in this fantastic journey.
As I mentioned a couple of times throughout this post, Grokking Deep Learning is for people that are looking to start in the world of Machine Learning from scratch, directly with Deep Learning, and without any deep mathematical or programming knowledge.
High school math and basic Python are enough to get you up and running with this great book and enjoying it to its fullest.
If you are someone who already has Machine Learning experience, and are looking for a book to strengthen that knowledge adding Deep Learning to your toolbox, some parts of this book will be already familiar, however, everything is explained in such an illustrative way, and through such well built analogies, that it is still worth the read.
This book could be summed up in a sentence like:
‘An excellent introduction and overview of Deep Learning with pretty much no pre-requisites and insightful visualizations, code, and analogies’
It is an amazing text for both, those looking to learn Deep Learning from scratch, and those that want to renew their view about it with some easy but awesome contents.
Like always, I hope that you have enjoyed the post and that you will give a try to this amazing book. You can find it on the following link:
For more book reviews like this one, on the best books on Machine Learning, check out the following repo, I hope you love it!
If you liked this post then feel free to follow me on Twitter at @jaimezorno. Also, you can take a look at my other posts on Data Science and Machine Learning here. Have a good read!
Also, if you want to learn more about Machine Learning and Artificial Intelligence follow me on Medium, and stay tuned for my next posts!
Until then, take care, and enjoy AI!
Thanks for reading!