The PDP++ Software Home Page
Main Page Updated: 8/21/07 (others may be updated more recently)
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.
NOTE: there is now an alternate PDP++ website at
CU Boulder
(should have same content, but is more likely to be correct).
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.
PDP++ is featured in a Textbook:
Computational
Explorations in Cognitive Neuroscience:
Understanding the Mind by
Simulating the Brain.
by Randall C. O'Reilly and
Yuko Munakata
with a foreword by
James L. McClelland
MIT Press, 2000.
The current version is 3.1, released Oct 2, 2003, which
is 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: [Copyright]
[Online Documentation],
[Gziped Postscript 775K],
[PDF 2.8Mb],
[TA/CSS]
MAILING LIST:
[Info, Subscribe]
[New Archive (10/04 - present)],
[Older Archive (9/99 - 10/04)],
[Old Archive (before 9/99)]
FTP: [USA: Colorado (Most Frequently Updated)],
[USA: Pittsburgh (Official Release)],
[UK]
SCREEN SHOTS: [Screen Snapshots]
EXTENSIONS: [RNS++ -- Real-time Neural Simulator]
[Converting PDP Log files into Octave/Matlab Data Files]
[pdptail -- powerful log file monitoring program (perl script)]
CONTRIBUTORS: [List of contributors]
Software Features
- 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 Juergen 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.
Authors
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:
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. Click here
for more information about TypeAccess and CSS.
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 copyright 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. Click
here for more information about InterViews.
This page is maintained by pdpadmin@cnbc.cmu.edu