Введение в шипованные нейронные сети

Spiking Neural Networks, отсюда и SNN, считается следующим поколением искусственных нейронных сетей. Тем не менее, я думаю, что не будет дикой догадкой предположить, что большинство специалистов по данным не слышали об этом, поскольку это определенно не вызвало шума, который обычно сопровождает такого рода заявления. В этой статье я постараюсь объяснить, почему он так считался и почему он не произвел ожидаемого шума (пока?). Я также коснусь некоторых практических и алгоритмических вопросов, связанных с обучением SNN — насколько я видел, эти аспекты отсутствуют в других (немногих) блогах о SNNS.

Прежде чем мы начнем, одно замечание — это большая и тяжелая тема, или, если можно на секундочку поэтично, — «страна» SNN огромна, и это не моя родина, я здесь всего лишь гость, турист, поэтому в этой статье мы не будем исследовать его глубоко и достигать каждого его уголка, а в основном «летим» над ним — смотрим на него с высоты. Тем не менее, мы посетим его основные «достопримечательности» и коснемся основных понятий. Для тех, кто хочет углубиться, я добавлю список рекомендуемой литературы в конце.

Инновация SNN

Эта статья написана во времена расцвета Глубоких Искусственных Нейронных Сетей (также известных как ANN) — Их производительность все ближе и ближе к человеческим возможностям или даже превосходит их — предположительно, chatGPT мог бы написать эту статью сам, DALL-E создает произведения Искусство и ИНС есть практически везде — от супермаркетов до больниц. Итак, в чем проблема с этим? Если это работает так хорошо, то зачем нам еще одно поколение?

Ответ прост — эти ИНС очень большие, даже огромные. У них есть множество параметров, которые требуют обучения, и это вызывает две основные проблемы:

  1. Большое количество параметров означает, что им также нужно большое количество данных для обучения, чтобы избежать переобучения.
  2. Эти огромные сети потребляют много ресурсов — памяти, вычислений и мощности. Это верно для обучения, естественно, но в некоторых случаях также и для логического вывода. Например, предполагается, что в беспилотных транспортных средствах ИНС будет работать на локальных процессорах в условиях низкого энергопотребления и ограниченных возможностей памяти и вычислений.

Итак, мы ищем гораздо более эффективную нейронную сеть с точки зрения ресурсов без ущерба для производительности. Судя по всему, прямо под нашим носом есть один, ой, извините, точнее, прямо над нашим носом, и вы это тоже уже знаете — это человеческий мозг

Человеческий мозг — самая эффективная нейронная сеть на сегодняшний день! Весь человеческий мозг потребляет около 20 Вт — примерно столько же потребляет средний ноутбук. Просто для сравнения: один графический процессор Nvidia GeForce Titan X работает только на 250 Вт. Не говоря уже о том, что ChatGPT потреблял столько электроэнергии, сколько 175 000 человек.

Итак, как мозг это делает? что делает его таким эффективным? ну, все дело в шипах.

«Свет — это то, что мы видим, когда сетчатка преобразует фотоны в всплески. Запахи — это то, что мы ощущаем, когда испаряющиеся молекулы превращаются в шипы. Осязание — это то, что мы чувствуем, когда нервные окончания превращают тактильное давление в спайки. Мозг торгует мировой валютой спайка». [1]

Пикирующий нейрон

Спайки, также известные как потенциалы действия, представляют собой резкие электрические импульсы амплитудой примерно 100 мВ и длительностью 1 мс, которые передаются по аксону передающего нейрона через синапсы к связанным с ним нейронам (см. рис. 2). Они играют центральную роль в межклеточных коммуникациях как в электрических, так и в химических синапсах в головном мозге. Как ясно показано на рисунке 1, когда нейрон получает электрический ток от своих пресинаптических связанных нейронов, потенциал напряжения его мембраны со временем возрастает, пока не достигнет порога выброса, затем он вызовет выброс, и мембранный потенциал будет сброшен. до значения покоя. Таким образом, нейрон проходит через рефрактерный период, в течение которого невозможно испустить второй спайк.

