Нейронный процессор. Способы организации высокопроизводительных процессоров

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

От пикселей к нейронам

Любителям компьютерных игр хорошо знаком графический процессор (ГП) - микросхема для обработки картинок и видео. В отличие от центрального процессора (ЦП) графический умеет выполнять лишь небольшое число узкоспециальных вычислительных операций, но зато делает это чрезвычайно быстро и эффективно. Это благодаря ему современные компьютерные игры демонстрируют ту реалистичную видеографику, которая так захватывает любителей электронных развлечений.

Специальные математические операции, под которые «заточен» ГП, оказались применимы и для эффективного майнинга криптовалют. Поэтому в прошлом году со взлетом интереса к биткоинам мир стал свидетелем абсолютно беспрецедентного явления - глобального дефицита видеокарт.

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

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

От конкуренции к доверию

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

По словам директора союза «Нейронет» НТИ Александра Семенова, о составе консорциума и старте его деятельности будет официально объявлено в феврале наступающего года.

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

По оценке заведующего лабораторией нейросетевых технологий и компьютерной лингвистики Московского физико-технического института Станислава Ашманова, всего в мире сейчас насчитывается около двух тысяч компаний, участвующих в гонке по созданию эталонного нейронного процессора.

Кто успеет сделать чип, который станет отраслевым стандартом, тот заработает деньги, соизмеримые с доходами нынешних лидеров рынка центральных процессоров, таких как Intel или AMD, - считает Станислав Ашманов. - Пока из этой пары тысяч стартапов во всем мире ближе всего к победе не более пяти компаний.

От харда к софту

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

Разработка отечественной аппаратуры, ускоряющей обсчет нейросетей, - безусловно, важнейший, необходимый проект при существующей конъюнктуре мирового рынка, - сказал «Известиям» Константин Трушкин, заместитель генерального директора компании МЦСТ, производящей отечественный ЦП «Эльбрус» и системные платы на его основе. - Соединение универсальных процессорных ядер со специализированными блоками, выполняющими вычисления по нейросетевым алгоритмам с высокой эффективностью, - актуальная современная тенденция. Но, чтобы такую систему можно было считать доверенной, и ядро, и нейросетевой акселератор должны быть разработаны в России.

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

Достаточно странно, что никто на Хабре не написал, но, на мой взгляд, сегодня произошло знаковое событие. IBM представила новый, полностью законченный чип, реализующий нейронную сетку. Программа его разработки, существовала давно и шла достаточно успешно. На Хабре уже была статья о полномасштабной .

В чипе 1 миллион нейронов и 256 миллионов синапсов. Судя по всему, как и в симуляции, чип имеет сходную с неокортексом архитектуру.

Чем это офигенно круто? Тем, что все сегодняшние нейронные сети должны производить астрономическое количество операций, особенно при обучении. Зачастую это упирается в производительность. В реальном времени на одном устройстве можно решать только простые задачки. Распараллеливание на кластеры и видеокарты значительно ускоряют обработку (за счёт огромных вычислительных мощностей и большого энергопотребления). Но всё упирается в главную проблему архитектуры фон Неймана: память разнесена с блоками обработки. В настоящих нейронах всё по-другому: память сама выполняет обработку (на Хабре есть классный цикл статей про ).

Если IBM начнёт выпуск таких процессоров, то многие задачи видеоаналитики можно будет решать напрямую на них. Самое простое, что приходит в голову - классификация объектов в видеопотоке (люди, автомобили, животные). Именно эту задачу IBM и продемонстрировало в качестве примера работы. В видеопотоке 400*240 30fps они выделяли людей, велосипедистов, машины, грузовики и автобусы.

Если всё настолько круто, то машины-роботы в скором времени не будут требовать лидаров, пяток видеокамер с таким чипом - и вперёд.

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

Чуть больше информации на сайте IBM Research .

З.Ю. Пардон за статью без особых подробностей в стиле Ализара, но меня и впрямь удивило, что такое знаковое событие прошло мимо Хабра.

