From OpenCog

No one has tried to make a thinking machine. The bottom line is that we really haven't progressed too far toward a truly intelligent machine. We have collections of dumb specialists in small domains; the true majesty of general intelligence still awaits our attack.

We have got to get back to the deepest questions of AI and general intelligence and quit wasting time on little projects that don't contribute to the main goal.

--- Marvin Minsky on AGI (as interviewed in Hal's Legacy, Edited by David Stork, 2000)


OpenCog is perhaps best viewed as a three-headed beast.

It has three primary goals:

  1. as the OpenCog Framework, fairly general framework for AI and AGI development
  2. as the OpenCog Tools, a collection of specific AI tools (e.g. learning and reasoning components) to be used in creating AI systems
  3. as a means for achieving a very particular sort of AGI system, OpenCog Prime

and care has been taken in the conceptual and software architecture to be sure that they these goals are mutually supportive rather than adversarial.

For detailed information pertaining the work done toward these goals, see the OpenCog Framework, OpenCog Tools and OpenCog Prime pages. For general discussion on these goals, read on.

Goal 1: OpenCog as a Framework

The first goal is: OpenCog is intended as a framework broadly supporting AGI and certain sorts of Narrow AI development.

Of course, it is not intended as a universal framework -- to make a really universal framework for digital computer based AI, one would essentially need to make something as general in focus as a standard operating system and a standard programming language. The whole point of making a framework to support specific sorts of work, is that one can build into the framework assumptions that are common to all the work of the specified sort, distinguishing it from other work.

(Yes, it's trivially true that OpenCog could be used as a platform for implementing any kind of AI, as there are multiple Turing-complete subsystems of OpenCog. But this is not a very useful observation. Though one could, for instance, implement algorithms for solving huge systems of nonlinear differential equations within OpenCog, this would be pointless as it would be much less efficient than just implementing the same thing in C++).

Exactly what sorts of AI approaches can conveniently be implemented in the OpenCog framework, is a somewhat difficult question to answer. One way to put it is: if an AI approach can be naturally made to use a knowledge representation consisting of a graph or hypergraph (most likely a weighted one), and to involve multiple processes acting cooperatively on a knowledge store consisting of one or more such graphs/hypergraphs, then very likely it will be naturally implementable within OpenCog. (The knowledge base would consist of one or more AtomTables; the processes would be MindAgents and MindProcesses.

Note that OpenCog does not impose any particular constraints on the semantics of the graph/hypergraph: it could be a network representation of formal logic according to any of many different logical formalisms (including uncertain logic, modal logic, quantum logic, etc.); it could be a neural network with various different equational models for neurons and synapses; etc.

A few words about application areas: OpenCog initially is being released with particular facilities for experimentation with AI that controls agents in virtual worlds (via interfaces to [1] and [2], and AI that carries out natural language processing (via the RelEx system). However, these foci exist for historical reasons as much as any other reasons (i.e. because relevant code for these application areas existed in the Novamente LLC codebase, in a form easily integrable with OpenCog). Other application areas such as theorem-proving and robotics (to name just two among very many possibilities) are equally amenable to OpenCog-ization, in principle; there just doesn't happen to be code for these integrated with OpenCog yet.

The place to go for documentation on OpenCog as a fairly generic AI software framework is the OpenCog Framework page, which discusses the basic framework, plus AI modules and functionalities that have been implemented (wholly or partially) within OpenCog.

Goal 2: OpenCog as an AI Toolkit

The key tools initially provided as part of OpenCog are

  1. The RelEx natural language comprehension system
  2. The MOSES probabilistic evolutionary learning system
  3. The PLN (Probabilistic Logic Networks) framework
  4. A system for Economic Attention Allocation and associative memory

Goal 3: OpenCog Prime

In addition to its roles as a fairly general platform for AI development, and a collection of useful AI tools, OpenCog is also specifically intended as a framework to foster the development of a specific approach to AGI, which for lack of a better name I've decided to call OpenCog Prime. OCP bears a number of resemblances to the Novamente Cognition Engine design, though there are also some significant differences. See the page OpenCog Prime for a large amount of detailed thoughts on this one particular AGI system that might be constructed within the OpenCog framework.

To my knowlege, the OpenCog Prime docs constitute by far the most detailed outline ever publicly released regarding "How to Build a Thinking Machine." Nevertheless, plenty of details remain to be filled in. A main reason for open-sourcing both the OpenCog code and the initial OCP design is the desire to have more help from a broader community of thinkers regarding the filling-in of these details. Filling in these sorts of details requires plenty of difficult conceptual and technical cognition, as well as advanced software design and programming. Even though I believe there are no huge conceptual or scientific issues still "pending" in the initial OpenCog plans, nevertheless, there is still a lot of work left.

In some cases, problems that have specific solutions within the NCE design, are left less fully specified in the OpenCog Prime docs. Some of these specific solutions may be released into the public domain at some point in the future, as deemed appropriate; but initially we have felt it best to leave things more open for OpenCog to potentially evolve in different directions.