Создана нейронная сеть, отслеживающая процесс принятия решения боевым роботом
Centr86.ru

Ремонт бытовой техники

Создана нейронная сеть, отслеживающая процесс принятия решения боевым роботом

Нейросети: путь прогресса или бомба замедленного действия?

Человеческий мозг — восхитительное устройство. Он вдохновляет современных исследователей, которые создают искусственные нейроны, словно ученики скульптора, копирующие бюст Сократа. И результат тому — искусственная нейронная сеть (ИНС), одно из самых обсуждаемых явлений современности.

Почему нейронная, почему сеть

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

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

  • определение класса объекта,
  • выявление зависимостей и обобщение данных,
  • разделение полученных данных на группы на основе заданных признаков,
  • прогнозирование и т. д.

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

Кому это выгодно

Термин «нейронная сеть» появился еще в 1943 году, но популярность эта технология обрела только в последние годы: посредством магазинов приложений стало распространяться ПО, созданное при помощи нейросетей, в колонках новостей запестрели заголовки о фантастических возможностях искусственного интеллекта. Сегодня нейронные сети используются во множестве сфер.

Нейросети для развлечений

Искусственными нейронными сетями сейчас пользуются люди, далекие от сложных математических моделей. Когда создатели ПО поняли, что нейросети — это как минимум весело, рынок приложений для смартфонов наводнился программами для работы с изображениями на основе искусственных нейронных сетей. ПО для обработки изображений (DeepDream, Prisma, Mlvch), «старения»,замены лиц на фотографиях и видео моментально стало вирусным. На самом деле, это весомое оружие в век соцсетей. Приложения типа знаменитого FaceApp могут не только позабавить — с ними можно здорово изменить внешность: нанести профессиональный мейкап, изменить волосы, скорректировать черты лица и даже добавить эмоции и мимику. Причем сейчас все это выглядит настолько натуралистично, что едва ли с первого взгляда заподозришь подвох.

Нейросети знают многое о человеческих лицах: по фотографии они могут определить возраст, пол, настроение, спрогнозировать, как лицо будет выглядеть в старости, анимировать статическое изображение, заставив Барака Обаму говорить то, что он не говорил, и оживить знаменитую Мону Лизу. По фотографии теперь можно найти человека, а китайские нейросети Megvii даже ищут собак по изображению носа. Причем ИНС работает не только с изображениями, но и со звуком. Массачусетский технологический институт недавно представил нейросеть (Speech2Face), определяющую национальность, пол и возраст человека по голосу.

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

Нейросети на службе правительства

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

Уже есть несколько примеров проектов внедрения искусственных нейронных сетей в России. В ГИБДД хотят научить нейросеть обнаруживать факт кражи автомобильных номеров. По изображению автомобиля ИНС сможет установить, соответствует ли машина своему номеру. Это поможет своевременно выявлять подделку или кражу номеров. Руководитель Департамента транспорта Москвы Максим Ликсутов подтвердил, что данная программа сейчас проходит тестирование.

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

Нейросети и бизнес

Нейросети — настоящий подарок для бизнеса и горе для работников. Мы живем в эпоху, когда данные имеют огромную ценность. Поверьте, мировые корпорации уже проанализировали ваш профиль в соцсетях и предоставляют вам персонализированную рекламу. Только представьте, что способности сетей искусственных нейронов к анализу и обобщению можно использовать для получения еще большего массива знаний о потребителях. Например, в 2019 году компания McDonald’s наняла специалистов по разработке нейросетей для создания индивидуальной рекламы. Потом не удивляйтесь, откуда бизнес знает о том, какую еду, одежду и косметику вы предпочитаете.

В банковской сфере нейросети уже применяются для анализа кредитной истории клиентов и принятия решений о выдаче кредита. Так, в 2018 году «Сбербанк» уволил 14 тысяч сотрудников, которых заменила «Интеллектуальная система управления» на основе нейросети. Вместо людей рутинные операции теперь выполняет обучаемый искусственный интеллект. По словам Германа Грефа, подготовку исковых заявлений нейросети проводят лучше штатных юристов. Также финансисты обращаются к прогностическим способностям искусственного интеллекта для работы с плохо предсказуемыми биржевыми индексами.