Китайская компания Huawei анонсировала Kirin 970 - первый чипсет, имеющий выделенный нейронный процессор (NPU). Вслед за китайцами Apple показала свой A11 Bionic для моделей iPhone 8, 8 Plus и X. Этот чип, среди прочего, поддерживает технологию Neural Engine , которая, если верить представителям компании, «специально разработана для машинного обучения». Совсем недавно уже Qualcomm представила свой чип Snapdragon 845, умеющий передавать конкретным ядрам связанные с искусственным интеллектом задачи. Особой разницы в подходах компаний нет. Все зависит от доступных разработчикам уровней управления ядрами и энергоэффективности чипов.

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

Закономерное развитие?

В последних поколениях процессоров активно используется технология ARM Big .Little. Она сочетает медленные энергоэффективные ядра с более производительными, имеющими высокий уровень потребления энергии. Суть заключалась в уменьшении объемов энергии для увеличения автономности устройств. В прошедшем году нейронные чипы сделали еще один шаг в этом направлении, добавив отдельный элемент для обработки задач искусственного интеллекта, или, в случае со , задействовав отдельные маломощные ядра для этой задачи.

Мобильный процессор от Apple A11 Bionic применяет Neural Engine в сочетании с графическим чипом для ускорения работы Face ID, Animoji и ускорения работы некоторых неродных программ. Когда пользователь запускает эти процессы на новом iPhone, чип включает Neural Engine для обработки лица владельца или для проекции его мимики на анимированную картинку.

В NPU берет на себя функции по сканированию и переводу слов на изображениях, полученных с использованием Microsoft Translator. Однако пока программа – единственное стороннее приложение, работающее с адаптированной китайским производителем технологией. По заверениям Huawei, новая технология «HiAI» ускоряет работу большинства элементов чипсета и способна выполнять гораздо более широкий спектр задач, чем другие NPU.

Новые горизонты

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

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

По факту, сами мобильные процессоры не могут самостоятельно принимать решения о том, какие ядра нужно задействовать при выполнении определенных задач. Это зависит от разработчиков и производителей техники, использующих для этого сторонние поддерживаемые библиотеки. , и активно интегрируют такие решения, как TensorFlow Lite и Facebook Caffe2. Qualcomm также поддерживает новый Open Neural Networks Exchange (ONNX), а Apple недавно добавила совместимость множества новых моделей машинного обучения в своей Core ML framework.

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

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

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

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

Удивительная универсальность мозга давно является мечтой для разработчиков процессорных систем. Попытки создать машинный аналог нейронов предпринимались еще в 60-х годах прошлого века. В качестве примера можно привести персептрон Марк-1, разработанный Фрэнком Розенблаттом. Первые варианты электронных нейронов по своим возможностям были очень далеки от биологического оригинала, и интерес к данной задаче был не очень высоким. Однако в 80-е годы интегральные технологии позволили создать сложные процессоры, объединяющие миллионы транзисторов, а их топологические нормы оказались меньше, чем размеры реальных биологических нейронов. В то же время по своей эффективности при решении неформализованных задач эти процессоры по-прежнему значительно уступали мозгу. Именно это противоречие и стало толчком к развитию нейропроцессорных технологий. При этом речь шла как о создании специализированных архитектур, так и о проработке теоретических вопросов .

В чем разница между нейропроцессором и традиционным процессором?

Чем же нейропроцессоры отличаются от традиционных процессорных систем, таких как, микроконтроллеры (МК), процессоры (ЦП), цифровые сигнальные процессоры (ЦСП), графические процессоры (ГП) и т.д. Главное отличие заключается в архитектуре. Традиционные процессоры состоят из обособленных блоков, выполняющих разные функции (вычислительные и периферийные блоки, память). Нейропроцессоры имеют более «однородную» структуру, включающую множества нейронов - одинаковых и относительно простых вычислительных ячеек со встроенной памятью. Это различие хорошо видно даже на фотографии (рисунок 1).

Рис. 1. Увеличенная фотография структуры традиционного процессора и нейропроцессора

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

