Introduction to Numenta Technology
What's in the NuPIC Research Release?
The research release consist of these components:
NuPIC Platform
The NuPIC Platform consists of the Numenta Tools Framework and the Numenta Runtime Engine. NuPIC is bundled with a set of code examples and a programmer's guide. Developers who want to build an HTM Network should download this package.
Algorithm and Tools Source
Developers who wish to customize the existing NuPIC behavior might consider downloading the algorithm source or tools source. Note that customization is usually done only after a working HTM application has been developed. Two components are available:
- Algorithm Source -- Source code for the learning algorithms embedded in the HTM platform and for the Node Plugin API. The API can be used to customize existing node types, for example, enable the HTM application to take data directly from a video frame grabber instead of a file. The API can also be used to extend the existing learning algorithm. Developers who have created an application but need custom functionality use this package.
- Tools Source -- Source code for Numenta tools for network configuration, session management and analysis/debugging. Developers who wish to customize or extend the existing tools use this package.
The Numenta community includes both Numenta employees and outside developers who contribute custom nodes or tools they have created. Over time, the available functionality will grow in both depth and breadth.
How to Build an HTM Application
Building an HTM application consists of a few tasks discussed in more detail in the Programmer's Guide.
- Problem definition. HTM Networks can discover causes in sensory data and infer the causes of novel input. That means, for example, that if the HTM Network has been trained to recognize a dog walking by, it can later recognize that dog from different angles or distances. If the HTM is trained with pictures of different dogs, it learns to classify a new dog as a dog.
- Data collection and representation. During training, the HTM Network needs a sufficient amount of data to build a model of its world. Those data must be submitted in a format the Numenta Runtime Engine can understand. The current release includes nodes that can process files of vectors or image files. If the application data is in a different format, the program must either filter it appropriately or write a custom sensor.
- HTM Network design and configuration. Using the Python APIs included in the Tools Framework, developers create the hierarchy of nodes that will process the data. The program instantiates and links the NuPIC nodes that encapsulate the learning algorithms and sets node parameters to best suit the problem. The result of this process is a set of scripts that generate the HTM Network and associated nodes and parameters, then save the network to an HTM Network file.
- Running the HTM Network to perform learning and inference. Developers use the Python Session API to create a script that starts a session and submits it to the runtime engine. Because training is a time-consuming process, the script usually saves a trained HTM Network file, potentially several times during training. The trained network can later be loaded into the Numenta Runtime Engine for processing of new data.
- Troubleshooting, analysis, and improvement of the HTM Network. To affect the Numenta Runtime Engine during training or inference, developers can change the input or change node parameters. Certain parameter values are suitable for data with a lot of noise, others for data that are similar, and so on. A number of tools (Numenta Visualizer, Numenta NetExplorer, etc.) support this process.
The Programmer's Guide demonstrations how to write your HTM application.
How a NuPIC HTM Network Works
After the developer has gone through HTM Development steps, often in an iterative fashion, the network is ready for use. First, the trained HTM Network, in which each node represents a part of the problem domain, is loaded into the runtime engine. Then new data is submitted to the HTM Network, which processes the information using its knowledge of the world. In the top-level node, most HTM Networks perform classification, that is, they compute how likely it is that the input belongs to one of a set of known groups. That information is then written to a file by default.
While this process seems simple and the available examples are still small, it's fairly straightforward to extend this approach. For more complex problems, NuPIC supports running on multiple processors or in a clustered environment.
The Fine Print: Cost and Licensing
The current research release of the Numenta Platform is available for free to the Numenta community. The license agreement differs for General researchers and Academic researchers. Although we describe the licenses below, you should read the licenses prior to downloading the software.
We offer the Numenta Platform for Intelligent Computing (NuPIC) today under a no-charge research license which gives broad rights for research purposes, but does not give rights for commercialization. We have created two versions of this research license, one for academics and the other for everybody else, allowing some tailored provisions for the academic community.
- The Academic Research License is for students, faculty and research staff at accredited educational institutions principally involved in education.
- The General Research is available for everybody else, including individuals, businesses, government agencies and non-profits.
Note: The terms are tailored to the different needs of these different audiences.
You should read the full text of the licenses, but we've written up a Licensing page that describes the licenses in more detail.
Further Reading
We've compiled a list of reading materials to help you get familiar with Numenta Technology:
- HTM Whitepaper: Concepts, Theory and Terminology (summarized here).
- Problems that Fit HTMs: A paper that outlines criteria for problems most likely to benefit from this release of NuPIC.
- Comparison with Existing Models: A paper that discusses how HTMs are different from existing models, and does a comparison of these modeling techniques.
For a more in-depth understanding of HTM and Numenta's software platform, see Education.