Lecture
"A prudent person adjusts himself to the world around him, while a reckless person stubbornly adjusts this world to himself. So all progress relies on people who are reckless."
Bernard show.
The paradoxical statement of Bernard Shaw is directly related to the text of the article. In fact, why is man so eager to enslave himself with machines? How big is their power over people? Is it possible that the whole progress of mankind consists only in building a world in which man himself will become a link redundant, and then will inevitably disappear?
In this article I would like to touch on some of the latest scientific work in the field of artificial life and artificial intelligence.
Artificial intelligence in general and expert systems in particular have come a long and thorny path: first hobbies (1960), pseudoscience (1960-65), success in solving puzzles and games (1965-1975), disappointment in solving practical problems (1970- 1985) , first successes in solving a number of practical problems (1962-1992), mass commercial use in solving practical problems (1993-1995). But the basis of commercial success is rightly constituted by expert systems and, above all, real-time expert systems. It was they who allowed artificial intelligence to move from games and puzzles to mass use in solving practically significant problems.
Software based on technology and methods of artificial intelligence, have received considerable distribution in the world. Their importance, and, first of all, expert systems and neural networks, is that these technologies significantly expand the range of practically significant tasks that can be solved on computers, and their solution brings a significant economic effect. At the same time, the technology of expert systems is the most important tool in solving global problems of traditional programming: the duration and, therefore, the high cost of developing applications; the high cost of maintaining complex systems; reusability of programs, etc. In addition, the integration of expert systems technology and neural networks with traditional programming technology adds new qualities to commercial products by providing dynamic modification of applications by the user, rather than the programmer, greater “transparency” of the application (for example, knowledge is stored in a limited natural language that does not require comments to them, simplifies training and maintenance), the best graphics tools, user interface and interaction. According to experts [1], in the near future, expert systems will play a leading role in all phases of design, development, production, distribution, sales, support and provision of services. Their technology, having received commercial distribution, will provide a revolutionary breakthrough in the integration of applications from ready-to-intellectually interacting modules. The commercial market of artificial intelligence products in the world in 1993 was estimated at about $0.9 billion; of these, 600 million are accounted for by the United States [2]. There are several main directions of this market: 1) expert systems; now they are often denoted by another term - "knowledge-based systems"; 2) neural networks and "fuzzy" logic; 3) natural language systems. In the USA in 1993, the market was divided between these areas as follows [2] : expert systems - 62%, neural networks - 26%, natural language systems - 12%. This market can be divided in another way: into artificial intelligence systems (applications) and tools designed to automate all phases of an application's existence. In 1993, in the total volume of the US market, the share of applications was about two, and the share of tools was about one third [2].
One of the most popular areas of the last five years is related to the concept of autonomous agents. They should not be considered as "subprograms" - this is rather a servant, even a companion, since one of their most important distinguishing features is autonomy, independence from the user. The idea of agents is based on the concept of delegating their functions. In other words, the user must trust the agent to perform a specific task or class of tasks. There is always a risk that the agent may confuse something, do something wrong. Therefore, trust and risk must be balanced. Autonomous agents can significantly improve the productivity of work when solving those tasks in which the main burden is placed on the person to coordinate various actions.
In terms of autonomous (intellectual) agents, I would like to mention one very pragmatic project, which is now being conducted under the guidance of Professor Henry Lieberman in the MIT Media Lab (MIT Media Lab). We are talking about agents responsible for the automatic generation of technical documentation. Academician Andrei Petrovich Ershov did a lot to solve this problem. He formulated the concept of business prose as a clearly defined subset of natural language that can be used, in particular, for the synthesis of technical documentation (this is one of the bottlenecks in any industry). A group led by Professor Lieberman is exploring the possibilities of a new approach to solving this problem, now on the basis of autonomous agents.
The next direction in the field of artificial life - genetic programming (genetic programming) - is an attempt to use the metaphor of genetic engineering to describe various algorithms. The strings of the artificial "genetic" system are similar to the chromosomes in biological systems. The complete rowset is called a structure. Structures are decoded into a set of parameters, decision alternatives, or a point in the solution space. Strings consist of characteristics, or detectors, which can take on different values. Detectors can be placed at different positions in a row. All this is done by analogy with the real world. In natural systems, the complete genetic packet is called a genotype. The organism, which is formed by the interaction of the genotype with the environment, is called the phenotype. Chromosomes are made up of genes that can have different meanings. (For example, the color gene for an animal's eye may be green and position 10).
In genetic algorithms, fixed-length strings play the role of basic building blocks, whereas in genetic programming these strings unfold into trees, so familiar to translation specialists. For example, the expression a + b * c looks like this:
Now one of the leaders in the field of genetic programming is a group of researchers from Stanford University (Stanford University), working under the guidance of Professor John Koz. Genetic programming has breathed new life into the already forgotten LISP (List Processing) language, which was created by the John McCarthy group (the one who in the 60s introduced the term "artificial intelligence" into our everyday life) just for list processing and functional programming. By the way, this language in the USA was and remains one of the most common programming languages for artificial intelligence tasks.
The use of expert systems and neural networks brings significant economic benefits. So, for example: - American Express [1] reduced its losses by $27 million a year thanks to an expert system that determines the expediency of issuing or denying a loan to a company; - DEC saves [1] $70 million a year each year XCON / XSEL system, which, upon the customer's request, makes the configuration of the VAX computing system. its use reduced the number of errors from 30% to 1%; - Sira reduced the cost of building a pipeline in Australia by $40 million [3] at the expense of a pipeline expert system, implemented on the basis of the G2 system described below. Commercial success to the expert systems and neural networks did not come immediately. For a number of years (since the 1960s), successes have mainly focused on research developments that demonstrate the suitability of artificial intelligence systems for practical use. Starting from about 1985 (and on a massive scale, probably from 19.8-8-1990), first of all, expert systems, and in the past two years, neural networks have been actively used in real-world applications. The reasons that led artificial intelligence systems to commercial success are as follows: 1. Specialization. The transition from the development of general-purpose tools to problem / subject-specific tools [4], which reduces the development time of applications, increases the efficiency of using tools, simplifies and speeds up the work of an expert, allows you to reuse information and software (objects, classes, rules, procedures). 2. Using traditional programming languages and workstations. The transition from systems based on artificial intelligence languages (Lisp, Prolog, etc.) to traditional programming languages (C, C++, etc.) simplified "integration" and reduced the application requirements for speed and memory capacity. Using workstations instead of PCs dramatically increased the range of possible applications of artificial intelligence methods. 3.Integrity. Artificial intelligence tools have been developed that easily integrate with other information technologies and tools (with CASE, DBMS, controllers, data concentrators, etc.). 4. Openness and portability. Developments are conducted in compliance with the standards that ensure these characteristics [5]. 5. Client/server architecture. The development of a distributed information system in this architecture allows reducing the cost of equipment used in the application, decentralizing applications, improving reliability and overall performance, since the amount of information sent between computers is reduced, and each application module is performed with adequate equipment . The listed reasons can be considered as general requirements for tools for creating artificial intelligence systems. Of the five factors that ensured their success in advanced countries, in Russia, perhaps, four and a half are not fully implemented (in some domestic systems, the transition to traditional programming languages has been implemented, but As a rule, they are oriented on MS- DOS , not on UNIX or Windows NT OS. precedents, arguments based on restrictions) can not be expected and the appearance of commercial products.
So, in the field of artificial intelligence, expert systems and tools for their development have achieved the greatest commercial success. In turn, in this direction, problem-specific subject-specific means have achieved the greatest success. If in 1988 the income from them was only 3 million dollars, then in 1993 - 55 million dollars.
Among specialized knowledge-based systems, real-time expert systems, or dynamic expert systems, are the most significant. They account for 70 percent of this market. The significance of real-time tools is determined not so much by their rapid commercial success (although this is worthy of careful analysis), but, first of all, by the fact that only with the help of such tools are strategically significant applications in such areas like the management of continuous production processes in chemistry, pharmacology, cement production, food, etc., aerospace research, transportation and processing of oil and gas, the control of atoms manned and thermal power plants, financial operations, communications and many others. The classes of tasks solved by real-time expert systems are as follows: real-time monitoring, top-level control systems, fault detection systems, diagnostics, scheduling, planning, optimization, systems-Operator advisers, design systems. Static expert systems are not capable of solving such problems, as they do not fulfill the requirements for real-time systems. :one. Provide time-varying data from external sources, provide storage and analysis of changing data. Perform temporal reasoning about several different asynchronous processes at the same time (ie plan to process the incoming processes into the system in accordance with the priorities) .3. Provide a reasoning mechanism with limited resources (time, memory). The implementation of this mechanism places high demands on the speed of the system, the ability to simultaneously solve several tasks (ie, UNIX, VMS, Windows NT operating systems, but not MS-DOS) .4. Provide "predictability" of system behavior, ie guarantee that each task will be started and completed in strict accordance with the time constraints. For example, this requirement does not allow the use of the "garbage collection" mechanism in the real-time expert system inherent in the Lisp language. Simulate the "world around", considered in this application, to ensure the creation of its various states.6. Log their actions and personnel actions, provide recovery after a failure.7. To provide a knowledge base for real-life applications with minimal time and labor costs (it is necessary to use object-oriented technology, general rules, modularity, etc.). 8. Ensure that the system is configured for the tasks to be solved (problem / subject orientation) .9. Provide the creation and support of user interfaces for various categories of users. Provide a level of information protection (by categories of users) and prevent unauthorized access. Let us emphasize that in addition to these ten requirements, the means for creating real-time expert systems must also satisfy the general requirements listed above.
major manufacturers
A toolkit for creating real-time expert systems was first released by the company Lisp Machine Inc in 1985. This product was intended for Symbolics symbolic computers and was called Picon. Its success led to the fact that the group of its leading developers formed the firm Gensym, which, having significantly developed the ideas embodied in Picon, released in 1988 a tool called G2. Its third version is currently working and the fourth one has been prepared [1.7]. With a lag of two or three years behind Gensym, a number of other companies began to create (or try to create) their own tools. Let us name a number of them: RT Works (Talarian, USA), COMDALE/C (Comdale Techn., Canada), COGSYS (SC, USA), ILOG Rules (ILOG, France). Comparison of the two most advanced systems, G2 and RT Works, which was carried out by developing the same application by two organizations, NASA (USA) and Storm Integration (USA) [10], showed a significant superiority of the first.
Real-Time Expert System Architecture
Specific requirements for an expert real-time system lead to the fact that their architecture differs from the architecture of static systems. Without going into details, we note the emergence of two new subsystems — modeling the external environment and interfacing with the outside world (sensors, controllers, DBMS, etc. ) —and significant changes that the remaining subsystems undergo.
In order to understand what the environment is for creating real-time expert systems, we describe below the life cycle of such a system, as well as its main components. We will describe the real-time expert system shell using the G2 tool as an example, since it fully implements the features that are considered necessary and appropriate in such software products.
The application life cycle in G2 consists of a number of stages.
The developer is usually a specialist in a particular area of expertise. He, in discussions with the end user, determines the functions performed by the prototype. Prototyping does not use traditional programming. Creating a prototype usually takes from one to two weeks (if the developer has experience in creating applications in this environment. A prototype, like an application, is created in a structured natural language, using object graphics, a hierarchy of object classes, rules, dynamic models of the outside world. The verbosity of the language is minimized by introducing the cloning operation, which makes it possible to reproduce any entity of the knowledge base.
The end user proposes the staging of work, the direction of development of the knowledge base, indicates omissions in it. The developer can expand and modify the knowledge base in the presence of the user even while the application is running. In the course of this work, the prototype develops to such a state that it begins to satisfy the end-user experience. In large applications, the development team can split the application into separate modules that are integrated into a single knowledge base.
An alternative approach to creating an application is also possible. With this approach, each developer has access to the knowledge base located on the server using a tool called Telewindows, usually located on the client computer. In this case, developers may have different authorized access levels to the application. The application can be implemented not only on different computers, but also with the use of several interacting G2 shells.
In G2, syntax errors are shown directly when constructs (data structures and executable statements) are entered into the database; these constructs are parsed incrementally. Only constructs that do not contain syntax errors can be entered. Thus, an entire debugging phase of the application (inherent in traditional programming) is eliminated, which speeds up application development.
The developer is also freed from the need to know the detailed syntax of the G2 language, since when entering a certain construction into the knowledge base, he is given a list of all possible syntactically correct continuations as a hint.
To detect errors and uncertainties, the "Inspect" feature is implemented, which allows you to view various aspects of the knowledge base, for example, "show all statements with links to undefined entities (objects, relationships, attributes)", "show graphically the hierarchy of a given class of objects", "show all entities whose Notes attribute value is not OK". (All entities represented in the G2 language have this attribute; its value is either OK when there are no complaints about the entity, or a description of real or potential problems, for example, a reference to a non-existent object, several objects with the same name, etc.)
The block of dynamic modeling allows, during testing, to recreate various situations that are adequate to the outside world. Thus, the application logic will be tested under the conditions for which it was created. The end user can directly participate in testing through color management (i.e. changing color when a given state or condition occurs) and animation (i.e. moving / rotating an entity when a state / condition occurs). Thanks to this, he will be able to understand and evaluate the logic of the application, not by analyzing the rules and procedures, but by considering a graphical representation of the controlled process, technical structure, etc.
To check whether the restrictions are met, the "Meters" feature is used, which calculates statistics on performance and used memory.
The resulting application is fully portable to various platforms in UNIX (SUN, DEC, HP, IBM, etc.), VMS (DEC VAX) and Windows NT (Intel, DEC Alpha) environments. The knowledge base is stored in a regular ASCII file, which is uniquely interpreted on any of the supported platforms. Porting an application does not require recompilation and is simply a matter of moving files. The functionality and appearance of the application do not undergo any changes. The application can work both in a "full" (ie intended for development) environment, and under runtime, which does not allow modifying the knowledge base.
Not only the developer of this application, but also any user can easily understand and maintain it, since all objects / classes, rules, procedures, functions, formulas, models are stored in the knowledge base in the form of a structured natural language and in the form of graphic objects. To view it, use the "Inspect" feature. Maintenance is simplified by the fact that not all information is given to different user groups, but only a part of it that meets their needs.
The real-time expert system consists of a knowledge base, an inference engine, a modeling subsystem, and a scheduler.
knowledge base
All knowledge in G2 is stored in two types of files: knowledge base and knowledge library. Files of the first type contain knowledge about applications: definitions of all objects, objects, rules, procedures, etc. Library files store general knowledge that can be used in more than one application, for example, defining standard objects. Knowledge base files can be converted to knowledge libraries and vice versa.
In order to ensure the reusability of applications, a tool has been implemented that allows combining previously created databases and knowledge libraries with the current application. In this case, conflicts in the combined knowledge are identified and displayed on the display.
Knowledge is structured: a hierarchy of classes, a hierarchy of modules, a hierarchy of workspaces are provided. Each of them can be shown on the display.
Class, the basic concept of object-oriented technology, is the basis of knowledge representation in G2. This approach is the main trend in programming in general, since it reduces redundancy and simplifies the definition of classes (not the entire class is defined, but only its differences from the superclass), allows you to use common rules, procedures, formulas, reduces their number, and is natural for a person. way of describing entities. In this approach, data structures are represented as object classes (or object definitions) that have certain attributes. Classes inherit attributes from superclasses and pass their attributes to subclasses. Each class (excluding the root) can have specific instances of the class.
Everything that is stored in the knowledge base and with which the system operates is an instance of one or another class. Moreover, all G2 syntax constructs are classes. To preserve generality, even the basic data types—the character, numeric, Boolean, and truth values of fuzzy logic—are represented by the corresponding classes. The class description includes a reference to the superclass and contains a list of attributes specific to the class.
To structure the G2 applications, “modules” and “workspaces” are used. Despite the fact that the functions of these structures are similar, there are significant differences between them.
An application can be organized into one or more knowledge bases called modules. In the latter case, the application is said to be represented by a structure (hierarchy) of modules. At the top level, there is one top-level module. Modules of the next level consist of those modules without which the module of the previous level cannot work. Structuring applications allows several groups of developers to develop an application simultaneously, simplifies development, debugging and testing, allows you to change modules independently of each other, and simplifies knowledge reuse.
Workspaces are a container class that hosts other classes and their instances, such as objects, relationships, rules, procedures, and so on. Each module (knowledge base) can contain any number of workspaces. Workspaces form one or more tree hierarchies with an "is-a-part-of" relationship. Each module has one or more top (zero) level workspaces associated with it; each of them is the root of the corresponding hierarchy. In turn, each object (definition of an object or relationship) located in the zero level can be associated with a workspace of the first level, "being part of it", etc.
The difference between "modules" and "workspaces" is as follows. Modules divide an application into separate knowledge bases that are shared across applications. They are useful in the process of developing an application, not its execution. Workspaces, on the other hand, play their role in the execution of an application. They contain various entities and provide a division of the application into small parts that are easier to understand and process.
Workspaces can be set (manually or by an action in a rule/procedure) to an active or inactive state (thus the entities in this space and its subspaces become invisible to the inference engine). This mechanism is used, for example, if there are alternative groups of rules, when only one of them should be active.
In addition, workspaces are used to define user restrictions that define different application behavior for different categories of users.
Entities in the knowledge base, in terms of their use, can be divided into data structures and executable statements. Examples of the former are objects and their classes, connections (connection), relations (relation), variables, parameters, lists, arrays, workspaces. Examples of the latter are rules, procedures, formulas, functions.
Allocate objects (and classes) built into the system and entered by the user. When developing an application, as a rule, subclasses are created that reflect the specifics of this application. Among the built-in object subclasses, the most interesting is the data subclass, which includes subclasses of variables, parameters, lists, and arrays.
A special role is assigned to variables. Unlike static systems, variables are divided into three types: the actual variables, parameters, and simple attributes. Parameters get values as a result of running an output machine or performing some procedure. Variables represent the measured characteristics of real-world objects and therefore have specific features: the lifetime of the values and the source of the data. The lifetime of the value of a variable determines the time interval during which this value is relevant, after the expiration of this interval the variable is considered to have no value.
The basis of the assertions of knowledge bases are rules and procedures. In addition, there are formulas, functions, actions, etc. The rules in G2 have the traditional form: the left part (antecedent) and the right part (the consequent). Besides the if-rules, four more types of rules are used: initially, unconditionally, when and whenever. Each type of rule can be as general, ie related to the whole class, and specific to specific instances of the class.
The ability to represent knowledge in the form of general rules, not only specialized ones, minimizes the redundancy of the knowledge base, simplifies its filling and maintenance, reduces the number of errors, promotes the reuse of knowledge (common rules are stored in the library and can be used in similar applications).
Despite the fact that production rules provide sufficient flexibility to describe the system's reactions to changes in the surrounding world, in some cases when it is necessary to perform a rigid sequence of actions, for example, starting or stopping a complex of equipment, a procedural approach is preferable. The programming language used in G2 to represent procedural knowledge is a fairly close relative of Pascal. In addition to standard control structures, the language is expanded by elements that take into account the operation of the procedure in real time: waiting for the occurrence of events, allowing other tasks to interrupt its execution, directives specifying sequential or parallel execution of statements. Another interesting feature of the language is iterators, allowing you to loop over multiple instances of a class.
Output machine, modeling subsystem and schedulers
The main drawback of direct and reverse output used in static expert systems is the unpredictability of time spent on their execution. From the point of view of dynamic systems, a complete search for possible rules of application is an impermissible luxury. Due to the fact that G2 is focused on real-time applications, the output machine must have the means to reduce brute force, to respond to unexpected events, etc. The G2 output engine is characterized by a rich set of rules for driving rules. There are nine cases:
1. The data included in the antecedent rules have changed (direct output - forwar d chaining).
2. A rule determines the value of a variable that is required by another rule or procedure (the reverse output is backward chaining).
3. Every n seconds, where n is the number defined for this rule (scan - scan).
4. Explicit or implicit excitation by another rule - by applying actions of focus and excitation (focus and invoke).
5. Every time you start the application.
6. The variable entering the antecedent is assigned a value, regardless of whether it has changed or not.
7. A specific object on the screen is moved by the user or another rule.
8. A defined relationship between objects is established or destroyed.
9. The variable did not receive a value as a result of accessing its data source.
If the first two methods are fairly common third is well-known as a mechanism for launching daemons, the rest are a unique feature of the G2 system. Due to the fact that the G2-application manages a set of simultaneously executed tasks, a scheduler is needed. Although the user never interacts with him, the scheduler controls all user-visible activity and background task activity. The scheduler determines the order of processing tasks, interacts with data sources and users, starts processes and communicates with other processes in the network.
The G2 modeling subsystem is a fairly autonomous but important part of the system. At various stages of the life cycle of an application system, it serves the achievement of various goals. During development, the modeling subsystem is used instead of real-world objects to simulate sensor readings. Obviously, debugging on real objects may be too expensive, and sometimes (for example, when developing a nuclear power plant control system) and unsafe.
At the stage of operation of the applied system, the modeling procedures are performed in parallel with the functions of monitoring and process control, which provides the following features:
- verification of sensor readings during the execution of the application;
- substitution of model values of variables when it is impossible to obtain real values (sensor failure or long response time to a query).
As we see, playing the role of an independent knowledge agent, the modeling subsystem increases the viability and reliability of applications. To describe the external world, the modeling subsystem uses three types of equations: algebraic, difference, and differential (first order).
The trends in the development of artificial intelligence considered in the article suggest that one of the main areas in this area is real-time expert systems. The review is based on the example of the G2 real-time expert systems shell, which is a self-contained environment for the development, implementation and maintenance of applications in a wide range of industries. G2 combines the universal technologies of building modern information systems (open systems standards, client / server architecture, object-oriented programming, the use of the OS, which provide parallel real-time execution of many independent processes), and specialized methods (reasoning based on rules , reasoning based on dynamic models, or simulation, procedural reasoning, active object graphics, structured natural tongue to represent the knowledge base), and integrates technology systems, knowledge-based technology with traditional programming (with software packages, DBMS, data controllers and hubs, etc.).
All this allows using this shell to create almost any large applications much faster than using traditional programming methods, and reduce labor costs for maintaining ready-made applications and transferring them to other platforms.
Comments
To leave a comment
Approaches and directions for creating Artificial Intelligence
Terms: Approaches and directions for creating Artificial Intelligence