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

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

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

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

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

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

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

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

 

НЕЙРОННЫЕ СЕТИ В РОБОТОТЕХНИКЕ

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

Перцептроны

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

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

​​                                           

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

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

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

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

 

Когнитрон и неокогнитрон

 

      Как результат исследований отдела коры мозга, отвечающего за обработку визуальной информации, Кунихико Фукушима (Kunihiko Fukushima) предложил нейросетевую модель под названием когнитрон. Впервые в нейросетевых моделях было предложено использовать принцип локального выделения признаков (local features detection), и, следовательно, сенсорные элементы на входе нейронной сети стали рассматриваться не как абстрактный массив вещественных значений, а как двухмерная матрица, где взаимное расположение сенсорных элементов уже влияет на работу сети. Другими словами, в работу нейросетевой модели заведомо включили информацию о взаимном пространственном расположении входных элементов. Это позволило в первом слое выделять простые локальные графические признаки, такие как углы, линии и прочее, а на следующих слоях проводить более абстрактную обработку полученной информации. Когнитрон представляет из себя иерархическую структуру, где каждый последующий слой выполняет более общую обработку и в свое информационное поле захватывает все больший участок входного рецепторного слоя. Было выявлено, что такая организация структуры сети позволяет сделать сеть боле инвариантной к различного рода искажениям входного образа, что является существующим преимуществом перед перцептроном. Неокогнитрон состоит из каскадно расположенных нейронов двух типов. Первый тип — простой тип (S-тип) — отвечает за выделение локальных признаков, второй тип нейронов — сложный тип (C-тип) — применяется для введения инвариантности к сдвигам и искажениям обрабатываемого визуального сигнала.

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

 

 

 

 

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

 

 

 

Сверточные сети

      Дальнейшим развитием архитектур нейронных сетей, ориентированных преимущественно на приложения технического зрения, явилась архитектура сверточной сети. Данный вид сети был предложен Яном Лекуном (Yann LeCun), французским специалистом в области машинного обучения и технического зрения (личный сайт Яна Лекуна доступен по ссылке). В сверточных сетях, как и в неокогнитроне, применяется последовательное расположение слоев и нейронов S- и C-типа, а на выходе сети дополнительно применяется соединенная сеть наподобие многослойного перцептрона. В отличие от неокогнитрона, для обучения применяется стандартный метод обратного распространения ошибки. Еще одной отличительной особенностью является применение принципа разделяемых весовых коэффициентов, где нейроны S-типа делят весовые коэффициенты с другими нейронами одного слоя; этот подход позволяет существенно сократить количество свободных параметров нейронной сети и уменьшить ее ресурсоемкость в отношении необходимого размера оперативной памяти. Применение общих весовых коэффициентов показывает сходство процесса вычисления значений нейронов S-типа с классической операцией свертки двухмерных матриц; это сходство и послужило названием данного типа нейронных сетей.

Спайковые сети

 

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

Рис.1. Перцептроны.

Рис.2. Сверточные сети.

Рис.3. Спайковые сети.