Мы не будем углубляться в нейробиологию, так как нас больше интересуют математические модели биологического нейрона, которые пытаются предсказать время возникновения спайков. Существует много моделей, но я сосредоточусь на (дырявой) модели нейронов «интегрируй и активируй», которая является одной из самых популярных. Эта модель описывает мембранное напряжение как функцию электрической стимуляции, заданной в качестве входного тока. Это одна из возможных формул этой модели:

U(t) — мембранный потенциал клетки в момент времени t, X(t) — вход, бета — скорость распада. S равно 1, если в момент времени t-1 был всплеск, в этом случае порог всплеска θ вычитается из мембранного потенциала, S равен 0, если в момент t-1 не было всплеска, и тогда срок сброса не действует. На рисунке 3 ниже показано, как спайковый нейрон включается в SNN, для простоты мы игнорируем свойство «дырявого».

Если задуматься, все искусственные нейронные сети предыдущих поколений — поверхностные и глубокие, сверточные и трансформирующие — состоят из одних и тех же строительных блоков, одних и тех же «атомов» — одного и того же искусственного нейрона, описанного выше, который линейно комбинирует входные и пропускает его через некоторую функцию активации. Напротив, SNN построены из нейронов другого типа с другой динамикой. Если вы еще не убеждены в новаторском характере SNN, посмотрите это видео, в котором моделируются полносвязные, сверточные нейронные сети и нейронные сети с пиками — посмотрите на постоянную активацию первой по сравнению с волной пиков, путешествующих по сети.

Итак, что делает SNN более эффективными, чем ANN?

  1. Эффективное представление — в SNN мы не передаем вещественные числа высокой точности, которые должны быть представлены 32 или 64 битами, но с пиком/без пика, и которые могут быть представлены только 1 битом — 0 или 1.
  2. Эффективное кодирование информации. Информация может быть закодирована по определенному времени спайка, поэтому скорость спайка может быть очень низкой, всего один спайк на нейрон. Кроме того, мы можем легко использовать всплески для кодирования изменений и событий, которые сами по себе являются эффективным способом представления информации — давайте посмотрим на пример на рисунке 4 — интересная информация здесь — это движущийся автомобиль, в отличие от фона, который движется. относительно статичен. Мы можем закодировать только событие движения автомобиля, изменение положения автомобиля, и мы можем сделать это с помощью всплесков — всплеск, только если есть изменение. Собственно, так и работает человеческий глаз — кодируя изменения в сцене.
  3. Эффективные вычисления. В SNN многие нейроны могут простаивать и не пикировать, поэтому вместо передачи полного вектора со значениями активации с плавающей запятой мы передаем разреженный вектор из 0 и 1. Обратите внимание, что эти нейроны не «мертвые», как могли бы быть. в ANN, но они все еще учатся и готовы к скачку, как только их порог будет достигнут. Более того, как видно на рисунке 3, поскольку на вход нейрона поступают бинарные спайки — нам фактически не нужно вычислять произведение W на вход, как в ИНС, а просто брать значение W, тем самым уменьшая число умножений.

Все вышеизложенное приводит к одному выводу — основным преимуществом SNN является разреженность, а разреженность, конечно, требует меньше ресурсов. Если вы хотите глубже изучить преимущества SNN в плане эффективности, перейдите к ссылке 4.

Обратите внимание, что у SNN есть еще одно преимущество — нейроны срабатывают только после накопления достаточной активации, чтобы преодолеть свой порог. Это действует как сильная регуляризация L1 («лассо»), которая позволяет получать только надежную и значимую информацию, а не низкий прерывистый шум. Следовательно, SNN менее склонны к переоснащению и требуют меньше данных для обучения.

