Actions can be divided into two types: automatic and voluntary, where the former is always triggered directly by the same goal, and the latter can be used for various goals by the choice of the system. In NARS, automatic actions are represented in a meta-language of the system, that is, the computer programming language used to implement the system (currently, Java), including the routines for inference rules, resource management, system interface, etc; voluntary actions are represented in the object language (Narsese), as a special type of goal that can be directly achieved by the system (see Section 3.3). Since autonomic actions are not controlled by the reasoning process, the discussion will focus on voluntary actions, which are taken according to the system's explicit decisions.
Just like all terms in Narsese can be divided into simple and compound, we will call the simple actions "operations", and compound actions "skills".
An operation is the smallest unit of action that can be expressed in Narsese. When the system decides to execute an operation, it corresponds to a call to a meta-language implementing its procedural meaning (such as calling a program or sending a command to a hardware device), where the implementation details are inaccessible to NARS. Its declarative meaning to the system is specified as its relations with other terms (just like how the meaning of a term is defined in NARS in general), especially its preconditions and consequences, represented by implication relations between the operations and other statements. What operations an NARS has is determined by its body, that is, the hosting hardware. The design of NARS, as described in the previous chapter, put little restriction on what kind of operation the system can accept. When NARS is implemented in a concrete hardware/software host system, part of the application programming interface (API) of the host can be used as NARS operations, by listing them in an operation table of NARS, in the required format of NARS operations.
A skill in NARS is a compound action, recursively built by the operations. NARS allows operations to be executed in sequence or in parallel. Also, conditional operations provide ways to do "branch" and "loop". If we take "operations" as instructions in a computer system, then "skills" are like programs composed from these instructions, and Narsese can be seen as a very simple programming language. In this sense, all possible actions of the system correspond to all possible skills formed by the operations, which can be called the potential capability of the whole system (NARS plus the host). Clearly, different body will lead to different capability, even when the mind (NARS) remains the same.
This is the position accepted in the design of NARS. According to this position, "action" covers all kinds of system-environment interactions, and "sensation and perception" is just a special case of action where the result of the action is mainly represented by the new judgments formed in the system, as relations among terms, including the terms directly associated to the system's sensors and actuators. Like other actions, what sensation a NARS implementation can have depends on its body (hosting system), and independent of the design of NARS. It means NARS can hook up any sensor, as far as the commands of the sensor are represented as Narsese operations, and the obtained messages are represented as Narsese judgments.
Perception, on the other hand, can either happen in the body (so the input judgments correspond to high-level descriptions of the environment) or in NARS (where the "raw data" are summarized, recognized, and organized into high-level descriptions of the environment). In NARS, "perception" and "categorization" are basically treated as the same process, and the difference is only that in the former the terms have closer relations with the system's operations, while in the latter the terms have closer relations with linguistic labels. This topic will be revisited later.
For a system with sufficient knowledge and resources, building compound actions does not increase the system's capability, which in principle only depends on the set of operations. However, in an intelligent system, where the knowledge and resources are insufficient, the system cannot afford the resources to achieving goals by thinking at the level of individual operations. Skills allow the system to do "modular programming", by creating "programs" from operations hierarchically, where each skill consists of a few actions, and the skill as a whole carries out a certain function that often appear as goals. For this reason, skill acquisition is a major way to improve the system's actual capability, that is, the goals the system can achieve under realistic resources restriction.
How the problem becomes to decide which compound action should be considered as a skill. After all, when the operation set is large enough, most random combinations of operations will not carry out useful and efficient functions. With insufficient resources, NARS cannot exhaustively evaluate each combination, nor can it try some random ones, because some failures may cost the system too much. Like how other compound terms are learned in NARS, the composition of compound action is goal-oriented, rule-based, and experience-driven. First, each action (operation or skill) has some of its preconditions and consequences represented by beliefs. When the system is looking for a way to achieve a goal, backward inference will identify some actions that can produce the desired consequences, then the preconditions of these actions become derived goals to be achieved. From the activated actions, the system can form some compound actions, using the term composition rules (mentioned in Section 3.4), together with derived beliefs on their overall precondition and consequences. Since the system has insufficient knowledge about each action, plus the property of a skill cannot be fully reduced to that of its components, the system's beliefs on a recently composed action sequence are tentative. Even so, they are more reliable than random guesses. After the system actually apply such a skill, the actual feedback will be collected. If it indeed achieves the expected effect, the concept corresponding to the compound action will be rewarded, and therefore becomes more accessible in the memory.
As the situation in the human mind, whether a action sequence is a useful skill is usually not something that can be decided after a single goal-achieving process. Instead, evidence for or against it is gradually collected, and the useful compound actions eventually become stable enough to be treated as a whole. To use such a skill to satisfy a goal, the system does not need to decide what to do, step by step, and therefore greatly improves the efficiency of the process. Like other concepts, a less used skill will be gradually forgot.
The skill acquisition problem in NARS is similar to the planning problem as traditionally defined in AI, in that both are about how to use an operation sequence to solve a complex problem. The difference is that in NARS skill acquisition is carried out by a group of inference rules, and the overall process does not follow a predetermined algorithm. Furthermore, NARS rarely attempts to directly get a complicated plan or skill directly from the operations. Instead, such a skill will be built hierarchically, and in each intermediate structure only a few actions are involved. The actions serve as intermediate structures usually already exist in the system, so each time a new skill is formed, the complexity of the process is relatively low.
It is no longer the case when the system is given some tools to use. In a general sense, a "tool" can be any part of the environment that the system can interact with. With it, the same action of the system (such as pushing a button) can produce very different consequences (depending on where the button is). Conceptually, we can consider a tool as a temporary part of the system's body, and tool-using as a way for an intelligent system to extend its basic operation set, since "a system with a tool" may be able to do things that is impossible for the same system without the tool. Since the type of possible tool is unlimited, an intelligent system with a limited operation set can still have infinite potential in its capability.
Like other actions, tool using skills are acquired by the system from its experience, rather than built into the system.
This understanding about tool has important implication in the design of AI systems. NARS is designed to only have the capability required for intelligence, and it has little built-in capability for practical application. When the system is applied to a practical domain, it needs to learn not only domain-specific knowledge, but also domain-specific skills. Some of the knowledge and skill can be embedded in special-purpose hardware or software, which can be used as tools by NARS as soon they can be invoked from the system, with observable feedback. In this way, NARS is "general-purpose" in the sense of its learning potential, not that it is designed to be able to solve all problems. In the future, NARS should be able to be "plugged" into various host systems, such as being used as the mind of a robot or an intelligent operating system that flexibly call proper software for unanticipated problems. From both theoretical and engineering points of view, such an "intelligent core plus optional tools" design is better than a "special-purpose modules integrated" design, which attempts to build a general-purpose system by using the existing AI techniques together.
To some people, this is a serious drawback, because, to them, the strongest form of learning is achieved by a system that can "modify its own source code".
There are several problems in this opinion.
First, if we agree that learning means experience-driven behavior change, then whether to achieve the change by modifying data or by modifying program is usually a technical design. As soon as the space of all possible behaviors are determined, normally all desired behavior changes can be achieved by data modification.
It is true that program modifications usually cause more radical changes in a system's behavior than data modifications. However, radical changes are not always designed within an intelligent system. There are some programming languages (such as Lisp and Prolog) in which "program" and "data" have little syntactic difference. In a system coded in such a programming language, what is hard is not to let the system to modify its own source code, but to do it right, because a mistake in source code is much more danguous than a mistake in data.
Some people explicitly or implicitly assume that when a system can "reprogram itself", it will have unlimited potential. This is a misunderstanding. As far as the reprograming is not done randomly (which will have a high chance to kill the system), it must follow clearly and carefully specified rules — to modify meta-knowledge, we need meta-meta-knowledge! No matter how many levels are introduced in the language hierarchy, the top-level needs to be fixed, for experience-driven modification to happen. There is no such a thing as "complete itself recoding" that allows the system to change itself without any restrictions in all levels.
Given the flexibility of human intelligence, we cannot change everything about our mind. Usually, what get changed is the content of thought (object-level), rather than the law of thought (meta-level). We cannot increase our own speed of thinking, nor force ourselves to forget an unpleasant memory (though there are some tricks we can play to make it more likely to happen).
Using the distinction introduced at the beginning of this section, it is possible to turn certain automatic actions into voluntary actions, so it can be deliberately controlled by the system itself. For example, biofeedback technique allows a person to control his or her physiological activities in a certain range. However, it is not always a good thing to do for the system, and no system can turn all of its automatic actions into voluntary actions.
Because of these considerations, in the current design of NARS learning, or self-organization, only occurs at the object-language level, not at the meta-language level. This technical restriction should not limit the capability the system can have when solving practical problems. In the future, meta-level adaptation may happen to NARS as a form of evolution, but that will be a different topic from intelligence. [Special Topic: Intelligence and Evolution]