Таблица 1. Сравнение процессоров с традиционной архитектурой и нейропроцессоров

МК/ ЦП/ ЦСП/ ГП

Нейропроцессоры

Гарвардская архитектура или архитектура фон Неймана с разделением вычислительного ядра и памяти

Равномерная структура из одинаковых вычислительных ячеек с собственной памятью

Параллельная обработка в многопроцессорных системах

Параллельная обработка по определению

Решение Логических/последовательных/линейных задач?

Решение нестандартных/ параллельных/нелинейных задач?

Декомпозиция задач и использование объективных оценок

Решение задачи «целиком», с учетом предыдущего опыта и постоянным самообучением

Жесткая детерминация по времени, математическому аппарату, типу данных

Нет жесткого детерминизма при решении задач

Идеальны для работы с четко структурированными массивами данных

Идеальны для работы с неструктурированными и нестандартными массивами данных

Сложность масштабирования

Относительная простота масштабирования

Развитие нейропроцессоров также, как и развитие обычных процессоров, тесно связано с совершенствованием интегральных технологий. Чем меньше топологические нормы, тем больше можно уместить нейронов на кристалле, сохранив при этом низкий уровень потребления (рисунок 2).

Рис. 2. Развитие интегральных технологий определяет развитие нейропроцессоров

В настоящее время существует множество примеров более и менее удачных реализаций нейропроцессоров. Многие из предлагаемых решений разрабатывались для решения узкого круга задач и не всегда становились доступными для широкого круга разработчиков. Впрочем, судя по всему, появление доступных и дружелюбных к пользователям нейропроцессоров не за горами. В качестве примера можно привести процессоры CM1K и NM500 от компании NeuroMem.

Как устроена нейронная сеть в нейропроцессоре?

Рассмотрим устройство и принцип работы нейропроцессоров на примере CM1K и NM500 от компании NeuroMem. Эти процессоры, с одной стороны, хорошо раскрывают суть нейровычислений, а с другой стороны, обладают достаточно простой и прозрачной архитектурой.

CM1K - нейропроцессор, изготовленный по технологии 130 нм и содержащий сеть из 1024 нейронов (таблица 2). CM1K не имеет встроенного супервизора (встроенного управляющего сопроцессора) - все вычисления производятся параллельными нейронами, подключенными к параллельной шине и работающими на частоте до 27 МГц (рисунок 3). При этом общее потребление системы оказывается достаточно низким (от 0,5 Вт). CM1K имеет корпусное исполнение TQFP 16x16 мм.

NM500 - новый нейропроцессор от NeuroMem, выполненный по технологии 110 нм, и объединяющий 576 нейронов (таблица 2). Так же, как и у CM1K, у NM500 нет какого-либо встроенного супервизора (рисунок 3). Габариты корпуса данного процессора 4x4 мм (WCSP64), а потребление составляет менее 153 мВт в активном режиме.

Рис. 3. Структура нейропроцессоров CM1K и NM500 оказывается достаточно простой

Таблица 2. Сравнение характеристик нейропроцессоров C1MK, QuarkSE/Curie и NM500

Параметр

QuarkSE/Curie

Производитель

Число нейронов

Память нейрона

Дистанция (Distances)

«K ближайших соседей » (K-Nearest Neighbor, KNN)

Радиально-базисных функций (Radial Basis Function, RBF)

Расчет дистанции LSUP

Расчет дистанции L1 (Manhattan)

Каскадирование

Частота/ частота при каскадировании процессоров

Корпус

Технология

Отсутствие встроенного супервизора говорит о том, что для работы с CM1K и NM500 требуется внешний управляющий процессор, который будет снабжать нейроны данными. При этом связь осуществляется по параллельной двунаправленной 26-битной шине. По сути NM500 представляет собой цепочку одинаковых нейронов, которые подключены к общей параллельной шине и имеют связи между собой (рисунок 4).

Рис. 4. Упрощенная структура NM500

Как работает нейронная сеть в нейропроцессоре?

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

Рис. 5. CM1K и NM500 могут работать в двух основных режимах: обучение и распознавание

