Posts about talks

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!

références

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.

Neurosciences Computationelles: émergence dans des réseaux d'information

Plan du cours

  1. Neurosciences computationnelles?
  2. Une première application fonctionnelle: détection du mouvement utilisant des modèles probabilistes.
  3. Réseaux optimaux pour le calcul de la représentation d'une image
  4. Vers des implantations neurales...

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é.