This program has been written by (c) Laurenz Wiskott at the =========================================================================== /// /\\ /// //============================= Institut f"ur /// //\\\ /// /// /// /// \\\ /// /// Ruhr-Universit"at Neuroinformatik /// /// \\\ /// /// /// /// \\/// /// Bochum ======================// /// \// /// Ruhr-Universit"at Bochum Institut f"ur Neuroinformatik ND 03 D-44780 Bochum Germany =========================================================================== The author's current address is =========================================================================== .---. .---. Dr. L a u r e n z W i s k o t t | |. S A L K .| | Computational Neurobiology Laboratory | ||. C N L .|| | The Salk Institute for Biological Studies | ||| L W ||| | mail: PO Box 85800, San Diego, CA 92186-5800 | |||=======||| | street, parcels: 10010 North Torrey Pines Road `---''' " ```---' La Jolla, CA 92037 phone: +1 (619) 453-4100 ext 1463; fax: +1 (619) 587-0417; email: wiskott@salk.edu; WWW: http://www.cnl.salk.edu/~wiskott/ =========================================================================== Feel free to use, modify, and distribute this program, but please document your changes and leave the original copyright notice. If you have serious problems or questions or if you find a bug (I am sure there are some), send a mail to wiskott@salk.edu. =========================================================================== This program is based on NSL (Neural Simulation Language) version 2.1 developed by Alfredo Weizenfeld et al. Information on NSL can be obtained from http://www-hbp.usc.edu:8376/HBP/models/index.html http://www-hbp.usc.edu:8376/HBP/tools/NSL/home.html or via email from Alfredo Weitzenfeld Webmaster If NSL2.1 is installed correctly, this code should compile with prompt> nsl_link ... DLM.o DLMwin.o where `...' stands for some flags you need to set dependent on your installation of NSL. =========================================================================== You should have the following files: DLMreadme : This is this file and contains information about other files. DLM.C : This is the main program file where most of the variables defined and all the differential equations are coded. DLMindex.C : This file contains a couple of index functions and an elaborated explanation on how the different indices are mapped onto each other. DLMinitS.C : This file provides functions to initialze the connection matrices. The selection of objects and models is based on the control files DLMmodels, DLMobjects. DLMmodels : These control files contain lists of model names, wich serve as the gallery. DLMobjects : These control files contain lists of object names, which serve as probe faces. DLMdisplay.C : This file provides two special displays, one to display the trajectories of the running blobs by little dots and one to display the connectivities by a net display. For these extra displays you need DLMwin. DLMwin.h, DLMwin.C : A collection of simple display functions based on X11. =========================================================================== There are the following .nsl control files : | `*'= | `*' `P'arameters `D'isplay ------------------+--------------------------------------------------- | `'basic system | DLMP.nsl | `B'lob | DLMB.nsl DLMBP.nsl DLMBD.nsl `R'unning blob | DLMR.nsl DLMRP.nsl DLMRD.nsl `S'ynchronization | DLMS.nsl DLMSP.nsl DLMSD.nsl `M'atching | DLMM.nsl DLMMP.nsl DLMMD.nsl `G'allery | DLMG.nsl DLMGP.nsl DLMGD.nsl | `A'ttention | DLMA.nsl DLMAP.nsl DLMAD.nsl | The `P'-files contain only parameter definition commands; the `D'-files contain only display window commands. The `*'-files usually contain only the three lines create window_interface load DLM*D load DLM*P where `*' stands for the capital letter given in the first column of the table above. Some of the `P'-files or `D'-files load another file, whose name is given one line above in the table above, e.g. `DLMGP.nsl' loads `DLMMP.nsl' and `DLMRD.nsl' loads `DLMBD.nsl'. This induces a hierachy of dependencies. It is usually sufficient to load just one `*'-file, all other files required are loaded automatically. The only exception is DLMA.nsl, which can be loaded in combination with all others. Load the file DLMA.nsl last, otherwise the attention mechanism will not be activated. You may sometimes want to run a simmulation without any display to be faster. You can do that by loading a `P'-file instead of the corresponding `*'-file. =========================================================================== SIMMULATION INSTRUCTIONS !! Blob Formation (DLMB): Compile the program with [prompt> nsl_link ... DLM.o DLMwin.o]. In file DLM.C the variable SMALL_LAYER must be defined, i.e. #define SMALL_LAYER instead of //#define SMALL_LAYER. Start the simulation with [prompt> nsl; nsl> load DLMB; nsl> run] and observe how a blob arises. Restart the simulation with different initial conditions [Ctrl-C; nsl> init; mouse clicks with left button on layer h1; nsl> cont]. Vary also beta_h, e.g. [Ctrl-C; nsl> set data_value beta_h 0.1; nsl> cont]. What is a reasonable range for beta_h? Blob Mobilization (DLMR): Start the simulation with [nsl> load DLMR; nsl> run] and observe how a blob arises and moves over the layer. Vary lambda_p, lambda_m, and kappa_hs, e.g. [Ctrl-C; nsl> set data_value lambda_m 0.001; nsl> cont]. Why should lambda_m be larger for smaller layers? Is the shape of the blob speed-dependent? Layer Interaction and Synchronization (DLMS): Start the simulation with [nsl> load DLMS; nsl> run] and observe how the two blobs synchronize and align with each other. Try different runs (for each run a new object is selected randomly and some synchronize easier than others) and use different object galleries [edit the file DLMobjects and exchange the *pose1 (= 15 degrees rotated faces) block with the *pose2 (= 30 degrees rotated faces) or *pose3 (= different facial expression) block]. Vary kappa_hh. What happens if kappa_hh is too large or too small? Link Dynamics (DLMM): Start the simulation with [nsl> load DLMM; nsl> run] and observe how the connectivity develops in time. Vary lambda_W. What happens if lambda_W is too large? Attention Dynamics (DLMA): Recompile the program with the SMALL_LAYER and SMALL_PATCHES definitions commented out, e.g. //#define SMALL_LAYER instead of #define SMALL_LAYER. Start the simulation with [nsl> load DLMR; nsl> load DLMA; nsl> run] and observe how an attention blob arises and restricts the region in which the small blob is allowed to move. Vary kappa_ah and kappa_ha. Now restart the simulation with [nsl> load DLMS; nsl> run] and see whether the two blobs on the layers of different size can synchronize without an attention blob. Then add the attention blob [Ctrl-C; nsl> load DLMA; nsl> run] and see how the alignment between the blobs can become more stable (notice that for each run a new object is selected randomly, you can suppress that by [nsl> set data_value ObjectSelectionMode 1] in which case always the object indicated by preferredObject is used; with [nsl> set data_value ObjectSelectionMode 3] objects are selected randomly again). You can also experiment with the attention blob misplaced in the beginning [Ctrl-C; nsl> init; mouse clicks with the left button near the border on layer a1; nsl> cont]. Vary kappa_ah and kappa_ha. Recognition Dynamics (DLMG): Recompile the program with the SMALL_LAYER definition commented out but the SMALL_PATCHES definition valid, i.e. //#define SMALL_LAYER and #define SMALL_PATCHES. Start the simulation with [nsl> load DLMG; nsl> load DLMA; nsl> run] and observe the recognition process. In the first 1000 time units only the average layer with index 0 is simulated. The correct model has index 1. Shown are, for all models, the total layer activity, the recognition variable, and the sum over all synaptic weights. The connectivity and the layer 2 internal state as well as its input is shown only for the currently most active layer. The time, the index of the most active layer, and the values of the recognition parameters are given as usual output. Asterisks indicate layers which have been ruled out.