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/.