Raspberry Pi is coming….

There’s an incredible change coming for embedded development in my opinion given the rapidly dropping cost of powerful, new, low-cost hardware seemingly started by the Arduino, then the Beagle Board (followed by the beaglebone), a few other ARM architectures and now the Raspberry Pi. The latter is a 256Mb RAM full on board computer with USB keyboard, mouse, HD output, Gigabyte SD card for hosting Linux and associated embedded code applications, powered by a 5V or USB charger, almost small enough to fit in a Altoids tin and all for $35 (Model B) or $25 (Model A).  At least that’s what their site said when I last read it. To anyone aware of the history of limitations of similar physically sized systems, and their cost just a few years ago, this is nothing short of incredible. One can now essentially have an Xbox level system for money you could probably find in your change dish. A good article comparing each by William Marshall, editor for EEWeb, notes the ARM 11 used in the Raspberry Pi represents serious muscle with a 32 bit instruction set.  He notes the “F” in the part number from Broadcom denotes the Raspberry Pi processor hosts a hardware floating point accelerator.  There is now enough code space, RAM, onboard math functions at so low cost and in such a small form factor that one can spend most of the time now focusing on the fun and beauty of the algorithms.  I look forward to it.

Let’s see, if I string 100 of them together I have a supercomputer for what, less than $4K? To buy one is less than the cost of a large pizza. What can’t one afford to make, experiment with or reduce the cost of now? Although an oft overused expression, this changes everything again I’m quite sure. As one who’s struggled with how to get enough horsepower for self-organizing systems to continue training while embedded into inexpensive systems, it appears much has been solved if the Raspberry PI lives up to the anticipation. The cost curve for all sorts of stuff will come down now;  the ability of embedding sophisticated systems will improve dramatically and new businesses will start to follow like popcorn. Guess I should stop hitting F5 on the ordering site and simply wait for a few months for the final bugs to get out of it so they can start to ship; however, I, like many millions now no doubt, will consider devoting some serious time with it or one of the other amazing new ARM boards…

Posted in Embedded Gear | Leave a comment

Ensembles and Architectures

I recall an epiphany about neural networks I had years back while developing a new system: ensembles of neural networks with highly dissimilar training paradigms can be superior, sometimes vastly so, in learning a set of training data when compared to a network of neurons trained using a single learning paradigm. I discovered this quite by accident while trying out different learning paradigms within an embedded system. I assumed the testing and training data were inadvertently mixed at some point in the procedure and the resulting network, having been exposed to all the data, had simply cross correlated the total set of inputs to the answers with nothing left to guess but this wasn’t the case. Puzzled and intrigued it was a simple step to insert another layer of neurons at the top of the networks I was experimenting with to decide which of the subordinates were most effective depending on the input training data. Not unlike the analogy of a ‘boss’ taking input from all his direct reports and ‘learning’ who to trust given different contexts, it appeared the subordinate neurons were learning particular parts of the weight space and the superordinate neurons were learning to pick this out quite effectively; no matter how I restarted the training and mixed the subordinates the resulting improvement was clearly statistically significant.

I experimented with sets of radically different learning paradigms: radial basis, back-prop, Bayesian, Self Organizing Maps, recurrent systems with Hebbian reinforcement, and on and on. The conclusion I consistently reached was compelling: ensembles, or groups of vastly different learning paradigms competing side by side are more effective; especially when the learning paradigms were seemingly as orthogonal as I could imagine to their sibling learning algorithms, over a monolithic layer of learning paradigms which is so often the default architecture. This type of multivariate learning system technique it turns out was discovered by neural network researchers and similar results published many times over but it didn’t stand out as the watershed insight I felt in my gut. It still tends to come and go as a subtext or part of a set of assumptions in various neural network research areas but its an important insight I’ve always followed in a myriad of ways and found success with.

