Andrew Ng updates his Machine Learning course(deeplearning.ai) |
Andrew Ng updates his Machine Learning course(deeplearning.ai) |
I took this course and Dan Boneh's cryptography course and both were truly excellent.
Update: You have to go into the individual courses within the specialization and the enroll popup will have an audit option.
First Course is here: https://www.coursera.org/learn/neural-networks-deep-learning...
There are two types of courses in Coursera- free and paid.
In case of the paid courses, you can go to the course and navigate to the "Buy Subscription" page and click on "audit the course". You can watch all the videos for free, but you don't get access to quizzes and programming assignments (you never know what a web search will turn up ;)) ⊕. You do not get a certificate by completing a course or completing all courses of a "Specialization".
In the case of a free course, you get access to all the videos, quizzes, and assignments. You don't get any kind of certificate. Instead of going to subscription page, you can just click "Enroll" and choose the no certification option.
There are some great courses in the free tier (videos + assignments, no certs) as well. Dan Boneh's Cryptography and Grossman's Programming Languages A, B, C come to mind. Also Model Thinking by Scott Page.
There were some great discussions on HN in the past. [0][1][2]
⊕ There are courses where duplicates of paid assignments and quizzes are provided under "Practice Assignment" as opposed to "Graded Assignment". Like Martin Odersky's Functional Programming Principles in Scala MOOC.
[0]: https://news.ycombinator.com/item?id=25245125
(specifically the crypto course sounds interesting)
https://news.ycombinator.com/item?id=31204055
I certainly was excited when I saw this headline. Thought maybe it was early
https://omscs.gatech.edu/cs-7641-machine-learning
https://omscs.gatech.edu/cs-7642-reinforcement-learning (I took this before ML but its supposed to come after. There is some overlap. Probably my favorite graduate course.)
https://omscs.gatech.edu/cs-7646-machine-learning-trading (IMO not amazing)
Much more basic (took this before OMSCS):
https://www.udacity.com/course/intro-to-machine-learning--ud...
I'm sure there are many more.
It's a recorded version of a real Caltech undergrad course, and it's focused on understanding the math behind these algorithms, not just applying black-box ML libraries.
It's much less practical, but I feel like it teaches you more.
[1] https://www.coursera.org/learn/machine-learning/ [2] https://www.coursera.org/learn/neural-networks-deep-learning...
The most practical takeaway I got from Ng's course was the dangers of under and overfitting your data and techniques for detecting when you make that mistake.
Of course, you want to have some understanding of what's going on under the covers but, for a lot of people, starting from first principles is quite hard and isn't really necessary.
ML is dominated by gigantic datasets and massive computing powers, something individuals will not have a lot of.
It is unlikely that you could build a major product with it, but it could tech you neat tricks to speed up some parts of work. Also, similar to cs101, it is a necessary first step towards a career in ML. So might as well do it.
I know a bunch of business analysts and data analysts who have gotten a job based on what they learnt in this course. Ofc, they also got some stem degre alongside it, but this course made a difference.
The things I learned here helped me gain a solid foundation, which, in turn helped me learn Deep Learning.
And Deep Learning feeds me now.
The good thing about this course is that it is not Math-shy. It is not rigorous in terms of Math, like there are no proofs and so on. But Math is omnipresent here.
Andrew Ng's MOOC is among the best game in town. Ng is among the best teachers I have ever seen.
You could use ML in your job/company but then you dont need this course, you just use a ML product.
See this course as a hobby thing, or if you are in HS and want to start preparing for college, otherwise there are better uses of your time.
ML product?
Admittedly I also bought textbooks and worked through tutorials as well.
Octave is very easy to learn if you have previous programming experience.
You won't _write_ programs a lot. There will be cookie-cutter code, and you will fill in some blanks. A line here a line there.
Trust me, Octave wasn’t a deal-breaker if you tried. And a lot of formulae were the code.
But I've never seen actual production anything in Matlab. Did Matlab provide something at the time others did not? If so, how did they transfer MatLab to running production models? Or did they create a model with basic outcomes - and then code a representation of it in C++, etc?
It was around the time I was in university that Python really matured for numerical computing, but professors (as opposed to grad students) were likely to be already familiar with Matlab, so there wasn't much reason for them to learn Python. Andrew Ng was already a mid-career researcher when he made his course, which was probably based on older materials (I also learned basic neural networks in my numerical computing class in 2008), so it made sense for him to continue to use Matlab, especially because Octave exists as an open-source reimplementation of the basic functionality.
These days, you wouldn't use anything else but Python for ML, at least until you really productionize the implementation at a large scale, at which case you might rewrite in C++ or Rust (I don't know if they even bother rewriting these days when most of the computation happens in GPUs or TPUs). And it's my understanding, although I'm not really too familiar these days, that Matlab has mostly pivoted into providing a toolbox of all sorts of esoteric numerical methods for engineering-related tasks like finite element analysis, as well as hardware simulation (using Simulink).
https://www.coursera.support/s/article/360036151932-Courses-...
Users complain all the time: https://www.reddit.com/r/GoogleColab/comments/sq0lia/colab_p...
Not sure about the new course.
There are more customisable products within Google where you can provide training examples and labels using a UI (AutoML I think it's called). The result is an endpoint you can use to do inference, based on the model created behind the scenes.
I just mention these examples because I've spent a little time researching them at top-level.
I would (assuming zilch knowledge and tools).
- Install Python. https://www.python.org/downloads/
- Install VSC https://code.visualstudio.com/
- Install the python extension for VSC https://marketplace.visualstudio.com/items?itemName=ms-pytho...
- learn a little bit of python. This is a good resource, but there are several more, even the official documentation is very good
http://openbookproject.net/thinkcs/python/english3e/
- After some familiarity with python one option is this free book:
http://neuralnetworksanddeeplearning.com/
- Another, good (but paid) option is this book: https://www.amazon.com/Hands-Machine-Learning-Scikit-Learn-T...
Or a third option is indeed Andrew Ng's course.
Now, for any of those 3 options a little (or a lot) of guidance and patience will be needed so hopefully you or some friend/peer can help with that. Good luck!
Andrew Ng for me did a lot more to demystify how stuff actually works
When I was younger and didn't work full time + have other commitments the bottoms up approach appealed to me more, I think partially because I had bigger time blocks to allocate. i.e I could spend a whole weekend just learning fundamentals of some particular thing I was interested in and reach the first levels of usefulness in that one "session".
These days smaller time blocks mean that I need to walk away with something the keep the spark going for most curiosities.
Similarly, when I learned web development with Rails over a decade ago, I didn't start by building an HTTP stack. I started by doing the build-a-blog-in-fifteen-minutes tutorial. Now I had a working project. Eventually I needed to learn all of the underlying technologies, but it's much easier and more rewarding to have something running first.
I've done my degree a bit before you (in Electrical Engineering, also learned all I could about NN and other AI methods back then) and most people would use MATLAB for whatever scientific algorithms/calculation they needed to do. We had free student licences at the university so that we could use it for lab work and for our theses. I remember it had all kinds of numerical optimization algorithms/packages, control theory algorithms, etc.
> There are some great courses in the full free tier as well.
So the full free tier courses offer a free certification? Or else what would be the difference?
And reading code tends to be a quicker way to learn roughly how something works than writing it from scratch.
Not really. They had lots of comments that explained what the code did. You didn't need to read most of the code.
My point is that compared to real university courses, the HW in this course would be labeled as "trivial". Writing those few lines of code was no more instructive than an in class paper test. It's more comparable to answering simple questions than building anything.
I don't think I had to debug even once in that course. It was that easy.
But in the real world
1) Python is the lingua franca for ML. You WILL need to learn python. All other resources are in python. Matlab you'll likely never use again, so it's kind of a waste.
2) Probably more people have existing python knowledge than Matlab knowledge. And if you already know python, and you know python is the lingua franca, it's annoying having to learn Matlab knowing that in the real world you'd be better off with python.
2. Optimization algorithms, of which gradient descent is a subset, are deployed in production in many languages, very often not Python.
3. There is almost nothing to learn. For the programming assignments in the course, Octave is used as a succinct DSL for matrix math. The assignments were to simply write the math in a computer and watch what happens when you run the computations.
4. You wouldn't learn Python by completing the programming assignments because you're just calling numerical routines, not dealing with anything else. Writing the code in Python simply adds more opportunity for error with no pedagogical benefit.
Compare to matlab, where matrices are first-class, syntactic sugar is consistent and rather lovely. But then the rest of the language is detestable.
import numpyOther than that, fast.ai is a great resource, and Jeremy Howard is a great instructor.
You will learn very practical tools and tricks, and a lot of recent research is demystified, but don't expect to achieve deep, general insights.
Also, fast.ai is a very very limited and poor library compared to PyTorch, JAX, TF, etc.
Programming, design, and architecture decisions are outright terrible.
I got paid to write fast.ai in one job. I still have nightmares. I never did it again.
But it is a nice learning resource.
I second this - while both are great courses, I found I could only dedicate very short amounts of time recently to any kind of study, and going from the ground-up more thoroughly seemed like I was making no progress. The fast.ai top down approach worked a bit better for me for those reasons, otherwise it would have been interesting starting with the deep dive.
Really?
If you have programming experience, you don't really need to learn Octave.
Some formulae were the code.
In case of others, the whole program was written, with one or two missing lines that you had to implement.
I spent zero time learning Octave, because there was nothing to learn.
If you're playing around interactively, it's a bit easier to write (in Matlab)
m = [1 0 0 ; 0 0 -1 ; 0 1 0]
than (in Python) m = np.array([[1, 0, 0], [0, 0, -1], [0, 1, 0]])
Also a bit longer example: m = rand(3,4)
a = [0.1 0.2 0.3]
m \ a'
versus m = np.random.rand(3,4)
a = np.array([0.1, 0.2, 0.3])
np.linalg.lstsq(m, a.T)
wtf?
google...
fine!
a = np.array([[0.1, 0.2, 0.3]])
np.linalg.lstsq(m, a.T)
But if you're developing software, you can't really easily and reliably deploy Matlab or Octave to run in the cloud in your production systems, whereas Python you can.I wish someone would make "MATLAB with all its toolboxes, but with python syntax, in a colab-like IDE".
Learning Octave made me wish all languages supported matrices, vectors, and the necessary operations.
I was more referring to other resources/classes I had looked at, besides Ng's course or FastAI.