Каждый нейрон NM500 имеет собственную программируемую память: основную 256 байт (шаблон), контекст (8 бит), категорию (16 бит). Категория используется для классификации объектов, а контекст для разделения нейронов на подсети. Кроме того, у каждого нейрона есть собственный 24-битный идентификатор NID (neuron ID). Программирование памяти нейронов отличается от программирования обычных процессоров. В обычном процессоре программа записывается перед началом работы. Во многих нейропроцессорах (но не во всех!) программирование может осуществляться прямо в процессе работы и называется обучением.

На рисунке 6 представлен процесс обучения NM500. На первом шаге все нейроны не обучены и находятся в состоянии «пуст» (кроме первого нейрона). У них на выходе присутствует низкий сигнал «L». Первый нейрон находится в состоянии «готов к обучению». После того, как управляющий процессор проведет заполнение внутренней памяти (по параллельной шине), первый нейрон перейдет в состояние «обучен» и получит идентификатор NID=1, на его выходе установится высокий сигнал «H». При этом второй нейрон перейдет в состояние «готов к обучению». Таким образом могут быть последовательно обучены и автоматически идентифицированы все нейроны (NID=2, NID=3…). Такой подход позволяет каскадировать процессоры NM500, наращивая число нейронов практически до бесконечности.

Рис. 6. Обучение нейронов NM500 происходит последовательно

В качестве примера проанализируем работу NM500 в составе кассового терминала с функцией распознавания продуктов (рисунок 7). В процессе обучения в основную память нейронов (256 байт) были записаны шаблонные изображения продуктов, а в поле категории (16 бит) закодирован их тип: огурец, банан, морковь и т.д. Далее в процессе работы камера делает цифровую фотографию продукта. Управляющий процессор по параллельной шине передает изображение всем нейронам одновременно. Нейроны, используя встроенные алгоритмы распознавания, сравнивают содержимое своей памяти и полученное изображение. Далее нейроны сообщают управляющему процессору о результатах совпадения. Если совпадение найдено, значит задача успешно решена. Если нет, то управляющий контроллер самостоятельно или с помощью оператора может создать новый шаблон и поместить его в свободный нейрон.

Рис. 7. Использование NM500 для распознавания продуктов

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

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

Зачем нейропроцессор измеряет дистанцию в битах?

Чтобы понять, каким образом оценивается степень сходства, следует обратиться к структуре нейрона в NM500 (рисунок 8). В процессе сравнения исходное изображение проходит обработку с использованием специализированных алгоритмов (о них речь пойдет далее) и шаблона (256 байт), хранящегося в памяти нейрона. Результатом сравнения становится 16-битное число, которое помещается в регистр «Дистанция». Другими словами нейрон формирует результат не в форме «совпал» - не «совпал», а в виде 16-битного числа - дистанции, которое является мерой «похожести». Чем меньше дистанция, тем ближе исследуемое изображение к шаблону.

Рис. 8. Процесс распознавания в нейроне NM500

После расчета дистанции происходит ее сравнение со значением регистра поля интересов (influence field, IF). Если дистанция оказывается меньше, значит объект имеет высокое сходство с шаблоном. В таком случае нейрон переходит в возбужденное состояние (fire) и начинает передавать значение дистанции, а потом, если требуется, категорию (16 бит) и идентификатор нейрона (NID) управляющему процессору.

Существует возможность того, что исследуемый объект одновременно попадет в поле интересов нескольких нейронов как зеленый банан, который похож и на банан, и на огурец. Для таких случаев в NM500 реализован запатентованный механизм неразрушающего арбитража.

Для осуществления арбитража используется блок сравнения COMP. На один его вход поступают данные от нейрона, а на второй текущее состояние шины. При этом выходные линии D блока сравнения имеют тип открытый коллектор и подключены к этой же шине. Таким образом, каждый из нейронов не только передает данные на шину, но и отслеживает ее состояние. Если оказывается, что какой-то из нейронов сообщает о меньшей дистанции (большем сходстве), то нейрон с меньшим сходством автоматически отключается и выбывает из «гонки» на максимальное сходство.

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

