Develop AI systems to efficiently learn new skills and solve open-ended problems, rather than depend exclusively on AI systems trained with extensive datasets
How this post is connected to other assets
WIP
I like the idea that we're building a "mind" that writes it's own subroutines based on how it analyzes the puzzle at hand.
I don't think I want to try an LLM to generate these though, even though that may be something it could do. Too much variability in the code it would write, too slow, etc.
There's needs to be some set of subroutines that are sufficient to complete all tasks. These routines should be composable so that you can create new routines from them. As we work on a puzzle, we should remember the created subroutines and continue to implement them on the rest of the puzzle as the search for the true pattern emerges.
The solution is going to look like a list of these subroutines, which could be applied to each of the train inputs to get the train output, and to the test input to get our prediction. Each subroutine may either add to the context to help with further routines, or change the world state directly.
This means the subroutines need to be general enough that they can handle various input and output dimensions, plus any other possible technical restrictions.
Subroutines may have many data dependencies that require other subroutines to have run so that they can compute the necessary information that subroutine needs to execute.
There's some concept of different phases of the reasoning process:
First, it's all fact finding and exploration. No state changes happening for a while. We should add as much usable information to the set of problems that we can, generating data for individual structures, train inputs, train outputs, input-output pairs, for the whole puzzle, etc. Each granularity is it's own little bucket of data we can fill up by running a set of routines on them.
Then, we search for patterns in this vast pool of data we've generated. We're looking for some kind of classification (but probably shouldn't be explicit) that we can use to narrow down the next set of operations we try. There's likely to be more data collection we need to do as we learn more about the problem, so the first stage is just preliminary search that we'll later add to.
A list of subroutines.
For input and output, cluster each color into a structured group (adds to context, no state change)
Add location information to each group (how it's located in relation to other groups and the universe (add context).
This is where it all begins. Seeing both input and output at the "same time". Seeing all examples of the puzzle at the same time. What does that mean in digital language? We need to write methods that take input and output in together, and we need to write methods that take an array of input-output pairs. How we process them in those methods will be another challenge, but this is at least guiding us towards what kinds of methods to be thinking about.
Discover other posts like this one