Как сделать робота с искусственным интеллектом

Создаем робота в домашних условиях

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

Введение

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

Что нам нужно

Для начала наш робот будет уметь просто объезжать препятствия, то есть повторять нормальное поведение большинства животных в природе. Всё что нам потребуется для постройки такого робота можно будет найти в радиотехнических магазинах. Решим, как наш робот будет передвигаться. Самым удачным я считаю гусеницы, которые применяются в танках, это наиболее удобное решение, потому что гусеницы имеют большую проходимость, чем колёса машины и ими удобнее управлять (для поворота достаточно вращать гусеницы в разные стороны). Поэтому тебе понадобится любой игрушечный танк, у которого гусеницы вращаются независимо друг от друга, такой можно купить в любом магазине игрушек по разумной цене. От этого танка тебе понадобится только платформа с гусеницами и моторы с редукторами, остальное ты можешь смело открутить и выкинуть. Так же нам потребуется микроконтроллер, мой выбор пал на ATmega16 – у него достаточно портов для подключения датчиков и периферии и вообще он довольно удобный. Ещё тебе потребуется закупить немного радиодеталей, паяльник, мультиметр.

Делаем плату с МК

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом
Схема робота

В нашем случае микроконтроллер будет выполнять функции мозга, но начнём мы не с него, а с питания мозга робота. Правильное питание – залог здоровья, поэтому мы начнём с того, как правильно кормить нашего робота, потому что на этом обычно ошибаются начинающие роботостроители. А для того, чтобы наш робот работал нормально нужно использовать стабилизатор напряжения. Я предпочитаю микросхему L7805 – она предназначена, чтобы на выходе выдавать стабильное напряжение 5В, которое и нужно нашему микроконтроллеру. Но из-за того, что падение напряжения на этой микросхеме составляет порядка 2,5В к нему нужно подавать минимум 7,5В. Вместе с этим стабилизатором используются электролитические конденсаторы, чтобы сгладить пульсации напряжения и в цепь обязательно включают диод, для защиты от переполюсовки.
Теперь мы можем заняться нашим микроконтроллером. Корпус у МК — DIP (так удобнее паять) и имеет сорок выводов. На борту имеется АЦП, ШИМ, USART и много другого, что мы пока использовать не будем. Рассмотрим несколько важных узлов. Вывод RESET (9-ая нога МК) подтянут резистором R1 к «плюсу» источника питания – это нужно делать обязательно! Иначе твой МК может непреднамеренно сбрасываться или, проще говоря – глючить. Так же желательной мерой, но не обязательной является подключение RESET’а через керамический конденсатор C1 к «земле». На схеме ты так же можешь увидеть электролит на 1000 мкФ, он спасает от провалов напряжения при работе двигателей, что тоже благоприятно скажется на работе микроконтроллера. Кварцевый резонатор X1 и конденсаторы C2, C3 нужно располагать как можно ближе к выводам XTAL1 и XTAL2.
О том, как прошивать МК, я рассказывать не буду, так как об этом можно прочитать в интернете. Писать программу мы будем на Cи, в качестве среды программирования я выбрал CodeVisionAVR. Это довольно удобная среда и полезна новичкам, потому что имеет встроенный мастер создания кода.

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом
Плата моего робота

Управление двигателями

