Ask HN: What Neural Networks/Deep Learning Books Should I Read?
There are lots of deep learning books on the market. The vast majority of them are presenting practical examples using some Python (or whatever) deep learning framework. Such books don't interest me at all. If I wanted to learn some particular framework, I would just look up the documentation for that framework.
I'm looking for two types of books:
1. A technical, math-heavy introduction to neural networks and deep learning, with little or no actual code (except possibly some pseudocode). The often recommended book by Goodfellow et al resembles what I'm looking for, but unfortunately, it completely lacks exercises.
2. An entertaining pop science like book which takes a more philosophical and cross disciplinary look at neural networks as well as their inspirations and applications. I haven't been able to find a single book like this, but surely it has to exist?
Recommendations, anyone?
49 comments
[ 3.4 ms ] story [ 95.4 ms ] threadHave you considered giving Goodfellow another shot, but trying to re-derive the results therein as a form of exercise? I think that would likely be one of the faster methods to bring yourself reasonably up to date with the field.
As the parent poster says, this field moves fast but this book will give a solid grounding.
Even though the treatment on neural networks is short, the beginning chapters are worthwhile. The chapter one random variables and probability is one of the best introductions to probabilistic modeling which I’ve seen.
Youtube links for the 2 videos on NN:
Lecture 15 https://www.youtube.com/watch?v=Z1pcTxvCOgw
16 https://www.youtube.com/watch?v=OvMGPHpa_tM
disclaimer: I haven't really dug in to deep learning, so I'll wager there may be great resources I'm completely unaware of.
[0] 'Deep Learning, Ian Goodfellow and Yoshua Bengio and Aaron Courville, MIT Press, https://www.deeplearningbook.org/
This for actual methods: http://www.deeplearningbook.org/
This is also useful, but harder to read than the previous ones: https://web.stanford.edu/~hastie/Papers/ESLII.pdf
Thanks for your suggestion btw.
From the same Stanford publishing there is Introduction to Statistical Learning. It’s a good intro to Machine Learning as a whole.
Far too often it seems people want to jump directly into Deep Learning, I’d shy away from that and having a better understanding of ML as a discipline makes the application of DL much more productive.
Edit: Also would like to add a lot of people want to use DL for imaging stuff. Take some time to understand Digital Image Processing as well. It’s a good introduction to convolution and filtering. As well as just understanding what an image is and what can be done with it!
This is just sort of advice from my path.
The second book they mention also had some pretty heavy stuff involving probability and probability models. If you can take some time to understand Automata and it’s supplications such as Hidden Markov Models that’ll be a big help.
Also you mentioning that you never taking a formal algorithm course. While it isn’t necessary as you probably won’t be building anything from scratch. Learning some dynamic programming methods is very helpful when understanding FFT and it’s impact with convolution methods and also how some of these hidden models for probability are evaluated efficiently.
Untrue, it has one https://www.deeplearningbook.org/linear_algebra.pdf (tongue in cheek)
https://people.csail.mit.edu/jsolomon/share/book/numerical_b...
It will give you a decent introduction to optimization methods underpinning deep learning. Deep learning theory is optimization theory.
There are youtube lectures as well and Justin is a great lecturer.
I personally would not recommend the Goodfellow book. It's not a good book for newcomers, at best it's a quick reminder of how some things work on a non-rigorous level.
- Stanford's CS231n (http://cs231n.stanford.edu) for Computer Vision
- Stanford's CS224n (http://web.stanford.edu/class/cs224n/) for NLP
They both have pretty solid exercises, which includes work like implementing back-propagation from first principles.
> If I wanted to learn some particular framework, I would just look up the documentation for that framework.
Well, if you don't know deep learning, it is not how it works (unless it is a poor book, which only provides an introduction to some API). Still, I recommend "Deep Learning in Python" by Francois Chollet as it provides a good overview of practical deep learning. For practical applications, a book WILL use one framework or another or will be useless. If you understand overfitting, L2 or batch processing in Keras, you will be able to use in any other framework (after looking up its API).
When it comes to the mathematical background, Deep Learning Book by Ian Goodfellow et al. is a great starting point, giving a lot of overview. Though, it requires a lot of interest in maths. Convolutional networks start well after page 300.
I struggled to find something in the middle ground - showing mathematical foundations of deep learning, step by step, at the same time translating it into code. The closest example is CS231n: Convolutional Neural Networks for Visual Recognition (which is, IMHO, a masterpiece). Though, I believe that instead of using NumPy we can use PyTorch, giving a smooth transition between mathematical ideas and a practical, working code.
Not a book per se, but better than any other.
I am in the process of writing "Thinking in Tensors, Writing in PyTorch" (with an idea of showing maths, code, fundamentals or practical examples) but it is a slow process. It's a collaborative, open-source, repo - so open for collaborators and contributors. :)
* Neural Networks and Deep Learning: A Textbook by Charu Aggarwal - https://www.amazon.com/Neural-Networks-Deep-Learning-Textboo... The author (from IBM Watson Research center) also has written several other books on related domains.
Under your category (2) though not a pop-science book, i found the following old book (hence no DL) very good to really understand the intuition behind ANNs.
* Neural Networks for Applied Sciences and Engineering: From Fundamentals to Complex Pattern Recognition by Sandhya Samarasinghe - https://www.amazon.com/Neural-Networks-Applied-Sciences-Engi...
It well balanced, going into the intuition and math while not getting lost in the theoretical weeds.
It doesn’t go into the state of the art, but it does give you the background you’ll need to understand it.
It has some reasonable exercises but no solutions, but I think people have posted their own solutions online around the web.
http://neuralnetworksanddeeplearning.com
I think this is your best bet, to be honest. Meat & potatoes neural networks doesn't really require any super-deep mathematical knowledge (just linear algebra and a very hand-wavy ability to do basic matrix calculus), and the more advanced topics are moving way too fast for a textbook to cover them (Goodfellow et al. is already getting out of date).
The recommendation of Strang's new book is probably also pretty good.
Despite advertising itself as for coders and not math heavy, I found it to be much better at explaining the math than, for example goodfellas’ book.
It’s also much better at talking about the inspirations of certain methods - such as Dropout - than other sources I’ve found.
Overall, if you want a deep understanding of neural network, fast.ai is - somewhat ironically given its branding - the best resource I’ve encountered by a long shot.
Type 2: The Master Algorithm by Pedro Domingos
2. I'll probably be off-point here, but maybe The Book of Why (Judea Pearl) could be interesting reading for you.
FloydHub has a great article about this topic on their blog: https://blog.floydhub.com/best-deep-learning-books-updated-f....
A lot of MOOCs and open courses do a very good job at teaching the deep learning toolset for specific domains - vision, text, and so on. I was looking to find a curated source on how neural network architectures and algorithms gradually evolved over time as people realized they could solve a wider variety of problems.
This probably sounds like a `seminar` course with extensive readings? A good analogy for instance would be the MAA book on the history of integration [0], which describes how the notion of integration was formalized over time. Thank you for your help!
[0] https://www.maa.org/press/maa-reviews/a-radical-approach-to-...
It’s an older book, but it’s a deep dive into the math and intuition of neural networks. We used it for a grad-level applied math course in neural networks in 2013 (just as deep learning was emerging). It has tons of great visualizations and interesting exercises, is very readable, and is the best price (free).
I recommend reading a chapter or two to see how you like it, it has a bit of a different flavor compared to more modern deep learning books.
http://ai.berkeley.edu/home.html
https://www.manning.com/books/deep-learning-with-python
An excellent, coherent overview with working code to train a variety of neural networks.
It's not heavy on maths, and it mostly sticks with one framework and language.
I wish the author did a sequel. The book is totally relevant but I can only dream of what a modern version would look like.