ossu / computer-science

:mortar_board: Path to a free self-taught education in Computer Science!
MIT License
165.67k stars 20.94k forks source link

RFC: Addition of Advanced AI #1013

Open aayushsinha0706 opened 2 years ago

aayushsinha0706 commented 2 years ago

Problem: MIT has its course on deep learning MIT 6.S191 that is updated every year and is a high quality resource attented by many students around the globe.

Duration: 26 April 2022

Background: MIT 6.S191 Intro to deep learning is a high qualtiy resource by Alexander Amini sponsored by Google and many other tech giants. The course doesnt require much pre-requisite knowledge. MIT 6.S191 states that "We are expecting very elementary knowledge of linear algebra and calculus. How to multiply matrices, take derivatives and apply the chain rule. Familiarity in Python is a big plus as well. The course will be beginner friendly since we have many registered students from outside of computer science."

Proposal: Not quite sure wether to add this course on curriculum as Advanced Applications or in extra/courses. I will leave it to the OSSU CS team to decide,

Add MIT 6.S191 Introduction to Deep Learning as Advanced Applications or in extra/courses.

waciumawanjohi commented 2 years ago

I think such a course would best fit into an Advanced AI section. We can see the relevant section of the CS2013 here: https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf#page=124

Neural networks are elective topics, and so most appropriate for the advanced section of the curriculum. I'll also note that currently the single Machine Learning course is in Advanced Applications, while there are AI (or IS, Intelligent System) topics that are Tier 2 in CS2013. That would suggest that some resource should be in the core offering.

spamegg1 commented 2 years ago
(Click to expand) @waciumawanjohi without detracting too much from the current issue... > I'll also note that currently the single Machine Learning course is in Advanced Applications... There is Machine Learning in Core Applications, no? Is that considered a different topic by the guidelines? Excuse me if I'm ignorant. > Neural networks are elective topics, and so most appropriate for the advanced section of the curriculum. The ML course in Core Apps touches upon Neural Networks for two Lectures, with one Programming Assignment for implementing it. Hah! The world cares not for our nice neat distinctions. > while there are AI (or IS, Intelligent System) topics that are Tier 2 in CS2013. That would suggest that some resource should be in the core offering. Ah, I guess there is some semantic distinction between AI and ML? Looking over the relevant section (IS) in the guidelines, everything is listed: AI, Robotics, ML. Only Basic ML is under Tier 2, with the other two under electives. I suppose Deep Learning would fall under "Advanced ML" although it's not mentioned explicitly. ![Screenshot from 2022-05-15 23-05-56](https://user-images.githubusercontent.com/4255997/168491836-a9234a18-0fea-4a4d-9c78-d49e0ba7ab4e.png) To complicate things even further, Deep Learning has sections on self-driving, which is considered (probabilistic) Robotics... and both DL and ML courses have sections on Computer Vision (another elective). What a nice big semantic mess. I don't think we can disentangle it and neatly separate things. However IS/Fundamental Issues is not covered in Core. Only a very small part of IS/Basic Search Strategies is covered in Core Theory. (IS/Basic Knowledge Representation and Reasoning is covered by Math for CS.) So I see your point there. Let me attempt to formulate an opinion. I think Core is fine as it is. The little bits that fall through the cracks will have to be covered in Advanced, until some better alternative comes along.

I think such a course would best fit into an Advanced AI section.

The idea of creating an Advanced AI section is an interesting one. If I understand correctly, learners would choose that path right after finishing Core, so it would become an additional alternative to Advanced Programming/Advanced Theory/Advanced Systems?

I'd be fine with

waciumawanjohi commented 2 years ago

There is Machine Learning in Core Applications, no?

You are correct, I was mistaken when I said the Machine Learning course was in Advanced Applications. There is in fact no Advanced Applications section and the ML course is in Core Applications.

some semantic distinction between AI and ML?

Yes. As this article points out, Deep Learning is a subfield of Machine Learning, which is a subfield of AI. An example of a field in AI that is not Machine Learning would be minimax, a version of adversarial search that can be used to create game playing agents (e.g. an agent that would compete in checkers). An example of a subfield of Machine Learning that is not Deep Learning would be decision trees.

learners would choose that path right after finishing Core, so it would become an additional alternative to Advanced Programming/Advanced Theory/Advanced Systems?

Exactly. I agree with you, that section should have a Deep Learning course as well as a robotics course. A good NLP (natural language processing) and Computer Vision course would be appropriate. All the top hits from the chart you shared.

waciumawanjohi commented 2 years ago

