My Photo

Artist Credits

Blog powered by TypePad

Web/Tech

May 03, 2007

Neural Nets

I've been doing a lot of reading lately about Neural Nets and the different learning processes they use.  Neural Nets are rather crude artificial representations of the human brain that try to simulate the learning process.  Our brains are made up of billions of tiny neurons that can connect to thousands of other neurons by emitting electrochemical signals.  Signals are received along synapses, which can be attached or detached to the dendrites of other neurons.  When a neuron receives an input electrical signal, the neuron processes the information and determines whether to move it forward as an output to other neurons.  There are a couple great tutorials on the concepts behind neural nets at AI-Junkie.com and Jochen Frohlich.

I have a couple problems with Neural Nets.  The first being that they are a serial simulation of parallel processing.  Our brains are not very fast in the electrical, computational sense, but they are very efficient parallel processors.  Each cycle of our brain function processes millions of instructions, whereas today's CPU's only process a single instruction per cycle.  So trying to equate the processing architecture of our brains to a CPU is a stretch.  IBM has taken the approach of actually trying to replicate the parallel processing capabilities of a rat's brain using the Blue Gene L supercomputer.  Mouse brain simulated on computer

Second,  neural nets are restricted to binary inputs, whereas our brains are capable of taking many types of inputs such as the senses, touch, sight, smell, sound, and taste.  Our brains also act differently depending on hormone balances, nutrition, and what mood we happen to be in.  All of these factors alter how the neurons in our brain fire and transmit information.

Third, and most important is memory.  It is still a mystery how we remember certain events, people that we meet, or experiences.  It is theorized that our memories are nothing more than dynamic connections between neurons that occur during a particular experience.  As the memory fades and becomes less used, the connections across neurons degenerate, and eventually break, causing the memory to lapse.  It is also theorized that certain parts of our brain are highly tuned to manage these connections between neurons and index these memories using other neurons, memory neurons.

Neural nets simply do not have the ability to record a pleasant experience, or recognize an old friend in a crowd who has aged or changed their hair style.  Our memories and sub conscience are truly unique in this regard.  We have movie memory, or what some refer to as holographic memory.  We can actually re-run events in our brain as if they were occurring for a second time.  We can even make up events in our brains that never occurred, and we can dream.

I have an idea for improving the architecture of neural nets.  The parallel processing aspects of our brains are not going to be equaled by CPU's anytime soon, if ever.  We need a way then to leverage the serial nature of a CPU, and still perform the mass of computations required to simulate billions of neurons.  My thought for this approach is to make smarter neurons.  Instead of having neurons just take inputs, do some magic, and provide an output, what the neurons were given more options, say to record memory, dynamically associated or disassociate with other neurons, and to provide negative as well as positive responses to input.  Neurons should also have a weight for application to the senses, and the ability to prioritize work based on the state of the senses, say the 'hunger' sense is abnormally high, other senses would be diminished so that the organism could focus. 

 

April 04, 2007

Machine Learning and Artificial Intelligence

A child tries to scoop liquid out of a cup with a fork, and doesnt get much to drink.  The child then tries a spoon, and gets some success.  The memory is registered, forks arent good for scooping liquid, spoons are.  One problem found, two options tried, one option equals success, one equals failure, and the child gains experience.

This seems like a pretty simple problem, but it's actually more complex than we might think.  What if the liquid is hot?  What if the liquid is bitter, and the child tastes the bitterness on the end of the fork?  Good thing we didnt try the spoon first.

Learning and gaining experience is about more than just selecting from a set number of  possible choices and measuring the outcome.  As humans, we 'feel' the experience.  We register every event in multiple ways.  We feel pleasure with some outcomes, and we feel pain with others.  These influences are critical to our ability to gain knowledge.

So how do we teach machines to feel, to measure the satisfaction of an experience?  To determine pleasure or pain?  Anger or happiness?  Good or evil?

I'm starting to work on this problem from a programming perspective using some of the concepts developed with neural nets or parallel distributed processing.  Neural nets are actually an older technology and from what I have seen, they are pretty limited in their capabilites.  But the idea of establishing highly specialized neural nodes that work in unison to make complex decisions is still very valuable.

My idea is to take the neural net concept and twist it around a bit.  I need a system is that is focused enough to draw from previous occurances, and draw inferences based on probability, and in some cases, inprobability.  The concept is closely related to the science of synchronous events, think of hive behaviors such as ants and bees.  Anybody read Ender's Game?

BlackJack is going well...   more soon.