Rating@Mail.ru

Архитектура нейронных процессоров

Сохранить в закладки
1719
31
Сохранить в закладки

IT-специалист Андрей Иванов о soft-процессорах, сверточной нейронной сети и системе обучения нейронных процессоров

Поговорим о будущем нейронных процессоров. В настоящее время мы имеем CPU (central processing unit) — центральный процессор, который поддерживает множество вычислений и стоит на всех компьютерах. На нем работают любые программы, но когда мы используем графику или запускаем игру, то используем графический процессор, у которого ограниченный набор функциональных возможностей, но высокая оптимизация нужных функций. Такой процессор называют специализированным.

Предпосылки для создания нейросетевых процессоров связаны с нейросетевой обработкой изображения. До 2013 года такого типа обработки не было. Существовали специальные алгоритмы, которые обрабатывали видео и изображения. На ПостНауке есть лекция Виктора Лемпицкого, он упоминает сверточную нейронную сеть для обработки изображений, которые появились в 2013 году. Это осуществило прорыв. Нейронные сети реализуются на GPU (graphical processing unit). Они прекрасно работают, но хочется, чтобы они работали быстрее, потому что алгоритмы стали основываться не на обработке графики с точки зрения математических формул, а на нейросетевых алгоритмах. Под нейросетевые алгоритмы хочется иметь нейросетевой процессор.

Для создания нейросетевых процессоров необходимо заняться другими составляющими. Например, программируемые логические интегральные схемы — ПЛИС (англ. FPGA). Такие схемы содержат soft-процессор и созданы на основе логических принципов. Используя такие технологии и мегафункции, разрабатывают нейросеть на программируемой логической интегральной схеме. Проблема в том, что такая схема дорогая и напрямую ее использовать нельзя: она не приспособлена для реализации нейронных процессоров. Обычно soft-процессор идет как опция к программируемой логике, но не является основной задачей. Одно из направлений — это нейросетевой процессор на основе тензоров. В таких процессорах есть один центральный процессор и множество копроцессоров, которые основаны на тензорных вычислениях и отвечают за операции перемножения и свертки. Также там есть определенные ячейки памяти. Если взять обычные нейроны, из которых состоит нейронная сеть, там есть функция активации, которую необходимо реализовать. С такой функцией хорошо справляются маленькие таблички памяти (англ. lookup table).   

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

Нейропроцессоры появились давно, но 10 лет назад их применение было ограниченно: их использовали для конкретных функций или конкретных модулей. Это был процессор, который не мог стать массовым из-за своего ограниченного применения. Современные архитектуры нейронных процессоров рассчитаны на массовое использование. Есть модули Arduino — маленькие наборы (kit), которые продаются во многих интернет-магазинах. В таких маленьких модулях стоят нейронные процессоры, поэтому человек может что-то попробовать на них. Это первый шаг в сторону массового использования.

Обучение нейронных процессоров происходит без конкретного учителя. Есть только нейросеть, которая быстро работает. Алгоритм обучения с учителем (англ. supervised learning) предполагает наличие внешнего учителя, который прогоняет через нейронную сеть данные. Есть сет данных для обучения, и есть сет результатов, которые мы хотим получить. С помощью внешнего учителя мы корректируем коэффициенты нейронов. В каждом нейроне есть весовые коэффициенты. Мы их корректируем, чтобы результат с наименьшей ошибкой описывал то, что мы хотим получить. Затем учитель убирается, а нейроны фиксируются, и процессор может работать в жизни. Так нейронные процессоры обучают на данных, потом отключают данные и учителя, и процессор начинает работать сам по себе.

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

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

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

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

Над материалом работали

Читайте также

Внеси свой вклад в дело просвещения!
visa
master-card
illustration