OpenCogPrime Phase One Roadmap
For the overall plan of which this forms a component, see OpenCogPrime:Roadmap.
The goal of Phase One is roughly defined as: Completion of essential aspects of AGI system design (mathematical, conceptual and software-architecture); and implementation of initial versions of key components.
What's Been Done Already
This is not a complete list by any means, but it's a run-down of some of the major achievements in Phase One. Much of this occurred within Novamente LLC during 2001-2008, prior to the inception of the OpenCog project; but this work benefits OpenCog due to Novamente LLC's donation of code and documentation to the OpenCog project.
- Creation of the OpenCogPrime AGI design
- Creation of the OpenCog software framework (design and initial code), including the Atom knowledge representation and AtomTable declarative knowledge repository
- Creation of the Combo language for representing procedural knowledge, and design of its interaction with the AtomTable
- Design and implementation of an initial version of MOSES, a powerful algorithm for probabilistic procedure learning
- Design and implementation of an initial version of PLN, a powerful framework for probabilistic logical inference
- Design and implementation of an initial version of EconomicAttentionAllocation
What's Under Development for the Initial Public Release
- Porting of PLN from NCE to OpenCog
- Integration of MOSES and OpenCog
- Packaging of the CogServer as a standalone application with plugable modules
- REST-ful web services API for accessing the AtomSpace within a CogServer.
- Implementation of a proxy between OpenCog and the RealXTend virtual world, and porting of Novamente's Petaverse agent control code to OpenCog (OpenPetBrain).
- Demo applications of MOSES, PLN, attention allocation, and agent control, with easy to follow instructions on building and playing with them and, ideally, downloadable binaries.
What Still Needs Doing
Missing odds and ends in existing cognitive modules
- Lots of refactoring and general cleaning-up of the PLN code, in the context of porting it from the NCE to OpenCog
- Extending MOSES to deal with more and more different types of operators (it's not clear how much of this needs to be done to start Phase 2; but it will probably needed for Phase 2.3, see OpenCogPrime:PhaseTwoRoadmap
- Filling in some important missing pieces of PLN, such as contextual, temporal and causal inference. These are documented fairly carefully in the PLN book but haven't been put in code yet except in some fairly limited prototype versions. Not too much code is required here, but there may be a fair bit of tuning
- Improving the attention allocation code to better recall associations learned in the past (this is work Joel Pitt is in the middle of doing right now)
Stuff that Maybe or Maybe Not should be ported from the NCE
- Harel-Koren algorithm for embedding of Atoms in dimensional space: Moshe Looks wrote code for this a long time ago, it needs to be either resurrected and integrated with OpenCog, or rewritten
- Clustering is in a similar state: there's some old code lying around for clustering Atoms in the NCE, but it may be easier just to write new code, depending on what clustering algorithms one wants to use
- predicate schematization, which Ari Heljakka coded in the NCE in 2005-2006 in the context of making the NCE play fetch in the AGISim simulation world
"Missing cognitive processes" that need to be coded in OpenCog
This may seem like a scary list, but actually the really big nasty cognitive processes (in terms of amount of code and number of "moving parts") are MOSES and PLN, which already exist. The cognitive processes that have been "saved for last" are ones that don't require much code at all.
- Code for using dimensional embedding vectors to guide PLN inference
- Concept creation heuristics
- The creation of the SystemActivityTable and its use in attention allocation (this is a fairly big task, but more because of the software engineering aspect than the AI aspect)
- Extension of attention allocation to deal with allocation attention among schema (procedures) that are currently being executed (this is actually the only truly conceptually subtle thing missing at present, I think ... it's well-described in the OpenCogPrime wikibook, but it's complex and hasn't been experimented with yet)
- Improvement to the schema (procedure) execution framework to allow
- concurrent execution of multiple schema
- appropriate execution of schema that are broken down into modules
- Map formation (which basically consists of doing frequent subgraph mining across the SystemActivityTable -- and there are nice open-source FSM systems that can be plugged in here)
- Implementation of context formation heuristics
Quite probably a number of small things mentioned in the OCP wikibook are omitted here. We don't really need every bell and whistle from the wikibook in place to proceed to Phase 2, though.