Neocortex based algorithms

Started by
13 comments, last by IADaveMark 11 years, 11 months ago
The 'vision' problem was solved with Numentas Neo-Cortex inspired algorithm
http://numenta.com

Mobile computing pioneers Jeff Hawkins and Donna Dubinsky founded Numenta to develop a new approach to machine intelligence first described in Hawkins' book On Intelligence.

After a few years of hard work, we have made great progress. The key invention is a new learning algorithm that automatically finds patterns in streams of data and predicts what is likely to occur next. The core of the algorithm is described here (pdf, video).

Numenta is developing what we believe will be a category-defining product based on this technology. The product promises to dramatically reduce the cost and difficulty of extracting value from any type of data.

=========

The PDF with Psuedocode is free to implement.

I have been applying this to the 'Tron light cycle' algorithm problem for awhile and believe it is the only way to solve part of the problem.

Our basic recognition system relies on bottom up input.
More advanced systems route info to recurse top down and bottom up to refine inputs.
Motor control is top down output and based on memory.

According to the book On Intelligence it may also be used for motor output (such as controlling legs on digital spider or real world robot)

All our movements are memory read and as they are unfolding being continuously improvised with other memory movements and new memories being formed at the moment.

The algorithm handles projection (imagination)
By feeding this back into inputs (your seeing a low % and filling in the rest from memory) you are starting to run the algorithm how it sits in us.

Aside from what is written above if you take the time to study the algorithm, vision examples and Jeffs Videos what is your opinion on incorporating this into gamedev?
-=Stylin/Teddybot=-www.teddybot.comwww.aiapplets.comwww.aidictionary.comwww.aifiles.com
Advertisement
Wow, that white paper was a good read. It looks like artificial neural networks have come a long way in the last decade.

I'm half tempted to try to implement something like this, but I don't immediately have any practical application uses for it yet. I've got quite a bit of computing power available at my fingertips, so incorporating the HTM with distributed computing might be an interesting project to do.

As for uses in a game, it's hard to say... How would it perform at chess? Could it be used to create intelligent unscripted bots? Is this the end of CAPTCHA authentication? Are there any military applications to this? Could it make simulations obsolete?
Yeah... the kicker question is, considering this is a game dev forum, how would this work for games?

Dave Mark - President and Lead Designer of Intrinsic Algorithm LLC
Professional consultant on game AI, mathematical modeling, simulation modeling
Co-founder and 10 year advisor of the GDC AI Summit
Author of the book, Behavioral Mathematics for Game AI
Blogs I write:
IA News - What's happening at IA | IA on AI - AI news and notes | Post-Play'em - Observations on AI of games I play

"Reducing the world to mathematical equations!"

I've read about this a bit before. I gather some of the original research was on determining patterns based on event-based observations of human to human interaction. This could be used to predict human opponent behaviour, then a traditional approach could be used to choose an action based on the prediction. This would allow more human-like AI opponents, and allow the player and AI to "trick" each other potentially.

Sadly the algorithm looks complex to implement well (e.g. high-speed real-time). Does anybody know of any implementations available free/cheap for trial development purposes?
I appreciate the practical and positive responses.

>>Yeah... the kicker question is, considering this is a game dev forum, how would this work for games?
By it I do not refer to the HTM psuedode alone but with extra modules which are well described in various places online.
It can and will be used for games when it is more evolved and better understood by game programmers.

This is an extremely difficult paradigm at current however if there are pieces which could potentially suit our needs hiding about in pdfs and videos it could be of benefit to bring them to the surface.
My opinion is that it will trickle down from industry in more ready to use modules and have more of a science developed around its use at that time.
On the other hand I would appreciate being able to voice some of the things I have found which inspire me from my decades of wishing we had game algorithms which could behave similar to humans.
How to make it work in games is easier understood with some pursuit of the videos- ideas will come to you.
The examples in some a certain video and a pdf relate to goals, dyanmic motor output and more.
As time progresses I believe it will be common for programmers to talk about such things as the 'invariant representation' for feeling cornered firing and how the systems around it play out. When you have a Visual, Kinesthetic and Audiio spatial/temporal predictor integrated with goal systems I promise you will see the best A.I players ever.
We will have games that become more difficult without speeding up. Most people need something ready now this is for people who need something new, very difficult and holds a lot of promise.

