This repository holds a Python implementation of the Primary Value and Learned Value Learning Algorithm (PVLV), as described in the eponymous article by Randall C. O'Reilly, Michael J. Frank, Thomas E. Hazy and Brandon Watz.
The PVLV experiments were originally conducted using the emergent simulator, which offers extensive visualization and interaction possibilities. It uses highly optimized C++ code, which makes it difficult to extract the underlying algorithms from it. This Python implementation strives to be as simple as possible to understand and modify, forgoing any optimization ambitions.
This repository includes an implementation of the underlying Leabra framework. The Leabra framework significantly evolved in since the publication of the PVLV article in 2007. Here we reimplement the Leabra framework corresponding to emergent 5.0.
- Unit class
- Unit example
- Layer class
- Layer example
- Network class
- Network/Layer example
- PVLV algorithm
- PVLV example
- PVLV visualization
- Results reproduced
These resources were instrumental to understand the algorithms and reproduce the results:
- The original PVLV: The Primary Value and Learned Value Learning Algorithm article.
- The CECN1 book.
- The CECN1 projects.
- The PVLV Pvl Cond project for emergent 5.0.2 (displays errors when used with more recent versions).
- The Matlab implementation of Leabra by Sergio Verduzco-Flores, available in the
Matlab/
directory of the emergent source code.
Open-source, but to be decided.