Mobile Knowledge as Mobile Code
or Mememic Programming
Tim Finin and
James Mayfield
Computer Science and Electrical Engineering
University of Maryland Baltimore County
Baltimore MD 21250
Introduction
Many people see a division among agents which divides the community
between those who view agents as mobile programs and those who view them as
stationary programs which actively communicate with other stationary
programs with a rich and expressive agent communication language.
Two camps within agents: agents as mobile code (MA) and stationary,
communicating agents (CA).
Most systems for mobile code also include explicit means of inter-agent
communication (e.g., TS). So, maybe MA subsumes CA.
If this communication includes the dynamic sharing of kn, these are not so
different.
Most Kn is expressed as facts and rules which support deduction. Certain
deductions can trigger actions with side effects. Thus adding new
knowledge to an agent might cause it to exhibit new behavior.
Knowledge is like memes. Ideas can be useful and powerful. Ideas can
also be dangerous.
Do we need mobile knowledge?
Yes -- for several reasons:
(1) teaching an agent to fish. Describe cyc example. feature you
acquire new facts and rules that have proven to be useful, at least once.
(2) in order to update and maintain ontologies
(3) general learning from agent peers.
We need a very distributed way for new information and knowledge to
propagate through an agent community in the same way it can propagate
through a society of human agents.
How can we safe guard against dangerous ideas?
- don't believe everything you hear. Agents must develop a sense of who
they can trust as a source of new information and knowledge. Some
agents will be trusted for all or almost all knowledge (e.g., your user)
and others only for certain domains (e.g., trust a sensor as an accurate
source of information about the data it senses).
- detecting inconsistencies. Reject (or at least mark) clauses which are
inconsistent with what you now already. (Not easy to recognize this, tho).
- truth maintenance. remember where you heard what. This will allow you to
remove knowledge from a source you decide is unreliable and other
deductions which depend on them. (Requires a lot of overhead)
- Use robust reasoning techniques. This allows you to continue to
function if and when you do have inconsistent knowledge. Robust techniques
include reasoning with uncertainty, ATMS, etc.
- segregate untested knowledge.
- try to verify learned knowledge. Check with other agents, especially
experts.
More pragmatically
Limit the kinds of conclusions that a new rule can draw and the sub-goals
it can post. This is similar to limiting the commands that an imported
program can call (e.g., can't make certain system calls).
Use a robust reasoner so that you can avoid infinite loops. (like the
old SciFi trick of getting the robot to consider a paradox and thus become
paralyzed or burn out).
Acknowledgments
For more information, contact Tim Finin, Computer Science and Electrical
Engineering, University of Maryland Baltimore County, 1000 Hilltop Circle,
Baltimore MD 21250. finin@umbc.edu. 410-455-3522. http://umbc.edu/~finin/.