For a CV offering, I think this looks the most appropriate: https://www.coursera.org/learn/introduction-computer-vision-watson-opencv

Touches on deep learning, but not every method is deep learning.

Here's another option. My concern is that this doesn't look to get into actual CV methods, focusing instead on background knowledge.

The CV subreddit maintains a list of resources in their wiki.

waciumawanjohi commented 2 years ago

There is a similar wiki from the robotics subreddit.

aayushsinha0706 commented 2 years ago

Exactly. I agree with you, that section should have a Deep Learning course as well as a robotics course. A good NLP (natural language processing) and Computer Vision course would be appropriate. All the top hits from the chart you shared.

Few courses that I would love to recommend for Advanced AI

Stanford CS224n NLP with Deep Learning

Natural language processing (NLP) or computational linguistics is one of the most important technologies of the information age. Applications of NLP are everywhere because people communicate almost everything in language: web search, advertising, emails, customer service, language translation, virtual agents, medical reports, politics, etc. In the last decade, deep learning (or neural network) approaches have obtained very high performance across many different NLP tasks, using single end-to-end neural models that do not require traditional, task-specific feature engineering.

In this course, students will gain a thorough introduction to cutting-edge research in Deep Learning for NLP. Through lectures, assignments and a final project, students will learn the necessary skills to design, implement, and understand their own neural network models, using the Pytorch framework.

Deepmind X UCL Reinforcement Learning

Reinforcement learning is an area of machine learning concerned with how intelligent agents ought to take actions in an environment in order to maximize the notion of cumulative reward. Reinforcement learning is one of three basic machine learning paradigms, alongside supervised learning and unsupervised learning. - Wikipedia

CS 2013 also recommends reinforcement learning for learning of advanced machine learning

• Reinforcement learning o Exploration vs. exploitation trade-off o Markov decision processes o Value and policy iteration

Advanced AI

Courses Duration Effort Prerequisites
Introduction to Deep Learning 12 weeks 8-12 hours/week Familiarity with Python ,Linear algebra and calculus
Natural Language Processing with Deep Learning (video lectures) (course website and assignments) 10 weeks 8-12 hours/week Proficiency in Python (NumPy and PyTorch) , Calculus, Linear Algebra,Probability & Statistics and Machine Learning
Introduction to Computer Vision and Image Processing 6 weeks 4-5 hours/week Proficiency in Python
Reinforcement Learning 12 weeks 6-8 hours/week Proficiency in Python (Must be comfortable converting algorithms and pseudocode into Python), Calculus, Linear Algebra, Probability & Statistics and Machine Learning
Modern Robotics (specialization) 13 weeks 5-10 hours/week Freshman Physics, linear algebra, calculus, linear order differential equations

EDIT 1: Alternative for robotics specialisation

Mobile Robotics : Methods and Algorithms

About Mobile Robotics Course:

Learn the math and algorithms underneath state-of-the-art robotic systems. The majority of these techniques are heavily based on geometric and probabilistic reasoning---an area with extensive applicability in modern robotics. An intended side-effect of the course is to strengthen your expertise in this area. Class goals :

  • Implement, and experiment with these algorithms.
  • Be able to understand research papers in the field of robotics.
  • Try out some ideas/extensions of your own. Note: the focus of the course is on math and algorithms. We will not study the mechanical or electrical design of robots
Courses Duration Effort Prerequisites
Mobile Robotics : Methods and Algorithms 12 weeks 5-10 hours/week Familiarity with one programming language among (MATLAB, Python, Julia, and C++), Linear Algebra, Probability and Statistics and Calculus.

OR

Artificial Intelligence for Robotics by Georgia Tech on Udacity

About the course:

Learn how to program all the major systems of a robotic car from the leader of Google and Stanford's autonomous driving teams. This class will teach you basic methods in Artificial Intelligence, including: probabilistic inference, planning and search, localization, tracking and control, all with a focus on robotics. Extensive programming examples and assignments will apply these methods in the context of building self-driving cars.

This course is offered as part of the Georgia Tech Masters in Computer Science. The updated course includes a final project, where you must chase a runaway robot that is trying to escape!

spamegg1 commented 2 years ago

I took Artificial Intelligence for Robotics on Udacity years ago. 2012 maybe? Great course! It's one of those unmaintained free Udacity courses. It still uses Python 2. I tried a few assignments and the grader seems to be working, so it should be doable.

waciumawanjohi commented 2 years ago

In considering an Advanced AI track, we should look to introduce learners at the undergraduate level to the breadth of the topic. The classic textbook on AI is Artificial Intelligence: A Modern Approach. This text is broken into 5 parts:

Problem-solving    

Solving Problems by Searching     Search in Complex Environments     Adversarial Search and Games     Constraint Satisfaction Problems

Knowledge, reasoning, and planning    

Logical Agents     First-Order Logic     Inference in First-Order Logic     Knowledge Representation     Automated Planning

Uncertain knowledge and reasoning    

Quantifying Uncertainty     Probabilistic Reasoning     Probabilistic Reasoning over Time     Probabilistic Programming     Making Simple Decisions     Making Complex Decisions     Multiagent Decision Making ...

Machine Learning    

Learning from Examples     Learning Probabilistic Models     Deep Learning     Reinforcement Learning

Communicating, perceiving, and acting    

Natural Language Processing     Deep Learning for Natural Language Processing     Computer Vision     Robotics

The courses listed so far concentrate on two of these areas: Learning and Perception/Action.

waciumawanjohi commented 2 years ago

I ran across this trio of courses on optimization: Basic Modeling for Discrete Optimization Advanced Modeling for Discrete Optimization Solving Algorithms for Discrete Optimization

Interesting possibilities

aayushsinha0706 commented 2 years ago

Three courses that can be discussed for Advanced Artificial Intelligence

Artificial Intelligence: Search Methods for Problem Solving Artificial Intelligence: Knowledge Representation and Reasoning

Both the courses are offered by Indian Institute of Technology Madras and covers Problem-solving and Knowledge, reasoning, and planning in depth

the third one is from MITx Computational Probability and Inference

the above course is the only course that discuss probabilistic inference in detail.

nicol4us commented 1 year ago

I am doing Java programming from University of Helsinki and I got amazed how good their course got organized. So I explored their courses and found that they also have AI course. So probably you can try to check if it meets with our needs. Please find below the link. Elements of AI

aayushsinha0706 commented 1 year ago

I happen to enounter a really good course on AI research. Its Harvard CS197 AI research experiences and Harvard has made its lecture notes free. I propose to add this in extra-readings or extra-courses. https://www.cs197.seas.harvard.edu

aayushsinha0706 commented 1 year ago

At the time this RFC was opened it was just about including deep learning course of MIT in extras. It quickly became the RFC for advanced AI. There are numerous high quality resources on AI by universities but unfortunately we cannot include them all. Although I hope some of them can be included in extras.

Now what areas CS2013 recommend for an advanced AI

IS/Advanced Search IS/Advanced Representation and Reasoning IS/Reasoning Under Uncertainty IS/Agents IS/Natural Language Processing IS/Advanced Machine Learning IS/Robotics

Now for advanced search and advanced knowledge representation and reasoning. I again recommend following courses Artificial Intelligence: Search Methods for Problem Solving Artificial Intelligence: Knowledge Representation and Reasoning

while I didn't got any resources for Agents and Reasoning under uncertainty.

For NLP the default recommendation will be Stanford CS224n NLP with Deep Learning

I won't recommend any standalone machine learning course again since many topics for advanced ML is covered in Andrew ng specialisation.

But we can offer in depth study of ml algorithms like Deep learning and Reinforcement learning:

Deepmind X UCL Reinforcement Learning MIT 6.S191 Introduction to Deep Learning

Now with the robotics I am more in favour of U Michigan Mobile robotics or EECS568/ROB 530 Since Georgia tech ones is old and still uses python 2.

https://github.com/UMich-CURLY-teaching/UMich-ROB-530-public

Now being a human I might have my own biases but anyone is free to see if the resources are good enough for advanced ai or if there are better ones out there.

Some courses/readings for honourable mentions:

  1. Neural Networks Zero to Hero by Andrew Karpathy
  2. Harvard CS197 AI Research experiences
  3. fast.ai computational linear algebra

Assaid there are numerous high quality resources but we cannot include them all and hence many such resources will be good for extras.

Choubs01 commented 1 year ago

What are the conditions for adding a field in advanced topics as opposed to a specialization? Me personally I was planning on doing an AI specialization (https://www.coursera.org/specializations/machine-learning-introduction?#courses) once I was done with advanced section.

aayushsinha0706 commented 1 year ago

What are the conditions for adding a field in advanced topics as opposed to a specialization? Me personally I was planning on doing an AI specialization (https://www.coursera.org/specializations/machine-learning-introduction?#courses) once I was done with advanced section.

Advanced topics are more like graduate level class or courses that are mentioned to taken as an elective in CS2013. Also for Andrew Ng ML Class above we are recommending it to be in core. Check this RFC #1118