But it also seems to me an important architectural component of real neural networks and perhaps a lasting attribute of future AI designs. The insight that competing ensembles led to better classification systems compelled me to follow this a bit more and I found at least a partial biological comparison drawn in papers exploring how important regions of the brain involved in conscious thought had diverse layers populated with neurons hosting differing shapes, spiking/bursting rates and a myriad of other distinguishing features that affect the output of the network electrically, like the differing learning paradigms I had experimented with. In addition research showing the role of Glia cells, which constitute a higher percentage of brain mass than neurons in the cortex, have been theorized to have a role of low pass filtering signals from regions of activities which perhaps illustrates the value nature has for a winner-take-all ensemble approach to neural hierarchical architectures.  They push asynchronous perception events and associated singals toward superordinate networks to carry forward to other networks as they rattle around and ultimately produce some stable state that helps foster awareness. I realize this is a big leap to make and probably best left for coffee conjectures but what does seem clear is that understanding how neuron transfer functions are choreographed and related to each other across the brain is an important opportunity for new and novel silicon systems – for certain applications this may be the equivalent of Edison’s filament quest and, similar to deep learning models, will likely lead to more effective overall architectures for AI and vary radically depending on the domain of the problem. One of yet another of the factors affecting the complex framework of biological self organizing neural systems that’s shaped my perspective on AI.

Posted in Gleaning Insight, Self Organization | Leave a comment

Algorithms, Data Structures and AI

I recently had an interesting discussion about the enduring classic Gödel, Escher and Bach: An Eternal Gold Braid (GEB) by Douglas Hofstadter. The book is so famous and influential that High School classes have been modeled after it; it won the Pulitzer Prize for non fiction in 1980. To group it in with other classics is a well-deserved sorting as it’s a marvel covering a great many interesting topics in math, art and music. But what I remember best is it’s Lewis Carol like spirit of exploration of discrete computer science concepts such as recursion and symbolic representation. It reminds me how some suggest that recursion, hierarchies of data structures and other computer science concepts are useful building blocks for AI. In the book Hofstadter points out how cognition/thinking bootstraps from simple processing constructs, e.g. neurons.

Tools like recursion have always had an appeal for AI developers given their economy of expression and power they leverage from a surprisingly few statements. It’s very slick how complex problems can be broken down by recursion into simpler versions of the same thing and ultimately solved via a few statements nested at the bottom of a stack the Operating System so naturally and invisibly manages. Any hierarchy and any direction of traversal can be embodied in a subroutine consisting of just a few lines of self referential code.

This same quest for algorithmic parsimony seems central to the idea that thought will ultimately be modeled by a handful of recursive-like, Platonic principles which simply haven’t been pinned down yet. Perhaps, but as I became a better programmer I tended to leave recursion alone. Maintaining recursive decent involved increasing amounts of time when adding a new twist for a customer – what once shined as a perfect expression of concise power often would iteratively evolve into a multi-threaded knot of confusion. At some point it’s simply easier to completely spread the work out since RAM/CPUs are ever faster and Disks/Labor can be found ever cheaper as long as the coding chore is made simple. Moore’s the law and the pity.

The ancient question of whether we live in a world that can be modeled with pure logic or is stochastic by nature extends back to the time of Plato and formal logic/proofs as codified by Aristotle. This is in contrast to the probabilistic view characterized by the later and more colorful Roman society with their leaders throwing dice for decisions and ultimately consummated with Neils Bohr telling Einstein to ‘stop telling God what to do with his dice’ at the birth of quantum physics. The probabilistic view’s relationship to consciousness is taken to the limit by some very capable people who assert that there are quantum effects influencing neurons and as such they may never be suitably modeled. I tend to think the self-organizing view requires neither formal proofs nor quantum physics as the former I expect will lead to the same locus bound systems that have stumped AI for the last several decades and the latter seems a bit of an overkill, as well as a convenient way to thwart attempts to model consciousness, perhaps based more on ethics and a not unfounded pandora’s box fear than reality.

GEB goes from fun and fanciful to welcoming the casual reader into the mathematically serious world of irrationality ad infunitum as it playfully starts to tap and then kick the stuffing out of symbolic logic using Godel’s Incompleteness Theorem. Everything gets wrapped up in atomic statements like “I’m lying” and its recursive contradiction. But the arguments he makes are so carefully iterated and shown so to be so clearly unavoidable in formal systems that when I first read it I reflected back that I probably wasted time chasing the self defining world in the Theory of Formal Languages class I struggled with in college assuming it led to something bigger. Actually that class was very useful in simply helping me understanding compiler front end parsers like LEX/YACC, which I’ve used in a dozen Unix projects in my career, so my advice to CS students is to try to enjoy it as there’s obviously great value there, but production rules, meta-symbols and grammars are not a panacea for AI to me.