How would it perform at chess?
The psuedocode is basically a fuzzy pattern recognizer which if given patterns over time is also able to use temporal context on various levels of granularity.
It does not have thalomocortical loops or feedback which is required for imagining various scenarious based on the past and current contexts.
In chess it would develope invariant representations for game states in context.
During gameplay it is able to make contextual predictions.
The goal system would drive the play which may be modeled directly from information at:
http://www.dartmouth.edu/~rhg/ (second video)
http://www.dartmouth.edu/~rhg/pubs/FGbrainbots10.pdf

Could it be used to create intelligent unscripted bots?
Yes. It is based on how our neural columns operate and models our goal, motor output and learning systems.

Is this the end of CAPTCHA authentication?
Not for a long time to be as good as people.
Same with certain aspects of game A.I.
There are two histories we have.
A genetic history with social rules and biases basically hard wired.
And our cultural history. These will eventually be transferred but
the world may be a better place with Captcha working.

Are there any military applications to this?
Yes the 100 step rule is used to recognize pictures and the main motivation to post it at a game forum.
Why?
We can store millions of strings then give it one.
A few nodes light up which represent that string.
Give it a different string and the shared nodes represent which part of the strings are in common.
I have this working and it is a big variant off of HTM to try and suit our needs.
Lets say you record the paths of poeple playing games and where shots were fired and where players died.
A method to compare the current state to all games faster than sequential search may be what this is great for.
The thing that this is very good for is predicting the next state and with contextual accuracy.
So if you usually do m at area n while bot is doing x at area y it knows the difference if you did m when the bot wasn't at y.
The version I have does not have generalization buit in specifically and it is designed to bring out the things in HTM development which seem too difficult with the grid/plasticity/maxboost/columns/synapses model.
Generalization may be added however it will become clear in certain situations where each paradigm has its strengths in relation to the problems discussed above.

Could it make simulations obsolete?
Major work is done to simulate the brain at a molecular level which will be used to test drugs.
That is a welcome simulation given that the awareness sections are turned off.
Major work is done to run the same algorithms the brain does in a different medium.
What the neuron does is less than its number of parts which has been verified by comparing models to actual neurons.

Link: http://rodrinkus.zxq.net/
-=Stylin/Teddybot=-www.teddybot.comwww.aiapplets.comwww.aidictionary.comwww.aifiles.com
Intersting post, since I'm just now finishing reading On Intelligence, which I found fascinating. To me it seemed like solving the problem of pattern invarience is itself a huge step forward in AI. I'll read through the paper, but I fear some of it may be over my head, not being a neuroscientist nor having a strong math background in ANN
The second video at Brainlab is very very interesting.
http://www.dartmouth.edu/~rhg/ (second video)

Jeff Hawkins
[media]
[/media]
his book On Intelligence or the audio of it.
-=Stylin/Teddybot=-www.teddybot.comwww.aiapplets.comwww.aidictionary.comwww.aifiles.com

Intersting post, since I'm just now finishing reading On Intelligence, which I found fascinating. To me it seemed like solving the problem of pattern invarience is itself a huge step forward in AI. I'll read through the paper, but I fear some of it may be over my head, not being a neuroscientist nor having a strong math background in ANN


congratulations! The book explains a lot about my visual mistakes or how can miss the car keys on the counter (part of tree turned off from inhibition circuits due to other belief being active and filtering for that belief...)

The thing I made is because the HTM is too hard in general. I wanted an incremental way to run into problems while having a solid foundation behind me and tangible tools to work with. This has taken me a lot of work and I am just thankful for the forum to post it up so I can share the benefits I've found through source code and some examples.

