AIDT 온디바이스 STEM 뉴로모픽 스파이킹 신경망(SNN) 스파이크 타이밍 의존 가소성(STDP) 시냅스 서보 엔진

리키 적분-발화(LIF) 막전위 동역학, 나노초 스파이크 시간차 헤브 학습(LTP/LTD), 초저전력 엣지 지능 10,000Hz C# 엔진

1. 개요: 3세대 인공지능 SNN과 시냅스 가소성(STDP)

기존의 인공신경망(ANN)은 연속적인 실수 활성화 함수를 사용하여 막대한 행렬 곱셈 전력을 소모하는 반면, 뇌의 생물학적 신경 회로를 모방한 스파이킹 신경망(Spiking Neural Network, SNN)은 사건 기반(Event-driven) 비동기 스파이크 신호만을 전달하여 마이크로와트(\(\mu\text{W}\)) 수준의 초저전력으로 작동합니다. 생체 뇌의 지속적인 자율 학습 메커니즘인 스파이크 타이밍 의존 가소성(Spike-Timing-Dependent Plasticity, STDP)은 시냅스 전 뉴런(Pre-synaptic)과 시냅스 후 뉴런(Post-synaptic)의 스파이크 발화 시간차(\(\Delta t = t_{post} - t_{pre}\))에 따라 시냅스 가중치(연결 강도)를 강화(LTP)하거나 약화(LTD)시켜 인과적 연상 기억을 스스로 형성합니다.

2. 리키 적분-발화(LIF) 및 이중 지수 STDP 수식 모델

시냅스 후 뉴런의 세포막 전위 \(V(t)\)는 세포막 저항 \(R_m\), 용량 \(C_m\), 시냅스 전류 \(I_{syn}(t)\)에 의해 결정되는 리키 적분-발화(Leaky Integrate-and-Fire, LIF) 미분방정식을 따릅니다:

\[ \tau_m \frac{dV(t)}{dt} = - (V(t) - V_{rest}) + R_m \sum_j w_j \sum_k \delta(t - t_j^{(k)}) \]

막전위가 임계값 \(V_{th}\)에 도달하면 출력 스파이크가 방출되고 막전위는 \(V_{reset}\)으로 초기화되며 불응기(Refractory Period)로 진입합니다. 시냅스 가중치 변동분 \(\Delta w\)는 스파이크 타이밍 \(\Delta t = t_{post} - t_{pre}\)에 따라 비대칭 이중 지수 함수로 결정됩니다:

\[ \Delta w = \begin{cases} A_+ \exp\left( -\frac{\Delta t}{\tau_+} \right), & \Delta t > 0 \quad (\text{Long-Term Potentiation, LTP - 인과적 선행 발화}) \\[6pt] - A_- \exp\left( \frac{\Delta t}{\tau_-} \right), & \Delta t < 0 \quad (\text{Long-Term Depression, LTD - 비인과적 후행 발화}) \end{cases} \]

선행 뉴런이 후행 뉴런의 발화를 유도했을 때 시냅스가 강화되고(\(A_+ > 0\)), 그 반대의 경우 시냅스가 약화(\(A_- > 0\))됨으로써 헤브의 학습 법칙(Hebbian Rule)이 시간 인과율 차원에서 완성됩니다.

3. 0-Alloc C# 뉴로모픽 STDP 시냅스 서보 엔진 구현

