Hi!
The current documentation assumes a lot of higher level calculus knowledge that I don't quite have. I can usually get through stuff fine, but when muddling through these docs I keep finding myself two or three levels deep googling terms I don't know. I hope that a more accessible version will come about at some point.
Perhaps this is me being a little thick, but after a few hours spent looking at it, I'm still not quite sure how to do custom differentiation. I've been trying to understand what to do with pullback, but I don't quite understand what the v argument is and how we're meant to use it. As I understand from reading up on general auto diff techniques, reverse mode differentiation means that we're effectively running the chain rule backwards and upside down, and v might be some kind of adjoint variable, but I'm not actually quite sure what that means. I think it's something to do with the rate of change of the input with respect to the output, which presumably means the parameters and return value of the function respectively.
I find myself in a situation where I know the conventional derivative of some expression, and I know that I have to incorporate v somehow, but I'm not sure quite how. By observation, multiplying by v seems to be the thing a lot of the time, but presumably not all of the time. Is there a plain language explanation of this somewhere? I think it would be a very valuable thing to add to the custom differentiation tutorial, which currently just shows an example of exp being multiplied by v without remarking why.
Let's say I'm creating a custom differential for ax^2 + bx + c. I obviously know how to take that to the 2ax + b stage, but what I'm lacking is a general understanding of what that becomes in pullback: { v in ... } format.
Presumably most of the people using this at the moment have more maths education than I do, so sorry for being that guy, but I hope that it's considered a design goal that people with my level of ability should be able to do these things. Or maybe everyone else gets it instantly and I'm just being thick today, that's very plausible.
I'm having a lot of fun playing with all of this though, and I'm very impressed with it! While I'm experienced with general coding, Swift, TensorFlow, and machine learning are all new areas for me, so I'm throwing myself into the deep end with this.
Sam.