1. Сравнение и преимущества нейронных систем перед математическими алгоритмами
Все знают, что такое нейрон. Более-менее знакомы с нейронными сетями. Все имеют представление, что такое искусственные нейронные сети, по крайней мере, слышали о них. Я поставил себе задачу вполне поверхностную — показать в этой публикации возможности применения нейронных сетей в робототехнике и их преимущество перед другими системами, логическими. Напомню лишь, что искусственные нейронные сети построены по принципу работы естественных нейронных сетей, которые имеются у живых существ. Это могут быть насекомые, птицы, рыбы или животные, стоящие более высоко в интеллектуальном развитии. К примеру, как обезьяны или человек. Всех их объединяет одно, это нейронная сеть. У кого-то она более развита и более сложная. У кого-то находится в примитивном виде и работает по принципу «раздражитель-реакция». Кстати сказать, и высокоинтеллектуальные животные, такие, как человек, очень часто в повседневной жизни действуют по принципу «раздражитель-реакция». Если мы обожжем руку, то не думая, резко её отдёргиваем. Тут не нужно много ума, чтобы это сделать. Но случаются в жизни ситуации, когда требуется применить то, под чем мы подразумеваем слово «интеллект». А что это такое, никто не знает. Есть несколько формулировок, описывающих интеллект. Но, для робототехника это абстракция, от которой пользы ноль, с помощью которой не построишь «интеллектуального» робота.
Применение нейронных сетей в робототехнике вроде бы, очевидно. Если мы взглянем на окружающую нас живую природу, то у нас, во многих случаях, вызывает удивление то обстоятельство, что живые организмы, наделённые даже простейшей нейронной сетью, могут выполнять те задачи, на которые не способны наши современные компьютеры. Но на самом ли деле преимущества нейронных систем пред логическими системами так уж очевидны? Чего умеют нейронные сети и чего не умеют логические системы? Робототехник вправе знать, что получает он и его робот или робототехническая система, которая будет управляться нейронной сетью. Когда говорю логические системы, я имею в виду все другие математические алгоритмы обработки поступающей информации. Ведь нейронная сеть тоже является алгоритмом.
На самом деле, очень сложно было придумать некий тест, или тесты, где бы происходило сравнение нейронных систем с логическими системами. То есть тест, где бы было наглядно показано преимущество нейронных сетей перед другими алгоритмами. И знаете, это оказалось не так-то просто. Встал очевидный вопрос, по каким критериям или показателям сравнивать системы. Проще всего было бы сравнить между собой разные нейронные сети. Действительно, их можно сравнивать по таким показателям, как общее количество нейронов в сети, или сколько нейронов в каждом слое, или сколько всего слоёв в нейронной сети. Являются ли эти сети прямого распространения, или сетями с обратной связью и так далее и тому подобное. Ну, а как сравнить нейронную сеть и логические систем?.. То есть как сравнить два алгоритма? Оказалось, что наглядней и продуктивней сравнивать нейронные сети и логические системы лучше с помощью косвенных признаков. С помощью таких показателей, как «экономичность» и «трудоёмкость». Для робототехника при постройке робота экономичность является важным фактором. Если робот будет слишком дорогим, его никто не купит. В дальнейшем для сравнения систем по этим двум параметрам я неоднократно буду использовать систему от Google, которую они установили на свои роботоризированные автомобили. Мощная передовая система. Это то, что нам нужно для сравнения. Вроде бы, у Google мощнейшая и дорогая технология, но их автопилот не может ездить, когда идёт дождь или снег. Да, да, это именно так, если кто не знал. У каждой технологии есть свои плюсы и минусы. Вот у технологии Google есть такой минус. Как и любой другой робот, автопилот Google тоже является роботом, которому для работы в окружающем пространстве необходимо получать информацию о ней. Для этого служат датчики и сенсоры.
На этой картинке видно, чтобы автопилот выполнял свои функции, необходимо наличие некоторых входных устройств или датчиков. На картинке сравниваются две системы, одна из них построенная на нейронной системе, а другая, как у Google — на логических системах. В центре каждой системы расположен обрабатывающий блок, или искусственные «мозги», которые получают информацию вот с этих датчиков. Очень важный момент. Если мы уберём один из датчиков, то система не сможет эффективно и безопасно выполнять свои задачи. Если автопилот гугл лишится лидара, то система не сможет строить 3D-модель окружающего пространства, а значит, лишиться возможности ориентироваться в этом пространстве. Если же убрать систему позиционирования, то автопилот не сможет определить, в какой точке координат он находится, и просто будет неккоректно выдавать сигналы управления на исполнительные органы. Что в свою очередь может привести к аварии и человеческим жертвам. Поэтому вот этот набор датчиков для каждой системы является минимальным и необходимым.
Обратите внимание. Вот у системы, которую используют ребята из Google, больше датчиков. Как я уже говорил, такое количество датчиков является минимально необходимым, чтобы система выполняла поставленные задачи, эффективно управляла автомобилем. То есть система Google уже дороже вот этой нейронной системы, у которой минимально необходимый набор датчиков меньше. Вы можете сказать, что датчики, которые использует компания Google дешевле, чем датчики, которые установлены на этой системе? К сожалению, это не так. Наоборот, датчики от Google в разы дороже, чем датчики, используемые нейронной сетью. Один лидар только стоит 30 тысяч долларов. Это относится и к датчику системы позиционирования. Здесь стоит не обычный датчик, который используется в обычных автомобилях. Это система позиционирования наиболее высокоточная, а значит — и более дорогая. Для нашей системы возможно использование обычного датчика позиционирования, которые используются автомобилистами.
На основании представленных данных можно сделать промежуточный вывод. Если вы на свои роботы будете устанавливать нейронную сеть, которая будет управлять роботом, то для выполнения некой задачи или задач вам понадобится меньшее количество датчиков или сенсоров и стоимость этих датчиков будет дешевле. А в некоторых случаях, в разы дешевле. Это видно на примере автопилота с нейронной сетью, где не нужно использовать лидар и высокоточную систему позиционирования.
Устанавливать нейронную сеть экономически более выгодно. Тем более, что она будет выполнять те задачи, на которые не способны логические системы. Как я говорил, автопилот гугл не умеет управлять в дождь и снег.
Коль мы заговорили о системе, которую используют ребята из Гугл, хотел бы поинтересоваться, каким количеством информации оперирует эта система за единицу времени. Кто-нибудь знает? Каждую секунду в системный блок автопилота поступают данные с камер, радаров, лидара, с датчиков позиционирования и ускорения. Для Google эта цифра равна 1 ГБ в секунду. Каждую секунду автопилот обрабатывает 1 ГБ информации. Для сравнения – рядовой пользователь смартфона потребляет где-то 3-4 ГБ данных в месяц. Наверняка, человеческий
Знаете, после сравнения этих цифр мне пришла идея разработать некий тест, напоминающий широко известный тест определения IQ человека. Только этот тест будет определять уровень «интеллекта» искусственных алгоритмов. Определение уровня интеллекта будет определяться не по мощности компьютера, а по способности системы выполнить некий функционал или задачу, используя минимум поступающей информации. Как я уже говорил выше, для выполнения некоторой задачи для каждой отдельной системы требуется необходимый минимум, поступающей через датчики информации. Если поступающая информация будет меньше необходимого минимума, то роботизированная система не сможет выполнить поставленную перед ней задачу. И та система, которой для выполнения задачи нужно меньше всего входящей информации, будет считаться наиболее «интеллектуальней» или умней.
Следующим, важным фактором для робототехника, как я думаю, является возможность быстрого создания и разработки интеллектуального робота. Давайте посмотрим, сколько труда и времени нужно разработчику, для создания робота. Точнее, не самого робота, а алгоритма, который будет управлять этим роботом. Давайте опять сделаем некоторый сравнительный тест между двумя системами. У робототехника стоит задача построить робота. Возьмем опять автопилот, который может распознавать дорогу и управлять автомобилем по этим дорогам.
Но дороги бывают разные. Давайте посмотрим самую простую дорогу, в плане написания алгоритма для распознавания изображений. Эта дорога находится в верхнем левом углу. Здесь имеется резкий контраст между полотном дороги, оно тёмное, почти чёрное и разделительными полосами, они ярко белые. Написать алгоритм, с помощь которого робот будет управлять автомобилем по этой дороге, сможет даже школьник.
На этих фотографиях видны разные дороги и тропинки. Отличие этих дорог друг от друга состоит в том, что чем больше дорога сливается с фоном, с местностью по которой она проходит, к примеру, вот как здесь – еле заметная дорога, рисунок в нижнем правом углу, тем сложнее, для робототехника или программиста, будет написание алгоритма, по которому робот будет распознавать эту дорогу. При этом разных дорог, как я уже говорил, много. И, к сожалению, в задачах распознавания математическими методами нет универсальных решений. Поэтому каждый раз от программиста будет требоваться огромный труд в написании очередного алгоритма для распознавания изображений. Но есть задачи ещё более сложные, где требуется труд большой команды. И эти задачи недоступны для небольшой группы робототехников и тем более для одного человека. К примеру, задачи, связанные с распознаванием предметов и манипуляциями с ними.
Если посмотреть на эту схему выше, из нее видно, если робототехник использует математический метод распознавания изображений, то за выбор особенностей распознаваемых объектов лежит на программисте. Это самая важная и необходимая задача — распознать объект. Без этой процедуры робот не сможет выполнять поставленную перед ним задачу. А чтобы робот смог распознать объект, программисту нужно во время программирования выделить особенности распознаваемого объекта. Так вот, если исключить математический метод обработки и распознавания изображений, который является трудоёмким процессом и требует специфических знаний, то за выбор особенностей распознаваемых объектов будет отвечать нейронная сеть.
Таким образом, исключается трудоёмкий метод обработки изображений и максимально облегчается задача для робототехника. От робототехника потребуется наличие жизненного опыта для обучения нейронной системы. Все знают, что стирать вещи лучше доверить стиральной машинке, так быстрее и проще, чем стирка руками. Освоив метод обучения нейронной сети, здесь получается то же самое.
2. Краткий обзор по нейронным сетям
После сравнения нейронных систем с логическими системами, преимущество нейронных систем стало очевидно. Нейронные системы выигрывают и в плане дешевизны, и сильно сокращают время на разработку мощных и интеллектуальных роботов. Теперь одному человеку становится доступно то, что раньше было доступно только большим коллективам и лабораториям. Тогда почему системы управления роботами на базе нейронных систем не популярны? Почему работы над такими системами ведутся только крупными компаниями и институтами?
Дело в том, чтобы разработать более или менее серьёзную нейронную сеть, которая выполняла бы серьёзные задачи, необходима работа именно крупных университетских коллективов или компетентных робототехнических команд. Если кто-то пробовал разрабатывать и обучать нейронную сеть, он знает, что робототехник всегда сталкивается перед необходимостью решать многие неоднозначные и специфические вопросы. К примеру: сколько использовать слоёв в нейронной сети, какое количество нейронов использовать в каждом слое, какие связи необходимо устанавливать между слоями, как определять веса? Можно потратить время и на некоторые вопросы найти простые ответы в соответствующих учебниках. На некоторые вопросы нет очевидных и однозначных ответов. В итоге, от робототехника потребуется кропотливая и тяжёлая экспериментальная работа с нейронной сетью по поиску ответов на неоднозначные вопросы. Да, с помощью нейронных сетей исключается трудоёмкий математический метод обработки и распознавания изображений, но с другой стороны, робототехник сталкивается со сложностью задач по разработке структуры нейронных сетей, которые находятся на уровне университетских коллективов. Как разрубить этот заколдованный круг? Как сделать доступным использование нейронных сетей в робототехнике?
3. Гордиев узел
Когда автолюбитель покупает автомобиль, он не задумывается над тем, какое передаточное число используется между коробкой передач и двигателем автомобиля. И тем более ему не интересно, какой химический состав стали используется в зубчатой муфте автомобиля. Многие этого не знают. Этого и не надо знать. Это не должно входить в компетенцию автолюбителя. Так вот, робототехник не должен сталкиваться с проблемами и задачами по разработке нейронных сетей. Он не должен думать над тем, какое там количество нейронов использовать в каждом слое, или сколько слоёв использовать в нейронной сети. Это не должно входить в компетенцию робототехника. Подобными вопросами должны заниматься профессионалы.
Я выскажу своё мнение по поводу возможности разработки конкурентоспособных нейронных сетей отдельными программистами, или небольшой группы программистов и, наверное, вас разочарую. Кому-нибудь известен Чарльз Дарвин и знаком с его трудами о происхождении видов? Кто-нибудь сталкивался с работами академика Павлова. Кто-нибудь читал его лекции? Это тот самый Павлов, собаки которого пускали слюну на загоревшую лампочку по выработанному условному рефлексу. Возможно, кто-то читал Ухтомского «Учение о доминанте», или знаком с «Теорией функциональных систем» Петра Анохина. К сожалению, без соответствующих знаний в нейрофизиологии и нейробиологии невозможно построить более-менее приличную нейронную систему. Не стоит расстраиваться, на долю робототехника остаётся более благородное занятие по обучению нейронных сетей. А чтобы обучение было доступным для каждого, даже не робототехника, а каждого пользователя, необходим понятный и простой интерфейс для обучения нейронных роботов.
Данный метод обучения нейронных систем ничем не должен отличается от метода управления радиоуправляемых моделей. Должно быть всё тоже самое. Тот же интерфейс, те же самые движения. Интерфейс должен представлять собой тот же самый набор движений, который имеется на радиоуправляемых моделях. Всё должно быть просто, удобно и ничего лишнего. Для наглядности, хочу привести вот эту работу.
Данный интерфейс устанавливается на компьютер. Изображение дороги, по которой будет передвигаться машинка, загружается через камеру, установленной на машинке. Если это не машинка, а, к примеру, манипулятор с техническим зрением (камерой), загружается фото того предмета, с которым будут производиться манипуляции. Здесь изображена дорога, относительно которой машинка будет двигаться прямо. В нижнем левом углу интерфейса изображено две ячейки, которые предназначены для того, чтобы задавать сигнал управления на соответствующие двигатели. Каждая ячейка отвечает за определённый двигатель. Если машинка должна ехать прямо по этой дороге, то сигналы в этих двух ячейках должны быть по нулям. Можно задать другие сигналы. К примеру, вместо нулей, установить по единице в каждую ячейку. Можно поставит по числу 3.5 (три с половиной). Главное, чтобы в каждой ячейки, цифры были одинаковы.
Это один из примеров, который наглядно показывает насколько просто и быстро, если сравнивать с другими методиками обучения нейронных сетей, может быть обучение этих сетей. Это более медленный интерфейс по обучению нейронных сетей, чем тот, о котором я говорил. Тем не менее, для обучения управлению машинкой по этой дороге достаточно нескольких минут. Так вот, при определённом навыке, робототехник сможет обучать нейронную систему даже по этому интерфейсу десяткам операций в день. По-моему, с внедрением на рынок подобных простых и понятных интерфейсов для быстрого обучения нейронных роботов нейронные системы займут существенную долю в такой перспективной области, как робототехника. Мне это кажется очевидным.
Автор: ronzhin