In order to define the characteristics of an agent further and to distinguish them from any other type of program, the following list ennumerates the attributes and features required of them:
Autonomy. Being able to carry out tasks independently is the most important feature of an agent; this differentiates an agent from any other computing technique or program. Traditional computer applications only respond to direct manipulation via user instructions. On the other hand, intelligent agents can perform actions without human intervention. An agent principally operates without direct intervention, typically in the background, to the extent of the user's specified delegation. The autonomous ability of an agent can range from being able to initiate a lookup in a database to issuing alerts or collecting and assembling a file from multiple networked sources. The search agent will take the input and perform the search independently without user intervention. With the widespread use of the Internet, intranets, and other electronic and wireless networks, stationary and mobile agents can be used for investigative data mining applications for detection and deterrence. Stationary agents can send scripts and receive data via networks, but cannot themselves move. While all agents are not mobile, there have been significant trends toward developing nimble and mobile agents. Mobile agents have the capacity to navigate through networked architectures in the performance of their tasks and to report their findings to various wireless devices or appliances.
Perception. The agent needs to be able to affect its environment via some type of programmed mechanism for autonomous operation. It needs to be able to monitor its environment in order to be able to perform its task independently. An agent must be able to perceive events in the environment and react to them as necessary in an appropriate fashion. Agents almost never operate in isolation. They work within a system or in a network. Its environment includes other agents, systems, human users, and, in certain cases, external objects, such as sensory devices on factory floors or robots. An agent receives inputs or requests from its environment and sends information back to it. For example, an agent can be programmed to monitor a network system for erratic behavior, signaling a hacker attack. This is a common function of some intrusion detection systems (IDSs) the topic of Chapter 10. An agent with special sensors may also monitor an environment for anthrax or other type of virus attacks, coordinating data from various inputs and issuing alerts to designated personnel, which, as we will soon see, is a system envisioned by DARPA for countering bio-terrorist attacks.
Purpose. Agents perform a set of tasks on behalf of a user or other agents that are explicitly approved and programmed by users or organizations. Agents essentially need to be their own bosses and have clearly defined goals that they seek to accomplish. Being goal-driven also entails that an agent be proactive rather than just reactive to an environment. Some of the most sophisticated agents can learn as they perform their tasks, with new dynamic rules of behavior evolving as they learn user preferences and users' needs for specific types of information or actions. For investigative data miners, this means agents can be used for the retrieval of specific suspect- or case-related information at predefined intervals and ranges.
Communications. An agent needs to be able to interact with the user, receive task delegation instructions, and inform the user regarding task status and completion through an agent-user interface or through an agent communication language. Agents need to be able to communicate with other agents and humans. Agent and human communication can be via terminal input, such as keyboards, or more sophisticated technologies, such as natural language processing and speech recognition. Multiagent communication can take place using standard or defined protocols. Agents allow for scalability, permit software reuse, and can handle software evolution and promote open systems. For an agent to work in this environment, it should be able to cooperate with its peers and also coordinate efforts. Agents operate continuously; upon achievement of their goals they continue to run in the background and monitor the environment. In this context an agent-based application is not supposed to terminate.
Intelligence. Lastly, an agent needs to be able to interpret monitored events to make appropriate decisions for autonomous operation. Agents need to possess a certain degree of intelligence in order to perceive the working environment and be autonomous when performing their programmed tasks. The level of intelligence exhibited by an agent will depend on its function. The dimension of intelligence equates to the degree to which the agent employs reasoning, learning, and other techniques to interpret the data to which it has access. The intelligence of agents equates to the degree to which they are able to perceive their environment and change it dynamically. Some agents can incorporate expert systems with predefined rules; however, dynamic rules generated from machine learning can make them even more intelligent by instilling them with the ability to learn and evolve. For this reason, the intelligence of an agent—that is, the rules that it follows to complete its designated tasks—can evolve either from the developer or independently from its environment and built-in algorithms.