Networked Evolution Computing

May 1, 2022
|
Tech

I’ve recently been fascinated by neuromorphic computing and the push to create new types of networked hardware. The basic concept is you have individual nodes, like neurons in the brain, that are deeply interconnected and receive synapses from thousands of neighbors. Based on the neuron’s internal weights, it performs certain computations and sends new synapses out to other neurons. Like in your brain, these neurons are very sophisticated. They aren’t like neurons in machine learning, which are just simple state variables, but instead full computational systems.

Jeffrey Shainline, a researcher at NIST, is studying how to develop neuromorphic computers. These are computers built using principles from the brain. This podcast is a fascinating deep dive into this area of research, and it’s what got me inspired to write this.

Currently, in computers today, computation is performed on a hierarchical structure of transistors. Where a grid of smaller logic gates is used to perform operations by larger logic gates. This is in some way analogous to a rigid company, where smaller departments perform operations within the higher logical operation given by the executives. The sequence is defined top-down, the operations are known, and the rules are rigid. Most software today is like this, where you write explicit code that is unambiguous and perfectly acceptable by the compiler.

Intuitively, this seems like a great structure for solving specific tasks, where there’s a sequential set of operations run at the highest level, and lower levels perform the detailed logic. But it’s a disadvantaged system. You’ll always need someone to play God and define the program. What got me excited about neuromorphic computing is the hardware model is different. It resembles a dynamic network with less embedded hierarchy. Here, it may be possible to design a system where the specific task for each neuron is not pre-defined but derived from the behavior of its neighbors.

Playing to the human analogy again, this has a closer resemblance to natural social behavior. As humans we don’t like being pawns inside someone else’s game, we desire agency. So most of life, based on the behavior of our neighbors, we find the best possible ways to model ourselves. In this way, there is no top-down God writing code, but instead an interconnected network of continually updating nodes. Each may have inherent biases, but in large part, they are plastic and always being reorganized.

The prospect of how this different model of a computational system would affect the behavior of how we write programs, what we write, and how they perform, is very exciting. This is the direction of software 2.0, where what’s important is searching the space of possible programs, instead of defining the program top-down.

Generally speaking in life, what I’ve found difficult is not the hard logic of solving problems, but locating the right problems to solve, and being responsive to changes. Taking inspiration from the brain, neuromorphic computing, alongside design patterns from AI, is closer to a dynamic and flexible network, and less like a rigid hierarchical structure. So not only is the space of possible programs wider, the translation distance between computer architecture and human architecture is shrinking.