Обучение SNN

Итак, как же учится SNN? Давайте сначала подумаем о «святой троице», которая определяет обучение каждой модели — ввод, вывод и алгоритм обучения — и сравним SNN с ANN в этих аспектах. Как видно из таблицы на рисунке 5, в то время как вход и выход ИНС представляют собой вещественные числа, вход и выход SNN — пики. Это то, что проходит в сети, как мы видели. Но как нам справиться с шипами, когда наш компьютер работает только с числами? Как мы можем преодолеть этот разрыв?

Начнем с методов кодирования числового ввода в пики. Методов немного, но для простоты я остановлюсь на наиболее распространенных:

Кодирование входных данных для шипов:

  1. Кодирование скорости — значение каждой функции будет рассматриваться как частота срабатывания и, таким образом, будет преобразовано в последовательность всплесков с количеством всплесков на всех временных шагах, определяемым распределением Пуассона или биномиальным распределением.
  2. Задержка или временное кодирование. Значение каждой функции будет определять время для первого всплеска, например. яркий пиксель даст ранний всплеск по сравнению с более темным. В основе этого лежит предположение, что чем раньше прибывает спайк, тем больший вес он несет и тем больше информации передает постсинаптическим нейронам.

На рис. 6 показаны 2 вышеуказанных метода для данных MNIST — изображений рукописных цифр.

Обратите внимание, что в этих методах предполагается, что данные имеют временное измерение — для последовательности всплесков или синхронизации всплесков, как ясно показано на рисунке выше. Если в данных его изначально нет, то он добавляется искусственно, повторяя данные количество нужных временных шагов. Это, конечно, не использует пространственно-временную природу спайков, поэтому с этим направлением мысли было создано более ориентированное на спайки использование камеры DVS — Dynamic Vision Sensor. Этот тип камеры фиксирует только изменения в сцене, поэтому потребляет гораздо меньше энергии, чем традиционные камеры на основе кадров, которые производят выборку каждого пикселя с фиксированной частотой. На рисунке 7 мы видим пример для набора данных DVS-Gestures, в котором ведущий делает какой-то физический жест рукой. Мы видим, что закодирована только движущаяся рука, в то время как остальная часть тела и фон не меняются, поэтому не появляются на картинке.

Точно так же выходное декодирование определяет, как мы интерпретируем паттерн возбуждения выходных нейронов:

  1. Кодирование скорости выбирает выходной нейрон с самой высокой частотой срабатывания или количеством импульсов в качестве прогнозируемого класса.
  2. Латентное (или временное) кодирование выбирает выходной нейрон, который срабатывает первым, как предсказанный класс.

Наконец, нам нужен алгоритм обучения. В ИНС этот вопрос достаточно четкий — обучение с учителем по правилам обратного распространения! Короче говоря, сеть выдает прогнозы, которые сравниваются с метками. Наша цель состоит в том, чтобы свести к минимуму потери в сети — «расстояние» между предсказаниями и истинной истиной, и мы делаем это, «проходя» вниз по градиентам этой функции потерь и корректируя веса сети в соответствии с этими градиентами, которые передаются всем. обратный путь от последнего слоя к первому. Теперь вы можете спросить: если это так хорошо работает для ANN, почему бы не сделать это и для SNN? Давай попробуем! Во-первых, нам нужна какая-то функция потерь, эквивалентная выбросу.

Целевые функции (потери) на основе всплесков:

  1. На основе частоты — сравните самую высокую частоту пиков или напряжение мембраны с таковыми для целевого класса.
  2. На основе задержки — сравните время всплесков.

А как насчет использования обратного распространения для оптимизации?

