A guide for High School students to learning Machine Learning and Artificial Intelligence
Being a high schooler myself and having studied Machine Learning and Artificial Intelligence for a year now, I believe that there fails to exist a learning path in this field for High School students. This is my attempt to create one.
Over the past few months, I've tried to spend a couple of hours every day understanding this field, be it watching Youtube videos or undertaking projects. I've been guided by older peers who've had far more experience than me, and now feel that I have ample experience to share my insights.
All the information that I have compiled in this guide is intended for high schoolers wishing to excel in this up and coming field. It is intended to be followed chronologically, and unlike most guides/learning paths that I've come across, doesn't require an understanding of linear algebra, partial derivatives and other complex mathemathical concepts which one cannot find in their high school syllabuses.
If you work through this path on a regular basis, I believe that you could get to a pretty high level in about three months. However, this learning path does provide content that can keep you learning for the rest of your high school stay.
So, lets get to it.
1. Learning Python, which you will code your algorithms in.
I strongly suggest Python for this - not only is it extremely easy to learn, it supports pretty much any good library used in Machine Learning. While R is useful, I just find that Python in general is far more suitable for high school students. Besides basic programming, for Machine Learning in particular, the libraries that are most useful are Numpy, Pandas and Matplotlib.
For those of you who have never coded before, I suggest going to a course provided by the University of Toronto (one of the best universities for ML/AI right now). It will take you a few weeks, but its well worth your time - most of the knowledge you gain through this course can be applied to any other programming language, the only difference being the syntax. The course is free, and can be found here.
For those of you who have coding experience in a language besides Python, just skim through this tutorial for syntax - it won't take you more than a day.
Now, after you've learnt the basics of Python, you need to understand the first two libraries I was talking about (Matplotlib can come later). Numpy arrays and Pandas are used for moving around and modifying the data you use, while Matplotlib is used to visualize this data through graphs and diagrams. The following courses together shouldn't take more than a couple of days:
Great! Now you should be set in the core programming needed to learn Machine Learning and Artificial Intelligence.
2. Getting into the basics of Machine Learning.
If there's one universal course for Machine Learning, it has to be Andrew Ng's course. This course is nothing short of brilliant, though for high school students, it may seem slightly challenging at times, as it refers to concepts such as partial derivatives (though these aren't required to understand the course). I found it beneficial to re-watch some lectures in Weeks 3 to 5 - it may be a bit fast the first time around. Don't be too worried if you can't grasp some of the derivations - these require high university-level math knowledge. Being able to follow the thought process and gain an understanding of the operations should be enough for now.
I encourage everyone to go through this and take notes, though doing the programming-related tutorials and exercises is not needed, as its done in Matlab, which (in my experience) is often too tough for high schoolers to grasp. But don't worry, we will be doing the very same (and far more advanced) algorithms in Python in just a short amount of time.
This free course can be found here.
3. Learning an assortment of machine learning algorithms and understand how to implement them in real-world scenarios.
Now, understanding machine learning algorithms without the knowledge of university-level maths - this should be hard in theory, however, a team from Australia resolved this issue.
Kirill Eremenko and Hadelin de Ponteves - a pair from the SuperDataScience team - are absolutely fantastic at finding relevant ways to apply simple algorithms in real life. Furthermore, they go into a suitable amount of depth to understand the functionality of the algorithm, but without the complex maths that a high school would not be able to understand.
Their course covers both Python and R, though you don't have to worry about R - simply go through the Python tutorials. Also, if you find that they are going a bit too slow, play this course at 1.25x speed (I did that and found it much better).
Their course is on Udemy, and is paid, though Udemy regularly has discounts of 90% or more on their courses. It can be found here, and is usually around $10.
It covers everything from basic regression algorithms to deep and convolutional neural networks. If you wish to explore even more advanced areas, their Deep Learning course is offered at the end of the Machine Learning for a 90% discount. However, concepts in this second course may be a little advanced and lack proper documentation, since they are so new.
If you're unwilling to pay for this course, you can check out Google's free Deep Learning course here or University of Michigan's free course here. However, these are far from as well-rounded as the SuperDataScience team's courses.
For these courses, taking notes aren't a necessity - there are tons of 'algorithm cheat sheets' online, which offer a quick intution on how they work. This website lists a few.
4. Explore, explore and explore.
Now, you've covered a wide range of machine learning concepts, and have learnt a vast amount of skills. Its time for you to independently use these on basic projects. I'd suggest going to Kaggle or the UCI Machine Learning repository, finding a dataset you have an interest in, and simply modelling some solutions to these. Play around with different algorithms, and try to optimize performance.
Ensure that the datasets you use are simple and clean in nature - they shouldn't require too much pre-processing or modifying. Some easy datasets (off the top of my head) are the Iris, Wine, Breast Cancer Wisconsin, Autism Screening, Congress Voting, Handwritten Digits MNIST and Fashion MNIST ones.
If you ever come across a road block, Stack Overflow is your best friend - they have an answer to almost any question that you'd have. If it doesn't, just post one - you should get replies within a couple of hours!
There's nothing much more I need to say here - when you find that you've become comfortable with the whole modelling process, feel free to move on!
5. Find an area of particular interest, and dive deeper.
Now you've got a great and broad understanding of all the basics. However, there's only a limit to what you can do with this. Thus, I suggest you find an area of interest in the broad field of Machine Learning, and look deeper into it. You probably won't have time to become experts in all of these in your high school tenure, but try and conquer one, if not two.
I'll list some possible areas, but before you begin one of these, understand what it is you're getting into. A simple Youtube search for a high-level explanation will give you all you need.
Computer Vision: Probably the hottest field in Machine Learning/AI right now - making computers see and understand things using a special type of neural network. Stanford publishes their course in this online here, with lectures, course notes and assignments available online. Go through this, though if the math is too complicated, don't worry - the course is simply to deepen your knowledge. Alternatively, you could look to OpenCV, a computer vision library that does a lot of the complex stuff for you. A great tutorial can be found here. Once you're done with these, look at more advanced image datasets on Kaggle and UCI, or even enter Kaggle Competitions.
Natural Language Processing: Understanding how computers learn to speak is also a prominent topic today. Once again, Stanford offers a great course thats online and can be found here. If you don't understand some of the Math concepts, don't worry, just gain an understanding of how this field works. For implementations, you could undertake this Udemy course. However, you could alternatively go through some of well-known Machine Learner Siraj Raval's videos. One you've done these, try undertaking simple, well-known projects like building a chatbot, sentiment analysis or creating lyrics to a song - simple Youtube searches should help you out.
Reinforcement Learning: This domain focuses on how machines learn to act in a particular way, and its most popular application is in the field of video games. Siraj Raval again has a pretty good playlist on this, which can be found here. If you are looking for an implementation-based tutorial specifically for high schoolers, Michael Megliola has a great set of tutorials which can be found here. David Silver's UCL course is also great, though beginners may find it a bit tricky - it can be found here. Once you're done with these, its pretty logical to just start downloading base projects or games from online, and adding an element of Artificial Intelligence to modify how the agents they act. Simple walkthroughs can again be found via a simple Youtube search.
Data Science: This field is a budding domain with tons of exciting job oppurtunities. I suggest undertaking either SuperDataScience's paid course or UC San Diego's Python-based free course, though you should find a specific learning path for data science with a simple Google search. You can also use the following links to learn SQL and Matplotlib. The advantage in learning this at a student level is employability - I have friends in high school who've been offered data science internships, as the data gained from their work can instantly be monetized by companies. Its easy for companies to find a way to use a data scientist.
There are also areas like Boltzmann Machines (used for recommendation systems), Adversial Networks (AI improving AI) and Genetic Algorithms (improving a solution to a problem in a way similar to natural evolution), but in my opinion, these are a stretch for most high school students. Do feel free to explore these if you have a particular passion for one of them, though they aren't as well covered as the other domains, largely due to the fact that they aren't currently monetized as much as the other fields.
BONUS (extremely important). Truly understand the field of Artificial Intelligence.
If you want to work in this field in the long run, its crucial to understand what it is about, groundbreaking discoveries and its implications on society. You should start doing things listed in this section as soon as you have the necessary understanding of how the technology works - I believe that this is after Section 4 of this learning path (as you start delving into an area of interest). This kind of information may not particularly help you when implementing algorithms, but its an impressive sign for universities or companies when their prospects are so knowledgeable in the field itself, rather than just the code.
There's a few things that a high schooler should do to deepen their general understanding of the field and make them more knowledgeable, which I'll list here:
Start reading research papers: They really aren't as challenging as they sound. A good portion of them can be almost completely comprehended with a high school Math level. If you ever come across one you don't understand, just put it down - theres more than enough alternatives. This link offers a host of great papers, though after you finish those, this offers the most up-to-date list - simply read ones you're interested in or related to your area of 'expertise' from section 5. It's helpful to keep a small diary of learnings from each paper. If you are unable to truly understand many of these reserach papers, try going through another Github guide I wrote on research papers, which provides a breakdown of some recent revelations.
Listen to the pioneers: People like Andrew Ng, Ian Goodfellow and Yann LeCunn are regularly interviewed, and give the perspective of engineers of this field on the subject of AI. This Youtube channel gathers the best of these talks, and compiles them into a central resource - watch one a night, and I guarantee that you'll feel like an expert within weeks.
Stay up-to-date with the field: Wired is one of the best platforms for anyone interested in tech. It publishes multiple AI-related stories every day, which can be found here. Its simply a great way to understand the trends of the time. Alternatively, subsribe to TechCrunch's Facebook Messenger bot - it often has interested AI-related articles, and prompts you with information every day.
Understand the implications: There's no better way to do this than listening to TED talks. Their speakers are extremely knowledgeable in the field, and there is an increasing emphasis on AI in their speeches. A host of videos can be found here.
The Philosophy: AI has its supporters and its opposers. The philosophy behind it, however, is intriguing. My favourite books that explore this area, and are suitable for High School students, include 'How to Create a Mind' by Ray Kurzweil and 'Life 3.0' by Max Tegmark - do try and read these.
Contributing: If you're the kind of person who likes to learn from others experience, check out the Artificial Intelligence & Deep Learning Facebook group. Alternatively, if you prefer conversations, check out Reddit's thread on AI here.
Delve into the math: Yes, you do need university level math skills, but if you're an extremeley strong math student, there's nothing stopping you from taking some online courses. Microsoft has a free course that I've heard good things about, and requires just High School-level maths. This Quora thread also has some great resources that you should check out. 3Blue1Brown is a famous name in the community too, as his Youtube videos are fantastic for learning the maths (primarily linear algebra and calculus) behind some of these more complicated concepts.
I wish everyone the best of luck in undertaking this learning path. I've heard too many people say Machine Learning and Artificial Intelligence is too complicated to learn as a high school student to not write this - with a well-paved learning path, it can be done by anyone. Its just that due to the field being so new and generally thought of as a graduate field of study, theres a lack of one for high school students.
If anyone has additions, suggestions, queries or feedback, feel free to write to me @ firstname.lastname@example.org.