|
|
|
|
|
by nessus42
5078 days ago
|
|
I think there's some benefit in figuring out the math well-enough so that you can translate each formula into a small number of linear algebra operations without any loops. They weren't always expressed that way. If they had been, then the homeworks truly would have been child's play. If it's concentrating more on the math than on applying the stuff to real-world problems that bothered you, then you wouldn't want to take the real full-blown Stanford class. That class is largely doing rather difficult math proofs and the like. I'm not sure I understand the argument that you could have solved the problems in a lazy fashion, however. Such lazy solutions aren't good for the real-world, as they don't perform well-enough. Part of the insight taught in the class is that you have to look for these sorts of performance optimizations in order for the solution to be feasible to use in the real world. If the problem is that other students could pass the class without having put in the same effort as you and I did, who cares about that! |
|
I studied math. I love math proofs. It's just not what I would expect if I would sign up for a ML class. Note, however, that I'm not complaining about the contents of the ML class, which I think were awesome, a really nice broad overview of the ML techniques. I really think I learned a lot. I'm just complaining about the homeworks, nothing else. They were not ML homeworks, they were CS homeworks (particularly, Matlab class homeworks). I don't know the contents of the real Stanford class, but believing your description, the same kind complaint applies.
You're wrong when you say that "lazy solutions" don't perform well in the real world. In the real world, robots aren't programmed in Matlab (I hope). In compiled languages, loops are just as fast as vectorized code (which is implemented using loops). Vectorized code having better performance than imperative looping code is just an artifact of the fact that Matlab (and e.g. R) are interpreted languages. (Sure, there might be some additional optimizations possible on vectorized code, like SIMD instructions, cache locality, special algorithms for sparse vectors/matrices, but this is in most situations premature optimization. Being able to write correct code and read it later beats 2% gain in performance!)