On Tron Lightcycles:
The second video talks about landmarks in layers.
With lightcycles a landmark method draws a line between the midpoints of each segment.
The angle of the line is used for variance and to group games. The next layer up creates lines between the midpoints of the lines on the level below.
You eventually get one line to describe the game.
During gameplay the most active sets are displayed and the results from those games is also displayed.
Given trouble pick the best matching game and move in the direction opposite the slope of a losing landmark or go the same as a winning one and sometimes choose a random direction.

A pure HTM system will develop salient landmarks through the goal system and memory system by increasing permanence.
In a binary stack style HTM special functions could mark certain items in the list as more important.

The program was run on some text and the regeneration routine left out parts with less than n occurances.
It was a test to see how readable text is with some of the most common bits taken out.

Can you tell what the 3 words are which is represented by the second word?
You calwayscify that
-=Stylin/Teddybot=-www.teddybot.comwww.aiapplets.comwww.aidictionary.comwww.aifiles.com
These videos are available source of some HTM implementations.
The next post shows video of the HTM influenced 'binary' encoder algorithm.

Javascript HTM classes:
Sparsification:
The first video takes input from the pixels in a photo for instance.
Sparsification makes it so just a few of the proximal dendrites activate and that is the winning columns which are output to a program like the video below
[media]
[/media]
Winning temporal columns:
[media]
[/media]
This second video is the reciever of the winning columns.
Both its activity and predictions are sent up to the next layer which is sparsification.
Sparsification handles space. The temproal links handle predictions.
Both activity and prediction is sent up to the next layer which is crucial to the contextual thinking which we have such a hard time attempting to represent algorithmically.

[media]
[/media]
[media]
[/media]
[media]
[/media]
[media]
[/media]
[media]
[/media]
[media]
[/media]
[media]
[/media]

This is open source Javascript/Java/PHP for anyone.
It will be included in an upcoming zip file.
The zip file will have the PHP version, database files, Java version, Java Tron light cycle auto feeding into one and others.
-=Stylin/Teddybot=-www.teddybot.comwww.aiapplets.comwww.aidictionary.comwww.aifiles.com
Now onto the "Binary" implementation of HTM.
Binary is chosen as a 'mentally tangible' starting point to work from.
The leaves off temporal calculation and sparsification and is replaced with non-sparsified direct input.
The implications of these choices will be better understood though attempts to progress in any particular direction.

Here are some links to the first version of the random access string retrieval from the hierarchy.
When one hierarchy is used to represent a set of string the nodes may be setup with counters and an temporal memory object.
The temporal memory object is a list of previously active nodes which may used by a node to predict its own activity.
Adding multiple lists per node gets a bit tricky and that is covered in the Numenta PDF.

Videos of the PHP/Java/Javascript applications:

It is not a Grammar according to a few who responded as each child may have more than one parent.
This project is designed to pit you against some A.I. problems in a way that you have not been before.
Please take it lightly and try to have a good time. Thank you!

Multiple texts stored and retrieved in a tree structure.
[media]
[/media]
Only the bottom nodes store character values of text.
Every node above only stores indexes of nodes below.
When a string is done being inserted a list comes up with at most one index per level to recurse in order to rebuild the text.
Regardless of the size of the system the ability to pull a string out stays relatively constant.
[media]
[/media]
The horizontal arcs between nodes are 'single' cell per column temporal predictions.
Meaning they do not hold context. We need that also for games- if something doesn't match this exact context out of context solutions may still be applied.

An issue with 'temporal shift' was solved with this algorithm.
Given a string such as 123456789123456789
or 123456789-123456789
results in basically only adding '-' to the hierarchy.
This will be illustrated in posted image showing strings going in, their representation and how that could be used in gameplay.

[media]
[/media]
[media]
[/media]
[media]
[/media]
[media]
[/media]
-=Stylin/Teddybot=-www.teddybot.comwww.aiapplets.comwww.aidictionary.comwww.aifiles.com

This topic is closed to new replies.

Advertisement