Numerical Linear Algebra for Programmers
aiprobook.com
aiprobook.com
I studied linear algebra in college and I could use a refresher for AI, but I don’t want to study math in the traditional way, with convoluted abstract examples that lead nowhere. Hated it back then and hate it now. The prospect of doing it in code makes it infinitely more exciting so you’ve definitely got something going on there there...
However, I’m not going to get into another subscription, mainly because I don’t want to check every month to see the state of the project.
I’d personally pay you around $40 for an early access fee that also gets me the final product... It’d be a discount from your target price but I’d also be taking a risk (what if you don’t finish it?).
I’m favoriting this and will check how it evolves. Worst case, I’ll buy the finished product if the reviews are good!
Have you checked out Gilbert Strang's lectures [1]? They're definitely geared toward numerical/applied linear algebra rather than theoretical/abstract.
[1] https://www.youtube.com/watch?v=7UJ4CFRGd-U&list=PLE7DDD9101...
As for why you would want to know these things, well, linear algebra is finding applications all over the place these days. Everything from computer graphics to machine learning is jam-packed with linear algebra. And I'm not just talking about basic concepts such as matrix-vector multiplication. The singular value decomposition has applications in discrete optimization, image compression, the PageRank algorithm [2], computer vision [3], and machine learning [2] [4].
Having said that, you may find it very difficult to understand something like SVD without a firm grounding in the topic of vector spaces, linear transformations, spanning, linear (in)dependence, subspaces, eigenvalues, eigenvectors, diagonalization, and determinants. This is why SVD is one of the last things you learn in a linear algebra course (indeed, it's not covered until lecture 29 of Gilbert Strang's course).
Ultimately, it all depends on how relevant these things are to you. I would assume (hope) that because you clicked on this HN discussion that you're interested in learning linear algebra because you think it might be useful to you.
[1] https://www.youtube.com/watch?v=fNk_zzaMoSs&list=PLZHQObOWTQ...
[2] http://www.cs.cornell.edu/courses/cs4850/2010sp/Course%20Not...
[3] http://cs.rkmvu.ac.in/~sghosh/public_html/nitw_igga/talk.pdf
[4] https://medium.com/@jonathan_hui/machine-learning-singular-v...
Mind you, they are very good, and out of all online courses I've seen, the questions are actually hard and make you think and understand on a deeper level. Every other course I've seen have simple, fluff questions, if any.
Tim Chartier of Davidson College put out a class on EdX called Applications of Linear Algebra. It's more practical, but I found Part 1 to be too practical and not enough math. It suffers from the opposite problem. Part 2 may be better, but I didn't make it through. Plus, I found his style to be a little woo-woo. You might have some success with it because he actually does talk about real world scenarios.
https://www.edx.org/course/applications-of-linear-algebra-pa...
I've actually looked at about half a dozen online LA resources that take different approaches. I should do a blog post about them one day.
I'd definitely be interested in seeing how different resources teach it.
If you want, there is a course called 18.065 that he is written that is about AI and is far more application-based. He reviews the 30 hours or so (by lecture time) of his famous LA course in the first 5 or so lectures before springing off into everything you need to end up with AI.
But the contents of his classic course (having an intuition for the 4 subspaces, describing and decomposing matrices in terms of the eigenvalues and vectors, analogies for non-square matrices) are in no way maths for the sake of maths, they are fundamental to understanding any onward applications of LA. They are the very basic words and grammar that let you start using LA in real combat situations. So that you could pick any random paper on ai or stats or control theory and actually be able to follow it rather than just be staring at hieroglyphics. It’s really worth the 30 or so hours of your life.
If that's not what you're looking for than maybe you won't be satisfied with any variant of an LA introduction. There's probably a lecture somewhere which teaches the math in combination with an application.
It seemed like we (CS students) were just wasting our time running matrix algorithms by hand, while the math students were learning an actual theory, allowing them to intuitively understand all the algorithms much more easily.
The companion book in the same series:
Deep Learning for Programmers: An Interactive Tutorial with CUDA, OpenCL, DNNL, Java, and Clojure
But while going through your performance comparison [1], I feel something is off.
I am not that familiar with libpython-clj and how it works, but looks like you are loading python from within the JVM and in turn the python is loading the C++/fortran OpenBLAS libraries to get the numerical calculations done for the Correlation Coefficient. I suspect this multi-level indirection is creating it's own performance overhead. For now, I don't believe the performance benchmark are telling us the true story :-)
But after saying all that, I love how concise is the clojure implementation is.
[1] https://dragan.rocks/articles/20/Clojure-Numpy-Cupy-CPU-GPU
https://dragan.rocks/articles/20/Clojure-Numpy-Cupy-CPU-GPU-...
If the whole book is filled with such chirpy and wrong assertions, they should fall on their swords for offending their numeric linear algebra forefathers and the shame of it all.
I think it might be this actually, can't watch it all right now to check. Demo I'm thinking of should be https://youtu.be/3v75aX5-gSA?t=1436
Or Golub & Van Loan, if you like pain.
He covers some numerical linear algebra, and he spends a lot of time on topic modeling and deep learning.
I'm not sure I agree with you. I remember his elementary calculus book, where he states and proves the fundamental theorem of calculus on the first two pages (including the definition of derivative and the definition of integral). He says something like "this is not a car analogy, this is the real thing and we are already done, the rest of the book is just minor details and examples". I do not know how you can be more concise than this, considering that half of the first page was taken by a cute drawing of a speedometer and an odometer. That you call verbose?
My experience of speaking with authors who have published books is that most of the money stays with the publisher and not the author which is a real pity. The net effect is the discouragement to write books which is counter to progress.
The subscription model is really interesting to me and I hope it makes a difference to the book publishing paradigm.
You get the book, AND the active development of the libraries.
Please consider an alternative viewpoint: you can try the book draft for $9, and if you don't like it, just don't continue subscription. Total cost: $9.
If you like the book, please consider that 100% of the book proceeds go towards the development of related free open source libraries https://github.com/uncomplicate
There have been several early access books where the author needed to take a (well deserved) break, or be slow at delivering new chapters because of other revisionary work. This has sometimes meant a few months without new content, which I was OK with in that model.
In this model I could easily end up spending way more than than that, and every month I have to make a decision if it's worth cancelling.
Not only that you have another book on there that's "early access too" so you are juggling two books (and books are not trivial things to write and get finished/polished). So how am I to expect you'll get either done in a reasonable time.
So sorry, I'd be happy to give you a flat $30 for early access to the book and full access to the ebook when it's finished, but I'm not going to subscribe and hope it's in a good state prior to reaching that point in monthly fee.
This is despite I think this book is very much what I'm looking for as I'm wanting to get into 3d graphics, but I'll pass.
I also was confused by the model. The model you try to use is obvious for you but in order for people to understand you need to make an effort in communication, because most people are not used to it.
You have to be extra careful because people have fear of the unknown, so you need to also get rid of people's fears, you do it here("if you don't like it,just don't continue the subscription"), but you should do where people take the decision.
I think the model makes sense but you need to explain it in the buying page as a benefit they we will be getting. For example:
With this subscription you will be supporting the development of free open source libraries that will become yours forever.
Now I see that you display this information but I did not see it while being interested on the book, so it is not visible enough.
If I were you I would not try to train my customers, it is too much work, I would offer the book plus code plus 8 months of subscription for just $119!!
Then in the subscription I would give my customers something they can not get easily out of it, like the network connections and support with people interested in this area all around the world(the people that buy your book), so once they are subscribed, and they are used to it, they have to remain subscribed.
The value for me of those open source libraries is zero because I don't use them. Only if people use them, they can value it. You need to get people in the loop first.
Maybe it could work better, maybe I could get more money with different approach, but I am a programmer; my goal is to concentrate on writing good software and good books. If I was a marketing genius, I would have probably chosen different career path :)
After backing and not receiving Punk Mathematics since 2010, I realized paying for something unfinished makes absolutely no sense at all.
I prefer to pay more and get something complete.
I'm now in the boring "I give you money, you give me finished product" camp.
I was agreeing with the other comment that, having been burned by 'alpha' books in the past, I'm disinclined to use the model again in the future. I similarly feel the way about video games. I'd rather pay for a finished product than a speculative one.
> no C++ syntax hell!
> no C++ at all!!!
The author of this book has some strong feelings about C++.
Yours truly,
C++ dev at work
PS. HN formatting is a devil.
The reference you are looking for (includes executable C++) is Numerical Recipes by William Press et al.
There are a couple other good ones as well that are more broad - e.g. Quarteroni, Sacco, & Saleri Numerical Mathematics also covers numerical diffeq, convex geometry, & approximation theory.
I can't comment on how OP's book fits in.
I bought this book hoping it would be to floating point what Hacker's Delight is to integers.
It is not that.
I'm not really sure what it is. Most of the numerical algorithms I wanted weren't included at all. Those that were, like random number generation, were out of date and covered with much less rigor than you can find online with some Googling. IIRC their algorithm for generating a random float in the range [0,1] is just wrong.
The book does indeed include executable C++. But the C++ it includes is a travesty. It's C++ written by someone who sort of understood C.
Anyway I did not like it. :)
I can understand why C++ isn't appropriate for this. Object-oriented programming has little to do with linear algebra, and a nightmarishly-complex language that's desperately trying to reinvent itself also isn't appropriate for pedagogy. But you still need a lingua franca, a language you can use to express the relevant principles without trying to evangelize one arcane functional language or another at the same time like so many authors try to do these days.
Being a relatively straightforward procedural language, C works well for this purpose. Everybody doing numerical computing is at least familiar with the fundamentals of C programming, or should be.
Is there some institutional resistance to plain old C, or is it just a matter of widespread personal prejudice among both students and teachers?
Compare the number of LOC or any other metric. Once you have high-level access to underlying algorithms (implemented in whatever native technology, but hidden), it is much, much, simpler to work at high-level.
It's because LoC and readability and maintainability matters.
Teaching Linear Algebra using NumPy isn't equivalent to teaching people linear algebra + teaching people to optimize LoC. Flawed argument.
and also the Downloads section of the https://aiprobook.com