Skip to content

Inhibition and Reflex Gating

Raul Montoya Cardenas edited this page Jul 29, 2026 · 2 revisions

Inhibition and Reflex Gating

How LiquidCortex modulates excitability and learning rate without baking domain-specific sensors into the core.

Design Philosophy

After PR #12, the package no longer reads market telemetry, GPU temperature, or FPGA buffer load inside the reservoir. Instead:

  • Inhibition is a caller-provided scalar that raises the spike threshold.
  • Reflex gating is a caller-provided scalar that can boost Fast-lobe learning.

This is the “proprioception at the edge” model: hardware or application monitors stay outside LiquidCortex; they map their stress / surprise signals into inhibition and reflex_signal.

Global Inhibition (“threshold raise”)

Constants:

Constant Value Role
V_THRESH −50 mV Baseline spike threshold
INHIBITION_GAIN 15.0 mV Threshold lift per unit inhibition
MAX_INHIBITION 3.0 Clamp on the inhibition input

Each SparseBrain step:

inhib = clamp(inhibition, 0, MAX_INHIBITION)
v_thresh_dynamic = V_THRESH + inhib * INHIBITION_GAIN

Examples:

inhibition Effective threshold
0.0 −50.0 mV (baseline)
0.5 −42.5 mV
1.0 −35.0 mV
≥ 3.0 −5.0 mV (max clamp)

Higher inhibition → harder to spike → lower instantaneous spike rate and quieter reservoir. Tests assert v_thresh_dynamic > V_THRESH after a non-zero inhibition step.

How to map external stress

Suggested (non-prescriptive) mappings for integrators:

External signal Suggested mapping
Thermal / power budget Scale into [0, 1] then clamp via MAX_INHIBITION
Queue / buffer pressure Same; keep dynamics outside the package
Risk / volatility Feed strategy-side scalar; do not hardcode venues

Reflex Gating / Flash-Learning

Only active on EnsembleBrain paths (ensemble_step! / step!(::EnsembleBrain, ...)).

Parameter Default Meaning
reflex_eta ETA (0.001) Base STDP / Hebbian rate for all lobes
reflex_signal 0.0 Caller “shock” or surprise magnitude

Logic:

if |reflex_signal| > 0.1
    Fast lobe eta = reflex_eta * 5
else
    Fast lobe eta = reflex_eta
other lobes always use reflex_eta

The Fast lobe (index 1, τ_m = 10 ms) is the only lobe that receives the 5× boost. That accelerates W_out Hebbian updates on the lobe that already carries the largest aggregation weight (0.4).

Standalone SparseBrain

step!(brain::SparseBrain, u; inhibition, reflex_eta) accepts reflex_eta directly but has no reflex_signal gate — you choose the rate each call.

Reference LSM Inhibition

The dense reference path uses a different mechanism: gain control on the recurrent drive,

gain = 1.0 - inhibit_val * 0.4
x ← tanh(gain * (W x + W_in u))

so inhibition shrinks recurrence rather than raising a LIF threshold. See Reference LSM.

Related


Last updated: July 28, 2026 Updated by: Grok Build: Grok 4.5 Package tip reference: 4e2698c (main)

Clone this wiki locally