After GEB made samurai sandwiches out of so much of the discrete, finite math stuff I was fed in Computer Science courses, it was conveniently easy to rationalize a new direction. Now did I really need to read that book to realize a better direction for AI lies in taking a bit more inspiration from nature? No, of course not, lots of folks just use common sense to conclude its a bit silly to attempt to model an infinite universe using rules in what we used to call a ‘finite core.’ The unconscious serves up a lot of stuff from a lot of different directions for what we perceive as a single thread of consciousness. That tip of the iceberg awareness has led to years of folks starting out over and over with systems that try to capture the decision making we label as thought but its just that, its just our perception of what’s happening in our minds. Cascades of pattern recognition start transforming light into nascent concepts as soon as it starts moving down the optic nerve. We say say ‘cup’ and then fool ourselves by designing forward object oriented databases that seem to be a complete model of the ‘cup’ system but of course its not. Its the billions of neurons firing in parallel and transforming information into awareness while moving across a signalling distance equivalent to a few hundred milliseconds of relatively slow, electrochemical synapses which is why we can recognize a cup no matter what light, angle or portion of it we see. We may believe we think in discrete fashion from our awareness of the thread of our consciousness’s trail of thought, but we’re built from billions of neurons that are constantly producing this environment and we’re unaware of any of it.

Picking through some of the other common data structures though, it seems to me casting neurons in a hierarchical template is pretty fundamental if not essential. Jeff Hawkins argues this skillfully in “On Intelligence” and the fact there are very roughly some six identified layers of the neocortex divided between instructing downward towards the cerebellum and upwards for what seems to me as imagination and pure consciousness seems prima facie evidence the neocortex leverages a hierarchy. An interesting twist is that many of the leaf neurons involve a recurrent connection to input neurons to enable one to essentially “hold that thought’ or provide a continuity of cascading memories or predict the future or any one of a number of other such temporal capabilities; in this way the hierarchies seem to me to be loops. The branches encapsulate loops of branches of loops and so on limited physically but in theory like some connection nested ever expanding Mandelbrot set.

A fractal like structure of loops within hierarchies could be boundless but a pared down version of this structure seems to exist everywhere across regions of the brain giving them their characteristic Golgi stained look of an sloppily artistic contour copy of M. C. Escher’s Cubic space division. This odd construct can apparently provide the plasticity brains demand: for example, the hippocampus can immediately store a short list of numbers, such as a taxi driver sorting away a large number of addresses, and is speculated as a cause of thickening of this area in the brains of folks who have to memorize a lot of information.  At night sleep seems to act like a kind of genetic algorithm as represented by the neocortex slowly sifting through and deciding which recent short-term memories should merge with the larger, longer term, auto-associative memories stored there.

As such its become a bit of a corollary for me that custom design variants on auto-associative memories are vital components of starting successful AI architectures. Its obvious new insights stemming from non binary architectures, similar to a guitar player switching to Drop D tuning and finding his compositions gain a completely new style, have a creative effect that designers learn to quickly make use of and represent a markedly apparent contrast in style from indexed sequential memory. Of course the only thing worthy of long term interest which means money will be working code which is precisely how it should be. Its an understatement to say its a financial risk for very small companies to skip ahead and turn extremely complex, revolutionary hardware architectures directly into silicon; however, I’m very encouraged that IBM appears to be taking the risk , now with help from DARPA, and attempting to create a new kind of CPU inspired from biological systems that is fundamentally different from the Turing Machine architecture we’ve all used since the end of WWII. Still, designing 3D matrices of inexpensive, microcontrollers to emulate neurons is one fun alternative to custom silicon or purchasing a data center for raw computing power to emulate massively parallel computation. Besides, all those cool 70s era heuristics like circular queues for real-time communication are relevant again on small systems with no OS, and the physical dimensions and weight of Arduinos even with 9V batteries attached can drive real stuff you need a transistor to step up power for like legs and arms.

To sum up this overextended blog entry its my belief the essential data structures for some realistic attempt at biologically inspired brain emulation are probably already well known: neurons with ensembles of simple nonlinear transfer functions and hierarchies encapsulating loops everywhere reading/writing information via a very distant cousin to what wiki and texts usually describe as auto-associative memory. That’s basically one way of describing the neocortex as I interpret neuroscientists; multiplied by a few billion neurons, with about 8,000 connections on average between each neuron, wired everywhere near and far across it’s fabric. We probably won’t see them on the shelves of Frys for a while though as the white matter wiring sitting beneath the neocortex alone is beyond any technology of today. Jeff Hawkins, whom I’m obviously a big fan of, in On Intelligence proposes a fiber, presumably wave division multiplexing, emulation for this serious communication bump in the road to AI together with ever faster machines to simulate the billions of neurons that we obviously could never use metal solutions, e.g. solder, to hold together. Finally, everything in biological systems fire in parallel with no direct equivalent of a system clock but a collection of overlapping electromagnetic ‘waves’ whose eigenvectors somehow wash over neurons in a combinatorial dance conducive to thought. There could be many more layers to the onion we’re not yet aware of.

Apart from the tall order of instantiating this machine an important step will involve linking what is likely already a sentient system to deterministic systems we’ll hopefully still be in control of so as to focus their attention on interesting problems. As Carl Sagan said so beautifully “we’re star stuff seeking to know itself”: whether carbon based, silicon or mixed I believe that’s a forever true statement. Someday there may be a ‘Google’ pondering a million times faster than a chemically bound human neuron’s transfer function in orchestration with several billion parallel processing units involved in much more than just finding cool links on the web. I feel there’s an incredibly challenging, mesmerizing and beguiling development ahead of us for self organizing, massively parallel AI and the answers resulting systems provide might well help us with some of the most significant questions of all time. I guess we should all stay tuned and of course pick up a copy of GEB, its really a wonderfully fun book to explore.

Posted in Cool Speculations, GEB, Self Organization | Leave a comment

In Awe of the Cerebellum

A lot of the cool books and papers on AI I’ve read have focused on the role of the hippocampus and neocortex in human cognition. This seems right since the hippocampus is key in initial short term memory formation and the neocortex in long term memory, as well as the latter’s famous role in thought, language and other areas considered essential to being human. But it seems to me an area of the brain often overlooked is the cerebellum, especially when trying to produce a software/hardware architecture that can enable smooth movements.

The cerebellum appears to act like a sort of differential correction subsystem, like some elaborate phased locked loop or comparator circuit that continually and unconsciously makes corrections to signals emanating from the neocortex that direct the body. Damage or disease to this area typically results in jerky, stiff or wildly over-corrected movements: symptoms not unfamiliar to embedded programmers attempting to make servos smoothly operate a robot’s arms or pseudo hands. Similarly, walking robots still appear unnatural or wooden and always limited. I don’t think this is for lack of effort on the part of designers. Usually progress is a function of faster processors/more efficient programming or an improved solution to the differential equations governing the dynamics of the system.

Yet it’s obvious insects and animals are not solving high order math problems while traveling around. There is normally no effort required for them to move seemingly beyond picking a direction. This is a characteristic of all living creatures irrespective of whether they have fins, legs or wings. Humans from toddler age and on are ambulatory without conscious thought, having committed to ‘muscle memory’ in the cerebellum the motor learning skills required for smooth walking.

There are other more basic problems facing a designer attempting to emulate creature movements, not the least of which is finding a suitable power supply that can sustain a skeletal framework hosting the gear required for the equivalent of legs, sockets, hoofs etc. Still, the purely mechanical issues I expect will be solved with technology that exists or is nascent. An unsolved problem is the real-time computational control of such systems as well as how to direct smooth, fine motor movement for any situation. Given the decades of work that have preceded with still no good solution at hand a different paradigm for programming the system may be required to make progress. An exemplary system to mimic in my mind is the self-organizing, neuron architecture of the cerebellum; its hard to argue with such amazing success.

Not unlike training an infant first to roll over or learn to crawl one could expect some sort of feedback system with a cerebellum inspired governor to ‘teach’ machines to ‘walk’. The payoff is that such systems can be copied, not unlike the genetic wiring that enables a colt to stumble to its feet on its first day after being born. This magic seems to me yet another in a long train of instances where self-organizing systems, like the neocerebellum and its relationship to the neocortex, are a likely prerequisite to move from gawky, barely stumbling robots we’ve all seen on YouTube to free flowing systems that can begin to move a fraction as well as a lizard. I mean to take nothing anything away from engineers working on making robots move using traditional approaches, it’s an incredibly difficult problem and the widespread use of robotic arms for manufacturing and similar jobs with a finite locus of movement are a testament to their success. They have only my respect and I wish anyone taking on this challenge in their career or spare time the best. I certainly could be wrong on my fascination with self-organizing systems as a key component of a ubiquitous solution, but that’s my belief and pursuit.

What I am looking forward to is the day when we’ll finally acheive smooth walking systems that can help the elderly and sick folks with simple physical tasks through a voice command or save a life after a fire or disaster by scampering over debris too difficult for rolling robots. There’s much to be done in order to emulate biological movement; a good starting place in my opinion is with the cerebellum and how it controls so much of the body automatically and with such incredible precision.

Posted in Cerebellum | Leave a comment

Following The Trail To AI

Many AI start-up stories I recall can trace their history through well known phases: the initial hype and formation phase sometimes leveraging a thesis, book or even a simple Power Point presentation based on a new heuristic in hopes of motivating Angel investors. If funded this usually leads to a 4 P’s of the Marketing Mix roll out plan driving towards the launch phase long before the product has been developed/tested.

Often the real programming work then begins and, especially in the case of AI, problems can lead to a kind of combinatorial explosion of issues unless there is incredible focus on the task at hand. An unfortunate consequence can be pressure to produce a tightly bounded, domain specific solution so as to make good on promised dates and give investors a warm and fuzzy feeling that they’ve picked a good pony. Product schedules, which all business naturally use as a guidepost, is a critical yeardstick to measure successful execution but sometimes problematic when the solution, like real AI, requires so much different thinking, creativity and has proven so elusive for so many decades for so many. I expect someone creatively designing and developing off in the quiet contemplative corner of their garage, without the pressure of paying back investors before the next quarter, has as good of a chance as anyone these days given the ubiquity of low cost primary and secondary storage and incredibly fast microcontrollers that cost less than a cheeseburger.

The initial roll out of many AI products burns brightly at first and is further fanned with accolades by the tech press; but, as so often has happened in the past, fails to deliver a real-time system commensurate with the things humans do so easily. For good reason this fact has jaded many today who in years past might otherwise have bet their tenure/jobs and/or pocketbooks on any one of the endless sequence of new AI paradigms.

Nowadays if you even anecdotally mention an AI project you’re working on you’re likely to get the glazed, ‘can we move onto something real expression’ or stony silence from competent developers and tech investors alike. There is often a long, perquisite recounting, starting with why deterministic rules can’t cut it to the over fitting of neural networks, in order to explain why all the obvious AI solutions of the past haven’t produced much beyond the glue logic of the best Loebner prize winners. The task is a bit easier when talking to someone with the magical 10,000 requisite hours of expert qualifying software and firmware development experience. I had passed that mark several times over in my career and was still confident simple if then else statements would be all that’s needed to produce HAL before stumbling upon tech classics like “Parallel Distributed Processing” or those for all audiences like “Computer Power and Human Reason” by the great Joseph Weizenbaum.

That said, I still expect the simple control flow mechanisms inherent in machine instructions of the last 70 years actually will be all that’s required to usher in breakthroughs in AI someday, but likely as a Turing machine emulation of the increasingly well understood scaffolding of the neocortex, with its many dissimilar ensembles of neuron layers, hosted by some enormous cluster of CPUs; capable of exceeding the signaling speed of billions of axons firing in parallel and organizing information around the temporal nature of memory . Given all the AI hyperbole of the past, or simply some of the bizarre implications and complexity of the subject, I can understand why many choose to loudly sigh when the subject is broached. But it’s also hard for developers like me to not talk about something we’re so excited about after we’ve realized the set of problems that will be solvable after this one problem is solved will have as transformative of an impact on society as PCs or the Internet.

I am happy to report that I’ve made it to this point in my career/life and I’m still very enthused about what AI has to offer and am in constant awe of how exceedingly difficult it is to mimic the even simplest biological actions – I find no reason to avoid the topic, no matter how untenable it may seem no matter how fragmented its starts and stops of the past. To me it’s as if the problems of before have simply underscored how best to make progress now. In some sense its right there in front of us all now: folks at conferences seemingly scream the solutions through their papers and presentations on theories of machines encapsulating massively parallel, self organizing algorithms – this is clearly what all neuron hosting systems are empirically built from. We might best be served by the example of the Wright Brothers deciding the best way forward was to waste a few afternoons watching birds in flight.

