Those who’ve known me for many years will know that I love to create fictional worlds. They represent the epitome of complicated systems, with all of the messiness and detail of the real world combined with the flexibility required to satisfy my creative desires. Because of the immensity of world-building, at a certain point it is absolutely necessary for the creator to maintain a solid body of notes on the various people, places, things, etc. in the setting. Worlds are nonlinear by nature, so it is very common to use a wiki to write things down, and it was in re-reading my own wiki-notes that I got an idea for another way to do things.
Specifically, I began to notice how few links my notes contained, and the difficulty I might have in changing small details (like names) across many pages. Wouldn’t it be nice, I thought, if I were able to tell my computer about my world, and have the computer organize and maintain my notes in a way that let me quickly and easily extract and change the underlying facts. Essentially, I was thinking about automating the world-building process by reducing a world into a data and making code to manipulate and present that data.
Because I had heard good things about associative databases, I built one to handle the facts of the world and began entering items like
Kogámos is_child_of Sáríbá
(Yes, I know that’s a lot of accents). Associative databases (with exceptions, I’m sure) represent data ontologically (that is, as a collection of factual claims about entities), and in this way resemble the data structures of Good Old-Fashioned AI*. Now, before I started this project I was very skeptical about logic-based AGI, but I knew that in some domains, (such as Expert Systems) logic based narrow AI had become successful, so I set about exploring whether this was one such domain.
* – Really, this structure is common to all logic-based AI, even fuzzy-logic, modern approaches like NARS. Much of the criticism that follows can be applied to any sort of artificial reasoning system.
Before I go on, however, I’d like to share a documentary about the semantic web. It’s related, and I’ll be talking about it, but it’s 15 minutes and you could probably skip it if you’re familiar with the concept.
With the possible exception of being able to make meta-facts (that is, facts about facts), the eventual structure of the semantic web closely resembles that of an associative database. In fact, I’m sure that facebook has a piece of data saying
Max_Harms is_child_of Tracy_Harms
or something to that effect, right now. And like my project, the semantic web seeks to represent data about an entire world, not just a highly-restricted domain.
My project has some big advantages, though. The biggest is probably that all the information given might as well be coming from God. If the world-creator says that rivers run uphill, that’s just the way it works. Thus there is no need to model confidence in facts entered. Secondly, the system doesn’t actually have to act; it simply has to store and present the data in an intelligent way.
One of the early things I noticed in my exploration is just how fun it is to see the computer answer questions. Logic-based AI is very attractive because it takes hardly any work before you can ask it things like “Who is the child of Sáríbá?” and it will give you the right answer. I ended up spending lots of time asking questions that I already knew the answer to, just because it was fun whenever the computer was right.
One of the biggest hurdles in the transition from a Reductionist to a Holistic stance is that the Reductionist stance works so well for simple problems, and thus is very seductive to beginners.- Monica Anderson
The problem here is that answering simple questions based on simple rules from entered facts doesn’t mean squat. It’s about as useful as writing the information in a text file and using regex.
It gets worse than that, though. As mentioned before, worlds are messy and complicated. If the problem was as simple as generating a family tree, or making Venn diagrams, we’d be okay. But how do you represent something as nuanced as “Sally likes to spend time downtown, except on the weekend, when she finds it too crowded”? Such things are simple for us to remember because they tie into our experiences. To illustrate what I mean, imagine the similar phrase “Queue is angry about rowing in Vah, except when floating, when torque is standard.” This statement has no connection with our common experience, and because we do not understand it, we cannot store it easily. This is the same problem as that confronting the semantic web. We can pour in data until we die, and the system still wouldn’t “get it”.
If a programmer attempts to describe the world to a Logic based AI, for instance by creating ontologies, he’ll never finish the task. The world is too rich. The Cyc project – the largest and most famous AI project ever undertaken – has been trying to describe the world using predicate calculus for decades; it is the poster project for Reductionist approaches to AI. But Cyc will never approach anything worthy of the term “Intelligence”. It has been told many things and can recite many definitions but Understands nothing. This is the difference between “Instructionist” top down education and “Constructionist” bottom up learning – a distinction poorly understood even in human education.- Monica Anderson
Even in a task as basic as storing and retrieving information we still need the computer to understand what it’s doing beyond tasks of relative simplicity. This is because knowing about the world falls into a large class of problems that are fundamentally impossible without General Intelligence**. Other problems in this category include using natural language, navigating complex environments, and behaving in socially acceptable ways. As hard as we may try, until Strong AI is solved, a chatbot will always be a mimicking machine, a database will always fail in complex domains, and humans will be forced adapt to robots (instead of robots adapting to humans).
** – It may be possible for a vast enough intelligence to make a system so complex that it’d be able to handle one of these domains. I don’t think even large numbers of humans would be smart enough to make one, though.
Even with my increased dislike of logical systems, I’m quite happy with what I was able to make in the few days I spent building my database. You can check out the results yourself, or even add and delete facts. The database will be restored to a backup state twice a day (not sure what timezone my server is in), so don’t worry about making a mess.
- “describe X” = get all facts relating to X
- “list X is ?” = get all items that X is
- “list X is_child_of ?” = get the parents of X
- “list ? is|has X” = get everything that is or has X
- “list ? imports * ? is geographical_area” = gets geographical areas that import anything
- “infer” = list suggestions for facts, based on correlations
Source code is here. Everything I wrote (files in the root directory) is public domain. Attribution is appreciated.
(P.S. I’m a big supporter of the semantic web, and doubly so for open data. The criticisms expressed in this post are against the idea that it is possible to intelligently know lots about the world using ontological representations. Links are data, and that data is important, even if that data isn’t knowledge in itself.)