CSCE 475/896
Topic
Summary Assignment 1: Intelligent
Agents
Questions
and Answers
September 2, 2003
Q1: It seems as though for
the architectures we were presented, the agents have a set of actions that they
can perform, and this in itself seems to limit the agent. How specific are the action sets for
agents? Do agents have the ability to
create new actions, and if so, how do they do this, which seems essentially
like “writing themselves”?
A1: There are many parts to this
question. First, the agents have a set
of actions that they can perform, and in some way, this seems to limit the
agent. However, when we build an agent,
a system of agents, we usually define the agents by what they do (functions or
capabilities), what they have (resources), and what they know (beliefs,
desires, intentions, goals, or other data).
Since it is a definition, it seems that this definition limits the
agent. In a way, yes. But if we build an agent with “learning”
capabilities, then the agent can learn to perform a task or solve a problem
better. So, it is possible to
“un-limit” an agent even after the full specification of its functions and
resources.
How specific are the action sets for agents? This depends. They can be very specific for purely reactive agents. For example, given situation S1, perform
action A2. And A2 is actually the
singular action that you perform.
Sometimes, it can be a little bit more complex. For example, given situation S1, perform
action-group AG2, where AG2 consists of a sequence of actions (could be
partially ordered!) such as A3à(A4, A6)àA5. In this case, the sequence tells the agent
to perform action A3 first, then A4 and A6 together (in parallel), and then
finally perform action A5. So, that is
an action-group. Or, better yet, that
is a plan. Planning is one of the
oldest research areas in Artificial Intelligence (AI). A plan consists of states and actions and
the schedule of the actions and expected changes. Agents with better rationality plan; purely reactive agents do
not plan, but they may carried a pre-planned sequence of actions! In AI, there are many planning models:
subsumption, hierarchical planning, means-end analysis, layered, etc. So, in a way, depending on the scope of your
problem domain, action sets may not have to be specific. In systems where there can be
“instantiations” of a plan, then the action sets can be generated at run-time.
Do the agents have the ability to create new
actions? The short answer is yes if we
look at actions at different levels.
For example, given “I am hungry” as a state, perform “I eat” as an
action. But it is possible that to
perform “I eat”, I may need to perform the following, “I get food”, “I get
utensils”, “I put food in my mouth”, and so on. Now, we are looking at a lower, more detailed level of the action
“I eat.” With this, that means we can
create new sequences of actions based on some basic actions. For example, instead of “I get food”, “I get
utensils”, etc. to fulfill the action “I eat”, I can perform “I call pizza delivery”,
“I prepare cash”, “I answer my door”, “I pay and tip the delivery person”,
etc. Now, we have a new sequence of
actions. Looking at this level, we have
just created a new action (or action-group or plan)! But the atomic or elementary actions are not created new,
however. Intelligent systems, or
agents, must have some atomic or elementary actions to begin with. Can they create their own atomic or
elementary actions? Not very
likely. But can they create new actions
based on different sequences of atomic or elementary actions? Yes.
There is a previous work by Lenat on functions that
create themselves. He wrote the program
in LISP. Given a problem, he built a
system that would come up with different combinations of LISP functions to try
to match up with the problem statement and the expected outcome. The system was intelligent, and was able to
come up with functions that solve Mathematical equations, for example. And he proved that the system was
intelligent because it was able to re-discover some Mathematical solutions
using very simplistic, elementary functions.
Q2: Does social ability have
to be actively used to count as social ability? That is, if an agent has the ability to communicate with other
agents and humans, but the opportunity never arises, is it still considered to
have social ability? Can an agent
working alone ever be considered as having social ability?
This is a question prompted by our discussions in
class. First of all, does an agent need
to have social ability to be intelligent?
That was the original question that we discussed in class. To answer that, we need to define what we
mean by social ability. What is social
ability? I think it is the ability to
communicate with another agent/human to exchange information, to perform tasks
to satisfy goals of the society of agents/humans, and to coordinate actions
with another agent or human. Does this
definition require that the social acts to be carried out correctly? If yes, does that mean that one has to carry
out social acts and observe the outcomes of the acts? If yes, then does it mean that a single agent will not be able to
have social ability?
Todd Blank brought up a good point in class: An agent being able to socialize does not
mean that the agent must socialize.
But if the agent has never socialized before, how
does the agent know that it is able to socialize correctly?
This is both a philosophical issue and an
implementation one. Philosophically, we
want an agent to be self-aware, like us.
We want the agent to be able to evaluate and assess its own
actions. “If I think I have social
ability, then I should be able to carry out social acts correctly. How do I go about determining that?” In that case, then we need an agent in an
environment with other agents. From the
implementation point of view, we do not just declare an agent has social
ability. We need to implement the
infrastructure, the communication protocol, the coordination strategy, the
language, the message parsing process, etc.
In order to do this, we need to assume the existence of other agents in
the environment and what their functions are so that the communication and
coordination are purposeful.
This is a good question for you think and explore
further.
Q3: Could you describe in
more detail the differences between the ideas of reactive vs. proactive, both
generally and in terms of the Layered Architecture approach?
Reactiveness refers to responding to an event in a timely fashion. A purely reactive system is like a system that acts on reflex. For example, I see a sharp object going towards my eye, I immediately close my eyes and duck. I do this without rationalizing about it. It is part of my reflexes.
Pro-activeness refers to planning how to respond to an event in a rational fashion. This planning process is usually goal-directed. For example, I know that I will be working in a garage where there will be sharp objects flying around, I go out and get a pair of goggles. Why? Because I want to protect my eyes. That is my goal. So, I do something ahead of time.
That is the basic difference between being reactive and pro-active.
Now, in terms of the layered architecture approach, look at it from a human point of view. We humans are both reactive and pro-active. Sometimes, we know we need to be reactive, sometime pro-active. The layered architecture basically says this: Okay, given an event, I will look at how to deal with this event from several viewpoints. One, what is the best response given that I need to react to this event immediately? Two, what is the best response given that I need to respond to this event according to my bigger plan, my overall picture? And so on. As a result, different layers will yield different sets of proposed actions. The architecture has a module that examines these proposed actions and picks the most correct one to perform.
For example, when we write a program, we have this informal rule of thumb: get it to work as soon as possible, but make sure that it is designed so that it is easily extensible to more complex tasks. “get it to work as soon as possible” is being reactive, “make sure that is its designed … extensible to more complex tasks” is being pro-active.
Q4: … what are the epitome
of the different architectures? What are the most advanced AIs that these
architectures have produced? We learned
about the Layered Robocup AIs, but not much was said about what the other
architectures have produced.
The four architectures are purely reactive, logic-based (subsumption), BDI, and layered.
The subsumption logic is used in AI especially in planning and learning. This subsumption idea is a powerful one and quite imitates what humans do. From the symbolic reasoning point of view, it is also very practical. Many variants/hybrids of this logic have been used in AI.
The purely reactive architecture is particularly important in SWARM intelligence and ants. When we build simple agents that as a whole exhibit some emergent behaviors. The SWARM technology is getting popular. Please check out the following link: http://www.swarm.org. (This link is also listed on our Agent Resources webpage.)
The Belief-Desire-Intention model is used in countless research areas of AI, ranging from constraint satisfaction to negotiation, from natural language processing to user profiling. This is a very powerful model and there are many variants and hybrids as well.
Both the subsumption and BDI models have been around for a while and can be found frequently in the literature.
Q5: How do we code/program reactivity,
pro-activeness, and social ability into an agent?
There are of course many ways to do this. But here, I will just give some examples.
For “reactivity,” the idea here is to bypass rationalization or thinking. Given a situation, the agent should immediately know what actions to perform. We can implement this as a rule-based system. Given a set of conditions, if the conditions are met, then we carry out the consequent actions. Or, we can use a pre-trained neural network to do this. The input parameters feed into the input layer, and immediately, we have the actions to be performed at the output layer.
For “pro-activeness,” the idea here is to have a set of goals, and to reason about the goals and find out what needs to be done, and plans the tasks to get those things done. For example, the Belief-Desire-Intention (BDI) model is a good implementation choice. First, we give the agent some textual knowledge bases as its initial belief and desire states. And then, when the agent runs, it will monitor its world and instantiate some of the belief and desire states as well remove some others. Then, the agent will fire up its rule-based engine to match the states to rules. Given the rules, the agent will be able to determine its intentions. One intention may be a plan—a schedule or sequence of actions. That is okay. For example, given beliefs and desires of A, B, and C, carry out plan D. Then, the agent can perform the tasks specified by plan D.
For “social ability,” we need to have communication and interaction protocol, the language of the communication, the message parsing capabilities, etc. See Q2.
Q6: Does more intelligence
imply more conditional branches in the program?
Not necessarily. For example, if I know how to learn from my experience, then I can base my future actions on what learn from my experience. In that case, intelligence that I have (via my learning capability) does not imply more conditional branches in the program. For example, let us assume that there is a situation S1, and there are two possible actions, A1, and A2. In the beginning, since I do not know anything about S1, A1, and A2, I simply pick randomly A1 to perform. I look at the outcome and realize that the outcome is good. So, I add something like this into my knowledge base: “I applied A1 to S1 and received a good outcome (1)”. The number “1” at the end records the number of occurrences of the statement. Then, later, I encounter state S1 again, and I look back at my knowledge base and find the statement. Accordingly, I apply A1 again. However this time around, I receive a poor outcome. So, I add something like this into my knowledge base: “I applied A1 to S1 and received a poor outcome (1)”. And so on. After a while, I will have my experience: a success rate associated with applying A1 to S1, and one with applying A2 to S1, say 0.75 and 0.35, respectively. That, is what I have learned. And in this case, I have the intelligence since I can learn. But the flow of the program is still the same: I will pick the action that will most likely to succeed. In this case, intelligence does not imply more conditional branches in the program.
Q7: Do you think that the
definition of agent’s intelligence eventually evolve together with the real
definition of human intelligence?
This is a tough question and has many possible, correct answers. In the beginning, when AI first started, we wanted AI to be able to think like humans. But at that time, we took out emotions. (For example, in the beginning, we did not try to make a system that would feel “happy” or “sad.”) We also took out actions. (For example, in the beginning, we were not concerned about making a system that would walk or dance like humans.) But as technology evolves, we realize that many of these things can be achieved. There are now “computer faces” that react to you when you talk. There are robots that walk two-footed. There are systems that can “jam music” with you. As technology evolves, application needs evolve as well. People want a computer that they can wear, a car that will drive itself, a kitchen that will plan on its own (including ordering online groceries), etc. These needs also drive the functionalities of an agent.
However, I think that the definition of artificial intelligence has remained relatively the same, in terms of the overall big picture. There are details that we keep adding to it. But those are details.
Philosophically speaking, agent intelligence goes hand in hand with human intelligence. Technologically speaking, agent functionalities are driven also by technology advances and application needs.
Q8: The textbook uses a
multiagent example and concludes that reactive agent[s] [have] the advantage of
robustness. I am puzzled because I
think most multiagent systems are fault tolerance, and robustness should not be
an advantage of reactive agents.
There is an assumption here. For example, in a house-building team, you have one plumber, one painter, one carpenter, one bricklayer, one designer, etc. So, this team is basically a multiagent system. Now, if one of the agents is sick or not available, what will happen to the team? Without another carpenter standing by, then you cannot perform any woodwork! That means the team is not robust! This is particularly true when the system is heterogeneous.
However, if we look at most purely reactive systems where agents are abundant and simple and similar, losing one of them or a small number of these reactive agents will not impact the overall system too significantly.
Philosophically speaking, in non-reactive systems, the intelligence is built within each agent. Thus, the loss of an agent of a multiagent system has a significant impact. In reactive systems, however, the intelligence is an emergent property when you look at the system as a whole, it is not built into the agents. Thus, the loss of such an agent has an insignificant impact.