Этот принцип арбитража называется «Winner-Takes-All», что обычно переводят, как «победитель получает все».

Описанный выше алгоритм работы соответсвует механизму радиально-базисных функций (Radial Basis Function, RBF). Его главным преимуществом является максимальная временная детерминированность - управляющий процессор узнает о совпадении (или о его отсутствии) за 19 тактов (37 тактов с вычитыванием категории). В NM500 также поддерживается механизм «K ближайших соседей» (K-Nearest Neighbor, KNN).

При использовании механизма «K ближайших соседей» (K-Nearest Neighbor, KNN) значение регистра поля интересов игнорируется, и все нейроны в любом случае переходят в возбужденное состояние. В дальнейшем управляющий процессор вычитывает значения дистанций всех нейронов, что занимает гораздо больше времени. Как было сказано выше, чтение дистанции одного нейрона занимает 19 тактов, тогда, например, для считывания дистанций 50 нейронов понадобится 950 тактов.

Зачем нужны разные алгоритмы обработки?

Необходимо также пару слов сказать о самих алгоритмах сравнения. Таких алгоритмов существует много, в частности NM500 поддерживает алгоритмы L1 (Manhattan) и Lsup (рисунок 9). Выбор алгоритма зависит от конкретной задачи:

  • Lsup позволяет обнаруживать максимальное отклонение исходных данных от шаблона. Очевидно, что такой алгоритм идеально подходит для фильтрации, а также для обнаружения аномалий.
  • L1 позволяет определять отклонение всех составляющих массива данных от соответствующих составляющих шаблона. Такой алгоритм востребован в операциях майнинга.

Рис. 9. Для вычисления дистанции NM500 использует алгоритмы L1 (Manhattan) и Lsup

Работа нейропроцессора на пальцах, в картинках и таблицах

Теперь, когда общие вопросы были рассмотрены, пришло время подробно разобрать пару конкретных примеров.

Пример 1. Распознавание одномерных массивов из двух чисел

В данном примере предполагается использовать три нейрона. Для этого их память заполняется следующим образом:

  • 1 нейрон: шаблон = (11, 11), поле интересов AIF = 16, категория CAT = 55, идентификатор NID=1;
  • 2 нейрон: шаблон = (15, 15), поле интересов AIF = 16, категория CAT = 33, идентификатор NID=2;
  • 3 нейрон: шаблон = (30, 30), поле интересов AIF = 20, категория CAT = 100, идентификатор NID=3.

Этот пример удобно проиллюстрировать в виде двухмерной графической модели (рисунок 10). Каждый нейрон представляется в виде сферы с радиусом, равным полю интересов AIF. При этом несложно отметить наличие перекрытий полей интересов.

Рис. 10. Пример 1. Графическое представление исходных данных

Рассмотрим реакцию системы на входные векторы.

Вектор (12, 12). Расчетная дистанция между нейроном 1 и вектором 1 (по алгоритму L1) вычисляется как сумма разностей составляющих вектора и шаблона: (12-11) + (12-11) = 2.

Аналогичным образом:

  • Дистанция до нейрона 2: (15-12) + (15-12) = 6.
  • Дистанция до нейрона 3: (30-12) + (30-12) = 36.

Таким образом, вектор (12, 12) попадает в поле интересов нейрона 1 и нейрона 2 (возбуждает их), но не попадает в поле интересов нейрона 3 (рисунок 11).

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

Рис. 11. Пример 1. Положение вектора (12,12)

Вектор (13, 13). Расчетные дистанции до вектора:

  • Дистанция до нейрона 1: (13-11) + (13-11) = 4.
  • Дистанция до нейрона 2: (15-13) + (15-13) = 4.
  • Дистанция до нейрона 3: (30-13) + (30-13) = 34.

Таким образом, вектор (13, 13) попадает в поле интересов нейрона 1 и нейрона 2 (возбуждает их), но не попадает в поле интересов нейрона 3 (рисунок 12). В то же время дистанция до 1 и 2 нейронов одинакова. Однако, так как категория нейрона 2 меньше, именно он выиграет гонку по принципу «победитель получает все». Управляющий процессор получит данные о совпадении от нейрона 2.

