Saturday, July 05, 2008

My desktop and a few notes.

Recently I've added support for cognitive entities - these are the internal manifestations of the information/events/objects that are perceived from the environment. This allows for the engine to makes decisions that are not directly tied to the environment, but however can be related to the environment at a later time.


Books that have recently solidified some of the approaches take within the NeumenaMind Cognitive Engine are:
Understanding Understanding by Heinz Von Foerster
Cybernetics of Cybernetics
Cybernetics and Human Knowing
Understanding Systems
Models of Thought by Herbert Simon
An essay, "Human Chess Skill", by Neil Charness. This essay is excellent in that Charness describes the approach that humans take to solving problems (obviously relative to chess) - via an understanding of visual perception, memory and evaluative mechanisms.

Friday, February 15, 2008

Environmental Stabilization


One of the paper's that I've read lately is called: "The Stabilization of Environments" by Hammond, et al. One of the underlying premises is that agents/humans adapt their environments to suit THEIR needs. It's a fascinating paper, covering a lot of the variable bits and pieces that many papers neglect or skirt around. The part that I enjoyed the most is the analysis bit - where there are concrete examples of an agent adapting the environment; as well as an almost how-to of stabilizing behaviors. I found the paper in "Computational theories of Interaction and Agency", edited by Philip Agre.

Work has also been progressing on the NeumenaMind, here is a latest screen capture - I hope to show a capture of the NeumenaMind debugger in short order. It's a bit more entertaining to see how the flow of perceived and generated information as it occurs in the cognitive engine.

Wednesday, January 02, 2008

A Toy Universe for the NoumenaMind Cognitive Engine : Master of the Empire - Express

I'm a huge proponent of doing something, rather than talking about it.

So for the past 2 months I've spent the majority of my leisure time working on two items: First and foremost the NoumenaMind Cognitive Engine and secondly a toy universe (of sorts) that will allow for a demonstrable application of the cognitive engine; and that toy-universe is through the next iteration of MOTE.

The game by design is simple, yet addictive. Each player starts off with a capital and attempts to conquer the randomly generated worlds through the use of Simpletons, Infantry, Panzer Troopers and Tanks. There are no air or water units - that will come in a later version because this first iteration needs to be, not only a fun game, but it also has to serve as a test bed for the initial implementation and integration of the NoumenaMind cognitive engine. There enough moving parts.

Certain terrain features restrict movement of particular unit types, resources are required to build certain units - so there is an artificial economy within this toy universe; one that NoumenaMind must learn to use. Just having an AI engine just "do something" is relatively easy - if you want your solution to be brittle. By brittle I mean a solution that is generally not applicable to other similar contextual situations. The internal foundation and framework of NoumenaMind make use of several weak methods - weak methods are used to solve problems (heuristically) in a context independent manner.

The cognitive engine needs to understand that the reason it moved the Panzer Trooper to counter a Tank inside a mountain pass is because it confined the movement of the Tank, allowed it's units to be concealed, allowed for disproportionate amount of offensive to be administered and at a higher cognitive level to be able to understand that this situation can be used as a cognitive frame for other situations that contain similar associative patterns. (This is not unlike similarities that maybe found within Selfridge's Pandemonium model - you can find the initial paper inside Neurocomputing: Foundations of Research as well as a further exposition inside Computer and Thought - under Pattern Recognition.)

The next steps are to solidify some of the human - toy universe interactions and then continue forth on with the integration of NoumenaMind Cognitive Engine.

Saturday, November 10, 2007

Architectures for Intelligence

Architectures for Intelligence is a compilation of articles from the Carnegie Mellon 22nd symposium on cognition. It is a veritable goldmine of ideas for cognitive engineers.

Touching on a number of systems that embody topics such as rational analysis, systems that target specific AI issues to an excellent discussion of goal reconstruction. The article on goal reconstruction compliments some of the central ideologies of the NoumenaMind Cognitive Engine, by providing discussions on combining situated actions and planned actions. There is now a definitive module inside NoumenaMind that specifically deals/attempts to recognize and reconstruct goals that may have been interrupted or even disassociated.

The overall structure of the book is excellent because either intentionally or inadvertently a lot of the papers feed off of each other.

Other gems include a paper on self-improving systems and my favorite, "The Place of Cognitive Architectures in Rational Analysis", by John Anderson. That article has true gems (both by Anderson and referenced works) - worth the price of admission.

The Research Continues....

So the work continues, ever so methodically and ever continuous. Real life has provided it's fair of distractions but everything moves forward. I've written the basic framework (more like the scaffolding) of the engine in which GLR resides and I'm now coding up the cognitive frames. So, I'm still on track for demonstrating an early version of the GLR engine and the game that uses it next year.