Its obvious now the road to AI that embodies characteristics of the neocortex will involve a Himalayan effort and some of the road ahead appears to me to be about as opposite of a direction over the first attempted passes as if one had decided instead to walk around the entire mountain range. I for one look forward to the journey, cheer along those I can see are ahead of me or those just now starting and I expect there are many like me simply enjoying their own journey everyday. I hope to see someone finish before my time on the trail is over.

Posted in Why I'm Blogging | Leave a comment

Self Organization

To me, AI self organization is a kind of spontaneous order that appears to emerge from random networks of simple neurons. Capturing this magic is a primary aim of AI these days and progress, although plagued with periods of stops and starts over the years, has been always steadily moving ahead.

Reflexes, the senses and awareness can all be distilled down to a simple type of reinforcement/strengthening between neurons via the electrically charged axon/synapses and dendrites of the next neuron. The flow of current is directional and a neuron in some sense behaves like a simple nonlinear switch, albeit with thousands of independent output terminals that feed forward. This gave rise to Back Propigation, Radial Basis, PDF and a myriad of other feed-forward learning paradigms in the 80s.

A limitation was that the software systems which trained them tended to use a few layers, usually one input, hidden and output layers with the assumption more complex networks could be factored into these more simpler constructs. The deep learning systems of more recent years seems an attempt to layer such systems so that intermediate results can be learned to effect a more capable overall system.

Software has always had the ability to ‘self modify’ – a fact usually found by accident in my experience after a wild bit of code wrote data to a protected area where prefetching of instructions was intended. Sometimes, the op-codes and operands read from such stray writes resulted in interesting actions, but more often than not it simply vectored to an interrupt, not unlike the intended actions of malware and viruses that overflow an input buffer.

DNA also seems to have the ability to self modify its encoding as described by ‘jumping genes’ that can change positions on a chromosome through successive generations, thereby giving rise to different characteristics within an organism.

These types of systems become uber complex when compared to a strictly deterministic set of instructions but therein lies their great potential. Fortunately software is easy to change and can emulate some of the complexity of such systems. Given the simple statistics that govern the transfer functions of neurons the key factors to me are the malleability and sheer size of networks that can be emulated on computers. The limitations become controlling the system so it doesn’t just produce mush and feeding the output back into the input for temporal and other recurrent properties to emerge. There is a Copernicus moment in all of this when, after several generations of successive layers of neural networks are produced to fit a set of learning data, you realize humans will never have the ability to glean insight as to why a network of such complexity has converged in the particular fashion it has. Nor would the same set of inputs produce an identical network were the training set run through again, not unlike each person having their own unique perception of the world based on their individual experience and wiring. Self organizing systems are incredible and incredibly complex.

Posted in Self Organization | Leave a comment

Open Source Hardware: The Arduino

I recall many years and conversations during the evolution of open source software: Apache, Tomcat, Asterisk and other supremely successful examples come to mind; however, a newer trend these days is open source hardware, and a leader is surely the Arduino platform.

For about $20 you can build a little board that houses a 16Mhz processor which typically translates to a sustained execution rate of a few million statements a second. The Mega contains some 256K of RAM, more than my Mac had initially years ago, and enough input/output pins (over 50) to satisfy any hardware/software dude’s dreams of controlling all the gadgets in his/her whole house. For those who abhor soldering, scopes and schematics the commercial version starts around $30 but tops out well under $100. Clearly the most penny shy developer can now afford to start experimenting in this emerging field.

For me personally I’m having a blast: I don’t think I’ve had this much fun since my parents got me a “Fort Apache”. I’m now circuit bending just about anything that breaks around my house that contained resistors/capacitors through my growing cache of Nano to Mega Arduinos. The IDE that comes free for Arduino is a simple joy to use. In addition, someone created a .NET version, called the NETduino, that allows C# and Visual Studio with its interrupt driven embedded debugger for what seems to me could be serious commercial development. As much as Microsoft is oft criticized anymore I’ve found their IDE to be one of the absolute best around. To embrace the Arudino was a smart move on sombody’s part.