Нейросети в сфере искусства

Что будет, если нейросеть познакомить с шедеврами мировой живописи и предложить написать картину? Будет новое произведение искусства. Предложите нейросети сочинения Баха, и она придумает похожую мелодию, книги Джоан Роулинг – она напишет книгу «Гарри Поттер и портрет того, что похоже на большую кучу золы». Книга «День, когда Компьютер написал роман», созданная японской нейросетью, даже получила премию HoshiShinichiLiteraryAward.

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

В 2018 году на аукционе «Сотбис» за полмиллиона долларов был продан необыкновенный лот: «Эдмонд де Белами, из семьи де Белами. Состязательная нейронная сеть, печать на холсте, 2018. Подписана функцией потерь модели GAN чернилами издателем, из серии одиннадцати уникальных изображений, опубликованных Obvious Art, Париж, в оригинальной позолоченной деревянной раме». Робби Баррат, художник и программист, научил нейросети живописи настолько, что теперь она уходит с молотка как шедевры искусства.

Появились нейросети-композиторы и даже сценаристы. Уже снят короткометражный фильм по сценарию, написанному искусственным интеллектом («Sunspring») — вышло бессмысленно и беспощадно, как заправский артхаус. Тем временем нейросеть от Яндекса произвела на свет пьесу для симфонического оркестра с альтом и альбом «Нейронная оборона» в стиле группы «Гражданская оборона», а позже начала писать музыку в стиле известных исполнителей, например группы Nirvana. А нейросеть под названием Dadabots имеет свой канал на YouTube, где генерируется deathmetal музыка.

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

Нейросети в медицине

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

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

Скайнет готовится к атаке?

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

  • Фейки. Благодаря возможностям нейросетей появились программы для замены лиц и даже времени года на фото и видео. Как, например, нейросеть Nvidia на основе генеративной состязательной сети (GAN). Страшно представить, какие фото и видео можно получить, если применять подобные программы с целью создания убедительных фейков. Также нейросеть может на основе короткого фрагмента голоса создать синтетический голос, полностью идентичный оригиналу. Подделать чью-то речь? Легко. Подделать чью-то фотографию? Проще простого.
  • Трудности понимания. Когда процесс обучения нейросети завершается, человеку становится трудно понять, на каких основаниях она принимает решения. До сих пор непонятно, как у ИНС получилось обыграть лучшего игрока мира в Го. В этом смысле нейросеть — ящик Пандоры.

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

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

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

Выводы и прогнозы

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

Так как искусственный интеллект уже начал выполнять человеческие задачи, миллионы квалифицированных специалистов могут постепенно лишаться рабочих мест. Работодателю будет проще запустить нейросеть, чем нанимать человека. По тонкому замечанию Антона Балакирева, руководителя интернет-портала Robo-sapiens.ru, нейросети не уходят на пенсию, не страдают алкоголизмом и депрессией. Идеальный работник.

Читать еще:  Установка стиральной машины канди под раковину

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

Нейронные сети для трейдеров

Искусственные нейронные сети (ИНС) — это вычислительные системы, основанные на биологических нейронных сетях, составляющих мозг животных.

Искусственная нейронная сеть позволяет моделировать некую нелинейную функцию с входными и выходными данными.

Нейронная сеть имеет:

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

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

Нейросеть оперирует цифрами, поэтому любая входная и желаемая выходная информация должна быть оцифрована. Например, если это текст (новости), то нужно этот текст представить в виде массива цифр. Или, если мы пытаемся предсказать куда пойдёт рынок, вверх или вниз, то можно закодировать «вниз» нулём, а «вверх» единицей.

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

