Skip to content
Tony Lofthouse edited this page Feb 21, 2020 · 58 revisions

Welcome to the OpenNARS-for-Applications wiki!

The following diagram shows the high level architecture of the reasoner with the input sequencing and the two inference cycles; Sensorimotor and Semantic:

image

The Data dependencies between data types is shown in the following diagram:

image

Sensory Channels:

The reasoner allows for sensory input from multiple modalities. Each sensory channel essentially converts sensory signals to Narsese. Dependent on the nature of the modality, its internals may vary. As an example for application purposes, a Vision Channel could consist of a Multi-Class Multi-Object Tracker for the detection and tracking of instances and their type, and an encoder which converts the output into: The instances which were detected in the current moment, their type, visual properties, and spatial relationships among the instances.

FIFO Sequencer:

The Sequencer is responsible for multi-modal integration. It creates Spatial-Temporal patterns (compound events) from the events generated by the sensory channels. It achieves this by building both sequences and parallel conjunctions, dependent on their temporal distance.

Cycling Events queue:

This is the global attention buffer of the reasoner. It maintains a fixed capacity: items are ranked according to priority, and when a new item enters, the lowest priority item is evicted. For selection, the highest-priority items are retrieved, both for semantic inference and sensorimotor inference, the retrieved items, and the inference results then go back into the cycling events queue after having passed through concept memory. Here, the item's priority decays on usage, but also decays in the queue, both decays are system parameters.

Sensorimotor Inference:

This component is responsible for temporal and procedural reasoning, it uses NAL 6-8

  • Formation and strenghtening of implication links between concepts, driven both by input sequences and derived events.
  • Prediction of new events based on input and derived events, via implication links.
  • Efficient subgoaling via implication links.
  • Execution of decisions when a subgoal exceeds decision threshold.

Semantic Inference:

All declarative reasoning NAL1-6 happens here.

As Inheritance can be seen as a way to describe objects in a universe of discouse, the related inference helps the reasoner to categorize events, and to refine these categorizations with further experience. Ultimately this allows the reasoner to learn and use arbitrary relations, to interpret situations in richer ways and find crucial commonalities and differences between all sorts of things. Also, due to the descriptive power of NAL and its experience-grounded semantics, semi-natural communication with the reasoner becomes possible, and high-level knowledge can directly be communicated. This is the case even when the meaning of some terms is not yet clear and needs to be enriched to become more useful.

Concept Memory:

The concept store of the system. Similar to the cycling events queue, it maintains a fixed capacity: but instead of being ranked by priority, items are ranked according to usefulness, and when a new item enters, the lowest useful item is evicted. Usefulness takes both the usage count and last usage time into account, to capture the long term quality of the item, but to give new items a chance as well. All events from the cycling events queue, both input and derived, that weren't evicted from the queue, arrive at this block. This block creates a concept node for each Inheritance statement, or activates it with the event priority if it already exists. It also performs revision of knowledge in the individual statement's concept. Additionally, it holds the implications which were formed by the sensorimotor component, which manifest as implication links between concepts. The activation of concepts allows the reasoner's inference to be contextual: only the beliefs of the highest priority concepts, which share a common term with the event selected from the event queue, or are temporally related through an implication link, will be retrieved for inference. The inference results produced (either semantic or sensorimotor inference), will be assigned a priority which takes the following into account:

  1. Belief concept priority (context)
  2. Truth of the conclusion (truth)
  3. Priority of the event which triggered the inference (Priority_child < Priority_parent)
  4. Complexity of the result
Clone this wiki locally