Thursday, April 21, 2011

Poster Finished!

Short blog post today - but I've finished my poster and Joe hung it up in the lab so you can check it out at your leisure.

I finally got parameters working. The QueryIntersector finds the activated parameters that are unsatisfied, and then assigns them the most activated properties that match the parameter type. What's nice is that the concept nodes start to have a purpose - in this case, matching parameter and property types. The algorithm right now is probably too greedy - I will have to make some adjustments. I'll have to decide if I want to polish it up or work on another feature that will make a nice presentation.

Thursday, April 14, 2011

Nothing Big Today

I've mostly been working on implementing parameters, but it's been tougher than I expected. Mostly conceptual problems. My last problem is inheriting values to be filled for parameters based on what the parameter is. For example, a destination should be a position, and so it should take a vector as a value. But we should only have to say that position is a vector, not that a destination has a vector value as well. The next issue is how to store the parameter value only for a particular instance. It's possible that different paths to the same goal would have different values along the way. Do I store each possibility, or just compute the values once I've already decided on a path of action? I'm thinking the latter, but this removes the possibility of finding the best path for a sequence of actions.

I have a Chem exam tomorrow so I haven't been able to do much on this. After tomorrow I can get back to doing serious work on it.

Friday, April 8, 2011

Thinking Out Loud

This post is mostly for me to organize my thoughts, but I thought it might be interesting to share.

One aspect that isn't covered very well in my research is the cross-over from long-term memory to working memory. That is, I've read a lot about general knowledge representations, but much less about instantiating those concepts when it comes to actual objects in the environment. The book "Explorations in Cognition" talks a bit about the difference between the "Mental World" and the "Real World", which is nearly analogous - the difference is that the mental world in that case is what is expected, whereas I treat the "mental world" as common-sense long-term knowledge.

Objects in the environment pose a couple of challenges. First, how do we determine whether they are in the environment? We can have certain senses, but individual senses may not be enough to completely identify an object. For the sake of this project, we can assume that all required information is made immediately available in the small world. But even then, there's an important property of properties - whether they are satisfied or not.

In a knowledge base, an unsatisfied property means that an object has a range of possible values for a particular property. For example, an apple can be red, green, or yellow. Therefore, in our knowledge base, apple has the unsatisfied property of color, with a range of values - red, green, yellow. These properties can be satisfied by specifying the type of apple. We say a Granny Smith IS-A apple, and it satisfies the color property by setting its value to green. We could also specify that we're talking about a "red apple", and that instance would have its property satisfied.

But what if the object that could satisfy a property isn't satisfied itself? Well then the property isn't satisfied, technically. A car is a vehicle that has wheels - that seems to satisfy the method of propulsion (or whatever you want to call it). But we don't know what kind of wheel it is, what it looks like, etc. So we can't give a full representation of what a car is without this extra information.

So say we have a box in our small environment. We know a box is an object, and it satisfies the property of "shape" with the value "cube", and it will have a color that is unique to that instance. The shape property will be connected to the concept node of "box", while the color property will be connected to the instance node of that particular box. If we want to get a property of a particular instance, we first look at the instance itself for the property, then we can move up the conceptual hierarchy (following IS-A edges) to continue looking.

I think I'm going to revise my plan from my last post. Instead of looking for a property that can fulfill the argument and trying to satisfy it immediately, I'm going to find the instance node that corresponds to the object in question. From there, I can run the ArgumentIntersector with an activator at the concept and the property that is required.

I think that's it for now.

Thursday, April 7, 2011

Parameters


The Beta review went well. The main thing I want to get working next is parameters. This will allow the user to say "pick up the blue box", for example. Here, blue box is the parameter for the action "pick up". I've scanned in my current plan with a diagram. It took me a while to come up with the solution, so I haven't had time to implement it yet.

I tried looking into some of the books I have to see how others have dealt with it, but none of the implementations seemed to deal with specifying actions to be done on objects in the environment. They all seem to be focused on a disembodied theory of cognition.