Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 1 Neural Simulation Language NSL.

Similar presentations


Presentation on theme: "CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 1 Neural Simulation Language NSL."— Presentation transcript:

1 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 1 Neural Simulation Language NSL

2 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 2 Overview  Introduction  NSLM  Example (Max Selector)  NSLS  Downloading and installing NSL

3 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 3 Introduction NSL is a platform for  Building neural architectures (modeling)  NSLM  NSLJ & NSLC  Executing them (simulation).  NSLS NSL provides tools for modeling complex neural systems - especially (but not only) when the neurons are modeled as leaky integrator neurons.

4 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 4 Methodology The general methodology for making a complex neural model of brain function is to combine different modules corresponding to different brain regions. To model a particular brain region, we divide it anatomically or physiologically into different neural arrays. Each brain region is then modeled as a set of neuron arrays, where each neuron is described for example by the leaky integrator, a single-compartment model of membrane potential and firing rate.

5 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 5 Levels of abstraction A complete model in NSL requires the following components: a set of modules defining the entire model neurons comprised in each neural module neural interconnections neural dynamics numerical methods to solve the differential equations.

6 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 6 Example of modules

7 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 7 Leaky integrator

8 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 8 Simulation 1 2 3 4 5 6 7

9 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 9 Simulation Methods initSys initModule makeConn … (simulation steps) endModule endSys

10 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 10 Simulation Methods initTrainEpoch initTrain simTrain endTrain endTrainEpoch initRunEpoch initRun simRun endRun endRunEpoch train run trainAndRunAll doTrainEpochTim es doRunEpochTime s

11 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 11 Model Structures Model  Highest level Modules  NeuralNetworks InModules OutModules  Graphic Interfaces MotorModules  Robotics NslClass  Libraries  New Canvases  New NSLS Commands

12 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 12 NSLM Types Primitive types  int  float  double  boolean  char NslData types (0, 1, 2, 3, 4)  NslInt  NslFloat  NslDouble  NslBoolean  NslString (0) Could be public, private or protected. NslPort types (0, 1, 2, 3, 4)  NslDinInt  NslDinFloat  NslDinDouble  NslDinBoolean  NslDinString (0)  NslDoutInt  NslDoutFloat  NslDoutDouble  NslDoutBoolean  NslDoutString (0) Ports must be public

13 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 13 Max Selector Model The details of this model can be found in section 4.4 of TMB2. The model uses competition mechanisms to obtain, in many cases, a single winner in the network where the input signal with the greatest strength is propagated along to the output of the network.

14 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 14 Max Selector Model (2)

15 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 15 Max Selector Model (3) MaxSelectorModel MaxSelector Stimulus Output ULayer VLayer

