Most of the time you hear Artificial Intelligence, it's actually Machine Learning what people are talking about.

This is a series on #FoundationsOfAI beyond machine learning.

❓ Let's start by answering what is Artificial Intelligence about... 🧵👇
Almost all definitions of AI involve some sort of definition for intelligence. A common phrasing would be something like this:

📝 AI deals with designing software that can solve problems that seem to require some degree of intelligence.

See the issue, though? 👇
The first issue is to try and define what the heck "intelligence" is about.

👉 Many have tried, from Turing's Imitation to Chollet's Abstraction and Reasoning Corpus. Part of the problem is that it is very hard to think of intelligence from a non-anthropocentric point of view.
Another issue with this definition is what many call "The Moving Goal of AI".

👉 Once a problem is (sufficiently) solved by software (e.g., chess), we no longer believe it requires intelligence, and it ceases to be considered AI.

Let's explore a different point of view... 👇
Let's start by organizing problems in different levels of complexity.

🔹 A *Level-0* problem is, for example "add 1 + 3" or "factorize 45" or "sort [4,3,1,5]", or "find the way out of this labyrinth"...

That is, any concrete problem *instance*.
Now let's up one level.

🔷 A *Level-1* problem is, for example, "add any two numbers", or "sort any list" or "exit any labyrinth".

That is, a specific *class* of problems.
I hope at this point we can agree that Computer Science is (mostly) about solving Level-1 problems.

👉 When you code an algorithm, say QuickSort or Dijkstra, you are giving a solution to an infinite number of instances of a specific problem class.
Every Science is concerned with problems in a specific domain of reality (matter, energy, substance, life, people, ...).

💡 CS is concerned with the domain of problem-solving itself.

It asks questions about which strategies are better for solving which classes of problems.
For example, for the class of problems of sorting numbers, we can ask which algorithm is the best in terms of time, space, stability, etc. These questions are not always easy to answer, and often there isn't a clear best.

Now let's jump up another level of abstraction. 👇
Finding a route from A to B in a city, a set of moves to solve a Rubik cube, and a proof for a logic theorem, are three different problem classes.

But they all share a similar underlying structure, a common theme if you will. 👇
You can see these three problem classes as instances of a meta-class: finding an optimal path in a graph of states.

And we can ask if there is a general way to solve any problem class of this nature without knowing many more details about a specific problem class.
Similarly, packing boxes in a small space, organizing a schedule with no conflicts, and safely distributing N queens on NxN chess board, are all instances of a problem meta-class: assign values to a set of variables ensuring that some constraints are respected.
💠 These are *Level-2* problems.

Problems that generalize a very broad (actually an infinite) set of seemingly disparate problem classes with a more abstract definition.

🤯 Solving a Level-2 problem will solve an infinite number of problem classes.
In AI, we're concerned with *Level-2* problems.

We ask not whether we can solve a problem class, but whether we can solve an infinitely large family of problem classes that share a common abstract structure.
💡 The questions of AI are about which strategies for problem-solving are general enough that can be applied to a broad range of problem classes, potentially even to any problem class we can think of.
✏️ Side note: by virtue of their very abstract nature, most if not all Level-2 problems in AI contain NP-Complete and/or NP-Hard problem classes. Hence, almost all general-purpose solutions in AI involve some sort of heuristic search.
Do you see why is it called "Artificial Intelligence" now?

We could have called it something as boring as "Automatic General-Purpose Problem-Solving", but that name isn't as catchy as Artificial Intelligence, of course.
Notice that we avoided trying to define *intelligence* altogether. And not because this question is not important, but because it is very hard to try and answer what is intelligence without unconsciously resorting to antropomorphic biases.
Our definition isn't perfect though, because we rely on a fuzzy distinction between Level-1 and Level-2 problems, and some things that seem AI for some people will seem "just regular CS" for others.
One way to try to clarify this distinction is by pushing Level-2 to the extreme.

❓ Can we find *a universal algorithm*, one that can solve any given computable problem?

👉 This goal is sometimes called Artificial General Intelligence (AGI) or strong AI.
However, while we work on that, we may as well solve not all, but a significantly large set of problem classes in a general way.

👉 This is often called narrow AI: solving problems like question answering, object recognition, automatic theorem proving, playing games, etc.
To summarize, we can say that AI is the field of CS that focuses on finding general-purpose problem solving strategies that can be applied to Level-2 problems.

These strategies, when performed by humans, are often part of what we recognize as "intelligence".
And that's it for now. Next time, we'll examine some common Level-2 problems that AI can help solving.

🧵 You can read this thread online at < https://apiad.net/tweetstorms/ai/what-is-ai/>
You can follow @AlejandroPiad.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: