I don’t think LLMs are the endgame.
But that’s the disclaimer, not the topic. This post isn’t about LLMs - I just want to put to writing some ideas I have had over the years about AI and the nature of intelligence.
Defining Intelligence
At the time of writing, Wikipedia defines intelligence as:
Intelligence (/ˌɪntɛlɪˈdʒəns/) has been defined in many ways: the capacity for abstraction, logic, understanding, self-awareness, learning, emotional knowledge, reasoning, planning, creativity, critical thinking, and problem-solving. It can be described as the ability to perceive or infer information and to retain it as knowledge to be applied to adaptive behaviors within an environment or context
If we wanted to create intelligence, this definition doesn’t really give us a concrete starting point. When I read it, it feels like a list of things or behaviours that emerge from intelligence. So what I want to do is create my own definition that feels more fundamental, with the hopes that it can be our nucleation point for an idea that gets us closer to creating intelligence.
A common technique when defining something is to flip it and define what it is not. What defines the lack of intelligence? So given a rock and a mouse, why is it clear that a rock is not intelligent and a mouse is? We could say that a mouse does something, but a rock doesn’t. But a river also does something, it flows, but it is not intelligent. We are so good at bucketing things as intelligent on Earth, because we can see a pattern across all creatures. Will this pattern hold for aliens? If we didn’t know about robots, would we categorize them as intelligent?
So there is some nuance in what is deemed intelligent and what is not… but they all have the same thing in common - I/O. They receive data from the environment and their bodies, and they output data (as actions) to interact with their environment. There could be some debate over robots’ intelligence or the lack thereof, but I think most people will agree that anything that does not have this data flow, like a rock, is definitely not intelligent.
So we can say that to be intelligent, an entity must at least be able to accept data from its environment and also emit data out as actions that influence the environment. A very simple robot would clear this bar, so we want to raise it a little further. And I think we can do that by requiring that the entity must have internal goals that it is able to reasonably achieve by processing the input data and writing the correct output data. And I think that’s it!
Intelligence is the ability of an entity to accept and process data from its environment (including its own body) to form internal goals, and to work out which actions will achieve them. The more complex the goals, and the more reliably it achieves them, the more intelligent it is.
Requirements for Intelligence
Now that we have our definition of intelligence, how do we make one? We could just start coding… but again, where do we start?
I think we can get another hint by thinking about what intelligence does and doesn’t require.
It doesn’t require:
-
Intelligence - you’d think this would be obvious. You don’t need intelligence to make intelligence, because how did the first intelligent entity come about? But almost all AI in use today depends on it - LLMs, image recognition, you name it. Labelled data is literally humans trying to transfer their knowledge into a neural network. LLMs are bounded by the human knowledge in their training data - they can recombine it, but everything they have to work with came from us.
-
Biology - I have no evidence for this obviously, but since I am trying to make an intelligent simulated organism, I will assume that this is true.
What it actually requires:
-
A consistent environment - this just means that if I move about, things don’t pop in and out of existence and events causally make sense, i.e. the environment is self-consistent in space and time. This probably applies to higher dimensions too, but let’s stick with what we know, 3 space and 1 time dimensions, all self-consistent. I think this is very important because the data stream coming in from the environment has no labels, there is no prior intelligence. So the only thing you can compare the input data with is past input data and any data you wrote to the output. If the environment is not self-consistent, the patterns won’t be consistent and will be harder if not impossible to detect.
-
Agency - a lot of AI today also lacks this. You can definitely learn patterns from just passive observation, but agency amplifies that learning. Say you twitch an eye muscle and the view shifts by a tiny amount. Because you issued that twitch, you know the change in the input was caused by you and not by the world, and you know roughly how much you moved. Your own motor command becomes the label - and from enough of those you could work out how the nerves are arranged in the retina. And maybe more importantly, we have established that intelligence can only be observed via actions, so it needs to be able to act.
Intelligence From Scratch
We have our definition, and we can satisfy the requirements with the programming tools that we have today. So can we finally build this thing? Maybe.
I’ve been thinking about this problem probably since 2011, and I’ve had a lot of ideas, some of them lost, but never really got to test anything, so I don’t know if any of it is any good. Funnily enough, the era of the LLM has arrived, and I think I actually have a chance of writing it.
Here are the ideas I am testing right now:
- Feature discovery - a layer that takes the sensory data as input and has randomized weights to generate random features, I call this the state layer.
- Prediction - this will sound very familiar to programmers: predict the next state by taking the previous state + actions. It’s a bit more complex than that (we can’t just look at one tick), but that’s the main idea. It takes in the state and action layers, and traces (see below). Another interesting thing about this construct is that you can feed the output to itself!
- Plasticity - neurons have a Stability value, the more stable they are the less they are likely to change. A stable neuron is a useful neuron, an unstable neuron is exploring the input space looking for a useful calculation.
- Rest & overlays - overlays are like temporary changes to weights, they are not consolidated to the base weights until rest. This also interacts with the other elements like Stability. Overlays allow the neuron to respond to strong input and change a weight dramatically, but only temporarily, as only a small fraction will be consolidated on rest if the neuron is stable. Rest also acts as a coordination point for the prediction and state layers, since predictions need a stationary target, state layers only change on rest.
- Traces - this is a way for neurons to be connected in time, it basically contains a history of activations for a single layer, but it becomes less accurate the farther in time you go, so it can go really far back.
- Fields - the idea is that there is an ambient field of stuff that introduces biases to weights. This allows certain weights to be more/less active depending on the dominant context. This is the least tested part of this so far, and I have gone through a few iterations of this already. I think the basic premise is sane. This combined with the predictive layer is where I think goals can come from.
When designing this, I was thinking a lot about equilibrium. Evolution had no engineer - the environment and the organisms put pressure on each other, tuning themselves continuously. At least that was what I envisioned - different systems with different mechanisms, tugging at each other in a way that almost always converges to a point that serves the organism. I don’t think of the brain as something teetering at the edge of chaos, but as a very stable machine that furthers its own goals despite the chaos of the environment.
So yeah, that’s my current approach to making intelligence from scratch. I am not at a point where I can share the code yet, but I’ll try to keep working on it and make more posts on it.