Импульсные нейронные сети на примере SNN-технологий от компании BrainChip

Нейронные сети используются для решения различных неформализованных задач, таких, например, как распознавание изображений, фильтрация звука и, даже, поиск брака на производстве. В настоящий момент наблюдается рост интереса к нейронным технологиям, что приводит к их дальнейшему развитию. В частности появляются практические реализации импульсных нейронных сетей (SNN), которые по своему потенциалу превосходят ставшие традиционными сверточные нейронные сети (CNN). В данной статье проводится краткий обзор SNN-технологий от компании Brainchip
1700
В избранное

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

В последнее время наблюдается огромный интерес к теме искусственного интеллекта. Речь идет не о компьютерных играх и роботах-пылесосах, а о по-настоящему серьезных проектах, которые используют различные технологии для решения неформализованных задач. Спектр таких задач оказывается огромен – от распознавания изображений и музыки в интернете, до фильтрации и обработки звуков и изображений в промышленности. Понятие искусственного интеллекта неразрывно связано с нейронными сетями (рис. 1).

Положение нейронных сетей в машинном обучении

Рис. 1. Положение нейронных сетей в машинном обучении [1]

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

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

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

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

 Рис. 2. Сравнение традиционной вычислительной системы и нейронной вычислительной сети [1]

Рис. 2. Сравнение традиционной вычислительной системы и нейронной вычислительной сети [1]

Нейронная сеть объединяет множество относительно несложных вычислительных ядер – нейронов, которые могут работать параллельно, тем самым обеспечивая высокую эффективность при выполнении параллельных вычислений.

В настоящее время наиболее распространенной является архитектура сверточных нейронных сетей (СНС или convolutional neural network, CNN) (рис. 3). Максимально подробное описание «на пальцах» такой архитектуры приводится в статье Дафны Корнелиз «An intuitive guide to Convolutional Neural Networks»[2]. Недостатком СНС-сетей является необходимость выполнения огромного количества математических операций и вычислений. Это приводит к высокому потреблению и к сложности интегральной реализации.

Сравнение импульсной нейронной сети (SNN) и сверточной нейронной сети (CNN) [1]

Рис. 3. Сравнение импульсной нейронной сети (SNN) и сверточной нейронной сети (CNN) [1]

Потенциальной заменой для сверточных нейронных сетей уже в ближайшем будущем могут стать импульсные нейронные сети (ИНС или Spiking neural network, SNN).

Данные в ИНС-сети представляются в виде импульсов (спайков) одинаковой амплитуды и длительности. При этом информация может кодироваться с помощью частоты, фазы, порядка следования и позицией импульсов. Каждый нейрон характеризуется некоторым потенциалом (по аналогии с биологическими нейронами). Если нейрон принимает импульсы – потенциал увеличивается. При превышении некоторого порога происходит возбуждение, и нейрон сам генерирует импульс (пачку импульсов). После генерации спайка нейрон возвращается в невозбужденное состояние.

Сейчас существует множество различных способов кодирования данных. Рассмотрим лишь некоторые из них [3] (рис. 4):

  • Кодирование задержкой до первого импульса (Timetofirstspike) (рис. 4A). В данном случае информация кодируется временем задержки от начала воздействия до появления первого импульса.
  • Кодирование порядком следования (Rank-ordercoding) (рис. 4B). В данном случае информацию несет непосредственно порядок следования импульсов от группы нейронов.
  • Кодирование относительной задержкой импульсов (Latencycode) (рис. 4С). Этот способ похож на первый вариант, но в данном случае информация кодируется относительной задержкой импульсов внутри группы нейронов.
  • Резонансное кодирование (Resonant burst model) (рис. 4D). В данном случае, каждый нейрон реагирует только на пачку стимулирующих импульсов определенной частоты.
  • Синхронное кодирование (Codingbysynchrony) (рис. 4E). В данном случае речь снова идет о групповом кодировании, в котором каждый нейрон кодирует один бит информации. В идеале все нейроны должны генерировать (или не генерировать) спайки одновременно, но допускается некоторая рассинхронизация в рамках временного окна, как показано на рис. 4E.
  • Фазовое кодирование (Phasecoding) (рис. 4F). Вариант синхронного кодирования, при котором информация кодируется фазовой задержкой относительно некоторого опорного сигнала.

Способы кодирования данных в импульсных нейронных сетях (SNN) [3]

Рис. 4. Способы кодирования данных в импульсных нейронных сетях (SNN) [3]

Таким образом, стоит отметить, что ИНС-сети работают с импульсными данными, в отличие от СНС-сетей, которые работают с матрицами чисел (рис. 3). С одной стороны, такое представление информации оказывается ближе к биологическому «оригиналу», а с другой стороны, при правильной реализации сеть демонстрирует лучшие результаты как по эффективности, так и по уровню потребления.

Одним из лидеров по созданию SNN-технологий является компания BrainChip. В настоящий момент решения BrainChip реализуют нейронные сети прямого распространения (feed-forward), в которых данные передаются в одном направлении без сигналов обратной связи.

