Knowledge Engineering is the process of designing, developing and building intelligent knowledge-based systems. This kind of systems is usually required to increase the effectiveness of our managing or control actions when we are coping with complex scenarios.
Complex systems have two main characteristics. They have got a huge number of parts and possible states, and the evolution from a state to a different one is a process under uncertainty. Complex systems are not deterministic, and even they cannot be modelled through the laws of probability. Uncertainty is different to probability.
A system under risk is a system with several known possible states where we can assign a probability both for the desired ones and for the undesired ones. A system under uncertainty is a system with several known (or unknown) possible states where we cannot assign a probability for them. Events that can move the system from a desired state to an undesired one can arise unexpectedly at any time.
Simple scenarios are easy to be modelled, and then can be usually controlled through linear controllers. A mathematical model of the system can fit their behavior enough and a mathematical model of a controller can be developed to preserve the system under control avoiding or reducing the risk of going out the desired states. The result is a new system where complexity has been reduced because the number of more probable states of the controlled system is much lower than in the system without the control device.
When we cannot build a model that fits well the behavior of a certain system, we cannot design a linear controller to preserve it under control in an effective way. In those situations, new techniques are required to preserve the system under control.
A control system is effective when it can anticipate the behavior of the system. Then, a control system is always based on knowledge about the system. Intelligent systems are systems that make decisions from information gathered at the system only instead of a model of it. Most of the decisions made by humans are not made following a mental model of reality. The difference between an intelligent agent and a classic controller is that the intelligent agent adapts itself to the new information gathered instead of feeding a static model of the reality with the new data.
The higher the capability to adopt new knowledge about its environment is, the higher the intelligence of the agent is.
A control agent is a new part of the system that obviously is increasing the dimension of the state space and the number of possible states, however, the links to the system for gathering inputs and providing outputs with the control algorithms increase the probability of preserving the system in the desired states and decreasing the probability of putting the system at the undesired ones. This is the way as a control agent reduces complexity, but it only is done if the controller acts in an effective way, in other case, the complexity of the system is increased.
Intelligent agents are much more complex than linear controllers, then, it is easy to understand than an intelligent agent that does not work in an effective way can turn the system into a hugely more complex one increasing the probability of an unexpected event puts the system in an undesired state as the number of undesired states is much higher then.
Machine learning, data mining and artificial intelligence have been developed to get useful information to manage complex systems and take control actions to improve the performance of those systems; however, these techniques must be used thinking in its own complexity too.
Here is where knowledge engineering provides value. Artificial intelligence techniques are not generic techniques that we can add to a system in order to increase their performance always in an easy way. Artificial intelligent agents must be designed specifically for every system taking the effects of their complexity into account.