Do we really need a processor to execute programs?
For people who think a requisite of a program is an executor there is a very interesting experiment.
A very telltale mind experiment arise watching an episode of the famous series Black Mirror 3rd season episode “San Junipero” where people in a hypothetical future instead of die will be uploaded in a simulated virtual world .
Do we really need to run the simulation?
If you think yes at which speed? One second of external world correspond 1 second? 1 microsecond? 1 year? of the simulated virtual world.
We need to run the simulation only to interact with the virtual world. This is the only purpose of a processor, it is only a communication channel. The processor is a navigation into the state-space and we can choose at which state to interact and if we don’t need to interact we don’t need the processor.
This is the correct definition of algorithm
“an algorithm must have two basic properties: it must always compute the correct answer and it must have a provable running time”
watching the whole history of informatics in an objective view there are 3 main inventions
…when an invention is too close it is difficult to recognize its importance.
there are simple rules to recognize fast if a program it is not an AI
- Is it generic? Can work for different problems? ( AGI )
- The solution found by the AI can be a program with different space/time complexity ? Is there a limit in the complexity of the solution?
- Is it computable? An AI must be in general not computable
- Is it an implementation of ILS ?
- How it solve NFL ?
- Is it “universal” ?
One difficulty in accepting my definition of intelligence equal to the Kolmogorov complexity is often its independence from time and interaction. It can be useful to think to some examples where very difficult solutions does not imply interaction , time , execution or executor , for example it is possible to have a very complex program that give solutions to very hard problems and given that program you need only a simple stupid executor to get the result it seem clear to me that the most intelligent ( and interesting ) part is into the program and not into its execution. One book can help is the “The End of Time” by Julian B. Barbour , the best book I ever read about time. Reading this book it is possible to understand how the time emerge from the laws of physic as a result of a special state of the nature and it is not a foundational law, the causality is only the result of the shape of the nature.
Nowadays there is a new name going around in the AI field the “deep learning” the new revolutionary algorithm to solve everything… I am bored to read deep deeep deeeep everywhere . Why deep ? It is Large not deep !? It is only a new name for old stuff with a more powerful hardware. Let me explain where are the troubles. There are 2 main problems or limits in what a Deep Learning can achieve
- The fitness of the objective
- The low computing possibilities of the agent ( is it only a tree ? Is it universal? )
(1) The learning phase need a function to get a value on how good the behavior of the agent is and like what the NFL theorems say it is not possible to solve the problem for every fitness , it is possible to solve the problem for only special fitness ( if there is not a gradually increasing fitness I think the trainer has some trouble ) (2) As every programmer know there are very different programs and very different problems and it is difficult to have a program as solution that work fine for different problems . An agent is a program and if it is a NN with many layers is something like a tree it is only one step forward from a table . A tree-program is very limited . It is difficult to run a sat solver program implemented by a tree…( so don’t try to teach a deep learning how to solve the sat ) . Perhaps the “deep learning” use a RNN , ok here we have a graph another step forward but again which complexity ? You can not solve problems with high complexity with low complexity programs … if you want you can do the opposite for example it is possible to implement a sorting solver using a sat-solver but solving an higher complexity with a lower complexity is really a bad idea and in older post I explain why.