Artificial neural networks (ANNs) are silicon-based processor architectures inspired by, and very simply patterned after, the human brain, which learns by example and “prunes” connections that don’t get used anymore. What exactly is an artificial neural network? Dr. Robert Hecht-Nielson, Adjunct Professor of Electrical and Computer Engineering at USCD, was paraphrased by Maureen Caudill as saying that artificial neural networks are “…a computing system made up of a number of simple, highly interconnected processing elements, which process information by their dynamic state response to external inputs.”[i]
Neural networks have been implemented on 8-bit microcontrollers.[ii] However, the Arduino 101 is a more recent example of a development board that includes an engine with a neural network. The Arduino 101 uses the Curie Module, which in turn has an Intel® Quark™ SE engine. The Intel® Quark™ SE is an Intel® microcontroller (MCU) with a neural network subsystem of 128 neurons. The CurieLibrary accesses the neural network, but neural networks are not programmed in the traditional sense. There is no code created for use with ANNs, which learn by example (from examining data solution sets). ANNs provide a type of decision-making ability that is very much outside the typical experience of traditional architectures.
Neural networks are not programmed like traditional architectures, rather, they “learn.” Sample data sets are fed to the ANN, which learns based on that known good information, rather than being programmed in the traditional sense. Neural networks are especially good at examining a solution set, learning from it, and applying that learning to similar problems. ANNs do not have central processors, but are made up of anywhere from hundreds to millions of neurons in a parallel architecture. Neurons have no central supervising entity, but work collaboratively to arrive at a decision or solution. Individual neurons are like simple “processors” or memory units that remember data and make fundamental decisions based on what they know or have learned. Pattern matching is a common area where ANNs are applied, but so far ANNs have been successfully applied to sensor fusion, machine vision, tracking, surveillance, and adaptive control. ANNs have the benefit of excellent scalability and require little power to operate.
Neural networks are created with layers of neurons, starting with input neurons. Weighed connections between layers of neurons exist, for which “learning” rules adjust connections based on solution sets. The Intel® Quark™ SE has capacity for 128 neurons and each neuron is 128 bytes. The Quark™ SE’s neural network is set up for pattern matching, and thus includes a recognition status of identified, uncertain, or unknown.[iii] The scope of this article is limited to high-level descriptions.
Artificial neural networks are just one part of the field of cognitive computing. ANNs provide a large number of dynamically changing elements (neurons) involved in a complex structure, such that theoretical physicists and mathematicians have found themselves challenged to create new math models to describe the behavior of ANNs.
Full access to the neural network using an Arduino 101 is available with the purchase of a low-cost CurieNeurons PRO library from General Vision, but a free CurieNeurons library is also available for download at http://www.general-vision.com/products/curieneurons.
[i] Caudill, M. (1991). Naturally intelligent systems. AI Expert, 6, 56 – 61.
[ii] Yang, Yueh-Ru. “A Neural Network Controller for Maximum Power Point Tracking with 8-bit Microcontroller.” 2011 6th IEEE Conference on Industrial Electronics and Applications (2011): n. pag.
[iii] “Presentation of the CurieNeurons on Arduino/Genuino101.” Documentation. General Vision, 6 June 2016. Web. 23 Oct. 2016. https://www.general-vision.com/publications/PR_CurieNeuronsPresentation.pdf
Michael Bartling says
Fyi, Pete warden has an excellent blog post explaining motivation for running neural net inference on MCUs. Also of note is the uTensor project; a set of tools to take Tensorflow NN graphs and run them on Cortex M4 platforms https://github.com/uTensor/uTensor