A knowledge-based system (KBS) is a computer program that reasons and uses a knowledge base to solve complex problems. The term is broad and is used to refer to many different kinds of systems; the one common theme that unites all knowledge based systems is an attempt to represent knowledge explicitly via tools such as ontologies and rules rather than implicitly via code the way a conventional computer program does. A knowledge based system has two types of sub-systems: a knowledge base and an inference engine. The knowledge base represents facts about the world, often in some form of subsumption ontology. The inference engine represents logical assertions and conditions about the world, usually represented via IF-THEN rules.
Knowledge-based systems were first developed by artificial intelligence researchers. These early knowledge-based systems were primarily expert systems – in fact, the term is often used synonymously with expert systems. The difference is in the view taken to describe the system: "expert system" refers to the type of task the system is trying to assist with – to replace or aid a human expert in a complex task; "knowledge-based system" refers to the architecture of the system – that it represents knowledge explicitly (rather than as procedural code). While the earliest knowledge-based systems were almost all expert systems, the same tools and architectures can and have since been used for a whole host of other types of systems – i.e., virtually all expert systems are knowledge-based systems, but many knowledge-based systems are not expert systems.
The first knowledge-based systems were rule based expert systems. One of the most famous was Mycin a program for medical diagnosis. These early expert systems represented facts about the world as simple assertions in a flat database and used rules to reason about and as a result add to these assertions. Representing knowledge explicitly via rules had several advantages:
- Acquisition and maintenance. Using rules meant that domain experts could often define and maintain the rules themselves rather than via a programmer.
- Explanation. Representing knowledge explicitly allowed systems to reason about how they came to a conclusion and use this information to explain results to users. For example, to follow the chain of inferences that led to a diagnosis and use these facts to explain the diagnosis.
- Reasoning. Decoupling the knowledge from the processing of that knowledge enabled general purpose inference engines to be developed. These systems could develop conclusions that followed from a data set that the initial developers may not have even been aware of.
As knowledge-based systems became more complex the techniques used to represent the knowledge base became more sophisticated. Rather than representing facts as assertions about data, the knowledge-base became more structured, representing information using similar techniques to object-oriented programming such as hierarchies of classes and subclasses, relations between classes, and behavior of objects. As the knowledge base became more structured reasoning could occur both by independent rules and by interactions within the knowledge base itself. For example, procedures stored as demons on objects could fire and could replicate the chaining behavior of rules.
Another advancement was the development of special purpose automated reasoning systems called classifiers. Rather than statically declare the subsumption relations in a knowledge-base a classifier allows the developer to simply declare facts about the world and let the classifier deduce the relations. In this way a classifier also can play the role of an inference engine.
The most recent advancement of knowledge-based systems has been to adopt the technologies for the development of systems that use the internet. The internet often has to deal with complex, unstructured data that can't be relied on to fit a specific data model. The technology of knowledge-based systems and especially the ability to classify objects on demand is ideal for such systems. The model for these kinds of knowledge-based Internet systems is known as the Semantic Web. The term is broad, and is used to refer to many kinds of systems; examples include IBM's Watson and the Wolfram Language.
Eliciting and Integrating knowledge with data
When developing knowledge-based systems it is common to integrate knowledge with data. Constantinou et al. proposed a method for eliciting and incorporating expert knowledge in data-driven Bayesian Networks (BNs). The method addresses the problem whereby the distribution of some variable in a BN is known from data, but where we wish to explicitly model the impact of some additional knowledge-based variables for which there is knowledge but no data. The method ensures that the expected value of a data-driven variable is preserved when a knowledge-based variable is incorporated as a cause (i.e. ancestor/parent) of the data-driven variable, as long as the knowledge-based variable remains unobserved. This is because the statistical outcomes of a data-driven variable are already influenced by the causes an expert might identify as variables missing form the dataset.
- Smith, Reid (May 8, 1985). "Knowledge-Based Systems Concepts, Techniques, Examples" (PDF). http://www.reidgsmith.com. Schlumberger-Doll Research. Retrieved 9 November 2013. External link in
- Hayes-Roth, Frederick; Donald Waterman; Douglas Lenat (1983). Building Expert Systems. Addison-Wesley. ISBN 0-201-10686-8.
- Mettrey, William (1987). "An Assessment of Tools for Building Large Knowledge- BasedSystems". AI Magazine. 8 (4).
- MacGregor, Robert (June 1991). "Using a description classifier to enhance knowledge representation". IEEE Expert. 6 (3): 41–46. doi:10.1109/64.87683. Retrieved 10 November 2013.
- Berners-Lee, Tim; James Hendler; Ora Lassila (May 17, 2001). "The Semantic Web A new form of Web content that is meaningful to computers will unleash a revolution of new possibilities". Scientific American. 284: 34–43. doi:10.1038/scientificamerican0501-34.
- "What is IBM Watson?". www.ibm.com. Retrieved 2016-07-12.
- "Wolfram Language for Knowledge-Based Programming". www.wolfram.com. Retrieved 2016-07-12.
- Constantinou, Anthony; Fenton, Norman; Neil, Martin (2016). "Integrating Expert Knowledge with Data in Bayesian Networks: Preserving Data-Driven Expectations when the Expert Variables Remain Unobserved". Expert Systems with Applications. 56: 197–208.