Сейчас компания работает в двух направлениях:

  • Реализация ИНС-сетей на программном уровне для дальнейшего использования на обычных компьютерах в виде программы BrainChip Studio;
  • Реализация ИНС-сетей в виде микросхемы нейропроцессора AkidaNSOC. Запуск микросхемы в производство планируется осуществить в следующем году.

Внешний вид программы BrainChip Studio представлен на рис. 5. Данная программа позволяет выполнять поиск людей или объектов по фотографиям, что делает ее пригодной для широкого спектра приложений.

Внешний вид программы BrainChip Studio [1]

Рис. 5. Внешний вид программы BrainChip Studio [1]

BrainChip Studio строится на фирменном программном движке Akida Execution Engine, который реализует ИНС-сеть, содержит преобразователи данных и модель обучения (рис. 6). Кроме того, программа включает вспомогательные инструменты, например, программу, помогающую обнаруживать лица на фотографиях, инструменты визуализации и т.д. Благодаря ИНС-сети BrainChip Studio позволяет распознавать объекты в условиях высокого уровня шума и с исходными изображениями со сверхнизким разрешением от 24х24 пикселов.

Составляющие BrainChip Studio [1]

Рис. 6. Составляющие BrainChip Studio [1]

Алгоритм работы BrainChip Studio изображен на рис. 7. В данном случае источником видео данных является камера. Программа с помощью вспомогательных инструментов выполняет поиск лиц на фотографии, после чего выполняется преобразование данных в импульсный формат, понятный ИНС-сети. Далее выполняется обработка каждого изображения в ИНС-сети. Изображение разыскиваемого человека может быть обработано параллельно. В конце программа производит сравнение результатов и обнаруживает совпадения.

Принцип работы BrainChip Studio

Рис. 7. Принцип работы BrainChip Studio [1]

Как видно из описания, BrainChip Studio предполагает обучение «на лету». Это весьма важно в данном конкретном случае, ведь, например, в полиции не будет большого количества времени и данных на выполнения долгого обучения нейронной сети для распознавания лица злоумышленника, появившегося в толпе.

BrainChip Studio предполагает эмуляцию ИНС-сети силами обычного процессора. Естественно, это негативно сказывается на быстродействии. Если требуется увеличить эффективность работы, то рекомендуется воспользоваться ускорителем BrainChip Accelerator, который повышает производительность BrainChip Studio в 6 раз (рис. 8).

Ускоритель нейронных вычислений BrainChip Accelerator

Рис. 8. Ускоритель нейронных вычислений BrainChip Accelerator [1]

Следующим шагом, анонсированным компанией BrainChip, станет выпуск микросхемы нейропроцессора Akida NSOC. Ориентировочно процессор появится в следующем году. Конкретных данных по стоимости, корпусному исполнению и используемому технологическом процессу пока нет. Тем не менее, компания предоставила некоторые данные по архитектуре Akida NSOC.

Akida NSOC будет объединять ИНС-сеть, конвертер данных, встроенный управляющий процессор, систему питания, интерфейс для подключения внешних датчиков, интерфейс памяти, коммуникационные интерфейсы, интерфейс для каскадирования (рис. 9). Рассмотрим кратко каждый из блоков.

Структура нейронного процессора Akida NSOC

Рис. 9. Структура нейронного процессора Akida NSOC [1]

По заверениям производителя ИНС-сеть нейропроцессора Akida NSOC будет содержать 1,2 миллиона нейронов и 10 миллиардов синапсов (рис. 10). По прогнозам это позволит превысить производительность существующих нейропроцессоров от IBM и Intel в 100 раз.

Akida NSOC отличается большим количеством нейронов

Рис. 10. Akida NSOC отличается большим количеством нейронов [1]

Akida NSOC будет поддерживать различные виды аналоговых и цифровых датчиков (камеры, микрофоны, DVS и др.). Для их подключения предусмотрены соответствующие интерфейсы. Для приведения поступающих данных от внешних сенсоров в импульсную форму будет использоваться встроенный кодек, поэтому никаких дополнительных внешних кодеков не потребуется.

Встроенный управляющий процессор позволяет микросхеме Akida NSOC работать в автономном режиме, без внешнего управления. Для взаимодействия с внешней Flash и ОЗУ предусмотрен интерфейс памяти.

Akida NSOC также может выступать и в качестве сопроцессора. Для работы с внешним процессором предполагается использовать различные интерфейсы: PCI-Express, USB, Ethernet, CAN и UART.

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

К сожалению, полной информации по нейропроцессору Akida NSOC в открытых источниках нет, но если производитель выполнит все свои обещания, Akida NSOC может стать существенным прорывом в области нейронных технологий.

Источники

  1. Документация с официального сайта brainchipinc.com
  2. Daphne Cornelisse. An intuitive guide to Convolutional Neural Networks. https://mediufreecodecamp.org/an-intuitive-guide-to-convolutional-neural-networks-260c2de0a050
  3. Ponulak, Filip (2010). «Introduction to spiking neural networks: Information processing, learning and». Acta neurobiologiae experimentalis 71: 409-433.

Сравнение позиций

  • ()