Каждый слой связан с соседними слоями с помощью весовых коэффициентов и коэффициентов смещения. Распространение данных от предыдущего слоя к следующему осуществляется по следующему правилу: z = Act(Wy + b), где y — вектор данных на предыдущем слое, z — вектор данных на следующем слое, W — матрица весов перехода от предыдущего слоя к следующему, b — вектор коэффициентов смещения. Act — функция активации, необходимая для устранения линейности. Функций активации существует большое количество. Например, это может быть сигмойда:

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

Например, вы хотите научить предсказывать по прошлой динамике цены акции и динамике индикаторов Simple Moving Average (SMA) и Relative Strength Index (RSI) будущее изменение цены этой акции в процентах. Мы формируем данные для обучения — для каждого исторического момента времени берём данные по индикаторам и цене акции. Это будут входные данные X для нейронной сети. И для каждого исторического момента времени берём будущее изменение цены акции (мы его точно знаем, т.к. речь идёт об исторических данных). Это будут выходные данные Y нейронной сети, которые мы хотим, чтобы нейросеть научилась предсказывать. Для этих данных X и Y и будут подбираться коэффициенты W и b.

Поиск оптимальных коэффициентов производится методом градиентного спуска с использованием метода обратного распространения ошибки:

где градиент функционала E для W выражается следующим образом:

И аналогично для b:

Хочу привести такую аналогию обучения нейронной сети для трейдеров. Надеюсь, она будет вам более понятной, если нет понимания математического аппарата. Представьте, что вы придумали стратегию, у которой очень и очень много параметров. Естественно, вам хотелось бы подобрать наиболее оптимальные параметры для стратегии (как коэффициенты W и b в случае нейросети). Что значит оптимальные? Такие, чтобы максимизировали прибыль или минимизировали просадку или максимизировали коэффициент Шарпа — смотря какой критерий выберете. Далее вы начинаете перебирать эти параметры (обучать, в случае нейронной сети). Можно перебирать с помощью «грубой силы» — т.е. перебирать все возможные комбинации параметров. Но если таких параметров очень много, то вам просто не хватит вычислительной мощности вашей машины и перебор займёт много времени. Поэтому придумано достаточно много оптимизационных алгоритмов. Например, метод градиентного спуска и его вариации или генетический алгоритм, чтобы производить поиск оптимальных параметров быстрее, жертвуя точностью.

У нейронной сети могут быть те же проблемы, которые возникают при оптимизации стратегий. Главная из них — переобучение. Когда всё работает очень хорошо на прошлых данных и плохо работает на данных out-of-sample. Про то, как минимизировать риск переобучения и правильно тестировать стратегии, думаю, поговорим в следующей статье.

В качестве примера, я создал полносвязанную нейронную сеть из входного, выходного и двух скрытых слоёв. Во входном слое я сгенерировал 45 нейронов — туда будем подавать дневные изменения цен S&P 500 за последние 15 дней, значение индикатора SMA за последние 15 дней и значение индикатора RSI за последние 15 дней. Выходной слой состоит из 1 нейрона и будет хранить предсказанное процентное изменение S&P 500 на следующий день. Скрытые слои содержат по 512 нейронов. Обучим нейронную сеть на данных с октября 2019 года по июнь 2019 г. и проверим точность обученной нейронной сети на данных с июля 2019 года по сентябрь 2019 г.

У меня получились следующие результаты. На графике ниже показан дневной возврат S&P 500 c октября 2019 года по июнь 2019 г. (тренировочные данные) — синяя кривая. Если кривая выше нуля, то это значит, что S&P 500 в этот день вырос. Если ниже — упал.

Также я наложил оранжевую кривую на синюю. Это предсказанный нейросетью возврат рынка. По прошлой динамике S&P 500, SMA и RSI за последние 15 дней для каждого исторического момента. Точность предсказания (вырастет S&P 500 на следующий день или упадёт) составила 93%. Но это тренировочные данные. На тестовых данных с июля 2019 г. по сентябрь 2019 г. результаты получились намного скромнее:

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

ЗАКЛЮЧЕНИЕ:

1. Искусственная нейронная сеть — это «чёрный ящик», который можно обучить по заданным входным данным выдавать нужные нам выходные данные (например, прогноз чего-либо).

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

3. Нейронная сеть, как и любая алгоритмическая стратегия трейдинга, может быть переобучена (переоптимизирована). За этим нужно следить как минимум путём деления данных на тренировочные и тестовые.

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

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 возможно и она даже будет работать. Временами конечно же начинаются глюки. Я думаю они связаны с обучающей выборкой. Я не тратил особо много времени на ее подборку и по этому не могу утверждать точно. Возможно в скором времени будут внесены некоторые коррективы. Ну а сейчас пока вот так. Спасибо за внимание.

Нейросети. Самый полный гайд. Часть 1 для чего нужны нейросети

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

Первая часть. Для чего нужны нейросети.

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

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

2. Формализация. Т.е. запись на каком либо формальном языке процесса превращения исходных данных в результат. Чаще всего это язык математики или формальной логики.

3. Создание алгоритма.

4. Запись алгоритма, на каком либо компьютерном языке.

5. Тестирование и отладка.

6. Проведение расчетов и анализ результатов.

Как видим, три первых пункта вообще никоим образом не относятся к компьютеру. А 6-й пункт уже относиться не столько к программированию, сколько к практике. Теперь и вы наглядно можете видеть, что большая часть программирования – это не столько нажимание на кнопочки, сколько размышления над тем или иным алгоритмом, которые довольно часто сливаются в размышления над смыслом жизни. Так же понятно, что удачные алгоритмы можно создавать и вовсе не знаю ни одного языка программирования. На практике это означает что человеку, который освоил создание программ на одном языке программирования, будет гораздо проще освоить другой язык, чем человеку, который вообще не сведущ в программировании.

Весь этот список, более менее понятен любому человеку. Кроме, быть может, третьего пункта. Если не знать что такое алгоритм нельзя и понять что требуется. Хотя всем нам на интуитивном уровне ясно, что это, но даже немногие программисты знают, что в информатике у этого слова есть довольно чёткое определение.

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

Пример: «сделай мне бутер», это не детерминированная команда.

«Отрежь хлеб», «отрежь колбасу», «положи колбасу на хлеб» – уже гораздо более детерминированные команды. Ведь согласитесь, бутер можно сделать и без колбасы или с колбасой и маслом.

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

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

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

1. Исходные данные и результат.

Исходные данные: Робот – 1 штука. Ноги – 6 штук. Суставы на ногах – 3 штуки на каждой. Степени свободы у каждого сустава – по одной. Начальные координаты каждой ноги и сустава. Начальные углы в суставах робота. Начальная координата центра робота.

Результат: робот сместился на Х метров в указанном направлении.

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

3. Написание Алгоритма.

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

4. Превратим всё это в строчки кода.

5. Зальём в голову микрочип робота.

6. Отправим робота на прогулку.

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

Ну не беда, теперь вы знаете что в начальные данные нужно внести массу, и все вычисления переписать с учётом нового параметра и заодно внести правки в алгоритм. Ок, сделано. Снова робот отправляется на прогулку. И ему случайно отстреливают правую переднюю ногу, это же боевой робот. Средняя правая нога ждёт результата от передней. Ведь она должна шевелиться после неё. Но от неё нет результата, у нас больше НЕТ правой передней ноги. Приехали, дальше робот не пойдёт. Теперь нужно переписать алгоритм, чтобы он работал без передней правой ноги. И конечно, без передней левой, и без средней задней. И без второй фаланги задней левой. И для каждого из этих случаев нам нужен НОВЫЙ алгоритм. Пускай и не радикально другой, но всё же новый. Итого нужно написать 100500 алгоритмов, и если какой то забыли, то это всплывёт в самый неподходящий момент.

Читать еще:  Разборка и ремонт кофеварок саеко, витек, делонги своими руками

Разумеется возникла идея создать такой алгоритм который мог бы подстроится к изменениям прям на ходу. Ведь паук в природе как то передвигается если ему оторвать ногу. Это и было зарождением нейросетей. По сути нейросеть – это такой алгоритм, который не нужно записывать в привычном понимании. Мы строим некую логическую конструкцию с начальными параметрами, а дальше она сама обучается, по каким-нибудь правилам, и принимает решение в каждом конкретном случае самостоятельно, исходя из старого опыта. История возникновения нейросетей отправляет нас прямиком к 1943 год, т.е. нейросети придумали сразу, как только появились ЭВМ. Но вот беда, в те времени один нейрон был размером с холодильник, а для серьёзных задач нейронов требовались сотни и даже тысячи. Почесав затылки, тогдашние программисты и инженеры сказали что мы и так всё сделаем без ваших нейросетей и отринули данную идею. Вновь к нейросетям вернулись только через 30 лет, за это время компьютеры шагнули невероятно далеко, на целых 4 поколения. В 71-м как вы помните, изобрели первый процессор. А в 75-м на этих крутейших по тем временам компам японский программист Кунихико Фукусима создал так называемый когнитрон – нейронную сеть умеющую выполнять логическую операцию «или». Вдумайтесь 30 лет от задумки да простейшей реализации.

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

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

Создание искусственного интеллекта – тоже пример использования нейросетей. Голова у Яндекс Алисы, или эпловской Сири, не из классических алгоритмов состоит, а из множества нейрончиков. Именно нейросети распознают вашу речь когда вы спрашиваете что то у гугла, и делают подборку песен, которая вам скорее всего понравиться. А ещё они всё больше вытесняет работников техподдержки, заставляя нас кричать в трубку: «Я хочу поговорить с человеком!». Если честно, всего 6 лет назад когда я смотрел фильм «Элизиум: Рай не на Земле», я и представить не мог себя в ситуации когда я буду спорить с роботом, и просить его переключить на человека. Но я думаю что с подобной проблемой сталкивались уже многие. Сейчас способности ИИ, оставляют желать лучшего, но скорость развития этих гомункулов поражает. И спустя те же 6 лет, человек в тех поддержке будет такой же редкостью, как сегодня использование DVD-дисков.

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

Нейросети: что это такое?

Даже сейчас, во время значимых научных достижений, все еще сложно представить, чтобы искусственный разум превзошел человеческий мозг. Мы все еще очень мало знаем о мозге, настолько он сложный и удивительный. Исследователи надеются, что вывести искусственный интеллект на новый уровень поможет прорыв в изучении интеллекта живого. Какие успехи в создании машинного мозга уже применяют в современном мире? Как все начиналось и куда мы придем? Что же такое “нейросети”?

Нейронные сети — это одно из воплощений того, что мы подразумеваем под широким понятием “искусственный интеллект”. Одна из областей ИИ — машинное обучение. Эта область науки изучает алгоритмы, которые позволяют находить решения в очень сложных случаях. Глубокое (глубинное) машинное обучение для этой цели использует много вычислительных ресурсов. Именно такие алгоритмы для глубокого обучения чаще всего и называют нейросетями.

История

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

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

В 50-60 гг группа исследователей создала первую однослойную искусственную нейронную сеть. Такая сеть могла предсказывать погоду и анализировать электрокардиограммы. Научный мир был окрылен — казалось, что достаточно создать сеть побольше и тайна работы мозга будет раскрыта.

Однако вскоре пришло разочарование — почему-то нейронные сети далеко не всегда справлялись с казалось бы однотипными задачами. Марвин Ли Минский, разочаровавшись в методе, не верил в то, что многослойные нейросети (вроде тех, что сейчас выигрывают у людей в шахматы, Го и “Свою игру”) могут работать. Разработки в этой сфере были остановлены, почти весь научный мир на десятилетия оставил нейросети без внимания.

К концу 1980-х гг теория нейросетей стала применяться в прикладных областях, корпорации финансировали разработки, а ученые совершили прорыв. Затем почти до 2010 года о нейросетях снова почти ничего не было слышно. Прорыв произошел в 2012 году, когда с помощью проекта ImageNet нейросети научились практически безошибочно распознавать изображения. К 2015 году программы в некоторых задачах с картинками превзошли человека и стали очень популярны.

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

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