스파이크 타임스탬프를 순환 링버퍼로 추적하여 10,000Hz 주기로 시냅스 가중치를 갱신하는 무할당 ref struct 아키텍처입니다:

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.Neuromorphic
{
    public readonly ref struct SynapseState
    {
        public readonly float MembranePotentialMv;
        public readonly float SynapticWeight;
        public readonly float LastDeltaWeight;
        public readonly bool EmittedPostSpike;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public SynapseState(float vm, float w, float dw, bool spiked)
        {
            MembranePotentialMv = vm;
            SynapticWeight = w;
            LastDeltaWeight = dw;
            EmittedPostSpike = spiked;
        }
    }

    public ref struct NeuromorphicSnnStdpServo
    {
        private const float VRestMv = -70.0f;
        private const float VThMv = -55.0f;
        private const float VResetMv = -75.0f;
        private const float TauMembraneSec = 0.020f; // 20 ms
        private const float TauStdpPlusSec = 0.020f;  // 20 ms
        private const float TauStdpMinusSec = 0.025f; // 25 ms
        private const float APlus = 0.015f;
        private const float AMinus = 0.018f;

        private float _membraneVm;
        private float _synapticWeightW;
        private float _lastPreSpikeTimeSec;
        private float _lastPostSpikeTimeSec;
        private float _lastDw;

        public NeuromorphicSnnStdpServo(float initialW = 0.5f)
        {
            _membraneVm = VRestMv;
            _synapticWeightW = MathF.Clamp(initialW, 0.0f, 1.0f);
            _lastPreSpikeTimeSec = -100.0f;
            _lastPostSpikeTimeSec = -100.0f;
            _lastDw = 0.0f;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public SynapseState UpdateServo(float currentTimeSec, bool preSpike, float backgroundCurrent, float dt = 0.0001f)
        {
            // Update pre-synaptic arrival
            if (preSpike)
            {
                _lastPreSpikeTimeSec = currentTimeSec;
                _membraneVm += _synapticWeightW * 8.0f; // Excitatory Post-Synaptic Potential (EPSP)

                // Post-before-Pre STDP (LTD)
                float deltaT = _lastPostSpikeTimeSec - currentTimeSec; // negative
                if (deltaT > -0.08f && deltaT < 0.0f)
                {
                    _lastDw = -AMinus * MathF.Exp(deltaT / TauStdpMinusSec);
                    _synapticWeightW = MathF.Clamp(_synapticWeightW + _lastDw, 0.0f, 1.0f);
                }
            }

            // LIF Membrane leak integration
            _membraneVm += (-(_membraneVm - VRestMv) + backgroundCurrent) * (dt / TauMembraneSec);

            bool emittedSpike = false;
            if (_membraneVm >= VThMv)
            {
                emittedSpike = true;
                _lastPostSpikeTimeSec = currentTimeSec;
                _membraneVm = VResetMv;

                // Pre-before-Post STDP (LTP)
                float deltaT = currentTimeSec - _lastPreSpikeTimeSec; // positive
                if (deltaT > 0.0f && deltaT < 0.08f)
                {
                    _lastDw = APlus * MathF.Exp(-deltaT / TauStdpPlusSec);
                    _synapticWeightW = MathF.Clamp(_synapticWeightW + _lastDw, 0.0f, 1.0f);
                }
            }

            return new SynapseState(_membraneVm, _synapticWeightW, _lastDw, emittedSpike);
        }
    }
}

4. 실시간 뉴로모픽 LIF 막전위 및 STDP 가중치 학습 인터랙티브 시뮬레이터

시냅스 전-후 스파이크 시간 간격(\(\Delta t\))을 조절하여 시냅스 가중치의 장기 증강(LTP) 및 억제(LTD) 곡선을 실시간으로 관측하십시오.

5. 교육 연계 및 차세대 지능형 반도체 실무적 의의

  • 2022 개정 교육과정 생명과학 I: 흥분의 전도와 전달, 뉴런의 휴지 전위와 활동 전위, 시냅스 간극에서의 신경전달물질 분비 및 이온 채널 개폐.
  • 정보 / 인공지능 기초: 생체 두뇌 모방 가중치 갱신 법칙, 뇌 가소성(Neuroplasticity)과 비지도 학습, 에너지 효율적 이벤트 기반 컴퓨팅.
  • 국방 MUM-T / 초저전력 엣지 지능: 소형 UCAV 탑재 뉴로모픽 비전 센서(DVS), 밀리와트급 실시간 목표물 탐지 및 추적.