Logarithmic distributions prove that intrinsic learning is Hebbian (Scheler 2017)

 Download zip file 
Help downloading and running models
Accession:239003
"In this paper, we present data for the lognormal distributions of spike rates, synaptic weights and intrinsic excitability (gain) for neurons in various brain areas, such as auditory or visual cortex, hippocampus, cerebellum, striatum, midbrain nuclei. We find a remarkable consistency of heavy-tailed, specifically lognormal, distributions for rates, weights and gains in all brain areas examined. The difference between strongly recurrent and feed-forward connectivity (cortex vs. striatum and cerebellum), neurotransmitter (GABA (striatum) or glutamate (cortex)) or the level of activation (low in cortex, high in Purkinje cells and midbrain nuclei) turns out to be irrelevant for this feature. Logarithmic scale distribution of weights and gains appears to be a general, functional property in all cases analyzed. We then created a generic neural model to investigate adaptive learning rules that create and maintain lognormal distributions. We conclusively demonstrate that not only weights, but also intrinsic gains, need to have strong Hebbian learning in order to produce and maintain the experimentally attested distributions. This provides a solution to the long-standing question about the type of plasticity exhibited by intrinsic excitability."
Reference:
1 . Scheler G (2017) Logarithmic distributions prove that intrinsic learning is Hebbian. F1000Res 6:1222 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Synapse;
Brain Region(s)/Organism: Hippocampus; Basal ganglia; Cerebellum; Striatum;
Cell Type(s): Cerebellum Purkinje GABA cell;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: MATLAB; MATLAB (web link to model);
Model Concept(s): Learning; Synaptic Plasticity;
Implementer(s): Scheler, Gabriele [gscheler at gmail.com];
Search NeuronDB for information about:  Cerebellum Purkinje GABA cell; Gaba; Glutamate;
%# Copyright (C) 1995, 1996, 1997, 2005, 2006, 2007 Kurt Hornik
%#
%# This file is part of Octave.
%#
%# Octave is free software; you can redistribute it and/or modify it
%# under the terms of the GNU General Public License as published by
%# the Free Software Foundation; either version 3 of the License, or (at
%# your option) any later version.
%#
%# Octave is distributed in the hope that it will be useful, but
%# WITHOUT ANY WARRANTY; without even the implied warranty of
%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
%# General Public License for more details.
%#
%# You should have received a copy of the GNU General Public License
%# along with Octave; see the file COPYING.  If not, see
%# <http://www.gnu.org/licenses/>.

%# -*- texinfo -*-
%# @deftypefn {Function File} {} lognrnd (@var{mu}, @var{sigma}, @var{r}, @var{c})
%# @deftypefnx {Function File} {} lognrnd (@var{mu}, @var{sigma}, @var{sz})
%# Return an @var{r} by @var{c} matrix of random samples from the
%# lognormal distribution with parameters @var{mu} and @var{sigma}. Both
%# @var{mu} and @var{sigma} must be scalar or of size @var{r} by @var{c}.
%# Or if @var{sz} is a vector, create a matrix of size @var{sz}.
%#
%# If @var{r} and @var{c} are omitted, the size of the result matrix is
%# the common size of @var{mu} and @var{sigma}.
%# @end deftypefn

%# Author: KH <Kurt.Hornik@wu-wien.ac.at>
%# Description: Random deviates from the log normal distribution

function rnd = lognrnd (mu, sigma, r, c)

  if (nargin > 1)
    if (~isscalar(mu) || ~isscalar(sigma)) 
      [retval, mu, sigma] = common_size (mu, sigma);
      if (retval > 0)
	rnd = -1;
      end
    end
  end

  if (nargin == 4)
    if (~ (isscalar (r) && (r > 0) && (r == round (r))))
      rnd = -1;
    end
    if (~ (isscalar (c) && (c > 0) && (c == round (c))))
      rnd = -1;
    end
    sz = [r, c];

    if (any (size (mu) ~= 1) && ...
	((length (size (mu)) ~= length (sz)) || any (size (mu) ~= sz)))
      rnd = -1;
    end

  elseif (nargin == 3)
    if (isscalar (r) && (r > 0))
      sz = [r, r];
    elseif (isvector(r) && all (r > 0))
      sz = r(:)';
    else
      rnd = -1;
    end

    if (any (size (mu) ~= 1) && ...
	((length (size (mu)) ~= length (sz)) || any (size (mu) ~= sz)))
      rnd = -1;
    end
  elseif (nargin == 2)
    sz = size(mu);
  else
    print_usage ();
  end

  if (isscalar (mu) && isscalar (sigma))
    if  (~(sigma > 0) || ~(sigma < Inf))
      rnd = NaN * ones (sz);
    else
      rnd = exp(mu + sigma .* randn (sz)); 
    end
  else
    rnd = exp (mu + sigma .* randn (sz));
    k = find ((sigma < 0) | (sigma == Inf));
    if (any (k))
      rnd(k) = NaN;
    end
  end