Artificial Intelligence: The Islands of Knowledge Project

This is a proposal for an AI project which I want to happen. I could use some help with developing the ideas and implementing it. I have called the project "Islands of Knowledge" or IoK. Suggestions for a better name are welcome.

Anybody who is working on AI is probably developing what I will call an Island of Knowledge. For example GL7 - my go playing program - is such an island. It encapsulates go playing knowledge. Some IoKs are quite big - the chatterbot A.L.I.C.E. for example. A.L.I.C.E's knowledge covers text input, text output and superficial conversation on a very wide range of topics.

These IoKs can be developed/extended in many ways. A.L.I.C.E., for example, is already being extended to enable speech input and speech output (already done but being improved), and ways of deepening its understanding and its conversation are being looked at. My go program could be improved to play better go, but it would be very interesting to extend it so that it could learn to play go, talk about its go knowledge or teach go.

How about building a bridge between the A.L.I.C.E. and GL7 IoKs. A.L.I.C.E. could just say "How about a game of go ?" and pass control to GL7. That would be a very narrow bridge !! How about if the GL7/A.L.I.C.E. entity could talk about the game of go which it was playing - now there's a challenge. Would it be possible to use some of the A.L.I.C.E. conversation capability to talk about GL7's go knowledge. Could A.L.I.C.E. and GL7 be combined with some software which knows some teaching principles to teach go ?? There are lots of challenges here.

Basically the Islands of Knowledge Project will identify, develop and join any IoKs which interest the developers.

My motivation ?? Fun !! Do you want to join in ??

What I have to offer

I have been working in AI for twenty years. I have experience in managing, directing, designing and implementing AI systems. I have experience in building strategic/tactical AI game engines. I also know a lot about knowledge representation because most of my AI experience has been in building expert systems where representation is the key issue.

My go program source code is available to the project. It is in Prolog which may not be useful if someone wants to use it so I will undertake to translate my go program's knowledge into any language that is required.

I will be happy to design and/or build any reasonably compact and accessible domain of knowledge. Basically this would help to demonstrate that a particular concept works. For example, If someone wants to build an IoK that can pass a grade 3 test in arithmetic using in explicit representation of arithmetic knowledge, then I will be happy to help with/design/build the representation of arithmetic expertise. If you want to extend this IoK to handle university level mathematics then, although I know how to do it, and I would be happy to advise, I would not want to spend that much effort on such a sub-project.

Approach

We should not be particularly concerned with building it right - building it at all is good enough. We are prototyping. We may also refine, but we don't have to. Hacking things together is great if that's the way you want to work. Documentation of what you do is useful, without it re-using software, maintaining it and interfacing to it may be difficult or impossible, but so be it. If you are into principled design and full documentation that's great.

Ethos

The really important thing is to have a community of people developing/extending and linking these IoKs. The project will not be held together by enforced standards of any sort. We may well develop some interfacing standards that some people will find it convenient to use. It may be that a particular language is dominant. But the important thing is the exchange of ideas between the developers.

This project is an Open Source project and I propose running it on the Source Forge - any comments ??

Platforms and languages

It would certainly be good if any software we develop could be run on most platforms that are commonly used. It seems pretty important that we can run under Windows and *nix. I don't feel that it is necessary to run on Macs - but I'm biased - and it may be a non-issue in that anything that is written will run on Macs anyway. Clearly Java and C++ will be favoured languages because of their popularity. I can see no good reason for choosing either as the project language, indeed I would encourage the use of other, more esoteric languages - some of them might be really good !! I feel sure that building interfaces between languages is not going to be a serious problem - and even if it is a serious problem I am sure we will have the skills to fix it !!

Advice on how to developing an IoK

In my 20 years of developing AI systems I have had a lot of satisfied customers, though I have also had a couple of really pissed off ones too. AI systems are really not hard to build, but you do need a flexible approach and a good relationship with your customer. So here are my guidelines for building IoKs.

Define clear goalposts - move them if you have to - if the problem is too big, shrink it.

Cut a slice of the pie, ie don't just do a lot of the easy stuff round the edge, or build huge amounts of GUI. Take a "slice" of the project which includes some GUI bits, some easy bits and some hard bits.

If part of the project looks so hard it really scares you tackle it first, or work out how you're going to sneek up on it.

Where should we start ?

Well, the project is so big that a start anywhere is fine.

Suggestions ??

What others are doing/have done in this area

For many years industrial, commmercial, medical and military organisations have been aware that their knowledge bases could be used more effectively. For example, car manufactures have a lot of car design information which is used quite intelligently in the car design process, but when it comes to fault diagnosis they have been building a new expert system to perform this task. The problem has been that the design knowledge was "the wrong shape" for diagnosis. Ideally you would like the knowledge generated for this type of application, whether it is building cars, ships, electrical distribution systems, to used for design, maintenance and diagnostic purposes. Hence the interest in ontologoies - a way of rationalising and standardising knowledge representation. A few years ago the European Union funded the KACTUS project to do some work in this area.

Another area, somewhat closer to my heart, is the use of AI in computer games. In most computer games you are playing against the computer, often you have several computer opponents in a game. These so called NPCAIs (Non-Player Character AIs) have ben steadily improving over the years.

 

Assistance on the above project would be greatly appreciated. Just email me.

Last updated 30 July, 2002