The Creative Common License for the Arduino implies prototypes need not be translated to other commercial platforms before creating real products. As such I expect lots of folks out there like myself are starting to experiment with the Arduino, especially since I’ve seen them adorning the halls of Frys Electronics of late. I see absolutely no reason one couldn’t create a system with hundreds of processors at a relatively reasonable cost/immense processing power using the Arudino. So much of the old school embedded system, real-time programming with its attention to architecture and parsimony of software/design that is usually unnecessary these days may see a come back – these platforms remind me so of those we cut our teeth on while programming/designing systems in the 80s and 90s. Its a lot of fun and sort of nostalgic for many. I expect this to be a fast growing field going forward.

Posted in Embedded Gear | Leave a comment

Speculations on Permutations

I’ve read estimates that each neuron in the neocortex connects to many thousands of other neurons and in total there are over 100 billion neurons in the brain. This alone is an interesting and revealing statistic about the capacity of the brain to hold information.

If you assume each connection to another neuron can take on one of only two states: on and off, which is a gross oversimplification as axons have a non-linear ability to signal based on their rate of firing and their internal thresholding function, its interesting to compute the total number of patterns each neuron can provide.

A neuron with one synapse to another neuron and a simple on/off state can hold 1 ‘bit’ of information: on and off. A neuron with 2 synapses can hold 4 (e.g. 2^2) and so on. A neuron with 50 synapses can represent 2^50 unique patterns or 1,125,899,906,842,624. I remember reading that each neuron in the brain has at least 1,000 synapses: 2^1,000 is an enormous number and with the neocortex having at least 10 billions neurons the potential number of combinations is astonishing – I’ve read its a number some estimate to be greater than the total atoms in the universe. Perhaps that’s why we accept intuitively that the human mind is infinite in its true capacity even though our consciousness seems severely limited based on the sheer number of details we can retain over a lifetime of learning. Neurons firing in massively parallel, self organizing frameworks are a truly marvelous type of a computer and God is a marvelous architect.

Posted in Cool Speculations | Leave a comment

Embedded, Self Organizing Systems

A few years back, after many years developing embedded, real-time systems, I turned my attention to AI systems of the day to explore opportunities for embedding them into new products. Fuzzy Logic was in vogue at the time along with Expert Systems and Neural Networks. Each had enabled new products in limited spheres but it was painfully apparent nothing could yet approach what natural systems do so effortlessly, such as a fly avoiding the branches and leaves of a bush while zipping through it at top speed. This caught my imagination, and I became aware of how far computer architectures based on Turing machines were from real life nervous systems with their massively parallel, noisy, slow, self-organizing fabrics. In addition, none of the pattern recognition systems took much consideration of temporal changes in the environment which is the hallmark of any living creature’s ability to react to stimulus.

It seemed unlikely folks would ever glean insight about how a brain does anything from looking at a cross section of neurons or attempting to top down reverse engineer the neocortex from people’s outward behavior. As it has to so many others, it eventually seemed clear to me the realization of systems that could best do the things that biological systems do should be derived from a system self organizing its own complex networks similar to what all living creatures do either through eons of generations of genetic conditioning or through the process of behavioral learning. This seemed counter intuitive at first: after all, software engineers produce highly complex systems by incrementally battling the deterministic rules of merciless computers, quite unlike neurons; and I had lived in that environment for many years. To give up that paradigm in order to take a step in the direction of solving problems that have eluded AI is a tall order and a controversial one but nevertheless a direction I believed was required so as to make real progress.

I still think that’s the best route and, thanks to inspiration from a myriad of places on the Internet and books that I’ve enjoyed like Jeff Hawkin’s “On Intelligence,” I’m motivated to explore this field and related topics in this blog which has so much potential and has held such a fascination for me and so many others over the years. In my opinion it’s also a great time to be exploring applications of embedded, parallel, self organizing systems as cost and processing power are no longer the barriers to entry they were in earlier times. Platforms like the Arudino open source hardware environment with its CCL license both legally and financially position small business to begin to break down the barriers that have held back traditional machine architectures and patents, commercialization of applications will no doubt follow.

Posted in Why I'm Blogging | Leave a comment