Робот управляемый нейронной сетью
Привет всем тем, кто это читает. Я хотел бы рассказать Вам об одном своем эксперименте. Собственно описанная ниже идея не нова и наверняка приходила в голову многим людям, увлекающимся данной темой. На самом деле от простых размышлений до практической реализации прошло достаточно много времени. Начать работу мешало абсолютная уверенность в том, что в голове все работает, и вроде как реализовывать все в железе не имеет смысла. Но набравшись «смелости» и приступив к делу, все оказалось намного сложнее. На пути к достижению к цели пришлось немного повозиться. Об этом и история…
1) Установить возможность запуска нейронной сети на контроллере Arduino.
2) Установить пригодность ее работы в поставленных условиях.
3) Определить наилучшую топологию сети.
Для решения поставленной задачи были выбраны следующие комплектующие:
1) Контроллер –Arduino 328
2) Колесная платформа – самодельная.
3) Датчик расстояния – HC – SR04
4) Датчик света – фоторезистор.
5) Датчик звука – китайский микрофон с логическим выходом.
6) Нейронная сеть – 2 слоя, 5 нейронов в каждом
Так же были сформированы дополнительные требования:
1) Сеть должна обучаться отдельно (На ПК).
2) Параметры сети должны загружаться в контроллер на лету, без перепрашивки.
Забегая немного вперед, хочу пояснить третий пункт. С топологией «проиграться» практические не удалось, оперативная память контроллера наложила ограничения. Изначально топология сети была трехслойной (5 – 8 — 5).
Чему и как будем учить?
Из конструкции робота видно, что даже без использования нейронной сети, его возможности ограничены. Максимум что можно «логически» запрограммировать, это обход препятствий с выбором наилучшего направления, включение/выключение робота по звуку или уровню освещенности и. т.д, одним словом в интернете масса подобных поделок. Но вот какая штука – все это быстро надоедает,… Что если захотелось что- то поменять, например реакцию на свет или звук или получить некоторую непредсказуемость в поведении. Конечно, можно предусмотреть все это в программе контроллера, данные грузить с SD карточки, а непредсказуемость получить простым рандомом. Но мы не ищем легких путей…:).
Делать будем так: пусть все выше перечисленные задачи решает нейронная сеть.
Обучать будем методом обратного распространения ошибки. Кстати о том что такое нейронная сеть и алгоритм обратного распространения можно прочитать здесь и здесь
Коэффициенты сети будут переноситься в контроллер посредством SD карты.
Как же это работает?
Был заложен следующий принцип работы:
На компьютере:
1) Создается обучающая выборка
2) Сеть обучается до тех пор, пока глобальная ошибка на всех выборках не станет равной нулю.(на самом деле будет немного не так)
3) После обучения создается отчет и файл для контроллера.
4) Файл записывается на карточку.
На Arduino:
1) После включения с SD карточки загружаются параметры сети.
2) После загрузки сеть готова к работе.
3) На основании показаний датчиков формируется «вектор данных».
4) Этот вектор подается на вход сети.
5) После просчета, выходной вектор сети подается на дешифратор.
6) Дешифратор, в зависимости от результата работы сети, определяет тип команды и выполняет ее.
7) Цикл повторяется с пункта 3,
Вектором данных я буду называть одномерный массив определенной размерности, элементы этого массива – числа. Скажем, что в нулевом элементе будет храниться расстояние до препятствия справа, в первом расстояние в прямой видимости и.т.д.
Почему же все-таки вектор? Когда я только начинал разбираться с нейронными сетями я сформировал для себя следующие понятие: «любой набор данных есть точка в N мерном пространстве». В нашем случае пространство будет размерности 5. Да, да такие бывают :).
Вот точное расположение данных в массиве:
Собственно куда же без картинки 🙂
Честно говоря, я не очень сильно хочу уделять сильное внимание этому пункту. Причина этого желания в том, что сам робот в первую очередь не является объектом исследования а его реализация банальна. Единственное о чем я хочу рассказать, это об драйвере двигателей L293D. Эту замечательную микросхему я использовал в силу отсутствия готового шилда. Честно говоря, в электронике я не селен и подключил ее по первой загугленной схеме. В итоге оказалось, что для управления направлением вращения приходилось переводить ножку в состояние INPUT. Это было весьма не привычно, и я до сих пор не знаю чем это может аукнуться…
Насчет колес…в качестве редукторов были использованы серво — машинки, переделанные на постоянное вращение. Все остальные примочки как датчик расстояния и SD card модуля были подключены по стандартным схемам.
Да, качество сборки на 3 🙂
Даже не знаю с чего начать. С одной стороны тут нет ни каких велосипедов все стандартно:
Начнем с программы для ПК:
Написана она, а точнее они на C#. Потому что это достаточно простой язык и я часто использую его в своей работе, но не об этом. В программах нет классов все сделано в «функциональном» стиле для более простого понимания начинающим. Как Вы успели понять программ две: Первая это простой интерфейс, код которого не заслуживает тут присутствовать ибо та все очень просто. Будет только скриншот:
Тут все предельно просто: движками крутим значение на входах, выбираем мысленно реакцию на эти данные из предложенных пяти и ставим галочку. Жмем «добавить».
В результате работы получается файл вот с таким содержанием:
Слева двоеточия что подаем на вход, справа то, что хотим получить.
После того как мы заполнили этот файл, нажимаем кнопку «Создать» и он автоматически передается другой программе. Собственно та другая программа выполняет две функции: учит сеть на предъявленных данных и формирует отчет. Начнем с конца:
Вот такой отчет хороший:
Хороший он потому, что строки Input Res и NET OUT совпадают. Это говорит о том, что при подачи на вход Input data мы хотели бы получить Input Res, а получаем NET OUT. Так что о качестве работы сети мы будем судить из этого отчета.
Теория гласит, что при обучении сети образцы стоит предъявлять в случайном порядке. К чему я это – в моей практике это, на первый взгляд, незначительное утверждение в действительности влияет на скорость сходимости алгоритма. Так же на скорость влияет и первоначально выбранные веса. Бывало что с первой попытки алгоритм не сходился, приходилось по несколько раз запускать обучение для того что бы добиться результата.
Я не знаю стоит ли приводить полный код программы вместе с парсером файлов и созданием выходного файла для контроллера. Так что приведу на свой взгляд только самые важны моменты в одном листинге:
Собственно ни чего сложного. Как мы видим из кода в качестве функции активации нейронов выбрана пороговая функция с параметром срабатывания 0,5. Это позволяет избавиться от производных при обучении, а на контроллере не тратить время на вычисление значения логистической функции. Хотя при этом мы жертвуем временем сходимости алгоритма (это не научная теория, а лишь мои наблюдения на практике).
Да, возможно кто то заметил, что в процессе обучения стоит константное число итераций. Это связанно с тем, что иногда сеть проваливается в локальные минимумы, при этом ошибка равно нулю, а вот качество обучения порой ужасное. Так что пришлось сделать так… Возможно я что то делаю неверно… если кто то заметит, скажите пожалуйста.
Собственно код Arduino:
Запустить сеть на Arduino возможно и она даже будет работать. Временами конечно же начинаются глюки. Я думаю они связаны с обучающей выборкой. Я не тратил особо много времени на ее подборку и по этому не могу утверждать точно. Возможно в скором времени будут внесены некоторые коррективы. Ну а сейчас пока вот так. Спасибо за внимание.
5 трендов робототехники: нейросети, распознавание речи и эмоций, навигация и системы безопасности
Робот — это не только «Валлиподобное» существо, но любое автоматическое устройство, которое осуществляет определенные действия по запрограммированному алгоритму. Роботы — это голосовые помощники, экскурсоводы в некоторых музеях, манипуляторы на производствах. Масштабы интеграции роботов в человеческую жизнь заставляют правительства и компании думать о повышении уровня безопасности и защиты человека от возможных ошибок роботов. Директор по развитию компании «Промобот» Олег Кивокурцев разобрался в главных вызовах робототехнической индустрии в 2020 году и собрал ключевые кейсы внедрения роботов в нашу жизнь.
Нейросетевые технологии
Каждый день выходят новости о новых применениях нейронных сетей. В США создается нейросеть, анимирующая 2D-изображения: она обрабатывает данные об объекте, отделяет его от фона и других объектов, а затем создает 3D-модель и механизм ее движения, заполняет фон, который ранее был закрыт объектом. В Израиле нейросеть определяет интеллект по форме черепа — система анализирует черты лица человека и на их основе определяет, какие особенности заложены в его ДНК. В России создают нейросеть, способную торговать криптовалютой — анализировать рынок и делать прогнозы.
Искусственная нейронная сеть (ИНС) — математическая модель (а также ее программное или аппаратное воплощение), построенная по принципу организации и функционирования биологических нейронных сетей — нервных клеток живого организма. Это понятие возникло при изучении процессов, протекающих в мозге, и при попытке смоделировать эти процессы.
Сфер применения этой технологии достаточно много. Например, нейросеть должна отличать собак и кошек. Для настройки алгоритма дается большой массив подписанных изображений кошек и собак. Нейросеть анализирует признаки объектов на этих картинках и строит распознавательную модель, которая минимизирует процент ошибок относительно эталонных результатов.
Кстати, когда Google просит вас подтвердить, что вы не робот, и отметить светофоры или автобусы, вы проходите не элементарный тест на когнитивные способности, а обучаете нейросеть различать объекты дорожной инфраструктуры. Система будет использоваться в беспилотниках.
Применение нейронных сетей ничем не ограничено, однако свое наиболее широкое применение в робототехнике нейросети нашли в голосовых помощниках и взаимодействии с людьми. Нейросети обеспечивают точность ответа на вопросы. Качество голосового помощника зависит именно от них. Среди голосовых помощников можно выделить Alexa от Amazon, Cortana от Microsoft и Siri от Apple. Среди русских голосовых помощников — «Алиса» от Яндекса.
Чем более качественно обучена нейросеть, тем лучше она подбирает ответы на запросы собеседника: понимает обратный порядок слов, контекст и непрямой запрос. Именно это направление станет одним из самых перспективных в разработках будущего. Поскольку интернет меняет социальные процессы, скорость передачи информации и вообще темп жизни колоссально выросли. Но человек становится все более одиноким. Станет актуален робот-компаньон, который будет удовлетворять потребность в общении, понимании, поддержке.
В Японии уже появляются цифровые компаньоны, функционал которых выходит за рамки простых консультантов. Они становятся помощниками, друзьями и даже женами. Запад тоже не отстает: 47 млн жителей США (а это почти 20% всего взрослого населения) пользуются умными колонками, Amazon Echo или Google Alexa. Причем, исходя из последних исследований, пользуются умными колонками, не только чтобы давать им команды. 25% берут их с собой спать, 20% шутят с ними, 15% используют как няню для детей — колонка рассказывает сказки и помогает отвлечь ребенка.
Умение поддерживать диалог станет одним из ключевых требований к роботам и одним из перспективных и востребованных направлений разработки.
Система распознавания речи
Одно дело просто подобрать ответ на запрос, но правильно услышать и расшифровать запрос собеседника намного труднее. На точность влияют все элементы системы распознавания речи: обучающая выборка и сами алгоритмы распознавания.
Влияет качество аудиопотока — отношение сигнал/шум, разборчивость речи и громкость. Современные системы пытаются дополнять «нерасслышанное» за счет лингвистических моделей — в каждом языке есть свои устойчивые выражения и устойчивые связки слов.
То есть когда говорят, что для распознавания используется контекст, то понимается наличие подстройки под распознавание за счет дополнительных данных, например, конкретные фразы использования, как в умных колонках, или использование определенного словаря для конкретной предметной области.
Точность или качество распознавания считается как отношение правильно распознанных слов к количеству всех произнесенных слов, также добавляется метрика ложных распознаваний как отношение ложно распознанных слов ко всем распознанным словам.
Компания LG представила в 2018 году своего домашнего помощника. На сцене Дэвид Вандервол, старший директор по маркетингу, пытался продемонстрировать Cloi — нового домашнего помощника от LG. По размеру чуть больше капельной кофеварки, Cloi должна находиться на столе, у нее нет рук и колес, ее голова вращается и кивает во время разговора. Это голосовой помощник, предназначенный помогать в организации вашей жизни.
На сцене Вандервол спрашивал у Cloi, когда закончится стирка — относительно простой запрос должен был точно продемонстрировать, какого именно помощника LG намерена продавать. В ответ Cloi ошеломляюще замолчала.
«Даже у роботов бывают тяжелые дни, — пытался отшутиться Вандервол. — Так, если нам известно, когда закончится стирка, то можно синхронизировать работу стиральной машины с сушилкой и вспомнить, что у нас в холодильнике курица, срок годности которой истекает через три дня. Похоже, мы должны ее приготовить. Cloi, включайся в беседу: что я могу приготовить из курицы».
Но даже на эту фразу Cloi ничего не ответила.
Неизвестно, что стало причиной провала: большое пространство с акустикой, качество интернет-соединения или же недоработки в ПО. Так или иначе, робот-проводник между человеком и техникой попросту не работал.
Флагманом индустрии считается Google — уже много лет он занимается разработками в этой области, достигнув наибольшей точности и стабильности распознавания. Летом он представил обновленный голосовой помощник — и утверждает, что точность распознавания (английского языка) сопоставима с человеческой. Чтобы обработать запрос и выдать релевантный ответ, системе Google требуется не более секунды.
Однако для использования системы распознавания от Google необходимо приобретать лицензии, и это достаточно дорого. К тому же, устройство с распознаванием речи может использоваться в самых разных условиях. Параметры распознавания для домашнего помощника и робота в местах повышенного скопления людей разные. И эту специфику стараются учитывать разработчики «Промобота» — они разрабатывают систему микрофонных массивов и офлайн распознавания. Это позволит роботам меньше зависеть от качества интернет-соединения и оставаться хорошим собеседником как при нестабильном соединении, так и в шумных помещениях.
Технология распознавания лиц и эмоций
Для того, чтобы организовать качественное взаимодействие между человеком и роботом, необходимо понимать, кто находится перед машиной и какие эмоции испытывает человек. Такие данные позволят ему выбирать наиболее эффективную коммуникационную стратегию, делать релевантные предложения. Например, предложить скидку на любимый сорт мороженого, чтобы вы не грустили, или сообщить об акции в отделе косметики, если робот видит перед собой девушку.
Российская компания VisionLabs предлагает самые разные отрасли применения данной технологии. Платформа распознавания лиц LUNA позволит владельцу открывать машину без ключа и оплачивать покупки с помощью селфи. Распознавание лиц от VisionLabs внедрено в пропускную систему школы Сбербанка, используется для верификации студента при сдачи экзаменов в Московском институте психоанализа.
Если говорить о распознавании эмоций, то оно востребовано индустриями, где предполагается обслуживание. Например, «Альфа-банк» тестирует систему распознавания эмоций клиента. Алгоритм анализирует выражение лица посетителя, после обслуживания выставляет оценку. Так банк получает обратную связь, не прибегая к опросам и интервью.
«Промобот» и Neurodata Lab запустили пилотный проект робота-эмпата, способного распознавать до 20 эмоциональных состояний человека. В соответствии с распознанной эмоцией робот будет выстраивать общение — ободрять или успокаивать собеседника, начнет шутить и дерзить, если заметит положительную реакцию. Пока проект находится на стадии тестирования, однако робот уже был представлен на CES-2019.
Система навигации
В зависимости от задач, существуют outdoor- и indoor-технологии. Outdoor-навигация нужна для беспилотных автомобилей и летательных аппаратов, indoor-навигация — для охранных и сервисных роботов в зданиях.
Сегодня существуют два типа навигации: глобальные и локальные. Глобальные предполагают навигацию по спутниковым системам, они востребованы в системах outdoor, но непригодны для indoor. Не всегда есть связь и низкая точность отображения положения. Локальные включают в себя навигацию посредством ультразвуковых, оптических и инфракрасных систем. Существующие системы — дорогие, потому главным вызовом на 2020 год станет их удешевление.
Например, система датчиков для автомобиля Tesla стоила несколько сотен тысяч долларов. Но вследствие большого распространения автомобилей с автопилотом стоимость лидара уменьшилась из-за перехода из нишевого и дорогого товара в область широко распространенного. А также с появлением доступных и дешевых СВЧ-решений в робототехнике начинают применять радары миллиметрового диапазона, что раньше было доступно только как дорогая опция премиум-автомобилей.
Например, стартап Marvelmind создал высокоточную систему indoor-навигации стоимостью $349. Однако для его работы нужно от четырех стационарных маяков и один мобильный маяк, что затрудняет его применение на больших площадях и вне помещений.
Если говорить о роботах в привычном понимании, то для того, чтобы робот «Промобот» передвигался самостоятельно, без столкновений, разработчики используют почти все типы измерений: ультразвук, инфракрасные датчики ближнего действия, лидары. Это обеспечивает максимальный уровень безопасности передвижения робота.
Информационная безопасность
Обеспечение безопасности — самое главное направление робототехники. После спада эйфории относительно роботов люди начали задумываться о безопасности себя и своих данных.
Тренды угроз информационной безопасности в сфере робототехники, в целом, не сильно отступают от общих в информационной среде. Развитие интернета вещей повлияло на активное распространение ботнет-сетей, что, к сожалению, также актуально и для подавляющего числа роботизированных устройств.
Производители часто пренебрегают серьезной защитой от киберугроз или же вообще ей пренебрегают, что приводит к использованию роботов с целью шпионажа, фишинга или кражи данных.
Недавно исследователи Positive Technologies заметили, что роботы-пылесосы подслушивают своих хозяев и передают эту информацию через интернет — и даже могут майнить криптовалюту. Используя уязвимости в системе безопасности, злоумышленник может перехватить конфиденциальные данные через сетевой трафик: это не только ваши фото, но даже данные банковского счета.
В начале года был опубликован отчет об уязвимостях робота Pepper. Экспертам удалось передать на устройство сторонние файлы без аутентификации и даже войти в аккаунт суперпользователя. Также они смогли осуществить перехват платежной информации, данных с видеокамер и микрофонов.
С точки зрения серьезности последствий, сегодня вопрос наиболее остро стоит в сфере промышленной робототехники. На конец 2018 года число атак на информационные сети российских АСУ ТП выше, чем на банки или частных лиц, а резонансные ситуации с вирусами-шифровальщиками служат подтверждением, что даже АЭС может стать жертвой кибератаки.
Одним из решений данной проблемы может стать использование ИИ для менеджмента безопасности, что уже сегодня постепенно реализуется ведущими производителями антивирусных систем.
Вместе с тем в ближайшие несколько лет количество роботов, с которыми нам приходится сталкиваться каждый день, существенно возрастет. От этого критерия зависит безопасность человека — ключевое направление, мировая робототехника обратит внимание на эту сферу как можно раньше.
Количество автоматизированных процессов растет, а значит и все больше роботов проникает в нашу повседневность. Требования к качеству работы роботов возрастают, поскольку они выходят на уровень инфраструктурной единицы, а не диковины и причуды. С развитием наиболее востребованных отраслей робототехники необходимо повысить качество работы голосовых ассистентов, включающих распознавание речи, качество обработки запросов и ответ на них. Для распространения беспилотников и сервисных роботов требуется удешевление систем навигации. Главным образом, для обеспечения безопасности человека и его данных при взаимодействии с роботами необходимо исключить все уязвимости в системе безопасности. Это и есть главные вызовы на 2020 год.
Источники:
http://hightech.fm/2019/02/01/5-robototechnics
http://www.tvc.ru/news/show/id/158851