Ну, это проблема! с 2 аспектов:

  1. Практический аспект: во-первых, наша функция потерь зависит от спайков, как объяснялось ранее, а спайки являются функцией мембранного потенциала. Проблема в том, что эта функция является ступенчатой ​​функцией (как показано на рисунке 8), поэтому градиенты не могут распространяться обратно через эту функцию, используя цепное правило, поскольку градиент этой функции либо равен 0, либо бесконечен. . Во-вторых, с ресурсной точки зрения БП предполагает высокоточные и трудоемкие операции.
  2. Концептуальный аспект. Нет убедительных доказательств обратного распространения в мозгу! Считается, что потенциал действия течет только в одном направлении — вперед, и не похоже, чтобы мозг сохранял какую-либо нейронную активность для использования в последующем обратном проходе.

Итак, как мы можем обучить SNN без «традиционного» обратного распространения ошибки?

Методы обучения SNN

  1. Теневое обучение — или преобразование ANN в SNN — идея состоит в том, чтобы обучить обычную ANN, а затем преобразовать ее в SNN. Используйте веса и закодируйте выходные данные активации в качестве частоты стрельбы. Он обеспечивает точность, сравнимую с ИНС, но для преобразования высокоточных активаций в пики требуется высокая частота пиков в течение большого количества временных шагов.
  2. Обратное распространение на основе всплесков с использованием суррогатных градиентов —идея здесь состоит в том, чтобы аппроксимировать недифференцируемую ступенчатую функцию другой функцией, которая является дифференцируемой, например. сигмоид, как показано на рисунке 8. Этот метод хорошо работает с неглубокими архитектурами, но теоретически оптимизация не гарантируется, особенно с крупномасштабными наборами данных.
  3. Используйте мембранный потенциал или синхронизацию пиков в качестве функции для получения соответствующей функции потерь.
  4. Облегченный BP — это группа методов, которые обновляют веса каждого слоя локально и независимо, то есть не полагаясь на информацию от других слоев, расположенных дальше. В каждом слое вычисляются локальные градиенты для локальной потери локальных предсказаний относительно локальных псевдоцелей. См., например, DECOLLE в исх. 6

Все эти методы могут дать ответ на практический аспект, но не на концептуальный аспект биологического правдоподобия. В следующем разделе я представлю один метод, который это делает.

Пластичность, зависящая от времени выброса (STDP)

Этот метод вдохновлен процессами синаптической пластичности в мозге, которые были описаны законом Хебба в упрощенной, но броской фразе — «Нейроны, которые возбуждаются вместе, соединяются вместе». Обратите внимание, что на самом деле речь идет не ободновременности, а о причинно-следственной связи. Это означает, что если нейрон A, связанный с нейроном B, срабатывает и возбуждает B, который в результате также срабатывает, синапс, связь между нейроном A и нейроном B укрепляется, а это означает, что теперь есть более высокая вероятность того, что спайки A снова возбудит B. Это стойкое усиление синапсов, основанное на таком паттерне активности, называется ДП — долговременное потенцирование. Противоположное явление также существует и называется LTD — длительной депрессией и описывается фразой «Те, кто срабатывает не синхронно, теряют связь», что означает, что связь между нейронами ослабевает, когда это соединение спайков разрывы шаблона. В SNN сила связи между нейронами переводится в веса связей, поэтому мы можем обновлять веса в соответствии с этой формулой, например: (существует много формулировок и вариантов правил обновления веса STDP)

A+ — это скорость обучения для первого правила («вместе запускаем, подключаем вместе»), τ+ — постоянный интервал времени, A_ и τ_ используются для второго правила.

Обратите внимание, что обновление STDP выполняется неконтролируемым образом — оно не зависит от метки и не требует никакой функции потери! Сети, использующие правило обновления STDP, как правило, довольно неглубокие (не более нескольких уровней), и поэтому они обычно тестируются на «более простых» наборах данных, таких как MNIST и Cifar10, а не на ImageNet или Cifar100. Два ярких примера таких сетей реализованы в библиотеке SpikeTorch — обе имеют 3 сверточных слоя (и объединяющие слои после них), но один имеет дополнительный линейный классификатор, обученный с помощью меток, поверх сети, а другой использует метки непосредственно для сигналы вознаграждения/наказания. Сигнал вознаграждения действует как обычный STDP, а сигнал наказания выполняет обратный STDP — «анти-STDP».

Заключительные мысли

Я начал эту статью с труб и валторн, увенчав SNN следующим вундеркиндом, так где же все ликующие толпы? Ну почему это все еще ниша? Что ж, никто не идеален, и это верно и для SNN — у них есть несколько ограничений:

  1. Для эффективной работы SNN требуется нейроморфное оборудование — специализированное оборудование, доступное пока только для исследовательских целей.

2. Обучение по-прежнему остается проблемой — единого известного метода нет.

3. Разрыв в точности между ИНС и СНС сокращается, но сохраняется противоречие между высокой точностью, низкими ресурсами и биологической достоверностью.

Несмотря на эти ограничения и хотя SNN определенно не в мейнстриме, они все еще живы и здоровы, завоевывая все большую популярность, особенно в области управления автономными роботами, где они могут повысить свою относительную силу пространственно-временной обработки и низкое потребление ресурсов. .

На самом деле, возможно, SNN и ANN просто «не играют в одну и ту же игру», что означает, что было бы «несправедливо» и неразумно сравнивать производительность SNN с производительностью ANN на тех же статических наборах данных на основе кадров, которые использовались для эталонного теста ANN. полностью использовать возможности пространственно-временной обработки импульсных нейронов. Вместо этого производительность SNN следует измерять на нейроморфных наборах данных, которые управляются событиями и содержат больше динамической временной информации, такой как созданная DVS. SNN могут достигать лучших результатов с точки зрения производительности и вычислительных затрат на такого рода данные. Будущее SNN заключается в создании крупномасштабных и более функционально подходящих наборов данных, чтобы обеспечить широкий и справедливый эталон для SNN.

Об авторе

Ницан Таль — специалист по обработке и анализу данных в команде X-Sight Data Science Research & Delivery Team в NICE Actimize. NICE Actimize — мировой лидер в области управления финансовыми преступлениями и соблюдения требований, предлагающий комплексный набор решений по борьбе с отмыванием денег, мошенничеством и соблюдением нормативных требований. Являясь крупнейшим поставщиком решений для борьбы с финансовыми преступлениями, рисками и соблюдения требований для региональных и глобальных финансовых учреждений и государственных регулирующих органов, NICE Actimize находится в авангарде инноваций в области искусственного интеллекта и машинного обучения.

Рекомендации

  1. Эшрагян, Джейсон К. и др., 2021. Обучение импульсных нейронных сетей с использованием уроков глубокого обучения.
  2. Mozafari M. et al., 2019. SpykeTorch: эффективное моделирование сверточных нейронных сетей с пиками не более чем с одним шипом на нейрон
  3. Чжан Д. и др., 2022 г. Последние достижения и новые рубежи нейронных сетей с шипами
  4. Добавление нейронных сетей для будущего с низким энергопотреблением — запись в блоге Даниэля Мюллер-Коморовска.
  5. Кашу Ю. и др., 2022. Нейронные сети с шипами и их приложения: обзор.
  6. Кайзер Дж. и др. др., 2020. Динамика синаптической пластичности для глубокого непрерывного локального обучения (DECOLLE).
  7. Лобо Дж. Л. и др., 2020. Нейронные сети Spiking и онлайн-обучение: обзор и перспективы
  8. Амир А. и др., 2017. Маломощная, полностью основанная на событиях система распознавания жестов.
  9. Базовое руководство по Spiking Neural Network для глубокого обучения — сообщение в блоге Владимира Ляшенко @ cnvrg.io
  10. Расширение нейронных сетей в сценариях потокового обучения — сообщение в блоге Иисуса Л. Лобо, посвященное науке о данных