- 1 The PDP++ Software Home Page
- 2 About PDP++
NEWS: Emergent Released!
'The new version of PDP++, released 8/21/07, is now called Emergent' -- all current information is available at that new web page. This page will remain up to provide information for existing users of PDP++, but PDP++ is no longer being supported by the developers.
The PDP++ software is a neural-network simulation system written in C++. It represents the next generation of the PDP software originally released with the McClelland and Rumelhart "Explorations in Parallel Distributed Processing Handbook", MIT Press, 1987. It is easy enough for novice users, but very powerful and flexible for research use.
Computational Explorations in Cognitive Neuroscience
PDP++ is featured in the textbook Computational Explorations in Cognitive Neuroscience: Understanding the Mind by Simulating the Brain.
The current version is 3.1, released Oct 2, 2003, whichis largely a bug-fix release. Version 3.0 included the following changes:
- Wizard that automates the construction of simulation objects.
- Distributed-memory parallel processing via MPI (instead of pthread).
- Additional analysis functions: PCA (principal components analysis) and MDS (multidimensional scaling).
- Much improved GraphLog, and log displays are much more robust to changing data.
- Color-coded edit dialogs and view window backdrops.
- Ability to save view displays to a JPEG or TIFF file (+ sequences for animation).
- Incremental reading of events from a file during processing.
- Automatic SimLog creation whenever project is saved.
- Added two new algorithms: Long Short Term Memory and RNS++ (by Josh Brown) -- also see EXTENSIONS below.
- Support for g++ 3.x compilers (see README.linux for important details on compiling under LINUX), better random number generator, numerous small procs and stats.
- A Mac OSX package file (pkg.sit) added for one-click install of binaries + extras.
More Features by Release Version (<- See this link for important news for existing projects, compiling).
- Info, Subscribe
- New Archive (10/04 - present)
- Older Archive (9/99 - 10/04)
- Old Archive (before 9/99)
- RNS++ -- Real-time Neural Simulator
- Converting PDP Log files into Octave/Matlab Data Files
- pdptail -- powerful log file monitoring program (perl script)
- Full Graphical User Interface (GUI) based on the InterViews toolkit. Allows user-selected "look and feel".
- Network Viewer shows network architecture and processing in real-time, allows network to be constructed with simple point-and-click actions.
- Training and testing data can be graphed on-line and network state can be displayed over time numerically or using a wide range of color or size-based graphical representations.
- Environment Viewer shows training patterns using color or size-based graphical representations; interactive configuration.
- Flexible object-oriented design allows mix-and-match simulation construction and easy extension by deriving new object types from existing ones.
- Built-in 'CSS' scripting language uses C++ syntax, allows full access to simulation object data and functions. Transition between script code and compiled code is simplified since both are C++. Script has command-line completion, source-level debugger, and provides standard C/C++ library functions and objects.
- Scripts can control processing, generate training and testing patterns, automate routine tasks, etc.
- Scripts can be generated from GUI actions, and the user can create GUI interfaces from script objects to extend and customize the simulation environment.
- Distributed memory parallel processing (via MPI), allows substantial speedups by distributed processing (over connections, events, and training batches) over multiple processes.
Supported Algorithms Include
- Feedforward and recurrent error backpropagation. Recurrent BP includes continuous, real-time models, and Almeida-Pineda.
- Constraint satisfaction algorithms and associated learning algorithms including Boltzmann Machine, Hopfield models, mean-field networks (DBM), Interactive Activation and Competition (IAC), and continuous stochastic networks.
- Self-organizing learning including Competitive Learning, Soft Competitive Learning, simple Hebbian, and Self-organizing Maps ("Kohonen Nets").
- Mixtures-of-experts using backpropagation experts, EM updating, and a SoftMax gating module.
- Leabra algorithm that combines error-driven and Hebbian learning with k-Winners-Take-All inhibitory competition. Over 40 research-grade simulations available for this algorithm in association with new book: Computational Explorations in Cognitive Neuroscience: Understanding the Mind by Simulating the Brain, O'Reilly & Munakata, 2000, MIT Press.
- Long Short Term Memory (LSTM) (see Schmidhuber's site for details), including forget gates but not peephole connections. References: Hochreiter & Schmidhuber (1997), Long Short Term Memory, Neural Computation, 9, 1735-1780; Gers, Schmidhuber & Cummins (2000). Learning to Forget: Continual Prediction with LSTM. Neural Computation, 12(10):2451--2471.
The PDP++ software was originally written by Randall C. O'Reilly (now at ">Department of Psychology, University of Colorado Boulder), Chadley K. Dawson, and James L. McClelland, under the affiliation of the following entities:
- Carnegie Mellon University
- CMU Department of Psychology
- The Center for the Neural Basis of Cognition (CNBC)
- The center for Neural Processes in Cognition (NPC)
It is now maintained and developed primarily by O'Reilly.
The Underlying Technology
The basic GUI and script technology in PDP++ is based on a type-scanning system called TypeAccess which interfaces with the CSS script language to provide a virtually automatic interface mechanism. While these were developed for PDP++, they can easily be used for any kind of application, and CSS is available as a stand-alone executable for use like Perl or TCL. <A HREF="ta_css.html">Click here for more information about TypeAccess and CSS. <P>
The Fine Print
PDP++ is copyrighted and cannot be sold or distributed for profit by anyone other than the copyright holders. However, the full source code is freely available, and the user is granted full permission to modify, copy, distribute (on a not-for-profit basis), and use it. See our <A HREF="copyright.html">copyright</A> for details.
The software runs on Unix workstations under XWindows, under Microsoft Windows (9x, 2000, NT, XP, etc) using CYGWIN, and on the Macintosh under OSX (with an X11 display server). Binaries are available for Linux, Windows, Mac OSX, Sun, and SGI platforms. Other machine types will require compiling from the source. g++ and proprietary compilers are supported.
The GUI in PDP++ is based on an updated version of the InterViews toolkit, which we have maintained together with Michael Hines (author of NEURON). We distribute pre-compiled libraries for the above architectures. For architectures other than those above, you will have to compile from source, available for download. <A HREF="interviews.html">Click here</A> for more information about InterViews.
This page is maintained by firstname.lastname@example.org