Не менее важным компонентом в нашем роботе является драйвер двигателей, который облегчает нам задачу в управлении им. Никогда и ни в коем случае нельзя подключать двигатели напрямую к МК! Вообще мощными нагрузками нельзя управлять с микроконтроллера напрямую, иначе он сгорит. Пользуйтесь ключевыми транзисторами. Для нашего случая есть специальная микросхема – L293D. В подобных несложных проектах всегда старайтесь использовать именно эту микросхему с индексом «D», так как она имеет встроенные диоды для защиты от перегрузок. Этой микросхемой очень легко управлять и её просто достать в радиотехнических магазинах. Она выпускается в двух корпусах DIP и SOIC. Мы будем использовать в корпусе DIP из-за удобства монтажа на плате. L293D имеет раздельное питание двигателей и логики. Поэтому саму микросхему мы будем питать от стабилизатора (вход VSS), а двигатели напрямую от аккумуляторов (вход VS). L293D выдерживает нагрузку 600 мА на каждый канал, а этих каналов у неё два, то есть к одной микросхеме можно подключить два двигателя. Но, чтобы перестраховаться, мы объединим каналы, и тогда потребуется по одной микре на каждый двигатель. Отсюда следует, что L293D сможет выдержать 1.2 А. Чтобы этого добиться нужно объединить ноги микры, как показано на схеме. Микросхема работает следующим образом: когда на IN1 и IN2 подаётся логический «0», а на IN3 и IN4 логическая единица, то двигатель вращается в одну сторону, а если инвертировать сигналы – подать логический ноль, тогда двигатель начнёт вращаться в другую сторону. Выводы EN1 и EN2 отвечают за включение каждого канала. Их мы соединяем и подключаем к «плюсу» питания от стабилизатора. Так как микросхема греется во время работы, а установка радиаторов проблематична на этот тип корпуса, то отвод тепла обеспечивается ногами GND — их лучше распаивать на широкой контактной площадке. Вот и всё, что на первое время тебе нужно знать о драйверах двигателей.

Датчики препятствий

Чтобы наш робот мог ориентироваться и не врезался во всё, мы установим на него два инфракрасных датчика. Самый простейший датчик состоит из ик-диода, который излучает в инфракрасном спектре и фототранзистор, который будет принимать сигнал с ик-диода. Принцип такой: когда перед датчиком нет преграды, то ик-лучи не попадают на фототранзистор и он не открывается. Если перед датчиком препятствие, тогда лучи от него отражаются и попадают на транзистор – он открывается и начинает течь ток. Недостаток таких датчиков в том, что они могут по-разному реагировать на различные поверхности и не защищены от помех — от посторонних сигналов других устройств датчик, случайно, может сработать. От помех может защитить модулирование сигнала, но пока мы этим заморачиватся не будем. Для начала, и этого хватит.

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом
Первый вариант датчиков моего робота

Прошивка робота

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

Следующие строки условные, потому что значения PORTC зависят от того, как ты подключил драйвер двигателей к своему микроконтроллеру:

PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;

Значение 0xFF означает, что на выходе будет лог. «1», а 0x00 – лог. «0».

Следующей конструкцией мы проверяем, есть ли перед роботом препятствие и с какой оно стороны:

Если на фототранзистор попадает свет от ик-диода, то на ноге микроконтроллера устанавливается лог. «0» и робот начинает движение назад, чтобы отъехать от препятствия, потом разворачивается, чтобы снова не столкнуться с преградой и затем опять едет вперёд. Так как у нас два датчика, то мы проверяем наличие преграды два раза – справа и слева и потому можем узнать с какой стороны препятствие. Команда «delay_ms(1000)» указывает на то, что пройдёт одна секунда, прежде чем начнёт выполняться следующая команда.

Заключение

Я рассмотрел большинство аспектов, которые помогут тебе собрать твоего первого робота. Но на этом робототехника не заканчивается. Если ты соберёшь этого робота, то у тебя появится куча возможностей для его расширения. Можно усовершенствовать алгоритм робота, как например, что делать, если препятствие не с какой-то стороны, а прямо перед роботом. Так же не помешает установить энкодер – простое устройство, которое поможет точно располагать и знать расположение твоего робота в пространстве. Для наглядности возможна установка цветного или монохромного дисплея, который может показывать полезную информацию – уровень заряда аккумулятора, расстояние до препятствия, различную отладочную информацию. Не помешает и усовершенствование датчиков – установка TSOP (это ик-приёмники, которые воспринимают сигнал только определённой частоты) вместо обычных фототранзисторов. Помимо инфракрасных датчиков существуют ультразвуковые, стоят подороже, и тоже не лишены недостатков, но в последнее время набирают популярность у роботостроителей. Для того, чтобы робот мог реагировать на звук, было бы неплохо установить микрофоны с усилителем. Но по-настоящему интересным, я считаю, установка камеры и программирование на её основе машинного зрения. Есть набор специальных библиотек OpenCV, с помощью которых можно запрограммировать распознавание лиц, движения по цветным маякам и много всего интересного. Всё зависит только от твоей фантазии и умений.

