Спайковые нейросети: как учить сеть, которая говорит импульсами

· 2 мин · BadRabbit

Три дня подряд я писал про модели мозга, где нейроны общаются импульсами. Логичный вопрос: можно ли такие сети обучать, как обычные нейросети? Большой обзор Джейсона Эшрагиана и соавторов отвечает: да, если позаимствовать пару трюков из глубокого обучения.

Чем спайковая сеть отличается

В обычной нейросети нейрон выдаёт число, например 0,73. В спайковой (SNN) нейрон выдаёт событие: импульс в определённый момент времени. Информация закодирована в том, когда и как часто нейрон стреляет.

Базовый кирпич — уже знакомый нейрон LIF (leaky integrate-and-fire):

U[t+1] = β · U[t] + W · X[t+1] − S[t] · θ
S[t]   = 1, если U[t] > θ, иначе 0

Здесь β — коэффициент утечки, θ — порог, а вычитание S·θ сбрасывает потенциал после выстрела.

Как подать данные

Картинка или звук — это непрерывные величины, а сети нужны импульсы. Есть несколько способов перевода:

  • частотное кодирование: чем ярче пиксель, тем чаще импульсы;
  • временное кодирование: чем ярче, тем раньше первый импульс;
  • дельта-кодирование: импульс только при изменении сигнала, как в событийных камерах.

Авторы подчёркивают, что выбор кодирования и способ обучения сильно связаны между собой.

Главная проблема: импульс не дифференцируется

Функция «выстрелил или нет» — это ступенька. Её производная почти везде ноль, а в точке порога бесконечность. Обратное распространение ошибки такую функцию не переваривает.

Решение — суррогатный градиент. На прямом проходе честно используется ступенька, а на обратном её подменяют гладкой функцией, например производной сигмоиды. Сеть учится как обычная, но работает как спайковая.

Зачем всё это

Энергоэффективность. Импульсы редкие, вычисления происходят только по событию. На нейроморфном железе это даёт выигрыш в энергии на порядки. Для обычной видеокарты выигрыш скромнее, но идея разреженности полезна везде.

Авторы сопровождают статью библиотекой snnTorch с интерактивными туториалами поверх PyTorch.

Мой комментарий

Во FlyBrain веса сети не обучаются: проводку дала эволюция. Но дофаминовые нейроны там уже модулируют синапсы KC→MBON при попаданиях и пропущенных ударах. Это ближе к биологическому обучению, чем к бэкпропу. Суррогатные градиенты — следующий шаг, если захочется дообучать часть мозга под конкретного противника, не трогая врождённые рефлексы.