Искусственный нейрон — это по сути функция, которая преобразует несколько фактов в один. Факты имеют вес, который повлияет на то, как факт будет использован нейроном.

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

Проблемы и решения

Искусственные нейронные сети используют для выполнения многих задач, однако нейросети — не панацея. У технологии, в отличие от гипотетического универсального искусственного интеллекта, есть ограничения. «Черный ящик» скрытых слоев нейросети практически невозможно отследить.

Основная проблема нейросетей на сегодня, причем проблема, решения которой в ближайшем времени ожидать не приходится, — это отсутствие полноценной интерпретируемости. «Нейронные сети — это своего рода «черный ящик», который может выдавать правильный ответ, опираясь на прецеденты. Однако не все задачи допускают использование черных ящиков. Вы можете обучить нейросеть на 100000 прецедентах. Затем еще на 20000 определить частоту ошибки и погрешность в ее работе. Но вы не можете узнать, почему нейросеть приняла то ли иное решение. Если ваша задача допускает отсутствие интерпретируемости – например, нужно, чтобы сеть определила, что на изображении – то такой механизм вам подходит. Гораздо важнее уменьшать вероятность ошибки, чем точно знать, почему сеть решила, что на изображении собака, а не стул. Если же вам принципиально знать «почему» — например, вы оцениваете качество производства – то ответ «товар будет бракованным с вероятностью 80%» вам не годится. А понять, почему сеть определила результат именно брак и именно с такой степенью вероятности, вы не сможете. Поэтому для таких задач эффективнее использовать другие алгоритмы, например деревья решений или линейные модели», -объясняет Дмитрий Буслов, менеджер направления инновационных разработок АО «БДО Юникон Бизнес Солюшнс».

«Нейросети как одно из воплощений искусственного интеллекта сейчас, на мой взгляд, используют широко и полно», — отмечает Виталий Дунин-Барковский, д. ф.-м. н., профессор, заведующий отделом нейроинформатики Центра оптико-нейронных технологий НИИ Системных исследований РАН, член отраслевого союза «Нейронет».

Нейросети сегодня

Сегодня нейронные сети нашли широкое применение. С помощью обучаемых алгоритмов делают сложные расчеты, распознают текст и изображения, прогнозируют и ищут совпадения или странности в различных данных. “И если самые первые проекты были больше ориентированы на развлечения, то сейчас все чаще эти технологии используются для решения вполне конкретных бизнес-задач”, — подтверждает Вадим Шемаров, сооснователь сервиса shikari.do.

Нейросети Google работают в нескольких направлениях. Так, сервис Google Translate стал “умнее” с осени прошлого года — для перевода компания подключила нейросеть с глубинным обучением. Нейросеть переводит слова не по отдельности, а целыми предложениями, учитывает контекст.

Сбербанк используем нейронную сеть “Алгоритм” для анализа неструктурированных данных и планирует привлечь искусственный интеллект для автоматизации call-центров, чат-ботов, мессенджеров, систем дополненной реальности для голосовых ассистентов, а также использовать для генерации исковых заявлений.

«СберТех» (дочерняя IT-компания Сбербанка) планирует в 2018 году запустить новую банковскую платформу с нейросетью, отдельные компоненты этой платформы внедряются уже сейчас.

Нейронная сеть — понимает наши вкусы. Алгоритм Brain составляет рекомендации для пользователей YouTube. 70% видео, просматриваемых на сайте, люди нашли благодаря этим рекомендациям.

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

Кажется, что партнерство человека и искусственного мозга — это будущее, которое вот-вот настанет. Главы стран пророчат владельцу ИИ господство над всем миром. «Возможно, универсальный искусственный интеллект уже кто-то создал, но пока держит в секрете», — предполагает Виталий Дунин-Барковский. Но пока очевидно одно — нейросети — вполне освоенный рабочий инструмент, который поможет в создании ИИ высокого уровня. Поживем — увидим.

Ссылка на основную публикацию
Adblock
detector