Amnon David (10) [Avatar] Offline
#1
I like the book. At times it seems a little too verbose but that might be because I have a bit of familiarity with the subject. I've listed below items I think should be addressed. Some of them are silly, others are more important.

page 13: paragraph before last should be knob, knobs instead of nob, nobs

page 24: "What the Simplest Form of Neural Network Learning?" should be What is the Simplest Form of Neural Network Learning

Page 30
In fact... means that the function conforms to the patterns in the data.
- seems like there's a grammar problem here

Page 32:
Once we knew the relationship, we could move the knob_weight in the right direction using a simple if statement.

prediction = input * knob_weight?error = (goal_prediction - prediction) ** 2 



This is an implicit if statement - it would be less confusing just to say “statement” rather than “if statement”, or at least mention that it is implicit

Page 32: “The secret” discovery is a repetition of what was said in page 29 regarding the secret

Page 54: This is probably a matter of personal taste but I prefer not to be presented in a tutorial with code I don’t understand and be promised it will all be made clear. While I’ve seen other books use this method, I much prefer a method by which at no point in the tutorial is there some black box which will be explained at a later point.

Page 69:
It's actually pretty simple. We just created another for loop that iterates through each one of our streetlights... predicting, comparing to error, and updating our weights... And as we'll see... our error still goes to zero!


True, but unlike the example with 1 input/1 weight/1 output, or even 3 inputs/3 weights/1 output, with the streetlight problem it’s not evident why adding an inner for loop and repeatedly adjusting the weights for every new example should result in the weights converging to a final result and the error going to zero.

Andrew Trask (Grokking Deep Learning Author) (26) [Avatar] Offline
#2
Thank you so much. I believe that the latest MEAP addresses your concerns. Thank you for your constructive feedback, it helps me iterate.
Amnon David (10) [Avatar] Offline
#3
Thank you very much for making the changes. Here are some more observations from the latest version:

Page 12: parameteric vs. non-parameteric - I think some concrete examples that illustrate those different types would be helpful to make it clearer. The analogy of the two different styles in which humans learn wasn't really helpful to me.

Page 94: Where can we find the notebook (the text just has a "<NOTEBOOK NAME>" placeholder)? I'd like to play with this sample. Also, are there plans to add python notebooks to the rest of the code in the book? Could be handy for some hands-on experimentation

Page 123: The Secret to "Sometimes Correlation": I understand why linear correlations won't cut it, but don't understand what the motivation of selecting a nonlinear funtcion of the form "simply turn our node "off" when the value would be below 0." Would it make any difference if it was turned off when the value is above 0 instead? If so, then why, as it seems completely symmetrical.

Minor spelling mistakes and typos I've noticed:
Page 35: "without further adue" should be "without further ado"
Page 50: The python code does not print 0.16 as stated
Page 109: First paragraph: "teh", "adn" instead of "the", "and"

By the way, since I've also been interested in learning Julia for a while, I'm writing the code samples and some variations on them in Julia and thus hopefully accomplishing two goals at the same time smilie

Incidentally, I'm curious as to whether the knowledge gained by reading the book is limited to "suggested general knowledge before using heavy duty frameworks" or whether you think it can be used on it's own to develop actual production-grade learning systems - it seems that every interesting deep learning task today requires GPUs and some deep learning framework...
423495 (2) [Avatar] Offline
#4
Version 4, page 80, code listing 1:

for i in range(a):
    output += (a[i] * b[i])


I believe that provided code will not work. I think it should be "in range(len(a))".
423495 (2) [Avatar] Offline
#5
Version 4, page 81, listing 4:

for i in range(len(weights)):
    weights[i] -= alpha * weight_deltas[0]


Looks like it should be "weight_deltas[i]"