so just how do you build an artificial brain?

September 22, 2012

cyborg hand and eye

Journalist and skeptic Steven Poole is breathing fire in his scathing review of the current crop of trendy pop neuroscience books, citing rampant cherry-picking, oversimplifications, and constant presentations of much-debated functions of the brain as having been settled with fMRI and the occasional experiment or two with supposedly definitive results. He goes a little too heavy on the style, ridiculing the clichés of pop neurology and abuse of the science to land corporate lecture gigs where executives eager to seem innovative want to try out the latest trend in management, and is a little too light on some of the scientific debates he touches, but overall his point is quite sound. We do not know enough about the brain to start writing casual manuals on how it works and how you can best get in touch with your inner emotional supercomputer. And since so much of the human mind is still an enigma, how can we even approach trying to build an artificial one as requested by the Singularitarians and those waiting for robot butlers and maids?

While working on the key part of my expansion on Hivemind — which I really need to start putting on GitHub and documenting for public comment — that question has been weighing heavily on my mind because this is basically what I’m building; a decentralized robot brain. But despite my passable knowledge of how operating systems, microprocessors, and code work, and a couple years of psychology in college, I’m hardly a neuroscientist. How would I go about replicating the sheer complexity of a brain in silicon, stacks, and bytes? My answer? I’d take the easy way out and not even try. Evolution is a messy process and involved living things that don’t stop to try to debug and optimize themselves, so it’s little wonder that the brain is a maze of neurons that are loosely organized by some very vague, basic rules and is really, really difficult to unravel. It has the immense task of carrying fragments of memory to be reconstructed, consciousness, learned and instinctual responses, sensory processing and recognition, and even high level logic in one wet lump of metabolically vampiric tissue which has to work 24/7/365 for decades.

Computers, however, don’t have such taxing requirements. They can save what they need to a physical medium like spinning hard drives or SSDs, and they focus on carrying out just one or a handful of basic instructions at a time. With such a tolerant substrate, why would I want to set my sights on the equivalent of jumping into orbit when I can build something functional enough to serve as a brain for a heap of plastic, metal, and integrated circuitry? For the Hivemind toolkit, I used a structure representing a tree of related concepts set by a user to deal with higher level logic, sort of how we learn to compartmentalize and categorize concepts we know, and the same approach will be used in the spawn of Hivemind. Low-level implementation and recognition will also adopt the same pattern of detection and action as explained in the paper. But that’s good for carrying out a few scripted actions or looping those actions. For a more nuanced and useful set of behaviors, I’m perusing a different implementation built on a tool for organizing collections of synchronous and asynchronous monads invented by a team of computers scientists Microsoft imprisons in its dark lair under Mt. Rainer… I mean employs.

Here’s the basic idea. When a robot is called to accomplish a task, we summon all the relevant ideas and their implementations as simple, specialized neural networks which extend from initial classification and recognition of stimuli to the appropriate reaction to said stimuli. That gives us just one fine-tuned neural network per concept. We associate the ideas with the tasks at hand, and put the implementation of the relevant concepts into a collection of actions waiting to fire off as scripted. Then, after the connection with the robot is established and it sends its sensor data to us, we fire off the neural networks in the queue and beam back the appropriate commands in milliseconds. Each target and each task is its own distinct entity in stark contrast to the overlaps we see in biological brains. Overlaps here come from the higher level logic used to tie concepts together rather than connections between the artificial neurons, and alternatives can be loaded and calculated in parallel, ready to fire off as soon as we made sense of what the robot reported back to us. And at this point we can even bring in other robots and establish future timelines for possible events by directing entire bots as the appendages of a decentralized brain.

Certainly, something like that has very little resemblance to what we generally think of when we imagine a brain because we’re used to the notion of a mind being a monolithic entity composed of tightly knit modules rather than a branching queue pulling together distinctly separate bits and pieces of data from distinct compartments. But it has the capacity for carrying out complex and nuanced behaviors, and it can talk to robots that can work with SOAP formatted messages. And that’s what we really need an AI to do, isn’t it? We want something that can make decisions, be aware of its environment, give us a way to teach it how to weave complex actions from a simple set of building blocks, and a way to interact with the outside world. Maybe forgoing a single, self-aware entity is a good way to make that happen and lay the groundwork for combining bigger and more elaborate systems into a single, cohesive whole sometime in the future. Or maybe, we could just keep it decentralized and let different instances communicate with each other, kind of like Skynet, but without that whole nuclear weapons and enslavement of humanity thing as it replicates via the web. Though to be up front, I should warn you that compiled, its key services are about 100 kilobytes so it could technically spread via a virus…

Share
  • Brett

    Sounds like interesting work! I wish I knew enough about programming to actually comment directly on it.

    The general idea sounds good. Rather than trying to duplicate the human brain in another substrate, try to simply make the computer program as “smart” as you need it to be.