reasoning = program synthesis
reasoning != applying a function with different input

These are two opposing approaches to reasoning / intelligence with basically no overlap, both are doing well in their specific domains, but their strenghts and weaknesses are very complimentary:

Combinatorial search for programs allows extreme breadth as opposed to depth via memorization. It also allows to deal with novel problems, by allowing you to learn a generalizable program from just a few examples, but it is very compute inefficient.
Whereas gradient descent e.g. with through LLMs allows shallow combination in extremely large banks of millions of vector programs. It is very compute efficient, giving you a strong signal about where the solution is, but very data inefficient. You need a lot of data to have a good fit, and even then you can’t generalize out of distribution.
Gradient descent is great for system-1-type thinking: Pattern cognition, intuition, memorization, …
Discrete program search is a great fit for system-2 thinking: Planning, reasoning, quickly generalizing
The brain is always doing a combination of the two. Chollet thinks that the path to AGI is a mostly system-2 system, guided by the intuition of deep learning… wait, so MCTS?

We have the same in diffusion models vs. generative AI being on opposite spectra.
To me, this “iterative program synthesis” or program search sounds like something quite similar to diffusion. Maybe that’s exactly what will marry search and contextual memory? :deep_thonk:

Layers of consciousness: Perception vs. reflection + construction; Indexed memory

Perception: Largely geometric; Perceptual system: Following a gradient - coalescing to a geometric interpretation of the perceptional reality. Gradient descent does not require memory of the process that you performed to do the gradient descent.
Reflection + construction: In reflexive perception, you construct reality - when you reason about things, you cannot just follow a gradient, you need memory in order to understand why you tried things when they didn’t work, so you can undo them, try another branch, …
This requires some kind of indexed memory that allows you to keep a protocol of what you did.

Link to original

In order for something like system-2 thinking to arise from iterated fuzzy pattern cognition, that iteration sequence needs to be highly self-consistent.

For everything you add, you need to double check that it matches what came before it.
If you put no guardrails, you are basically hallucinating / dreaming. You are just repeatedly intuiting what comes next, with no regard whatsoever for (self-)consistency (with the past).
Any deliberate logical processing in the brain needs to involve awareness / consciousness, a sort-of self-consistency check, a process that forces your next iteration of this pattern cognition process to be consistent with what came before it. The only way to achieve this consistency is via back- and forth loops that are bringing the past into the present, bringing your prediction of the future into the present, so you have this sort of nexus point in the present, the thing you are focusing on.
Consciousness is the process that forces iterative pattern cognition into something that’s actually like reasoning, self-consistent.