16 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 16 MaxSelectorModel nslImport nslAllImports; nslImport MaxSelectorStimulus; nslImport MaxSelector; nslImport MaxSelectorOutput; nslModel MaxSelectorModel() { nslConst int size = 10; private MaxSelectorStimulus stimulus(size); private MaxSelector maxselector(size); private MaxSelectorOutput output(size); public void initSys() { system.setRunEndTime(10.0); system.nslSetRunDelta(0.1); } public void makeConn() { nslConnect(stimulus.s_out, maxselector.in); nslConnect(stimulus.s_out, output.s_out); nslConnect(maxselector.out, output.uf); }

17 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 17 MaxSelectorStimulus nslImport nslAllImports; nslModule MaxSelectorStimulus(int size) { public NslDoutDouble1 s_out(size); public void initRun() { s_out=0; s_out[1]=0.5; s_out[3]=1.0; }

18 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 18 MaxSelectorOutput nslImport nslAllImports; nslOutModule MaxSelectorOutput(int size) { public NslDinDouble1 s_out(size); public NslDinDouble1 uf(size); private NslDouble1 up(size); private boolean worked= false; public void initModule() { up.nslSetAccess('W'); nslAddAreaCanvas(s_out,0,1); nslAddTemporalCanvas(up,-2.5,2.5); nslAddAreaCanvas(uf,0,1); } public void simRun() { worked=nslSetValue(up,"maxSelectorModel.maxselector.u1.up"); }

19 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 19 MaxSelector nslImport nslAllImports; nslImport Ulayer; nslImport Vlayer; nslModule MaxSelector(int size) { public NslDinDouble1 in(size); public NslDoutDouble1 out(size); private Ulayer u1(size); private Vlayer v1(); public void makeConn() { nslRelabel(this.in, u1.s_in); nslConnect(u1.uf, v1.u_in); nslConnect(v1.vf, u1.v_in); nslRelabel(u1.uf, this.out); }

20 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 20 ULayer nslImport nslAllImports; nslModule Ulayer(int size) { //inports public NslDinDouble1 s_in(); public NslDinDouble0 v_in(); //outports public NslDoutDouble1 uf(size); //variables private NslDouble1 up(size); private NslDouble0 w1(); private NslDouble0 w2(); private NslDouble0 h1(); private NslDouble0 k(); private double tau; …

21 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 21 Ulayer(2) public void initRun(){ uf = 0; up = 0; tau = 1.0; w1= 1.0; w2= 1.0; h1= 0.1; k= 0.1; } public void simRun(){ //compute : up=up+((timestep/tu)*du/dt) up = nslDiff(up, tau, -up + w1*uf-w2*v_in - h1 + s_in); uf = nslStep(up,k.get(),0,1.0); }

22 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 22 VLayer nslImport nslAllImports; nslModule Vlayer() { // ports public NslDinDouble1 u_in(); // output port public NslDoutDouble0 vf(); // variables private NslDouble0 vp(); // neuron potential private NslDouble0 h2(); private double tau; // time constant …

23 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 23 Vlayer (2) public void initRun() { vf=0; vp=0; tau=1.0; h2 = 0.5; } public void simRun() { // vp=vp+((timestep/tv)*dv/dt) vp = nslDiff(vp, tau, -vp + nslSum(u_in) -h2); vf = nslRamp(vp); }

24 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 24 Compilation One model/module per file The file extension must be.mod We recommend to clean the model directory before compiling with the nslclean command To compile the model you just have to execute the following command: nslc modelName Where modelName is the Name of the file that contains the model structure. For this example we should write: nslc MaxSelectorModel Note that we didn’t write the file extension at the end of the name. Mod FileNlx FileJava File Class File

25 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 25 Execution To simulate your model you have to use the nsl command. For this example you should write: nsl MaxSelectorModel Two running modes  Text (-nodisplay)  Graphic interface (default) To redirect the standard output (-stdout console) To redirect the standard error (-stderr console)

26 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 26 Interface

27 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 27 Interface (2)

28 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 28 NSLS To avoid re-compiling every time you modify your model parameters we provide the NSL script language known as NSLS which also provides a dynamic user control environment. NSLS provides the following functionality:  NSL model parameter assignment  NSL input specification  NSL simulation control  NSL file control  NSL graphics control NSLS is an extension of the well know TCL scripting language, thus providing NSL and TCL functionality.

29 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 29 NSLS (2) NSL command syntax: nsl subcommand [options] Important NSL commands:  nsl source fileName  (i.e. nsl source hopfield.nsls)  nsl set variable value  (i.e. nsl set maxSelectorModel.stimulus.s_out {1 0 0.5})  nsl get variable  (i.e. nsl get maxSelectorModel.stimulus.s_out)  nsl run  nsl train  …  nsl exit

30 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 30 NSLS example # # Hopfield Network # set A {} set B {} set C {} set D {} proc memorize { x } { puts "Memorizing $x" nsl set hopfield.inModule.input $x nsl train } proc test { x d } { nsl set hopfield.dis $d nsl set hopfield.inModule.input $x nsl run }

31 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 31 NSLS example (2) proc initData {} { global A B C D set A { { -1 -1 1 1 -1 -1 } { -1 1 -1 -1 1 -1 } { -1 1 1 1 1 -1 } { -1 1 -1 -1 1 -1 } } set B { { 1 1 -1 -1 -1 -1 } { 1 1 1 1 -1 -1 } { 1 1 -1 -1 1 -1 } { 1 1 1 1 -1 -1 } } … }

32 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 32 NSLS example (3) proc trainNetwork {} { global A B C D memorize $A memorize $B memorize $C memorize $D } proc NslMain {} { global A B C D puts "Initializing" initData puts "Training" trainNetwork puts "Testing" for { set i 10 } { $i<20 } { incr i } { puts "Testing with distortion $i" test $A $i } nsl set hopfield.dis 0 } NslMain

33 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 33 Downloading NSL First, you will need to install the latest Java SDK; get it directly from Sun at http://java.sun.com/j2se/1.3/.http://java.sun.com/j2se/1.3/ Once this is setup and working, download the entire NSL tree from http://www-scf.usc.edu/~csci564/nsl.tar.gz http://www-scf.usc.edu/~csci564/nsl.tar.gz Extract the archive (Winzip or Pkzip). Edit the file "NSL3_0_n\resume.bat" such that it matches your environment (you will have to specify the path where you installed Java, where you installed NSL, etc). Execute the resume batch file before beginning a NSL session.

34 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 34 Downloading NSL (2) @echo off echo Initializing NSL environment variables set NSLJ_ROOT=C:\salvador\NSL3_0_n set JAVA_HOME=C:\jdk1.3 set NSL_OS=windows echo Updating path and classpath set PATH=%JAVA_HOME%\bin;%NSLJ_ROOT%;%PATH% set CLASSPATH=%NSLJ_ROOT%;.;%NSLJ_ROOT%\nslj\src\main; %NSLJ_ROOT%\nslj\src\nsls\jacl; %NSLJ_ROOT%\nslj\src\nsls\tcljava @echo on

35 CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 35 References A Weitzenfeld, MA Arbib and A Alexander, 2002, NSL Neural Simulation Language, MIT Press (in press) An old version is at: http://www-hbp.usc.edu/_Documentation/NSL/Book/TOC.htm For any NSL related questions and bug reports, please send me an email at smarmol@usc.edu smarmol@usc.edu


Download ppt "CS564 - Brain Theory and Artificial Intelligence, USC, Fall 2001. 1 Neural Simulation Language NSL."

Similar presentations


Ads by Google