Clustering and Anomaly Detection

Neuronal Nets, Rinzel



Josh Moller-Mara
NYU
j.mollermara@nyu.edu

What's clustering?

  • Clustering, or grouping, is fundamental to sensory input
  • It allows us to recognize objects instead of disparate stimuli
    • e.g. Identifying speaker by voice
    • Separating objects in visual space
document.marti.zoomStuff.zoomReset(); document.marti.select.deselect(); document.marti.zoomStuff.scrollMe("#pf1");
document.marti.zoomStuff.zoomRelativeRect("#pf5", [0.099,0.110], [0.480,0.889])
document.marti.zoomStuff.selectLoc("selection-5573.0-5581.6")
General structure: Continuous attractor model
  • In this case, it's a ring shape, but it doesn't necessarily need to be
  • The input space is from $-\pi/2$ to $\pi/2$
  • The number of cells is taken to the limit of infinity (but here I'll use a discrete number)
document.marti.zoomStuff.selectLoc("selection-5767.0-5809.6")

Connectivity

Determine how cells are connected to each other.
We'd like for nearby cells to excite each other and far away cells to inhibit each other.

\begin{align} J(\theta) &= J_E(\theta) - J_I(\theta)\\ &= j_E \frac{\exp\left(m_E \cos(2\theta)\right)}{I_0(m_E)} - j_I \frac{\exp\left(m_I \cos(2\theta)\right)}{I_0(m_I)} \end{align}

Connectivity Kernel

updateMiMe(1, 2) $m_I = 1, m_E = 2$
updateMiMe(1, 3) $m_I = 1, m_E = 3$
updateJScope(2, 3, 1, 1) $m_I = 2, m_E = 3$
updateJScope(1, 2, 1, 3) $m_I = 1, m_E = 2, j_I = 1, j_E = 3$
updateJScope(1, 5, 1, 3) $m_I = 1, m_E = 5, j_I = 1, j_E = 3$
updateJScope(1, 11, 2, 6) $m_I = 1, m_E = 11, j_I = 2, j_E = 6$
updateJScopeParam() $m_I$: $m_E$:
$jI$: $jE$:

Dynamics

We have two variables, $s$ which represents synaptic activation and $r$ which represents firing. \begin{align} \tau \frac{\partial}{\partial t}s(\theta, t) &= -s(\theta, t) + r(\theta, t)\\ r(\theta, t) &= \Phi \left[ \frac{1}{\pi} \int_{-\pi/2}^{\pi/2} J(\theta - \theta')s(\theta', t) d\theta' + I(\theta, t)\right] \end{align}
\begin{align} \Phi(x) &= \frac{1}{1 + exp(-\beta[x - x_0])} \end{align}

Current-to-Rate Transfer Function

updateSigmoid(2, 0) $\beta = 2, x_0 = 0$
updateSigmoid(6, 0) $\beta = 6, x_0 = 0$
updateSigmoid(6, 1) $\beta = 6, x_0 = 1$
updateSigmoidParam() $\beta$: $x_0$:

Stimulus to current

updateStimulus(40, 20) $m_s = 40, I_s = 20$
updateStimulus(40, 10) $m_s = 40, I_s = 10$
updateStimulus(1, 10) $m_s = 1, I_s = 10$
updateStimulusParam() $m_s$: $I_s$:

Other parameters

Max Time:
Time Step:
Number of time steps:

Delta Theta:
Number of cells:

$\tau$:

Show R:
Anomaly Detector:

Model

Input
S
R
autoUpdate(50) stopUpdate() Run model
Stop
clear() Clear

Anomaly detection

  • Anomaly detection is basically detecting when something unexpected happens
  • It's used for detecting fraud, hacking attempts, among other things
  • We take a simple version of anomaly detection, where we're interested in new percepts/groups we haven't seen before.
  • By modifying the clustering network, we can achieve a simple anomaly detector

Changes to make an anomaly detector

I add a new variable $x(\theta, t)$, which is the firing rate of our anomaly detecting neurons.

\begin{align} x(\theta, t) &= \Phi(I(\theta, t)) * (1 - s(\theta, t)) \end{align}
However, this may not be biologically plausible.

Questions?

End

Notes

  • Anomaly detection time can be changed by modifying $\tau$
  • Modifying kernel can determine cluster width and ability to form
  • Threshold is modified by changing $x_0$