Some of the books that I've been (as of late) working through include:

Artificial Consciousness, Chella
Consciousness: Natural and Artificial, Culbertson
Commonsense Reasoning, Mueller
Daydreaming,Mueller
Cognitive Carpentry, Pollock
How to Build a Person, Pollock
The Connection Machine, Hillis
Causality, Pearl
A Cognitive Theory of Consciousness, Barr
In the Theatre of Consciousness, Barr
The Philosophy of Artifical Life, Boden
Introduction to Artifical Life, Adami
Cybernetic Machines, Nemes
Cognitive Engineering
The Web of Life, Capra
Nomic Probability, Pollock
How Can the Mind Occur in the Physical Universe, Anderson
Rules of the Mind, Anderson
Atomic Components of Thought, Anderson
Exploring Complexity, Nicolis


Some more so than others, for example the Anderson books are great - not only because they've to some degree been implemented but because they provide the broadest spectrum of understanding - from a theoretical exposition to an implementation.

Tuesday, October 02, 2007

The NoumenaMind Cognitive Engine : Theoretical Entities.

NoumenaMind CE: Introspection, Speculation and What-If Events Through Theoretical Entities

One of the issues that I've been working through as of late has been, how do I internally model hypothetical entities, situations, events, relationships in regards to a designated spatio-temporal assignment?

What this really amounts to is that I want the NoumenaMind Cognitive Engine to think and reason without initiating an action. This is normally not seen in games - but I'm not trying to implement the status-quo here!

What does NoumenaMind need to do?

NoumenaMind needs to contemplate certain actions via it's own internal belief system. What this contemplation allows for is the ability for NoumenaMind to form it's own internal belief structure (which in turn obviously influences it's eventual actions - potentially heavily) which are based upon it's internal model of the world. This world is built from not only NoumenaMind 's raw sensory input, but also the impact that the NoumenaMind-CE perceives it's impact has on/in the environment.

The NoumenaMind system is predicated on the concept of an entity. An entity is basically an atomic element in the world. There are properties associated with an entity, such as red, or dead - the properties themselves, depending on it's complexity may also be entities. It just really depends on the properties complexity.

Entities can be associated through different types of links such as a temporal link for an association that occurs in concert between two entities OR a temporal link signifying that two or more entities have never occurred together.

After some digging, I've settled on the concept of a "Theoretical Entity." The first time I actually read about "theoretical" aspects of cognition was in John Pollock's books, How to Build a Person and Cognitive Carpentry. Both are excellent philosophical books with a dose of AI. I'm sure theoretical entities are addressed in a lot of philosophical books.

A theoretical entity is created when the engine wants to internally structure something that is not necessarily grounded. This allows for the NoumenaMind CE to create a RED-TANK-THAT FLIES, when all it really knows about is that a tank is a grounded entity, that moves around the terrain and munches soldiers. What's great about theoretical entities is that NoumenaMind can build these internally and if they are ever encountered in the world - either through direct contact or inferred, it can perform a structural promotion from the theoretical entity to a grounded entity. The promotional stage not only deals with the theoretical entity but also any potential associations that the entity has through links to other theoretical entities. These associated entities (either theoretical or grounded) may or may not be promoted along, but their links are maintained and as such may either be degraded or reinforced as applicable over time. Which may lead to the eventual promotion or demotion of an associated entity or property.

Saturday, September 08, 2007

A Multi-Platform Threading Engine

I've posted version 0.1 of the GLRThreading Engine. It is currently only suited for Windows and Xbox development or more precisely: any Windows based systems, but once I get to the final 1.0 release you'll have a threading engine, along with a generalized sync mechanism and a dependency graph to manage - well object dependencies!

If you have any feedback on the system please email it to me and if you want read about it in-depth, then buy a copy of Game Programming Gems Volume 7. I have an article detailing it's general architecture as well a bunch of general threading techniques.

The GLRThreading Engine will be used inside the GLR Cognitive Engine, as many of the internal systems require the ability to execute in parallel ( group promotion management, link management, memory migration, etc..).

Mike

Wednesday, September 05, 2007

Currently Reading: Pitfalls of OO Development

I recently picked up a copy of an older book entitled, "Pitfalls of OO Development by Bruce Webster. It covers a lot of down in the trenches type issues such as object oozing (you gotta love that name), conceptual pitfalls, political pitfalls, analysis and design, proper base class creation as well as more higher level architectural issues - everything such as supposedly basic documentation issues, tools and reuse issues.

Is there any one particular part that stands out? Not really, it just coalesces as a nice book on object oriented development.

The managerial side of me really likes part 3, which covers mid project corrections. Some really basic, but nonetheless, down to earth advice.

Since the book came out awhile ago, you can pick it up on the cheap and is highly recommended.


Mike