Q. Why do you call NeurOS an “operating system”?
Wikipedia® defines an operating system as “… software that manages computer hardware and software resources and provides common services for computer programs.” The “computer programs” in this case are neural graphs specifying the flow of neural activity signals among computational components. NeurOS provides such programs with portable, scalable, distributable interfaces, and manages underlying computer operating system (and in some cases, hardware) facilities to achieve correct operation of such programs. More broadly, as in the Windows®, UNIX®, Linux® and OS X® operating systems, NeurOS includes development and deployment tools and extensive libraries of functions and reusable modules (NeuroBlocks).
Q. Isn’t NeurOS yet another neural network technology?
No. Neural networks are typically highly connected graphs of low-level neuron-like components. Learning adjusts connection weights using extensive input examples with expected outputs. Despite superficial similarities (box-and-line graphs, name), NeurOS neural graphs are quite different. Each box is a functional module and each link carries multiple signals from one module to another. The functions inside each module can be implemented in any appropriate technology, including neural networks. Flexible multi-layer neural network architectures can be built as NeurOS neural graphs linking successive memory modules, each acting as a neural network layer.
Q. Is NeurOS a neural simulation?
Yes and no. Neural simulators directly model biological synapses, dendrites, axons, neurons and neuron firing. NeurOS operates at an abstract functional level above that, modeling the functions (but not the biology) of neuron clusters, groups, assemblies or layers, and so might be called a “neural function emulator”. No explicit neuron models are required, although a NeurOS module can use neuron-synapse models internally.
Q. Can I integrate NeurOS with X?
Yes. NeurOS is explicitly architected to be open. It includes extensive mechanisms for integrating, extending and embedding. See integrations.
Q. Isn’t NeurOS just another programming language?
NeurOS is to programming languages as digital circuit design is to transistors. NeuroBlock modules are like LSI circuits: they do lots of work internally behind simple external interfaces. Configuring NeuroBlocks into neural graphs allows a designer to focus on overall system organization and flow, abstracting away fine details.
Q. How is NeurOS different from other cognitive architectures?
NeurOS is a non-von Neumann, non-procedural parallel data-flow graph architecture that resembles biological brain organization and flow. It directly supports the notion that cognitive function emerges from the connection and interaction among functional components. It allows free composition of components into arbitrary cognitive systems, whether closely modeling biological cognition or not. It does not embody any essential sense-process-act or similar cycles, but such are easily built as neural graphs. Versions of some other cognitive architectures can conceivably be built using NeurOS.
Q. How are NeurOS applications built?
The Basic NeurOS application development demo illustrates the process for simple word and melody recognition.
Briefly, NeurOS applications are built interactively and iteratively in the NeurOS visual IDE by dragging and dropping icons for modules onto a canvas and “wiring” them together into directed flow graphs with loops allowed. The modules each perform distinct input/sensing, processing, memory and output/action functions. What flows over links are events each representing a value of a distinct neural signal (analogy to a biological neuron spiking rate) at a particular time. Multiple such signals are commingled on a single link.
Typical building starts with an input module encoding some external (i.e., sensor) input(s) as “features”. Could be files, streams or easily encapsulated external libraries. These feature signals are typically linked to one or more memory modules, which both continuously learn and recognize concurrent, sequential and/or temporal feature patterns. These modules output signals representing learned/recognized patterns. These can then be recombined through additional layers of memory modules to learn heterarchies of patterns (of patterns of patterns…) A Reify module inverts a memory pattern, generating all its component features. This is often useful to generate low-level actions from higher-level behavioral sequences. Finally outputs typically feed various display modules for development and visualization purposes, and application-specific output/action modules.
The process is usually iterative and incremental, getting basic machinery working and then incrementally adding additional paths, memory functions, etc.
Q. How are NeurOS applications trained?
NeurOS memory modules are trained incrementally and continuously by experience. Unlike conventional machine learning technologies, no batch training with large data sets is required. A NeurOS memory pattern is similar to a cluster in unsupervised learning. If current input signal values do not match any known patterns well enough, a new pattern is created. If the feature combination matches one or more known patterns well enough, a memory pattern module emits match signals with values proportional to matching scores. And, feature-specific parameters (weights, expected values, expected times, spreads) of the best-matching pattern(s) are adjusted according to a learning rate. Design-time parameters control cluster breadth, providing a range of patterns from very narrow exemplars to broader stereotypes, enabling flexible natural memory heterarchies.
As in childhood learning, patterns for low-level experience regularities are learned with early experience and stabilize first. These patterns then become the experience inputs for successively higher-level pattern learning and recognition. The Word and phrase recognition demo and the Classification: Exemplars and Stereotypes demo illustrate these dynamics.
Q. Can NeurOS be integrated and customized?
Yes, in several ways. NeurOS is architected from the ground up to simplify and encourage integration with external technologies and be embeddable in other systems. External library functions can be directly accessed from NeurOS built-in processing modules. Built-in modules allow reading and writing of data in files, streams and databases in a variety of formats. External applications can be “wrapped” in NeurOS modules via a variety of standard interfaces (e.g., pipes, streams, services). Custom modules are easily built by inserting code into standard module templates.