Нейросети – штука классная, однако их потенциал до сих пор ограничивают стоимость и энергия; с этим, возможно, помогут справиться двоичные нейросети
Концепция нейросетей впервые появилась более 40 лет назад, когда учёные экспериментировали с математическим моделированием функций
За последнее десятилетие сложность и способности нейросетей значительно выросли. Совместно с беспрецедентным ростом мощностей недорогих и доступных суперкомпьютеров и графических процессоров (GPU) они вышли на передний план в качестве метода по умолчанию для решения задач, распознавания закономерностей и обнаружения аномалий. Сегодня организации используют их для составления прогнозов, исследования предпочтений пользователей, подтверждения данных и управления риском.
Но, несмотря на такое их активное использование, у них есть свои недостатки, ограничивающие их потенциал. Святой Грааль – это нейросеть, способная быстро анализировать информацию, будучи недорогой и не жадной до энергии. Создать удовлетворяющую этим критериям сеть – сложная задача, но её нужно решить, чтобы мы смогли воспользоваться преимуществами нейросетей ближе к краю IT и сетей связи, а также на оконечных устройствах.
Одна из альтернатив, которые изучают многие организации – двоичные сети. Это достаточно новая технология, но она, вероятно, станет достаточно влиятельной в 2020-м. Чтобы понять, почему, нам нужно уяснить, как работают оба типа сетей.
Как работают нейросети
Нейросети состоят из нескольких слоёв взвешенных сумм. Каждая взвешенная сумма даёт число, которое либо говорит о том, что в этих данных, вероятно, есть некий признак, или его там, вероятно, нет. Эти слои комбинируют, к примеру, необработанные изображения в наборы признаков, и рекомбинируют их, чтобы в итоге прийти к ответу.
Проще говоря, допустим, вы хотите, чтобы нейросеть могла распознавать лица на фотографиях. Система делит изображение на небольшие сегменты, а потом слои сети сканируют каждый сегмент изображения, ища признак, который их научили определять. Первый слой, допустим, может искать базовые признаки: чёрные круги, белые круги, белые прямоугольники, цвет кожи. Эти признаки просто заметить.
Второй слой может искать глаза (чёрный круг внутри белого), рты (набор белых прямоугольников, расположенных рядом, и окружённых кожей), следующей слой может искать два глаза надо ртом и с кожей вокруг. Каждый признак даёт каждому сегменту изображения оценку вероятности присутствия нужного признака в этой части фотографии. Затем эти вероятности комбинируются, и если достаточное количество слоёв считает, что разыскиваемый признак имеется на фото, то сеть делает заключение, что лицо там есть.
Рис. 1
На рис. 1 (а это фото Барака Обамы) видно, как эти слои анализа и вероятностей суммируются, позволяя сети, работающей с приближёнными значениями, выдавать относительно точный ответ.
Отметим, что такие признаки, как чёрные круги, глаза или рот не программируются человеком, а обнаруживаются сетью во время обучения. Возможно, что для поиска лиц лучше подходит другая закономерность (допустим, нос, уши или линия волос), и прелесть нейросетей в том, что их можно использовать для поиска подобных закономерностей.
Недостатки традиционных нейросетей
Проблема в том, что в поисках наивысшей возможной точности возникает необходимость иметь дело с очень подробно разграниченными уровнями вероятности, а для этих математических расчётов требуются серьёзные ресурсы. Из-за использования чисел с плавающей запятой для анализа сегментов, нейросетям требуется относительно много вычислительных мощностей, памяти и времени на работу.
Хотя в облаках есть достаточно вычислительных мощностей и памяти, многие краевые приложения не могут полагаться на облако. К примеру, робомобилям требуется принимать решения мгновенно на основе их окружения, и в этом они не могут положиться на ограниченную по пропускной способности связь.
Нейросети, работающие с числами с плавающей запятой, на конечных устройствах использовать не получается. Многие компании из-за этого используют целочисленную арифметику, что экономит большое количество памяти и вычислительных мощностей, однако есть способ лучше – именно здесь и проявляют себя двоичные нейросети.
Как работают двоичные сети
Если обычная нейросеть – это картина Пикассо, то двоичная нейросеть – это грубый карандашный набросок.
Если нейросети присваивают каждому сегменту точно подсчитанную вероятность, то двоичные нейросети, как следует из их имени, сводят вероятные значения к чёрно-белому варианту, то есть, либо к -1 (если сеть считает, что признака в этом фрагменте нет), либо +1 (если он есть).
Теперь взвешенная сумма оценивает каждый признак либо положительно (умножая на +1), либо отрицательно (умножая на -1), и вместо полных перемножений нам нужно рассматривать лишь умножения на +1 и -1.
Рис. 2
Такой подход жертвует определённой долей точности, но мы можем возместить потери, немного увеличив сеть. Двоичные сети по своей сути гораздо проще.
По сравнению со своими двойниками с плавающей запятой, им требуется в 32 раза меньше места для хранения числа (1 бит вместо 32), и в сотни раз меньше энергии, из-за чего они куда как более применимы для «краевых приложений» типа робомобилей, когда сами устройства могут обработать информацию, не привлекая облачные вычисления.
Обычно в двоичной сети всё же встречаются слои с небинарными значениями, особенно на входе, и иногда на выходе. На входе изображение будет, скорее всего, полноцветным, и его нужно будет численно интерпретировать перед тем, как начнутся двоичные слои. И на выходном слое тоже всегда будет небинарный выход.
Будущее двоичных сетей
Такая простота открывает обширное поле для коммерческого применения в условиях, когда эффективность решает всё. На встроенном чипе с большей вероятностью получится хранить коэффициенты двоичной сети, чем сети с коэффициентами с плавающей запятой. Производителям процессоров нужно будет взять на вооружение эту технологию и обеспечить поддержку двоичных сетей.
2020-й с большой вероятностью станет годом двоичных сетей. Компании активно работают над реализацией этой технологии, а ПО, требуемое для обучения двоичных сетей, быстро развивается. Мы, скорее всего, очень скоро увидим первое реальное применение этой технологии, и на краевых устройствах появятся недорогие чипы с низким энергопотреблением, способные классифицировать изображения или другие данные.
Таким образом, следующее поколение технологий будет основано на простоте.
Автор: Вячеслав Голованов