Рис. 12. Пример 1. Положение вектора (13,13)

Вектор (14, 14). Расчетные дистанции до вектора:

  • Дистанция до нейрона 1: (14-11) + (14-11) = 6.
  • Дистанция до нейрона 2: (15-14) + (15-14) = 4.
  • Дистанция до нейрона 3: (100-14) + (100-14) = 32.

Таким образом, вектор (14, 14) попадает в поле интересов нейрона 1 и нейрона 2 (возбуждает их), но управляющий процессор получит данные о совпадении от победителя - нейрона 2 (рисунок 13).

Рис. 13. Пример 1. Положение вектора (14,14)

Вектор (200, 200). Расчетные дистанции до вектора:

  • Дистанция до нейрона 1: (200 - 11) + (200 - 11) = 378.
  • Дистанция до нейрона 2: (200 - 15) + (200 - 15) = 370.
  • Дистанция до нейрона 3: (200 - 30) + (200 - 30) = 340.

Таким образом, вектор (200, 200) не попадает в поле интересов ни одного из нейронов (рисунок 14). В таких случаях процессор может инициировать запись этого вектора в незанятый нейрон и классифицировать его самостоятельно.

Рис. 14. Пример 1. Положение вектора (200,200)

Обучение новому вектору (13, 13). Допустим, требуется «выучить» новый вектор (13,13) с категорией 100. Как было показано, выше он находится на равной дистанции от нейрона 1 и нейрона 2. По этой причине при записи этого вектора нейроны автоматически сузят поля интересов до значения AIF = 8. Таким образом, реализуется самообучение нейронов.

Рис. 15. Пример 1. Самообучение нейронов при добавлении нового вектора заключается в сужении поля интересов

Пример 2. Обучение и работа двухнейронной сети с массивом из 10 чисел

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

Процесс представлен в виде таблицы 3.

Таблица 3. Пример 2. Поведение нейропроцессора при работе с массивом из 10 чисел

Операция

Лучшее совпадение

Второе по качеству совпадение

Обучение 1 нейрон

Вектор 1 = 0,1,2,3,4,5,6,7,8,9

Распознавание

CAT=1, DIST=0, NID=1

CAT=0xffff, DIST=0xffff

Вектор 2 = 0,1,2,6,4,5,6,7,8,9

Распознавание

CAT=1, DIST=3, NID=1

CAT=0xffff, DIST=0xffff

Обучение 2 нейрон

Вектор 3 = 0,1,4,3,8,5,12,7,16,9

Распознавание

CAT=2, DIST=0, NID=2

CAT=0xffff, DIST=0xffff

Вектор 4 = 0,1,2,3,4,5,12,7,16,9

Распознавание

CAT=2, DIST=6, NID=2

CAT=1, DIST=14, NID=1

Вектор 5 = 0,1,2,3,4,5,6,7,16,9

Распознавание

CAT=1, DIST=8, NID=1

CAT=2, DIST=12, NID=2

Что делать если не хватает нейронов?

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

Как уже было сказано выше, при необходимости нейронная сеть на базе процессоров NM500 может быть расширена. Для этого используется каскадирование микросхем (рисунок 16). При этом выход DCO одного процессора должен подключаться ко входу DCI следующего процессора. Количество последовательно включенных микросхем не ограничено, или скорее ограничено возможностями печатной платы сохранять целостность сигналов при работе на частотах до 20 МГц.

Рис. 16. Расширение нейронной сети за счет каскадирования процессоров NM500

Как ознакомится с возможностями NM500?

Одна из целей создания NM500 заключалась в продвижении нейропроцессоров в народные массы. Действуя в рамках этой стратегии, компания NeuroMem пошла логичным путем и выпустила Arduino-совместимый отладочный модуль NeuroTile, который делает нейропроцессор максимально доступным как для профессиональных разработчиков, так и для простых любителей электроники.

