OpenCog: A Software Framework for Integrative Artificial General Intelligence

 Posted by Jeriaska on June 1st, 2008

opencog_banner.png

At the AGI-08 post-conference workshop, Ben Goertzel presented on a paper by the speaker and the Singularity Institute’s director of open source projects, David Hart.  There he described the OpenCog software development framework for integrative artificial general intelligence. The framework’s libraries include a flexible knowledge representation embodied in a scalable knowledge store, a cognitive process scheduler, and a plug-in architecture for allowing interaction between cognitive, perceptual, and control algorithms.


The following transcript of Ben Goertzel’s AGI-08 workshop presentation “OpenCog: A Software Framework for Integrative Artificial General Intelligence” has not been approved by the speaker. Video is also available.

OpenCog: A Software Framework for Integrative Artificial General Intelligence

opencog_1.png

What David Hart and I, together with others and the sponsorship of the Singularity Institute for AI, are doing is working on a specific open source framework for AGI. I’m not going to go into a lot of technical details here, which would not be appropriate in the workshop. We are hoping to launch something in the late summer and to provide a set of tools and a framework within which a variety of AGI approaches could be experimented with.

The code that we are open sourcing is drawn from the Novamente code base. We are taking bits and pieces of our Novamente system that we think can serve as a framework for others to experiment with as well. Of course, it is not universal. There are many AGI approaches that would not fit into this framework, and there are many that do.

opencog_2.png

We are trying to address issues regarding cognitive architecture, knowledge representation, learning, and then how you teach the system. I am going to briefly run through those points.

opencog_3.png

Regarding cognitive architecture, we are trying to do something that is fairly neutral and flexible. You can specify in a configuration file what the main components are, how they connect with each other, and what sorts of learning and reasoning algorithms are plugged into each one. We do not want the open source framework to commit to any one cognitive architecture, although we do have our ideas, and we will supply some standard configuration files, inspired by what we have done at Novamente.

opencog_4.png

Knowledge representation is probably the biggest commitment we are making. We are basically open sourcing our Novamente knowledge container, which is something we call the Atom Table. This is a very efficient container for weighted labeled hypergraphs. It lets you put different kinds of weights that may represent probabilities, levels of importance, and so forth, on nodes and links.

You could actually use this to represent a whole bunch of stuff, from attractor neural networks to crisp or probabilistic logic systems. The most innovative thing in there is a whole bunch of indexes that let you efficiently search things by various quantities, like space and time, different kinds of relationships. A system for automatically building indices will allow efficient access based on the statistics of the knowledge in there.

It is a real commitment. Not all AGI approaches will work with this kind of knowledge container, but without making this kind of commitment we really could not provide any useful tools.

opencog_5.png

Learning mechanisms is really where it is most open ended. We are going to throw in simple versions of a couple Novamente learning mechanisms. The MOSES automated program-learning algorithm that Moshe developed has already been open sourced, but it is integrated with OpenCog, as is a simple version of the probabilistic logic networks module that Matt Ikle presented about the other day. The basic idea of OpenCog is that we would like people to integrate all manner of different learning and reasoning mechanisms. We then get to see how they inter-operate with each other.

opencog_6.png

Regarding how you teach the system, there are really two approaches that we are going to focus on. Not to say that you could not build a theorem prover or do something else based on the framework, but we want to integrate OpenCog with virtual worlds, maybe Second Life. I think initially we will have an integration with Multiverse. Probably after that, OpenSim. If Second Life’s planned revamp of their scripting mechanism works as well as they say, we may do Second Life as well.

We have a rule-based and statistical-based natural language engine called RelEx, which we are in the process of open sourcing now. This is not so much an AGI thing–it is a fairly standard natural language engine. We will plug that into OpenCog. That will probably be useful for people who want to play around with text processing and natural language conversation in the OpenCog framework.

opencog_7.png

To wrap up, there is an analogy you can draw, which was due to David Hart, between the operation of an operating system and the operation of a framework like OpenCog. You can look at our knowledge container, which we call the Atom Table, as being somewhat analogous to a file system. That is where the information is contained.

We have a scheduler, which schedules different cognitive operations in the system. That is somewhat analogous to a processor inside an OS. What we call a MindAgent, which is a C++ object representing a reasoning learning algorithm, is similar to a daemoner, a service in a Unix system. We have input/output, so we can load in XML, give out XML, and we need to be able to export to RDF and various other standard formats. This is similar to the I/O from hardware via device drivers.

We have a mini programming language, which is basically a customized variant of LISP, called Combo. This again was Moshe’s work. Of course, this is analogous to the numerous programming languages that exist. You could make more than one programming language work with OpenCog, but we are giving one to start with.

One of the MindAgents that will come initially with OpenCog is a forgetting MindAgent. If you are using the Atom Table in a way that has importance numbers associated with the nodes and links, the forgetting MindAgent will go through and kick the least important things out of memory. That requires you have an importance updating MindAgent that figures out what is important or unimportant, but that is analogous though much subtler than the garbage collection process in an operating system.

To take the OS metaphor, what Open Cog is trying to do is make a framework within which people can make MindAgents, which are cognitive algorithms (learning, reasoning, perception, action generation, whatever it is) that run within this framework, in much the same way that programs run with operating systems. The philosophy, the way things are now, is that everyone is going to build their own OS, and the program with it. We want to provide the OS. Then AI researchers can build the programs within it.

Of course, the metaphor is stretched a bit, because we are making a lot of commitments here, and they will not agree with everyone’s approach to AGI. When you look at it, an OS makes a lot of commitments, too. Unix is very different from Windows, and so forth.

In terms of the ethical issues associated with it–whether it is a good thing–if you have an AGI approach that is going to work, do you want to put it out on the open source so that anyone can take it and do whatever they want with it? It is a very, very hard question. You have arguments in both directions. There is a great danger there–on the other hand, you get a lot of eyeballs looking at your system to point out potential flaws. There are obvious dangers in the elitist approach as well, where there is a small group that thinks they have the solution to everything.

I don’t pretend to know the answer to that. I would note that we are not currently putting all the Novamente secret sauce into OpenCog, just the basic framework. This is an issue I have been thinking pretty hard about.

hart_bio.png

Leave a Reply