How I'm Learning AI and Machine Learning
Hey guys, this is Maads 101, and recently I've been learning a lot of artificial intelligence and machine learning stuff. I just kind of want to share today, uh, my journey with you and how I learned what I've learned and all the places I've learned from and the cool stuff I've been doing.
So about 6 months ago, I started watching the AI lectures that MIT has up on OpenCourseWare. These lectures got me kind of introduced to a wide range of AI topics, ranging from really simple algorithms, where you just search every possible combination, and you can use that to solve things like chess or checkers and do pretty well, all the way up to pretty modern AI technology like support vector machines and neural networks, which maybe I'll talk a little bit more about, uh, later in this video.
So that was a really good introduction to machine learning. It does require, uh, multivariable calculus and linear algebra. So if you don't have a strong math background, you should probably acquire that before getting too interested in, uh, machine learning, at least if you want to understand the math that you're doing. But overall, I felt like it was pretty easy to follow, and the professor for that class, uh, was really great—actually really entertaining to watch. So, uh, that was really fun.
After I took the artificial intelligence class from MIT, I decided I should try to teach myself some numerical analysis because it looks like, uh, which is actually the case, a lot of machine learning algorithms are about function optimization and doing a bunch of mathematical things. So knowing numerical analysis is actually really helpful when you do machine learning.
To teach myself numerical analysis, I found these really great lectures that a Stanford professor, Justin Solomon, actually uploaded to his YouTube channel for free. They only have like 300 views each, but they're actually spectacular lectures, and he's extremely enthusiastic about numerical analysis. So I would highly recommend that class. You do need to know multivariable calculus and linear algebra, just like with the other AI class, but once you have that basic math foundation, uh, it should be pretty straightforward.
My favorite thing about that class was that it was application-heavy. So yeah, you would learn a lot of math, and you would learn how to do things like fit curves to a bunch of weird data points or maybe how to find the root of some polynomial, something like that. But you would also do cool things like he would show how you could use numerical systems of equations to model a mesh of things connected by springs. I actually implemented something using that that came out pretty nice looking, uh, thanks to my knowledge of numerical analysis.
He also showed how to do things like image alignment. Like, if I take a crooked image and a straight image, and they are of the same thing, how can I match up points to make the crooked image straight based on the straight image? He also went over some theoretical things like unit circles and different norms, which just kind of blew my mind.
He talked about differential equations, which are super important and applicable to a wide number of things, like physics, whatever. So I just really enjoyed that class, and it really got me pumped to get back into machine learning. It really prepared me to do a lot of the stuff that I'm doing now.
Before I go on and talk about, uh, more specific machine learning stuff that I played around with, I just want to describe one of the most common problems that you try to solve in machine learning. This is the problem of classification.
So, uh, for a basic example that everyone can understand, let's say I have a database with like 10,000 emails in it that I've collected from users of like Gmail or whatever, and I've classified manually by hand each email whether or not it's spam. What I would like to do is show a program all of this data and have it learn so that if I show it a new email it's never seen before, it can tell me if it's spam or not. Like, it can learn what makes an email spam and kind of apply that knowledge to a new email that it's never seen before.
So, more generally, just I show you a bunch of data points and tell you what categories they belong to, and then show you a new thing you've never seen before, and you predict what category it is. That's the problem of classification, and that's one of the first problems that, uh, people set out to solve. It's really interesting, and it's still a widely useful topic.
I played around with a lot of classifiers, and I'm just going to describe a few of them for you. So basically, right after taking the numerical analysis class, I immediately tried to implement support vector machines, which are something that the AI class actually talked about—a kind of classifier that is really powerful and really good for a lot of things, like spam detection, like I described earlier.
Unfortunately, solving support vector machines—actually implementing it in code—is really difficult unless you have some numerical analysis background because, uh, you just have to be good at optimization problems and stuff like that. So after I took numerical analysis, I felt really prepared to implement support vector machines. I made a really cool demo, um, just with like, you know, classifying two-dimensional data points, and it ran in a web browser, so that was pretty cool. I actually made the demo pretty recently.
I implemented support vector machines a long time ago, at around the same time I started working on, uh, a program called Witch Lang. The idea with it would be I would show it a piece of code that it had never seen before, and it would tell me what programming language that piece of code was written in. This was kind of good for me practicing playing with different classifiers because I just downloaded a bunch of code from GitHub in a bunch of different languages, and I was training different classifiers and seeing how well they could generalize what they learned to new code that they've never seen before.
In the end, actually, support vector machines won. They did just as well as, uh, neural networks—at least the simple neural networks I tried, um, and as some other algorithms that were taught in the AI class that I tried out and kind of failed with. But that was a cool project, and I really enjoyed working on Witch Lang because it was a good chance to play with different classifiers.
So while I was working on Witch Lang, it was the first time I had to really use and play with, uh, an artificial neural network. Since that time, I've basically been implementing and playing with and reading about various kinds of neural networks and just seeing what's out there and what can be done with artificial neural networks and, uh, what's accessible to me.
It turns out that, uh, pretty much everything that's being done in the field of deep learning and, um, you know, everything with long short-term memory and recurrent neural networks is actually pretty accessible. You know, all you really need to know is some college-level math and, uh, some numerical analysis, and you can get a really solid grasp on what's happening in the world of neural networks today.
So, yeah, I hope I've encouraged some of you to go check out artificial intelligence and just jump right in. Anyway, thanks for watching, subscribe and goodbye!