На борту у NeuroTile присутствует один или два процессора NM500, производительный и малопотребляющий микроконтроллер STM32F476 с процессорным ядром ARM Cortex-M4, ПЛИС XO3 от Lattice, Bluetooth, 6-осевой инерционный модуль (гироскоп + акселерометр), 6-осевой инерционный модуль (магнитометр + акселерометр), датчик давления, микрофон, слот для карты памяти, микросхема заряда Li-ion аккумуляторов, USB, Arduino-совместимый стек для штыревых разъемов (рисунок 17).

Рис. 17. Внешний вид и структура отладочной платы NeuroTile

Существуют Arduino-совместимые отладочные модули с NM500 от сторонних производителей, например ProdigyBoard от корейской компании nepes (рисунок 18). Отличительными чертами ProdigyBoard являются: два процессора NM500, 1Гбайт DDR3, FPGA с загрузочной Flash 20 мБит, камера, микрофон, Micro SD, USB.

Рис. 18. Внешний вид и структура отладочной платы ProdigyBoard

Заключение

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

Появление простых и дружелюбных к пользователям нейропроцессоров NM500 может стать большим шагом для популяризации неропроцессорных технологий.

Характеристики нейропроцессора NM500 :

  • Число нейронов: 576;
  • Объем памяти нейрона: 256 байт;
  • Режим работы: радиально-симметричные функции (RadialBasisFunction,RBF) и «K ближайших соседей» (K-NearestNeighbor, KNN);
  • Выходные состояния: определен, не полное совпадение, неизвестен;
  • Расчет дистанции: L1 (Manhattan), Lsup;
  • Рабочая частота: 37 МГц (одиночный процессор), 18 МГц (при параллельном включении процессоров);
  • Коммуникационные интерфейсы: параллельная шина (26 линий);
  • Напряжения питания: 3,3 В IO и 1,2 В ядра;
  • Потребление (активная работа): <153 мВт;
  • Корпус: CSP-64 4,5х4,5x0,5 мм.

Одно из наиболее перспективных направлений разработки принципиально новых архитектур вычислительных систем тесно связано с созданием компьютеров нового поколения на основе принципов обработки информации, заложенных в искусственных нейронных сетях (НС). Первые практические работы по искусственным нейросетям и нейрокомпьютерам начались еще в 40-50-е годы. Под нейронной сетью обычно понимают совокупность элементарных преобразователей информации, называемых «нейронами», которые определенны образом соединены друг с другом каналами обмена информации «синаптическими связями».

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

НС может состоять из одного слоя, из двух слоев, из трех и большего числа, однако, как правило, для решения практических задач более трех слоев в НС не требуется.

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

Возьмем классическую задачу распознавания образов: определение принадлежности точки одному из двух классов. Такая задача естественным образом решается с помощью одного нейрона. Он позволит разделить гиперпространство на две непересекающиеся и невложенные гиперобласти. Реально, входные сигналы в задачах, решаемых с помощью нейросетей, образуют в гиперпространстве сильно вложенные или пересекающиеся области, разделить которые с помощью одного нейрона не возможно. Это можно сделать, только проведя нелинейную гиперповерхность между областями. Ее можно описать с помощью полинома n-го порядка. Однако, степенная функция слишком медленно считается и поэтому очень неудобна для вычислительной техники. Альтернативным вариантом является аппроксимация гиперповерхности линейными гиперплоскостями. Понятно, что при этом точность аппроксимации зависит от числа используемых гиперплоскостей, которая, в свою очередь, зависит от числа нейронов в сети. Отсюда возникает потребность в аппаратной реализации как можно большего числа нейронов в сети. Количество нейронов в одном слое сети определяет ее разрешающую способность. Однослойная НС не может разделить линейно зависимые образы. Поэтому важно уметь аппаратно реализовывать многослойные НС.

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

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

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

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

Для аппаратной реализации НС необходим новый носитель информации. Таким новым носителем информации может быть свет , который позволит резко, на несколько порядков, повысить производительность вычислений.

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

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

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