topics:  main-page   everything   99things   things-to-do   software   space   future   exercise & health   faith  
  thought   web   movies+TV   music   mymusic   food   curiosity   tidbits   I remember   wishlist   misc   links


Thoughts on AI
July 24, 2007

Here are my current thoughts on how I would construct an AI. I would start by creating a language that would draw on some of the ideas found in object oriented programming languages to encode information about the world and how human language constructs map onto that information about the world. For example:

word house
  house1
  house2
end

def noun house1
  ...
end

def verb house2
  ...
end

The word "house" has (at least) two homonyms. The first is the noun we typically think of, while the second is a verb, as in: "The little cottage was used to house the orphans". What the above example does is map the word house onto its two possible meanings. Each meaning is then itself defined using a unique identifier (house1, house2).

Defining house1 and house2 is where the real work begins. Object oriented programming gives us a head start:

1.Use the fact that the world is very hierarchical as a means for encoding information about the world (OOP: classes / inheritance)

2.Things are composed of smaller things (OOP: objects have typed properties)

For example:

def noun person1
  is a:
    animal1
    ...
  has:
    birth_date: date1
    height: distance1
    weight: mass1
    ...
end

def noun date1
  ...
end

def noun animal1
  ...
end

def noun distance1
  ...
end

def noun mass1
  ...
end

This is still quite a coarse way to represent information about the world, but I think it represents a solid starting point. Here's what I'm getting at: Given some minor additions to what I describe above, if I told the computer "My birthday is November 20, 1980", it should assume that "me" is a person (noun person1); it would follow that "birthday" is a property (birth_date) of person1, and so the computer should create an instance in memory of person1, assign it to the context of the current conversion, and populate its birth_date property with "11/20/1980". If I then asked the computer, "What is my birthday", it should come back with "11/20/1980".

Now, at a certain level, it becomes hard to define a concept in terms of smaller concepts. For example, distance and time. If you ask me, the implementor needs to draw a line in the sand and say "the concepts on the right are defined using this home brewed language and are understood in terms of smaller concepts, while the concepts on the left are either partially or totally hard coded into the program". I would liken this to the human brain in that our powers of introspection, while they are amazing, do have boundaries. The analogy is that the "hard coded" meanings in the AI would be similar to a person's subconcious. The subconcious is there, and it's doing things, but it's at a lower level that we can't access using our upper level brain function. At an even lower level would be things such as the autonomic nervous system.

And finally, I will suggest that this AI be constructed like an onion, with many layers. The huge data model of how the world works is an inner layer, while the mapping onto words is another layer, and yet above that would be layers for parsing the language using the data model and word mappings. Likewise, the layer for forming responses, personality, etc, would be separate / distinct.

Something that gets me excited about this is that my interested in programming languages, and more generally, deriving language to encode information about the world, appears to be one of the fundamental areas for potential research.


Language
July 24, 2007

Something that I've realized as I've done more thinking about inventing a programming language as well as hacking away at the Turing test, is that language is much broader than I first realized. When you abstract the idea of language, it is about encoding/storing/transmitting information. The spoken/written languages like English, French, and Spanish are only one form of language. Programming languages are another class of language, but even beyond that there are so infinately many ways and contexts in which infromation needs to be encoded/stored/transmitted. I guess what I've realized is that not only am I interested in inventing a programming language, I'm interested more broadly in language, and its many and varied forms.


Artificial causality
June 6, 2007

Our physical world is all about cause and effect, reminiscent of Newton's laws of motion. Even outside of physics this principle seems to hold: If you stub your toe, it hurts. If you eat food, your body gets nurished. But within human society, the link between cause and effect can become far more distant. In many cases, it even feels artificial. ie. Without people making up their minds about how they will behave/react to certain things, there would be no cause/effect relationship. For example, if someone is doing a fundraiser and says "For every mile I run, do you agree to donate a dollar?", the cause/effect relationship between their running and money materializing in their bank account is very artificial. It is artificial in that, in our natural world, running down the street does not usually cause electronic bank transactions!

But "artificial" is a cold word, especially when we're talking about harnessing human will to do good things. So let's drop the term and keep talking about the idea.

What I'm wondering about is how people/society can use this idea in their daily lives to accomplish good things. More specifically, how can we use it to accomplish good things that don't normally happen / aren't normally the "effect" of the natural world?

Here's one off the wall idea: North American's often feel guilty about their consumption. Well, maybe we should, since we use 10x as much water as other countries, many times as much electricity, etc. But what motivates us to use less? If I use a little bit less water this month, it isn't directly benefiting someone in the third world. So why do I care?

What if we decided that we would figure out what our monthly water consumption was, and then for every 10,000 litres of water that we saved, our family would purchase a well in a third world country for other less fortunate people to have clean water? Or what if we figured out what our average food bill was, and for every dollar we saved by wasting less food, eating out less often, and buying no name foods, we would donate that same amount to programs that feed hungry people in other countries. If we decided to live this way, we'd have created a direct cause and effect between our lifestyle and the needs of other people.

older >>