Список компонентов:
Код прошивки:

void main(void)
<
//Настраиваем порты на вход
//Через эти порты мы получаем сигналы от датчиков
DDRB=0x00;
//Включаем подтягивающие резисторы
PORTB=0xFF;

//Настраиваем порты на выход
//Через эти порты мы управляем двигателями
DDRC=0xFF;

//Главный цикл программы. Здесь мы считываем значения с датчиков
//и управляем двигателями
while (1)
<
//Едем вперёд
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;
if (!(PINB & (1

О моём роботе

В данный момент мой робот практически завершён.
Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом
На нём установлена беспроводная камера, датчик расстояния (и камера и этот датчик установлены на поворотной башне), датчик препятствия, энкодер, приёмник сигналов с пульта и интерфейс RS-232 для соединения с компьютером. Работает в двух режимах: автономном и ручном (принимает сигналы управления с пульта ДУ), камера также может включаться/выключаться дистанционно или самим роботом для экономии заряда батарей. Пишу прошивку для охраны квартиры (передача изображения на компьютер, обнаружение движений, объезд помещения).

По пожеланиям выкладываю видео:

UPD. Перезалил фотографии и сделал небольшие поправки в тексте.

Статья была опубликована мною в журнале «Хакер» за август 2009 года.

Источник

Как создать торгового робота с помощью генетического программирования

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

Доброго времени суток. В этой статье расскажу о создании системы в которой генетические алгоритмы пишут роботов. В теории эти роботы могли бы торговать на бирже.

Я фанат трех вещей — искусственного интеллекта, высокопроизводительных машин и практического применения любых знаний. Имея некоторое свободное время, я спроектировал небольшую задачку, приобрел железо и сел творить.

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

Эта статья подразумевает что вы знакомы с понятием генетические алгоритмы или генетическое программирование. А также, что делают торговые роботы.

С чего бы начать?

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

Для удобства работы с логикой внутри генетического алгоритма мне пришлось создать свой мета-язык над MQL, назовем его SadLobster. Без этого обобщения было бы ужасно сложно заставить машину писать код по правилам языка программирования созданного для человека. Весь проект был обозначен как прототип, чтобы было проще принять множество компромиссов и упрощений. Иначе эта фаза разработки никогда бы не закончилась.

Как работает один робот

Давайте сразу посмотрим как выглядит упрощенная версия робота, который будет создан.
(пришлось выбросить лишнее, чтобы статья имела законченный вид)

Функции boolA__3 и priceA__10 обрабатывают информацию, получаемую с графиков котировок.
Функция boolA__3 запускается чтобы проверить есть ли сигнал для выставления ордера. Первый раз мы проверяем есть ли сигнал на покупку. Второй раз запускаем еще со значением инверт=1 и проверяем есть ли сигнал на продажу.

Функция priceA__10 определяет по какой цене должен быть выставлен ордер.

SadLobster
Вторая фишка языка SadLobster в том, что его синтаксис совместим с С++. То есть, тот же код, что я использую для тестирования в MQL, можно запустить через С++ тестер, который был написан отдельно.

MQL tester vs C++ tester

Язык состоит из списка функций которые можно использовать. Простейшие — AND, OR, CREATE_LINE, IS_INSIDE,…

И функции доступа к данным котировок и технических индикаторов — HIGH, LOW, FRACTAL, MA, MACD_SIGNAL. Эти функции будут перечислены в списке 1.

Симуляция торговли на истории

Робот запускается на периоде истории, например с 2014 по 2016 год. Происходит моделирование торговли. Все его сделки записываются и по ним формируется отчет. Мой отчет выглядит примерно так:

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

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

По отчету видно хорош робот или нет. Про тестер стратегий и его реализацию постараюсь рассказать в другой раз.

Фитнес функция

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

Первое решение — чем больше робот заработал, тем он лучше. Но тут возникает вопрос рисков. Такой робот совершенно нежизнеспособен. Меньше риск — меньше прибыль, больше риск больше прибыль.

У торговых роботов есть несколько различных характеристик. Самые простые из них — профит фактор(PF) и математическое ожидание прибыли на одну сделку(EP), максимальная просадка по средствам, LR correlation, Коэффициент Шарпа.

Вот так выглядит отчет MetaTrader о работе одного из созданных роботов:

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

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

Динамика и результаты запуска Генетического Алгоритма

Графическое представление эволюции или график обучения

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

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

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

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

О сложности

Алгоритм робота для простоты не имеет внутренней памяти или состояний. Эта же особенность помогает кешировать результаты вычислений на каждом баре. Что сильно ускоряет вычисления. Стараясь использовать только функции со сложностью О(1) или O(n) в логике, я сильно ограничил функционал. Но этого требовали вычислительные ресурсы.

Генерация случайного дерева

Как получить функцию в том виде в котором она представлена в первом листинге?

Рассмотрим простую функцию MORE_I

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

А вот здесь возникает неплохая олимпиадная задачка: необходимо из исходных функций собрать все возможные варианты логик с заданной сложностью и типом результата. Под логикой следует понимать выражение типа F(X)->Y.

Пример — мы хотим функцию принятия решения о входе в длинную позицию. Нам нужно булевое решение — DEF_BOOL, тогда возможные варианты следующие:

Стараясь закончить прототип, я очень злоупотряблял функцией random() там где надо было бы использовать более умную логику. Но вся идея была в том чтобы запустить машину целиком и, обвесив ее тестами, начать итеративные улучшения. Ниже приведено описание алгоритма на котором я остановился.

Задача алгоритма — сгенерировать функцию, которая будет возвращать DEF_BOOL. Нотация выражения LISP-подобная: [Function Name, param1, param2. ]. Параметры, которые начинаются с DEF, являются типом. Выражение в котором есть такой параметр не является окончательным, требует уточнения. В нотации не указывается тип возвращаемого значения за ненадобностью.

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

Это третья реализация алгоритма, первые два были не столь удачны. Весьма полезно было ознакомиться с 4-м томом Кнута, а именно главой 7.2.1.6 Генерация всех деревьев. Если нужна будет улучшенная версия, обязательно перечитаю ее снова. Недостатками этого алгоритма является:

Трансляция в конечную форму

Далее это LISP-подобное выражение превращается в листинг на языке SadLobster, где каждое неделимое выражение — это новая переменная. Логически выражение остается тем же.

SadLobster это не Haskell c чистыми функциями

Хотя я к этому стремился. Одна из проблем которые стоят при создании языка — обработка ошибок. Сразу возникло желание применить механизм эксепшенов, но MQL их не поддерживает. Самая частовозникаемая проблема — неудачно созданный объект. Идеально было бы использовать nil значения, не будем усложнять раньше времени. Это можно улучшить в следующих версиях. А в текущей реализации просто проверяется валидный ли объект, если нет то функция немедленно завершается. Этим занимается макрос типа CHECK_LINE_OR_FALSE.

Оптимизация выражений

Рассмотрим вариант когда выражение выглядит так:

Выражения 1 и 2 одинаковые. После транслирования и выделения переменных, var_2 используется в обоих местах и никакого дублирования кода.

Разработка требует инфраструктуры

Я хотел создать очень робастную базу для конструирования роботов. Разбирая примеры заказов АТС на фриланс бирже, я встраивал новые возможности/требования из ТЗ в общую систему. Так я старался расширить разнообразие в поведении роботов, потому как разнообразие в кодовой базе могло вести к созданию одних и тех же алгоритмических паттернов.

В какой-то момент, и это нормально, акцент разработки сдвинулся в сторону написания аналитических инструментов, для автоматизации анализа того, что же все-таки делают те или иные алгоритмы. В основном это одностраничные скрипты типа:

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

Пару слов о производительности

Тестирование очень быстрое по нескольким причинам:

Как это работает?

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

Давайте посмотрим на такой эксперимент — запускаем ГА 15 раз, потому что каждый ГА это чреда очень многих случайных событий генерации, мутации, скрещивания и рулетки.

Хочу уточнить что в работах не используется Money Management и торговля ведется одним и тем же минимальным объемом.

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

158$ средняя прибыль в месяц при обучении, 21$ — средняя прибыль в течении следующих 12 месяцев. Результаты балансируют около нулевой прибыльности плюс погрешность. С другой стороны можно сравнить со случайным роботом, который просто будет терять на спреде. Не стоит забывать что игра на бирже — это игра с отрицательной суммой. На другом периоде обучения скорее всего результаты будут иные.

Хэпиэнда не будет

Получилось заставить ГА создавать роботов с определенной задачей. Этот проект расширил мое понимание и экспертизу в описанной выше теме. И тут случилось страшное — цель проекта достигнута. Проект для генерации роботов готов. Эта статья подводит черту по проделанной работе.

Вывод хочу разделить на два пункта

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

И самое главное — я вижу будущее этого проекта в формате песочницы для развития ИИ в области написания алгоритмов.

С удовольствием отвечу на ваши вопросы, предложения и комментарии.

Источник

Искусственный Интеллект в домашних условиях.

Я думаю, что в наш век высоких технологий и повсеместной компьютеризации многие из вас задумывались о том, почему мы до сих пор не ведем с компьютером полноценного диалога? Да, есть Siri, Cortana, Google, но они созданы для решения конкретных задач и не слишком приспособлены даже для имитации живого общения. Более «продвинутые юзеры» вспомнят о нейронных цепях. Их можно запрограммировать на абсолютно любой набор действий, в том числе и на общение, но в домашних условиях, увы, это пока невозможно.

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

Для этого нам понадобится, в первую очередь, программа, способная распознавать нашу речь, отвечать тоже голосом и при этом исполнять заданные команды.

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

Итак, для начала нам понадобится программа VoxCommando, микрофон и свободное время.

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

Я не буду здесь расписывать инструкцию по установке, русификации и настройке, эта информация, обычно дается вместе с программой. Кто ищет, тот всегда найдет.

Предположим, вы установили, настроили и адаптировали программу под себя. Что дальше?

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

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

Итак, начнем разбор.

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

Собеседник, информатор, органайзер.

Например, мои команды выполняет Алиса (имя выбрано мною). Все ее реплики, так или иначе, намекают на то, что ей не слишком нравится ее работа, но и жаловаться ей не на что, она более-менее счастлива. Да, я всегда помню, что это «понарошку», что я же и прописывал подобные фразы, но работать с личностью приятнее, чем с бездушным автоматом.

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

Не пытайтесь сразу же создавать сложные, многовариативные команды. В дальнейшем вы сможете усовершенствовать их, когда полностью освоите более сложные приемы.

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

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

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

Так выглядит окно плагина. Укажите свое местоположение. Программа подскажет вам ближайшие метеостанции, или вы можете выбрать место по карте.

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

Например, моя Алиса отвечает на вопросы о погоде, выбирая один из шести шаблонов ответа, подставляя в них нужные данные из плагина, а так же различает запросы на сегодня/завтра, дни недели, время дня и проч.

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

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

Когда таймер срабатывает (Например, за час до начала мероприятия), Вокс генерирует событие, прикрепляя к нему данные о той записи календаря, которая вызвала это событие.

Вы же можете создать команду, которая будет реагировать на подобные события и напоминать вам о них.

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

По команде «Озвучь список дел на сегодня (завтра, вчера, пятницу и т.д.), Алиса зачитывает все записи календаря на указанный день.

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

На сегодня все. В следующем посте расскажу о функционале Умного Дома, а так же работе с программой через смартфон.

Если у кого-то возникнут вопросы о работе программы или реализации каких-либо функций, милости прошу в комментарии. Постараюсь ответить на все вопросы по темам этого поста.

Ссылки не даю, ибо не рекламы ради пишется пост.

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

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

Но мне нужен искусственный интеллект, чтобы дочитать этот пост и хоть что-то из него сделать.

На самом деле было бы круто, чтобы у подобной программы была симуляция возможности выбора (ответа или действия, в зависимости от ситуации). Это ведь присуще ИИ. А еще обучить распознавать различные варианты голосовых указаний, например фразы: «я хочу кофе» и «сделай мне кофейку» были восприняты одинаково. В принципе во втором случае сложного ничего нет, просто потратить время на запись возможных вариантов приказа. Была бы классной возможность самообучения через интернет, например несколько пользователей подобных программ записывали обучение своих симуляторов ИИ в какой либо динамически изменяющийся файл, а программа на другом компьютере имела бы доступ к этому файлу и самообучалась.

натуральнее ее звучания я пока что не встречал

Решил попробовать, но ограничение в 40 команд убивает просто, не могли бы помочь решить данную проблему? Весь гугл перерыл ничего не нашел

скайнет на коленке без смс и регистрации

А есть такая штука для мака? Ну или будет ли это всё работать через вайнскин?

Супер. Большое спасибо автору. Вопрос: насколько легко переносить с одного устройства на другое, есть ли возможность синхронизировать настройки между разными устройствами?

Всё так не получится скинуть уже готовый и настроенный вариант программы для лиги лени?

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

я знаю прогу получше вот ссылка : https://freevoc.000webhostapp.com

Привет, бро! Очень интересно рассказываешь. Планирую выделить пол него старенький ноут, гига 3 оперативки. Потянет, если только этим будет заниматься?

а более детальное описание настройки? к примеру про настройку «личности»? и про вариативность в ответах?

Подписался, очень интересно почитать про умный дом.

Еще и от разбирающейся в этом девушки.

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

А можно ли её запрограммировать по команде отправлять что либо в сериалпорт? Прикрутить к ней ардуину как устройство вывода.

На Линуксе кто-нибудь запустил?

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

Нейронную сеть научили практически идеально копировать человеческий голос

Как сделать робота с искусственным интеллектом. Смотреть фото Как сделать робота с искусственным интеллектом. Смотреть картинку Как сделать робота с искусственным интеллектом. Картинка про Как сделать робота с искусственным интеллектом. Фото Как сделать робота с искусственным интеллектом

В прошлом году компания DeepMind, занимающаяся разработками технологий искусственного интеллекта, поделилась деталями о своем новом проекте WaveNet – нейронной сети глубинного обучения, использующейся для синтезации реалистичной человеческой речи. На днях была выпущена усовершенствованная версия этой технологии, которая будет использоваться в качестве основы цифрового мобильного ассистента Google Assistant.

Система голосового синтезирования (также известная как функция преобразования «текст-в-речь», text-to-speech, TTS) обычно строится на базе одного из двух основных методов. Конкатенативный (или компилятивный) метод подразумевает построение фраз путем сбора отдельных кусков записанных слов и частей, заранее записанных с привлечением актера озвучания. Основным недостатком такого метода является необходимость постоянной замены звуковой библиотеки всякий раз, когда происходят какие-нибудь обновления или вносятся изменения.

Другой метод носит название параметрического TTS, и его особенностью является использование наборов параметров, с помощью которых компьютер генерирует нужную фразу. Минус метода в том, что чаще всего результат проявляется в виде нереалистичного или так называемого роботизированного звучания.

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

Пожалуй, самым большим ограничением системы WaveNet являлось то, что для ее работы требовалось наличие огромного объема вычислительной мощности, и даже при выполнении этого условия она не отличалась скоростью работы. Например, для генерации 0,02 секунды звука ей требовалось около 1 секунды времени.

Спустя год работы инженеры DeepMind все-таки нашли способ, как улучшить и оптимизировать систему таким образом, что теперь она способна производить сырой звук длительностью в одну секунду всего на 50 миллисекунд, что в 1000 раз быстрее ее изначальных возможностей. Более того, специалистам удалось повысить частоту дискретизации звука с 8-битного до 16-битного, что положительно сказалось на тестах с привлечением слушателей. Благодаря этим успехам, для WaveNet была открыта дорога к интеграции в такие потребительские продукты, как Google Assistant.

В настоящий момент WaveNet может использоваться для генерации английских и японских голосов через Google Assistant и все платформы, где используется этот цифровой ассистент. Так как система может создавать особый тип голосов в зависимости от того, какой набор образцов был ей предоставлен для обучения, то в скором времени Google, вероятнее всего, внедрит в WaveNet поддержку синтезации реалистичной речи и на других языках, и в том числе с учетом их местных диалектов.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *