2010-11-27 ignoring a folder in SVN

2010-11-30 15:46:02
  • simply issue

    svn propset svn:ignore '*' data/
    
  • then, you may change behavior by editing this setting:

    svn propedit svn:ignore  data/
    
  • then commit, this will aplly to all updated working copies

Comments

2010-11-15 Password-less logins with OpenSSH

2010-11-15 12:33:33

Because OpenSSH allows you to run commands on remote systems, showing you the results directly, as well as just logging in to systems it's ideal for automating common tasks with shellscripts and cronjobs. One thing that you probably won't want is to do though is store the remote system's password in the script. Instead you'll want to setup SSH so that you can login securely without having to give a password.

Thankfully this is very straightforward, with the use of public keys.

To enable the remote login you create a pair of keys, one of which you simply append to a file upon the remote system. When this is done you'll then be able to login without being prompted for a password - and this also includes any cronjobs you have setup to run.

If you don't already have a keypair generated you'll first of all need to create one.

To generate a new keypair you run the following command:

skx@lappy:~$ ssh-keygen -t rsa

This will prompt you for a location to save the keys, and a pass-phrase:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/skx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/skx/.ssh/id_rsa.
Your public key has been saved in /home/skx/.ssh/id_rsa.pub.

If you accept the defaults you'll have a pair of files created, as shown above, with no passphrase. This means that the key files can be used as they are, without being "unlocked" with a password first. If you're wishing to automate things this is what you want.

Now that you have a pair of keyfiles generated, or pre-existing, you need to append the contents of the .pub file to the correct location on the remote server.

Assuming that you wish to login to the machine called mystery from your current host with the id_rsa and id_rsa.pub files you've just generated you should run the following command:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@mystery

This will prompt you for the login password for the host, then copy the keyfile for you, creating the correct directory and fixing the permissions as necessary.

The contents of the keyfile will be appended to the file ~/.ssh/authorized_keys2 for RSA keys, and ~/.ssh/authorised_keys for the older DSA key types.

Once this has been done you should be able to login remotely, and run commands, without being prompted for a password:

skx@lappy:~$ ssh mystery uptime
 09:52:50 up 96 days, 13:45,  0 users,  load average: 0.00, 0.00, 0.00

Comments

2010-11-09 Instinct Paradise :-journée IMERA du 9 nov 2010

journée IMERA du 9/11/2010

Mon projet scientifique s'intéresse aux mécanismes computationnels qui sous-tendent la cognition. C'est-à-dire que l'on sait que l'on sait où se produisent ces mécanismes définissant la système nerveux central en un réseau de neurones connectés par des synapses et qu'ils sont supportés par des signaux électro-chimiques entre ces noeuds, mais on ne connaît pas encore totalement comment l'information qui semble être portée ces signaux peut être interprété. Ce "Graal" est la découverte du "code neural" c'est-à-dire du langage qui est utilisé dans notre cerveau. On ne sait si cette découverte est possible: peut-il exister une connaissance globale du cerveau comme on peut deviner la trajectoire d'une planète avec les lois de Newton? Peut-etre le cerveau lui-même n'est pas assez complexe, même mis en réseau avec tous les neuro-scientifiques du monde entier, pour se laisser deviner... Mais il y a de nombreuses perspectives à le découvrir progressivement:

  • La découverte d'algorithmes neuraux permet de construire de nouveaux paradigmes de calcul. En effet une chose que l'on sait du cerveau est qu'il n'est pas un ordinateur! au moins il n'est pas un ordinateur classique (de von Neumann) où toute l'information passe par un (ou un petit nombre) de processeurs à très grande vitesse. À le place de cela, l'architecture du système nerveux est massivement parallèle, asynchrone et adaptative. Ces nouveaux algorithmes pourront être implantées sur des puces de nouvelle génération qui sont actuellement en développement.
  • Une meilleure connaissance des mécanismes ouvre bien sûr la voie à de nombreuses applications thérapeutiques et sur un large spectre depuis le contrôle des épilepsie jusqu'à la compréhension des dégénérescences neurales. Nous appliquons au laboratoire cette démarche scientifique en nous concentrant sur les bases de la vision et en particulier sur la capacité à détecter le mouvement.

Nous sommes encore au Moyen-Âge d'un compréhension globale de la cognition. Il n'y a pas de brique élémentaire ou de principe universel comme cela peut l'être dans d'autres disciplines comme la mécanique, la chimie ou la logique mathématique classique. Nous sommes ici dans le domaine des sciences du complexe: on parle alors de concepts encore très jeunes par rapport à l'âge de l'humanité comme l'utilisation de mesures d'information, l'auto-organisation ou l'émergence.

On le voit notre démarche scientifique est relativement large est si elle est appliquée à un cas particulier (la détection de mouvement), nous faisons en sorte qu'elle puisse toujours être approchée de façon générique à d'autres problèmes: d'autres modalités sensorielles ou cognitives mais surtout d'autres échelles d'analyses, du très petit (l'interaction de sous-parties d'un neurone) au très grand (interactions sociales).

Il y a donc une grande proximité du champ d'action avec la démarche artistique d'Etienne Rey et Franck2Louise qui a conduit à l'émergence de ce projet. J'étais au début surpris de l'utilisation de mots clés (diffraction, particule, résonance, émergence, ...) et pensais qu'il étaient plus utilisés pour le pouvoir poétique de leur évocation. En fait, au cours des discussions nous nous sommes rendus compte que nous parlions le même langage et qu'une voie s'ouvre si nous confrontions nos perspectives en redéfinissant ce qui ne l'est pas encore précisément: c'est l'intérêt de Tropique en tant que chercheur en neuroscience: un espace de création dans la mise en oeuvre du projet dans la définition du "cerveau artificiel" qui va le contrôler, un espace de création imprévisible qui va naître de l'interaction avec le public.

Plus prosaïquement mon intérêt est à plusieurs facettes:

  • la phase de gestion de l'information du mouvement de plusieurs acteurs est une prouesse technologique qui sera une épreuve du feu pour les algorithmes neuro-mimétiques que nous développons. En particulier, le concept de particule élémentaire d'information de mouvement pourra montrer son utilité à un niveau pratique,
  • explorer en pratique la résonance entre Perception et Action. Ces deux facettes de la cognition qui sont gravées dans l'anatomie du cerveau sont indissociables. Instinct Paradise donne un espace d'expérimentation qui nous permet de manipuler directement la perception d'espace d'un personne (son "aura") ainsi que ses interactions. A la manière d'une fractale nous envisageons de transposer ce niveau d'interactions sociales inter-personnes (10mx10m) sur un modèles d'interactions neurales (1cmx1cm) sur des règles similaires élémentaires de diffusion/agrégation,
  • c'est une aventure humaine, une série d'échanges, un projet que nous voulons donner à partager. À mon niveau, c'est aussi pour la reconnaissance qu'il soit porté par les institutions . À l'heure ou le seul espace public pour la science sont le mysticisme de jumeaux lipo-chirurgés ou le scpeticisme industriuex d'un ex-minstre géologiquement mamouthé, c'est un réel bonheur qu'on puisse monter un projet qui me permette de présenter quelques avancées sur notre connaissance du cerveau. Finalement, mon intérêt est aussi de pouvoir partager une bière au bar de la Friche pour discuter à bâtons rompus de concepts métaphysiques puis de plonger sur un détail très spécifique de la construction d'un détecteur ou d'imaginer les scénarios possibles d'interaction.

Comments

2010-11-07 wma to MP3

2010-11-11 14:53:20
  • http://seismic.ocean.dal.ca/~leblanc/pwp_wiki/static/upload/audio_conv.py
  • Mplayer has changed the syntax for pcm (wav) output. The pcm -aofile <filename> options has changed to -ao pcm:file=<filename> which doesn't like dos filenames (c:\bla\...). so I'm using a real hack to make a tempfile in the current directory (for windows only, *nix works normally). This script uses the syntax for the newer version of Mplayer, if you need the older syntax comment out the current method near line 286 and uncomment the one above it. This should be pretty clear when looking at the code.
./audio_conv.py -h
./audio_conv.py  -i "*.wma" -r --to-mp3 --dry-run
./audio_conv.py  -i "*.wma" -r --to-mp3
./audio_conv.py  -i "*.wma" -r --to-mp3 --normalize --delete

Comments

2010-11-04 installing Dovecot on MacOsX using MacPorts

2010-11-05 15:40:38
  • master howto: https://trac.macports.org/wiki/howto/SetupDovecot

  • Install

    sudo port install dovecot
    sudo port load dovecot
    
  • Configure

    sudo cp /opt/local/etc/dovecot/dovecot-example.conf  /opt/local/etc/dovecot/dovecot.conf
    
    sudo vim /opt/local/etc/dovecot/dovecot.conf
    
  • Mine reads (it's just meant to access imap files from the local mail server and not to serve outside the localhost):

    protocols = imap
    listen = localhost:10143
    disable_plaintext_auth = no
    ssl = no
    mail_location = maildir:~/Maildir
    protocol imap {
    }
    auth default {
      mechanisms = plain
      passdb pam {
        args = login
      }
      userdb passwd {
          args =
      }
    user = root
    dict {
    }
    
  • Reload

    sudo launchctl stop org.macports.dovecot
    sudo launchctl start org.macports.dovecot
    
  • It does not work on the first try... so read documentation

    less /opt/local//share/doc/dovecot/documentation.txt
    less /opt/local//share/doc/dovecot/auth-protocol.txt
    less /opt/local//share/doc/dovecot/wiki/PasswordDatabase.PAM.txt
    
  • Authentification

    ls -l /etc/pam.d/
    sudo vim /etc/pam.d/dovecot
    

    with /etc/pam.d/dovecot being

    auth       required       pam_permit.so
    account    required       pam_permit.so
    password   required       pam_deny.so
    session    required       pam_uwtmp.so
    

Comments

2010-11-03 rsync to an alternate ssh port

2010-11-03 09:00:39
  • Q: sometimes you try to copy files using rsync but the server uses an alternate port than the usual 22...
  • A: rsync-av-e'ssh-p2222'HOST:~/folder/*dest

Comments

2010-10-31 Marseille : bookmarks and tips

2010-11-11 13:47:22

Comments

2010-10-27 installing python and its components

  • Python is often pre-installed on your system or easy to download. More difficult is to get the essential packages (numpy, scipy, matplotlib, ipython) and their dependencies installed. Here, I list some of the possibilities.

on MacOsX: using MacPorts

  • A basic installation procedure is to use the enthought distribution,

  • Another route is to use MacPorts. It is a generic package manager inspired by what you get using Debian's apt scheme.

  • Once installed, do on the command-line

    • on Leopard:

      sudo port install py25-pil py25-numpy py25-scipy py25-ipython py25-matplotlib +cairo+latex+tkinter
      sudo python_select python25
      

      (Note: you may also use python26 on Leopard).

    • on Snow Leopard:

      sudo port install py26-numpy py26-scipy py26-ipython py26-matplotlib
      sudo port install py26-pyobjc2-cocoa py26-pil py26-distribute py26-pip py26-py2app python_select
      sudo port install vtk5 +carbon +qt4_mac +python26 py26-mayavi
      
      sudo python_select python26
      

      to install a bunch of useful python packages.

    • to get a package that is not available through macports, do:

      sudo easy_install progressbar
      
  • for visionEgg :

    sudo port install py26-opengl py26-game
    sudo easy_install visionegg
    
  • http://ipython.scipy.org/moin/Py4Science/InstallationOSX

  • on Snow Leopard, you'll have to follow these instructions.

Debian / Ubuntu

DistUtils, PIP & Easy Install

  • most of the time, there's a setup.py file:

    python setup.py install --prefix=~
    
  • See http://peak.telecommunity.com/DevCenter/EasyInstall

  • to install numpy (same for pylab, scipy, or visionegg), simply do

    easy_install numpy
    
  • most of the cases, on a test server or a single-user machine, you may find more useful to install in your home dirtectory, for instance:

    easy_install -d ~/lib/python2.5/site-packages/ numpy
    
  • to upgrade, use

    easy_install -U numpy
    
  • you can browse the list of available packages.

  • for pip: http://pip.openplans.org/

  • you may create a script tu update all packages:

    for i in `python -c "for dist in __import__('pkg_resources').working_set: print dist.project_name"`:
    do
    echo "`easy_install -U $i`"
    echo "++++++++++++++++++++++++++++++++++++++++++++++++++"
    done
    
  • to install PIL, use

    easy_install -d lib/python2.6/site-packages/ --find-links http://www.pythonware.com/products/pil/ Imaging
    

SVNs: bleeding edge versions

  • numpy

    svn co http://svn.scipy.org/svn/numpy/trunk numpy
    cd numpy
    python setup.py build
    sudo python setup.py install
    rm -rf build
    cd ..
    
  • SciPy

    svn co http://svn.scipy.org/svn/scipy/trunk scipy
    cd scipy
    python setup.py build
    sudo python setup.py install
    rm -rf build
    cd ..
    
  • pylab

    svn co https://svn.sourceforge.net/svnroot/matplotlib/trunk/matplotlib matplotlib
    cd matplotlib
    python setup.py build
    sudo python setup.py install
    sudo rm -rf build
    cd ..
    
  • SPE

    svn checkout svn://svn.berlios.de/python/spe/trunk/_spe
    
  • PIL

    wget http://effbot.org/downloads/Imaging-1.1.6.tar.gz
    tar zxvf  Imaging-1.1.6.tar.gz
    cd Imaging-1.1.6
    python setup.py build_ext -i
    python selftest.py
    python setup.py install
    
  • gsl

    cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/gsl login
    cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/gsl checkout gsl
    cd gsl/
    ./autogen.sh
    ./configure --enable-maintainer-mode
    make
    
  • pytables

    • dependency on HDF

      wget ftp://ftp.hdfgroup.org/HDF5/current/src/hdf5-1.6.5.tar.gz
      tar zxvf hdf5-1.6.5.tar.gz
      cd hdf5-1.6.5
      ./configure --enable-cxx
      make
      make install
      h5ls -r  Documents/Sci/projets/virtualV1/experiments/benchmark_one/results/benchmark_retina_high.h5
      
      wget http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/Pyrex-0.9.5.1a.tar.gz
      tar zxvf Pyrex-0.9.5.1a.tar.gz
      cd Pyrex-0.9.5.1a
      python setup.py build
      sudo python setup.py install
      rm -rf build
      
    • install

      wget http://puzzle.dl.sourceforge.net/sourceforge/pytables/pytables-1.4.tar.gz
      #svn co http://pytables.org/svn/pytables/trunk/ pytables
      tar zxvf pytables-1.4.tar.gz
      cd pytables-1.4
      export DYLD_LIBRARY_PATH=/sw/lib # or in .bashrc
      python setup.py install --hdf5=/sw
      cd ..
      
  • pygtk

    wget http://ftp.gnome.org/pub/GNOME/sources/pygtk/2.8/pygtk-2.8.6.tar.bz2
    tar xvfj pygtk-2.8.6.tar.bz2
    cd pygtk-2.8.6
    .configure
    make
    sudo make install    # or without sudo as root
    cd ..
    

Comments

2010-10-27 Master M2 Sciences

Travaux pratiques : modèle bayesien de détection du mouvement d'objets

  • Le 27/10/2010, de 14h00 à 17h00 dans la salle formation de l'INCM (bâtiment N du GLM, 31, chemin Joseph Aiguier 13402 Marseille cedex).
  • alert me prévenir si vous n'avez pas un ordinateur portable personnel!

principe du TP

  • But: définition de la probabilité de vraissemblance pour des translations d'images grâce à l'utilisation d'un script générique
  • Méthode: montage d'expérience:
    1. expérience simple
    2. expérience avec vitesse entre 0 et une période
    3. effet du contraste sur le wagon wheel illusion
  • Résultats:
    1. une figure montrant 2 images successives d'un film, la densité de probabilité de mouvement. les images seront: un point, une ligne (réseau), un barber-pole, une image naturelle.
    2. une figure montrant l'influence d'un bruit ajouté sur ces images
    3. une figure montrant l'influence de la vitesse sur le mouvement d'un réseau

pré-requis

expérience simple

  • pour charger la boîte à outils :

    import motion_plant as mp
    
  • pour visualiser une image

    I1, I2 = mp.generate(V_X = 3.5)
    mp.show_images(I1,I2)
    
  • Calcule la proba sur les vitesses V pour les 2 images:

    1. Il faut définir V avec la fonction velocity_grid, par exemple:

      V= mp.velocity_grid(v_max = 5.)
      

      (v_max est important il donne la valeur max des proba à tester)

    2. puis invoquer:

      P= mp.proba(V, I1, I2)
      
  • on peut voir la proba avec

    mp.show_proba(V, P)
    
  • et trouver celle qui correspond au maximum:

    mp.ArgMaxProba(V, P)
    

    ou la moyenne

    mp.MeanProba(V, P)
    
  • essayez différentes images...

    1. image naturelle

      I1, I2 = mp.lena()
      
    2. réseau carré

      I1, I2 = mp.generate(V_X = 2.5, square=True)
      
  • et différents paramètres, comme la variance de la vraissemblance

    sigmas = np.logspace(-2, 0, 10)
    
    for sigma in sigmas:
        I1, I2 = mp.generate(V_X = 2.5)
        P= mp.proba(V, I1, I2, sigma=sigma)
        mp.show_proba(V, P)
        pylab.title('sigma ' + str(sigma))
        print mp.ArgMaxProba(V, P), mp.MeanProba(V, P)
    
  • ou la variance du prior

    sigmas = np.logspace(-1, 1, 10)
    
    for sigma_p in sigmas:
        I1, I2 = mp.generate(V_X = 2.5)
        P= mp.proba(V, I1, I2, sigma_p=sigma_p)
        mp.show_proba(V, P)
        pylab.title('sigma_p ' + str(sigma_p))
        print mp.ArgMaxProba(V, P), mp.MeanProba(V, P)
    

expérience avec différents niveaux de bruit

  • pour créer une liste de bruits à tester, utiliser

    noises = np.linspace(0, 2., 10)
    
    for noise in noises:
        I1, I2 = mp.generate(V_X = 2.5, noise=noise)
        mp.show_images(I1,I2)
        P= mp.proba(V, I1, I2, sigma_p=1.)
        print mp.ArgMaxProba(V, P), mp.MeanProba(V, P)
    
  • à comparer avec le cas où on est plus conservateur:

    pylab.close('all')
    N_contrast =10
    contrasts = np.linspace(0, 1., N_contrast)
    V_hat = np.zeros((N_contrast,2))
    for i, contrast in enumerate(contrasts):
        I1, I2 = mp.generate(V_X = 2.5, contrast=contrast, noise=.2,)
        P= mp.proba(V, I1, I2, sigma_p=10.)
        V_hat[i,:] = mp.MeanProba(V, P)
    
    pylab.plot(contrasts, V_hat[:,0], 'r')
    pylab.plot(contrasts, V_hat[:,1], 'r--')
    
    V_hat = np.zeros((N_contrast,2))
    for i, contrast in enumerate(contrasts):
        I1, I2 = mp.generate(V_X = 2.5, contrast=contrast, noise=.2,)
        P= mp.proba(V, I1, I2, sigma_p=1.)
        V_hat[i,:] = mp.MeanProba(V, P)
    
    pylab.plot(contrasts, V_hat[:,0], 'g')
    pylab.plot(contrasts, V_hat[:,1], 'g--')
    
  • ou avec une image naturelle:

    pylab.close('all')
    N_contrast =10
    contrasts = np.linspace(0, 1., N_contrast)
    V_hat = np.zeros((N_contrast,2))
    for i, contrast in enumerate(contrasts):
        I1, I2 = mp.lena()
        P= mp.proba(V, I1, I2, sigma_p=10.)
        V_hat[i,:] = mp.MeanProba(V, P)
    
    pylab.plot(contrasts, V_hat[:,0], 'b')
    pylab.plot(contrasts, V_hat[:,1], 'b--')
    

expérience avec un réseau à différentes vitesses

  • pour créer une liste de vitesses à tester, utiliser

    speeds = np.linspace(0, 10., 10)
    V_hat = np.zeros((10,2))
    for i, V_X in enumerate(speeds):
        I1, I2 = mp.generate(V_X = V_X, frequence=12)
        P= mp.proba(V, I1, I2, sigma_p=1.)
        V_hat[i,:] = mp.ArgMaxProba(V, P)
    
    pylab.plot(speeds, V_hat[:,0], 'g')
    pylab.plot(speeds, V_hat[:,1], 'g--')
    
  • ... c'est le Wagon-wheel effect!

Comments

2010-10-20 Master M2 Sciences

http://2010.neurocomp.fr/images/neurocomplog.png

Laurent Perrinet

https://crac.dsi.cnrs.fr/image/logo_cnrs.gif
Laurent Perrinet - Team InViBe, Institut de Neurosciences de la Timone (UMR 7289)
CNRS - Aix-Marseille Université Researcher http://invibe.net/LaurentPerrinet

Les Neurosciences Computationelles étudient l'émergence dans les réseaux neuronaux (structure) des fonctions cognitives (fonction). Durant ce cours, nous allons définir ce paradigme de façon générique avant de l'appliquer à trois cas particuliers. D'abord nous allons étudier un exemple de réseau de type Bayesien appliqué à la détection du mouvement visuel. Ensuite, nous étudierons un exemple de réseau de neurones abstraits appliqué au codage adaptatif d'images. Enfin, l'étude de différents types de connectivité dans des réseaux de neurones impulsionnels réalistes.

Le cerveau est-elle une machine de Turing ?

http://www.ecs.syr.edu/faculty/fawcett/handouts/webpages/pictures/turingMachine.gif

Le Système Nerveux Central: quelques chiffres

  • Cerveau = 100 milliards de neurones (cerveau humain)
  • 2% du poids, 20% de la consommation énergétique (5W)
  • 1mm^3 = 90 000 neurones / 700.000.000 synapses / 4 km d’axone / 0,5 km de dendrites

http://upload.wikimedia.org/wikipedia/commons/c/c2/SnowflakesWilsonBentley.jpg

Émergence dans des réseaux d'information

  • Approche classique: réductionisme , atomisme
  • computere
  • émergence ( {en} {fr} )

Neurosciences Computationelles?

http://parasol.tamu.edu/~neilien/research/neurons.jpg

  • Les Neurosciences Computationelles étudient l'émergence dans les réseaux neuronaux (structure) des fonctions cognitives (fonction) en termes de traitement d'information (méthode).

    alert ne pas confondre Neurosciences Computationelles et NeuroInformatique !

  • convergence interdisciplinaire de :

    • neurosciences (physiologie, psychophysique)
    • mathématiques (EDP, physique statistique, probabilités et statistiques, calcul stochastique, théorie des graphes, physique statistique, ...)
    • informatique (théorie de l'information, théorie computationnelle, simulation de modèles)
  • applications à la compréhension de la biologie, à répondre aux pathologies + création de nouveaux paradigmes computationnels

Histoire des Neurosciences Computationelles

  • suit d'abord l'histoire des neurosciences http://upload.wikimedia.org/wikipedia/commons/7/75/Duck_of_Vaucanson.jpg
  • 1930 : Turing http://longstreet.typepad.com/.a/6a00d83542d51e69e20120a5d6fc90970c-500wi
  • 1950 : Hebb / von Neumann
  • 1950 : réseaux de neurones, parallelisme (PDP, Rosenblatt)
  • 1980 : étude des systèmes complexes, arrivée de l'émergence (Amari, Grossberg, Kohonen, Hopfield, physique statistique), premières définitions des Neurosciences Computationelles (congrès de Carmel)
  • 1990 : machine learning (NIPS)
  • 2000 : machines hybrides, science de la complexité (probabilités), approche système (explosion du volume de données) http://people.csail.mit.edu/koen/wholeBrainAtlasMesh.gif
  • 2010 : ...

Niveaux d'analyse de David Marr

fonction / définition algorithmique / méthode hardware / structure, support neural
analyse spectrale décomposition de Fourier FFT
cognition et comportement (modèles de prise de décision; conditionnement classique; conditionnement opérant; apprentissage par réenforcement; neuroéconomie) Traitement de l'information (traitement sensoriel; filtres linéaires et champs récepteurs; estimation des champs récepteurs; détecteurs de contour; modèle de Hubel et Wiesel; statistiques des images naturelles; théorie de l'information; analyse en composantes indépendante; décodage neuronale; codage par population) Dynamique et mécanismes (biophysique d'un neurone; génération de potentiels d'action; réseaux de neurones feedforward et récurrent; réseaux attracteurs; fonctions d'énergie, énergie de Liapounov; apprentissage et plasticité synaptique; mémoires associatives)
Modèles des systèmes neuronaux : La perception visuelle, système vestibulaire, contrôle oculomoteur, contrôle des membres, prise de décision. Théorie des réseaux neuronaux : Codage neuronaux, apprentissage supervisé et non supervisé, apprentissage par renforcement. Modèles de neurones : Modèles de membrane, potentiels d’action, équation Hodgkin-Huxley, modèles de compartiments, canaux, synapses.
suivi d'objet détection d'objet circuit V1-MT/MST-FEF

Suivi d'objet: l'exemple de l'Occular Following Response

grating_contrastgrating_sizefull_field_barberpole
Figure Stimuli used for testing OFR. (Left) Grating in a disk aperture with varying contrast and(Middle)*with varying diameters.*(Right) Barberpole.

http://invibe.net/LaurentPerrinet/Figures/Perrinet07neurocomp/FigureUn?action=AttachFile&do=get&target=summary.png

Figures/Perrinet04tauc/FigureUn/inverse.png

Modèles Probabilistes

model_simple.png

Avantages des représentations probabilitistes

  1. Règles de calcul probabiliste / lien avec la théorie de l'information
  2. Le modèle génératif (vraissemblance) permet de baser inférence (échelle temporelle du codage) et apprentissage (échelle temporelle de l'adaptation)
  3. Modèles hiérarchiques
  4. Réseaux bayesiens

La règle de Bayes

  1. $P( \vec{V} | {\bf I} ) \propto P( {\bf I} | \vec{V} ). P( \vec{V} )$ :
    1. on veut calculer la probabilité a posteriori,
    2. Le modèle génératif permet de définir la probabilité de vraissemblance de tous les modèles directs,
    3. On introduit un prior (ici perceptif) modulant cette probabilité.

De la mesure aux probabilités

  • Soit $\mathbf{I}$ une image contenant du mouvement
  • La meilleure estimation de la vitesse de translation est: $$\vec{v}^\ast = E( \vec{V} | \mathbf{I} ) = \int \vec{V} dP( \vec{v} | \mathbf{I} )$$

../050_ProbabilisticModels/model_simple.png

Bayes

  • $$P( \vec{V} | {\bf I} ) \propto P( {\bf I} | \vec{V} ). P( \vec{V} )$$

Un modèle du mouvement

  • Connaissant $\vec{V}$, on estime que $\mathbf{I}(\vec{x},t) \approx \mathbf{I}(\vec{x} - \vec{V} . dt ,t-dt)$
  • $$P( {\bf I} | \vec{V} ) \propto \exp(- \frac{C2 . \mathcal{T}(\mathbf{I}_{100})2}{2.\sigma_m^2})$$
    • avec $\mathcal{T}(\mathbf{I}_{100}) = \| \mathbf{I}_{100}(\vec{x},t) - \mathbf{I}_{100}(\vec{x} - \vec{V} . dt ,t-dt) \|$
    • Son contraste est $C$ par rapport à une référence: $\mathbf{I}=C.\mathbf{I}_{100}$
  • Hypothèse quadratique: $$P( {\bf I} | \vec{V} ) = \mathcal{N}( \vec{V_m} , \sigma_m )$$

inclusion d'un prior basse vitesse

  • $$P( \vec{V} ) = \mathcal{N}( 0 , \sigma_p )$$
  • On en déduit: $$ P( \vec{V} | \mathbf{I} ) \propto \exp(- \frac{C2 . \| \vec{V}-\vec{V_m} \|2}{2.\sigma_m2 } - \frac{ \| \vec{V} \|2}{2.\sigma_p^2 })$$

naka_rushton.png

Naka-Rushton

  • On définit le gain $$\gamma (C) = \frac{ \vec{V}(C)}{ \vec{V_m} }$$
  • On trouve: $$\gamma (C) \propto \frac{C2}{C_{50}2+C^2}$} with $C_{50} \propto \frac{\sigma_p}{\sigma_m}$$

intégration d'informations indépendantes

http://invibe.net/LaurentPerrinet/Figures/Perrinet08areadne/FigureDeux?action=AttachFile&do=get&target=model_rog.png

  • $\mathcal{N} (\vec{V}_ \bf n C \bf n )=\frac{1}{\sqrt{det(2 \pi C \bf n )}}.exp(\frac{1}{2} (\vec{V}-\vec{V}_ \bf n )T C{{\bf n}}{-1} (\vec{V} - \vec{V}_ \bf n )$

  • avec $C_

    \bf n

    $ donné par

    \begin{eqnarray*}%
    \left( \begin{array}{ccc}%
    \cos(\theta) & -\sin(\theta) \\%
    \sin(\theta) & \cos(\theta)%
    \end{array} \right)%
    \left( \begin{array}{ccc}%
    \sigma_{{\bf n}}^2 & 0 \\%
    0 & \sigma_2^2%
    \end{array} \right)%
    \end{eqnarray*}%
    
  • Indépendence des bruits de mesure: $ P( \vec{V} | \mathbf{I} ) = \Pi_

    \bf n

    P( \vec{V} | \mathbf{I} , {\bf n})=\mathcal{N} (\vec{v}_m,C)$ avec :

    \begin{eqnarray*}
    \left\{
    \begin{array}{rcl}
    C^{-1}              &=& \sum C^{-1}_{{\bf n}}\\
    C^{-1} . \vec{v}_m &=& \sum C^{-1}_{{\bf n}} \vec{v}_{{\bf n}}
     \end{array}
     \right.
    \end{eqnarray*}
    
  • d'où

    \begin{eqnarray*}%
    C_{{\bf n}}^{-1} = %
    \left( \begin{array}{ccc}
    \cos(\theta) & \sin(\theta) \\
    -\sin(\theta) & \cos(\theta)
    \end{array} \right)
    \left( \begin{array}{ccc}
    \sigma_{{\bf n}}^{-2}  & 0 \\
    0 & \sigma_2^{-2}
    \end{array} \right)
    \end{eqnarray*}
    

intégration spatio-temporelle

http://invibe.net/LaurentPerrinet/Figures/Perrinet08areadne/FigureTrois?action=AttachFile&do=get&target=fit_BRF.png

  • intégration sur la surface d'un disque:

    \begin{eqnarray*}%
    \gamma(d) = \frac{C^2}{C_e^2} . \frac{ 1- \exp(-\frac{d^2}{2.\omega^2}) }{ 1 + \frac{C^2}{C_e^2}.(1- \exp(-\frac{d^2}{2.\omega^2})) }%
    \end{eqnarray*}%
    
  • avec un champ inhibiteur

    \begin{eqnarray*}
    \gamma(d_c) = \frac{ \frac{C^2}{C_e^2} . g_e }{ 1 + \frac{C^2}{C_i^2}. g_i  + \frac{C^2}{C_e^2}. g_e}
    \mbox{ with }
    \left\{
    \begin{array}{rcl}
    g_e              &=& 1- \exp(-\frac{d_c^2}{2.\omega^2}) \\
    g_i &=& 1- \exp(-\frac{d_c^2}{2.\omega_i^2})
     \end{array}
     \right.
    \end{eqnarray*}
    
  • extensible à d'autres formes d'intégration

Animation of the formation of RFs during aSSC learning

Des probas à une définition du coût neural

$$ {\bf I} = \Psi \cdot \vec{c} + \vec{\nu} $$

$$ \mathcal{C}( {\bf I} | \vec{c} , \Psi) = -\log P( {\bf I} | \vec{o} , \Psi ) $$ $$ \mathcal{C}( {\bf I} | \vec{c} , \Psi ) = \log Z + \frac{1}{2\sigma_n2} \| {\bf I} - \Psi \cdot \vec{c} \|2 - \sum_i \log P(c_i | \Psi)$$ $$ \mathcal{C}( {\bf I} | \vec{c} , \Psi ) = \log Z + \frac{1}{2\sigma_n2} \| {\bf I} - \Psi \cdot \vec{c} \|2 - \lambda \| \vec{c} \|_0$$

  • un problème inverse insoluble (NP-complet). Soyons gourmants!

du coût neural au code neuronal

apprentissage par descente de gradient

  • connaissant le $\vec{c}$ optimal, $\forall i, \Psi_{i} $ devient $ \Psi_{i} + \eta c_{i} ({\bf I} - \Psi\cdot\vec{c}) $

codage par Matching Pursuit

  1. pour un $\Psi$ donné, on choisit $ i^\ast = \mbox{ArgMax}_i (\rho_i)$ avec $\rho_i = <\frac \bf I {\| {\bf I} \|} , \frac{ \Psi_i}{\| \Psi_i\|} > $
  2. comme $ {\bf I} = a_{i\ast} \dico_{i\ast} + \bf{R} $, utilisons $\bf{R}$ et retournons à 1.

Pour plus d'informations, voir Perrinet, Neural Computation (2010).

Figures/Perrinet03ieee/FigureZero/v1_tiger.gif

D'autres modèles de plasticité

http://topographica.org/Tutorials/images/oo_or_map.png

Apprentissage non-supervisé

  1. Apprentissage Hebbien linéaire (PCA), décorrelation
  2. Réseaux Winner-take-all, clustering
  3. Codes distribués parcimonieux (sparse coding)

Plasticité et cartes corticales

  1. Self-organizing maps, Kohonen nets
  2. Modèles de ré-organisation topographique
  3. Apprentissage de sous-variétés

Codage Neural et systèmes dynamiques linéaires

http://upload.wikimedia.org/wikipedia/en/3/3f/LinDynSysTraceDet.jpg

  • systèmes dynamiques linéaires $$ \frac{d}{dt} \mathbf{x}(t) = \mathbf{A} \mathbf{x}(t) $$
  • Les racines de $det(A- \lambda I)$ sont les valeurs propores de $A$. Le signe des racines determine la stabilité du système.
  • Pour 2-dimensions, le polynôme characteristique est de la forme $\lambda2-\tau\lambda+\Delta=0$. Les racines sont donc: $$ \lambda=\frac{\tau \pm \sqrt{\tau2-4\Delta}}{2}$$

http://upload.wikimedia.org/wikipedia/en/5/55/LinearFields.png

Codage Neural et systèmes dynamiques NON linéaires

Figures/Voges10neurocomp/FigureTrois

Codage Neural et systèmes dynamiques NON linéaires (2)

Figures/Voges09cosyne/FigureModel

Codage Neural et systèmes dynamiques NON linéaires (3)

Figures/Kremkow10jcns/FigureTrois

Des points à retenir

  • Importance de poser (toutes) les hypothèses: a-t-on compris l'ensemble du signal?
  • Compréhension de la cognition à différents niveaux d'analyse, à différentes échelles.
  • Nous quittons le siècle de l'information. Nous entrons dans le siècle de la complexité.

Comments