Подборка материалов по нейронным сетям


Оглавление (нажмите, чтобы открыть):

Какие книги посоветуете по нейронным сетям и машинному обучению?

Помимо книг есть онлайн курсы, например:
https://www.youtube.com/channel/UCfelJa0QlJWwPEZ6X. — лаконично и просто о базовых вещах

Ещё многое прояснил для себя в категории свёрточных нейронных сетей из этого видео: https://www.youtube.com/watch?v=98Y478fooPQ — как-то доходчиво объясняет, или я сам просто созрел до понимания того момента, как производится обучение самих фич.

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

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

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

Нейронные сети: применение сегодня и перспективы развития Текст научной статьи по специальности « Общие и комплексные проблемы естественных и точных наук»

Аннотация научной статьи по общим и комплексным проблемам естественных и точных наук, автор научной работы — Фаустова К.И.

В статье рассматриваются направления, в которых на данный момент развиваются нейронные сети , сферы деятельности, где они уже активно применяются. Так же рассматриваются возможности, которые данные сети открывают в будущем.In the paper, neural networks are discussed with their key technological directions and major areas of implementation practice. Also, the prospects of further neural networks use are considered.

Похожие темы научных работ по общим и комплексным проблемам естественных и точных наук , автор научной работы — Фаустова К.И.,

Текст научной работы на тему «Нейронные сети: применение сегодня и перспективы развития»

4. Пронин В.Ю. Разработка и исследование технических средств стабилизации подачи для самоходного кормоуборочного комбайна // Диссертация на соискание ученой степени кандидата технических наук. — Саранск, 2001. — 160 с.

5. Халиуллин Ф.Х., Матросов В.М. Демпфер // Патент на изобретение RUS 2297562 04.07.2005

6. Щипанов А.В. Особенности поведения смазочно-охлаждающей жидкости (СОЖ) в зоне контакта инструмента с заготовкой // Вектор науки Тольяттинского государственного университета. 2020. № 1 (39). С. 36-39.

НЕЙРОННЫЕ СЕТИ: ПРИМЕНЕНИЕ СЕГОДНЯ И ПЕРСПЕКТИВЫ РАЗВИТИЯ

Воронежский экономико-правовой институт

Ключевые слова: Нейронная сеть, искусственный интеллект, поисковые системы, Google, Яндекс.

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

Key words: neural network, artificial intelligence, search systems, Google, Yandex.

Abstract: In the paper, neural networks are discussed with their key technological directions and major areas of implementation practice. Also, the prospects of further neural networks use are considered.

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

Искусственные нейронные сети построены по принципу биологических, конечно, с рядом допущений, в них действует

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

Поиск информации, распознавание изображений. Осенью 2020 года Яндекс запустил новый алгоритм поиска Палех на основе нейронных сетей, у Google аналогом служит «Колибри» и RankBrain. Данные алгоритмы способствуют более точному поиску. Палех анализирует заголовки страниц и распознает их смысл, в скором времени так будет со всем текстом [4].

Распознавание изображений — данный вид деятельности давно освоен нейронными сетями, взять хотя бы самые популярные поисковые системы, такие как Яндекс и Google, в которых реализован поиск по картинкам [5]. Загружая или кликая мышкой на картинке, выбрав задачу поиска похожих изображений, пользователь дает команду нейросети, с которой она успешно справляется и выдает аналоги, она же просматривая тысячи картинок в сети делает себе заметки, что бы потом определить что изображено на новом загруженном фото, помочь человеку найти определенные картинки, сделать теги. Но технологии шагнули еще дальше: нашумевший стартап FindFace, который использует нейронную сеть, через которую пропустили миллионы фотографий лиц, она выявила закономерности и теперь может выдавать фото похожих друг на друга людей. Эту разработку в 2015 году на международном конкурсе по распознаванию лиц признали лучшей, она обошла даже технологию распознавания от Гугл. А в 2020 году нейронные сети научились видеть сквозь замыленность. Точность распознавания составила от 80 до 90 процентов в случае с обработанными изображениями на YouTube и 5075 процентов при анализе тщательно запикселенными с помощью фоторедакторов картинками [2]. Теперь прибегать к замыливанию лица, что бы оставить человека инкогнито становится невозможным.

Распознавание, перевод, воспроизведение речи. Каждому известен голосовой ввод, Окей Гугл, однако, нейронная сеть DeepMind, приобретенная Google, научился более реалистично имитировать речь человека [6]. Так же стоит сказать, что на данный момент постоянно совершенствуется технология перевода иностранных слов, опять же

благодаря нейросетям. Соединив две технологии, совсем скоро не понадобится знать языка, что бы говорить с иностранцем, имея под рукой такой переводчик, все будет транслироваться на родной язык в мгновение ока. Совсем недавно Гугл объявил, что их ИИ научился читать по губам лучше любого профессионала. Как и в случае с фото через нейросеть пропустили 5 тысяч часов различных записей телепрограмм, в результате DeepMind научился читать по губам даже в случаях, когда человек проглатывает части слов. На данный момент ДипМайнд на 30% справляется лучше с чтением по губам, чем профессионал среди людей [3]. Все это дает огромный потенциал, как от простого создания субтитров, так и для использования помощников в колцентрах.

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

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

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

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

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

Вышеперечисленное — лишь малая толика от всего разнообразия применения или уже использования в сфере нейронных сетей, а сколько еще в стадии разработки или планов. Благодаря нейронным сетям с 2011 года ежегодный объем инвестиций в сферу ИИ вырос в 15 раз, но это только самое начало, если посмотреть на количество стартапов, которые развиваются в этой области, то их уже десятки тысяч и по прогнозам аналитиков сотни из них будут стоить сотни миллиардов долларов уже через несколько лет. Уже сегодня только один рынок распознавания лиц расценивается в 3 миллиарда долларов и это только одно направление нейронных сетей. Такое бурное развитие несет улучшение во многие сферы жизни человека, облегчение рутинной работы, но вместе с тем грядет опасность сокращения большого количества рабочих мест, а порой полной ликвидации целой профессии, ведь сеть сделает это быстрее, качественнее и дешевле. Людям придется искать новые подходы к

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

1. Брагин А.В., Мирошниченко В.В., Орлова Е.С. Создание автоматизированной компьютерной системы для информационной поддержки врача-стоматолога // Проблемы стоматологии. 2011. № 4. С. 64-67.

2. Будаева А.А. Оптимизация технологий многокритериального ранжирования объектов // В книге: Теория операторов, комплексный анализ и математическое моделирование тезисы докладов международной научной конференции. Южный математический институт Владикавказского научного центра Российской академии наук и Правительства Республики Северная Осетия-Алания. 2014. С. 166-167.

3. Клепиков А.В., Клюканов А.В. Виртуальные экскурсии // Вагоны и вагонное хозяйство. 2014. № 1 (37). С. 38-39.

4. Осипов Г.С. Оптимизация одноканальных систем массового обслуживания с неограниченной очередью // Бюллетень науки и практики. 2020. № 9 (10). С. 63-71.

5. Себешев В.Г. Особенности работы статически неопределимых систем и регулирование усилий в конструкциях. — Новосибирск, 2009. — 164 с.

Искусственные нейронные сети

Рубрика: Информационные технологии

Дата публикации: 26.01.2020 2020-01-26

Статья просмотрена: 1440 раз

Библиографическое описание:

Степанов П. П. Искусственные нейронные сети // Молодой ученый. — 2020. — №4. — С. 185-187. — URL https://moluch.ru/archive/138/38781/ (дата обращения: 11.11.2020).

Что же такое искусственные нейронные сети? Фактически, это математическая модель, абстракция. История самой дисциплины начинается с середины 60-х годов прошлого века, когда принимались первые попытки к созданию искусственного интеллекта. Первоначально, исследователи хотели воспроизвести мозг человека: его структуру, функционирование и взаимосвязи. Поэтому именно отсюда пошла терминология, структура нейронной сети и сами элементы — перцептроны.

Головной мозг человека содержит около 65 миллиардов нейронов, на каждый нейрон приходится около ста синапсов. Более того, нейроны достаточно интересный предмет для изучения, поскольку все нейроны не работают по одной формуле. Существует примерно 100 видов нейронов.

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

И тем не менее, за годы существования это дисциплины было разработано много топологий сети и были найдены свои ниши применения. Рассмотрим типовую структуру нейронной сети на Рисунке 1.

Рис. 1. Типовая структура нейронной сети

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

Рис. 2. Структура нейрона

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

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

Из топологий нейронных сетей выделяют сети прямого распространения (Feedforward), радиально-базисные функции (RBF), рекурентные нейронные сети, сверточные сети (LeNet-5, неокогнитрон), самоорганизующаяся карта Кохонена (SOM), а также адаптивно-резонансная теория.

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

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

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

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

Показательным примером является московская компания ABBY и её продукт FineReader, который умеет читать текст с изображения, например, найти текст на сканированном изображении. При распознавании текста, до поступления на вход нейронной сети, информация обрабатывается специальным графическим интерфейсом, который выделяет отдельный символ, полученное изображение отдельного символа избавляют от шума и только после этого передают на вход нейронной сети. Подобные сети достаточной сложны и требовательны к вычислительным ресурсам, например, для распознавания древнеегипетских иероглифов нейросеть обучалась в течении недели беспрерывной работы и насчитывала более 700 000 нейронов [1]. Для распознавания образов, обычно, используют сверточные сети (LeNet-5(Франция), неокогнитрон (Япония)), а для распознавания видео- и аудио-потока рекурентные сети. Обучение происходит только с учителем, когда вы четко даем понять нейронной сети, что это изображение человека, машины, буквы, слова и т. д.

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

Для решения задач связанных с ассоциативной памятью используют сеть Коско (двунаправленная ассоциативная память).

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

Подводя итог необходимо отметить, что для решения многих задач, например, распознавания образов, существуют решения-аналоги, не использующие нейронные сети. Это, во-первых, структурные методы распознавания, практически попиксельное изучение картинок. Во-вторых, синтаксические методы распознавания, когда изображение той же буквы разбивается на элементарные «черточки» и потом из набора «черточек» формируется буква. В-третьих, векторное квантование, а также байесовский классификатор, построенный на применении теоремы Байеса. В-четвертых, машина опорных векторов, но у всех вышеперечисленных способов качество решения задачи ниже 72 %. У нейронных сетей, в частности сверхточных, качество распознавания 86 %. Но есть и методы работающие на ровне с нейросетями. Это такие алгоритмы как «boosting», «рандомизированный решающий лес» и машина опорных векторов.

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

Простая нейронная сеть в 9 строк кода на Python

Из статьи вы узнаете, как написать свою простую нейросеть на python с нуля, не используя никаких библиотек для нейросетей. Если у вас еще нет своей нейронной сети, вот всего лишь 9 строчек кода:

Перед вами перевод поста How to build a simple neural network in 9 lines of Python code, автор — Мило Спенсер-Харпер. Ссылка на оригинал — в подвале статьи.

В статье мы разберем, как это получилось, и вы сможете создать свою собственную нейронную сеть на python. Также будут показаны более длинные и красивые версии кода.

Но для начала, что же такое нейронная сеть? Человеческий мозг состоит из 100 миллиарда клеток, называемых нейронами, соединенных синапсами. Если достаточное количество синаптичеких входов возбуждены, то и нейрон тоже становится возбужденным. Этот процесс также называется “мышление”.

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

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

Первые четыре примера назовем тренировочной выборкой. Вы сможете выделить закономерность? Что должно стоять на месте “?”

Диаграмма 2. Input — входный сигнал, Output — выходной сигнал.

Вероятно вы заметили, что выходной сигнал всегда равен самой левой входной колонке. Таким образом ответ будет 1.

Процесс обучения нейронной сети

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

  1. Берем входные данные из примера обучающего набора, корректируем их по весам и передаем по специальной формуле для расчета выхода нейрона.
  2. Вычисляем ошибку, которая является разницей между выходом нейрона и желаемым выходом в примере обучающего набора.
  3. В зависимости от направления ошибки слегка отрегулируем вес.
  4. Повторите этот процесс 10 000 раз.
Мастер Йода рекомендует:  Основы функционального программирования в JavaScript

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

Формула для расчета выхода нейрона

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

Затем мы нормализуем это, поэтому результат будет между 0 и 1. Для этого мы используем математически удобную функцию, называемую функцией Sigmoid:

Если график нанесен на график, функция Sigmoid рисует S-образную кривую.

Подставляя первое уравнение во второе, получим окончательную формулу для выхода нейрона:

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

Формула для корректировки веса

Во время тренировочного цикла (Диаграмма 3) мы корректируем веса. Но насколько мы корректируем вес? Мы можем использовать формулу «Взвешенная по ошибке» формула

Почему эта формула? Во-первых, мы хотим сделать корректировку пропорционально величине ошибки. Во-вторых, мы умножаем на входное значение, которое равно 0 или 1. Если входное значение равно 0, вес не корректируется. Наконец, мы умножаем на градиент сигмовидной кривой (диаграмма 4). Чтобы понять последнее, примите во внимание, что:

    1. Мы использовали сигмовидную кривую для расчета выхода нейрона.
    2. Если выходной сигнал представляет собой большое положительное или отрицательное число, это означает, что нейрон так или иначе был достаточно уверен.
    3. Из Диаграммы 4 мы можем видеть, что при больших числах кривая Сигмоида имеет небольшой градиент.
  1. Если нейрон уверен, что существующий вес правильный, он не хочет сильно его корректировать. Умножение на градиент сигмовидной кривой делает именно это.

Градиент Сигмоды получается, если посчитать взятием производной:

Вычитая второе уравнение из первого получаем итоговую формулу:

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

Написание Python кода

Хоть мы и не будем использовать библиотеки с нейронными сетями, мы импортируем 4 метода из математической библиотеки numpy. А именно:

  • exp — экспоненцирование
  • array — создание матрицы
  • dot — перемножения матриц
  • random — генерация случайных чисел

Например, мы можем использовать array() для представления обучающего множества, показанного ранее.

“.T” — функция транспонирования матриц. Итак, теперь мы готовы для более красивой версии исходного кода. Заметьте, что на каждой итерации мы обрабатываем всю тренировочную выборку одновременно.

Код также доступен на гитхабе. Если вы используете Python3 нужно заменить xrange на range.

Заключительные мысли

Попробуйте запустить нейросеть, используя команду терминала:

Итоговый должен быть похож на это:

У нас получилось! Мы написали простую нейронную сеть на Python!

Сначала нейронная сеть присваивала себе случайные веса, а затем обучалась с использованием тренировочного набора. Затем нейросеть рассмотрела новую ситуацию [1, 0, 0] и предсказала 0.99993704. Правильный ответ был 1. Так очень близко!

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

Конечно, это был только 1 нейрон, выполняющий очень простую задачу. А если бы мы соединили миллионы этих нейронов вместе?

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

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

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

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

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

Еще один развлекательный сервис от Microsoft, на этот раз про людей. How-Old.net пытается угадать возраст человека по фотографии.

Доска объявлений о купле-продаже автомобилей, принадлежащая «Яндексу», встроила в свои мобильные приложения функцию определения модели и марки машины по фото. Как и в случае с собаками, Auto.ru можно скормить изображение человека.

Загружаете фотографию, а нейросеть рассказывает, что на ней изображено.

Еще один похожий проект — CaptionBot. Он более разговорчив, чем конкурент.

Простой и довольно бесполезный сервис: рассказывает, есть ли на фотографии обнаженные люди.

Загружаете фотографию — получаете набор эмодзи, которые лучше всего (по мнению нейросети) описывают содержание снимка. Свой выбор алгоритм, к сожалению, не объясняет.

А тут все наоборот: вы вводите эмодзи, он находит подходящие видео.

«Эмодзификатор» лиц: сервис определяет выражение лиц на фотографии и накладывает на них подходящие эмодзи.

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

В 2015 Google взорвал нам мозг инцепционизмом — картинами, которые рисует нейросеть, чья основная задача заключается в определении содержимого изображений. Программа, превращающая фотографии в очень странные иллюстрации, называется Deep Dream.

Google отказалась делать удобный онлайн-инструмент для обработки фотографий в Deep Dream, но эту работу за компанию выполнили энтузиасты. Вот один из фанатских сервисов.

Год искусственного интеллекта: топ-5 нейросетей, изменивших мир

Искусственная нейронная сеть — это шаг в то будущее, которое на протяжении последних трех десятилетий служит основным сюжетом фантастических фильмов. Пришествие искусственного интеллекта началось, а мы даже не заметили, как программы на основании аналога человеческого разума вошли в нашу жизнь и изменили ее. Телеканал «360» собрал топ-5 самых передовых технологий и узнал перспективы у разработчиков.

Как работает искусственная нейронная сеть?

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

«Если объяснять „на пальцах“, то нейронными сетями стали называть тип алгоритмов, который изначально появился с целью как-то моделировать работу реального мозга. Если мозг состоит из огромного количества связанных нервных клеток, то нейронная сеть состоит из простых элементов (иногда их называют процессорами или нейронами). Каждый такой элемент связан с другими. Связи могут усиливаться или ослабляться в процессе обучения», — пытается простыми словами описать принцип устройства работы нейронных сетей Иван Ямщиков, ведущий аналитик и руководитель группы исследований новых продуктов «Яндекса».

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

Топ-5 революционных нейросетей

1. Автопилот Tesla

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

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

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

2. Системы безопасности

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

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

«Любая возможность быстро распознать твое лицо минимизирует желание совершать преступление. Самый яркий пример — террорист из Великобритании, которого нашли, используя именно эти системы. Сейчас это работает постфактум, в дальнейшем обработка будет происходить моментально в реальном времени. Также у нейросетей большой потенциал в отражении кибератак», — рассказывает о возможных применениях разработчик Magic App Ашот Габрелянов.

Он и сам использует в своих приложениях схожую технологию, но в развлекательных целях.

«Мы сейчас работаем над технологией распознавания эмоций. Это новое направление. Например, Google и Facebook сейчас работают над созданием решения для виртуальной, дополненной реальности. В ближайшем будущем, когда люди начнут общаться в новой реальности, им нужно будет выражать эмоции. Для этого необходимо научить компьютер их считывать с человеческого лица, чем мы и занимаемся», — отметил он.

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

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

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

4. Анализ данных в социальных сетях

Самый яркий пример использования нейросетей в этом году — победа Дональда Трампа. А точнее, использование технологии анализа характера пользователей на основе психологических характеристик. Все, что мы делаем в интернете, оставляет цифровой отпечаток, и технология сбора этих данных называется Big Data.

Технология психоанализа человека по пяти основным характеристикам называется O.C.E.A.N. Также есть такое понятие, как таргетинг — индивидуальная подборка рекламы. Все это невинно использовалось для продаж, например, в Facebook. Но затем эти инструменты взяли на вооружение политтехнологи.

Издание Das Magazin провело расследование, в ходе которого выяснила, что для PR-компании сторонники Brexit и Дональд Трамп наняли одну и ту же фирму: Cambridge Analytica. По словам представителей этой компании, они знают все о характере и потребностях каждого американца, так как создают его психологический портрет по действиям в сети и предлагают ему то, что подействует именно на этого человека.

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

«Мы используем алгоритмы такого типа в целом ряде наших сервисов и проектов. Яндекс улучшает качество поиска с помощью Палеха, Auto.ru помогает выбрать оптимальный ракурс для фото автомобиля. Мы с коллегами использовали открытый код перенесения стиля, который написал наш коллега Дима Ульянов, и с его помощью сняли ролик о Кандинском. Кроме того, наш поиск по картинкам умеет искать их не по набору „тегов“, а по описанию того, что изображено на картинке. Применений много, планов тоже хватает, но мы о планах будем говорить по мере их реализации», — рассказывает о разработках Иван Ямщиков, ведущий аналитик и руководитель группы исследований новых продуктов «Яндекса».

Поисковые машины в интернете, поиск музыки по звуковому оттиску Shazam, навигаторы, социальные сети, компьютерные игры — все это удивительные нейросети.

«Со временем программы типа Siri смогут самостоятельно бронировать билеты на самолет для владельца, заказывать продукты на дом и так далее», — считает разработчик Ашот Габрелянов.

5. Нейросети и творчество

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

Точно так же сейчас программы учатся у людей писать стихи и не только. Например, нейросети дали проанализировать базу из 100 часов поп-музыки и предложили создать песню на заданную тему: ей показали фотографию елки. На основе основного набора слов (их оказалось всего три тысячи) она создала композицию с довольно складным текстом: «Я могу слышать музыку, идущую из зала, сказка, елка и много цветов».

«Пробу пера» судить строго не следует. Какую музыку и картины способен создать достаточно обученный искусственный интеллект — сложно представить.

НЕЙРО́ННЫЕ СЕ́ТИ

Скопировать библиографическую ссылку:

НЕЙРО́ННЫЕ СЕ́ТИ искусственные, многослойные высокопараллельные (т. е. с большим числом независимо параллельно работающих элементов) логические структуры, составленные из формальных нейронов. Начало теории нейронных сетей и нейрокомпьютеров положила работа американских нейрофизиологов У. Мак-Каллока и У. Питтса «Логическое исчисление идей, относящихся к нервной деятельности» (1943), в которой они предложили математическую модель биологического нейрона. Среди основополагающих работ следует выделить модель Д. Хэбба, который в 1949 г. предложил закон обучения, явившийся стартовой точкой для алгоритмов обучения искусственных нейронных сетей. На дальнейшее развитие теории нейронной сети существенное влияние оказала монография американского нейрофизиолога Ф. Розенблатта «Принципы нейродинамики», в которой он подробно описал схему перцептрона (устройства, моделирующего процесс восприятия информации человеческим мозгом). Его идеи получили развитие в научных работах многих авторов. В 1985–86 гг. теория нейронных сетей получила «технологический импульс», вызванный возможностью моделирования нейронных сетей на появившихся в то время доступных и высокопроизводительных персональных компьютерах . Теория нейронной сети продолжает достаточно активно развиваться в начале 21 века. По оценкам специалистов, в ближайшее время ожидается значительный технологический рост в области проектирования нейронных сетей и нейрокомпьютеров. За последние годы уже открыто немало новых возможностей нейронных сетей, а работы в данной области вносят существенный вклад в промышленность, науку и технологии, имеют большое экономическое значение.

Подборка материалов по нейронным сетям

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

Топология такой сети характеризуется тем, что количество нейронов в выходном слое, как правило, равно количеству определяемых классов. При этом устанавливается соответствие между выходом нейронной сети и классом, который он представляет. Когда сети предъявляется некий образ, на одном из её выходов должен появиться признак того, что образ принадлежит этому классу. В то же время на других выходах должен быть признак того, что образ данному классу не принадлежит [9] . Если на двух или более выходах есть признак принадлежности к классу, считается что сеть «не уверена» в своём ответе.

Принятие решений и управление

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

Кластеризация

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

Прогнозирование и аппроксимация

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

Сжатие данных и Ассоциативная память

Способность нейросетей к выявлению взаимосвязей между различными параметрами дает возможность выразить данные большой размерности более компактно, если данные тесно взаимосвязаны друг с другом. Обратный процесс — восстановление исходного набора данных из части информации — называется (авто)ассоциативной памятью. Ассоциативная память позволяет также восстанавливать исходный сигнал/образ из зашумленных/поврежденных входных данных. Решение задачи гетероассоциативной памяти позволяет реализовать память, адресуемую по содержимому [10] .

Этапы решения задач

  • Сбор данных для обучения;
  • Подготовка и нормализация данных;
  • Выбор топологии сети;
  • Экспериментальный подбор характеристик сети;
  • Экспериментальный подбор параметров обучения;
  • Собственно обучение;
  • Проверка адекватности обучения;
  • Корректировка параметров, окончательное обучение;
  • Вербализация сети [11] с целью дальнейшего использования.

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

Сбор данных для обучения

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

  • Репрезентативность — данные должны иллюстрировать истинное положение вещей в предметной области;
  • Непротиворечивость — противоречивые данные в обучающей выборке приведут к плохому качеству обучения сети;

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

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

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

Выбор топологии сети

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

Экспериментальный подбор характеристик сети

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

Экспериментальный подбор параметров обучения

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

Собственно обучение сети

В процессе обучения сеть в определенном порядке просматривает обучающую выборку. Порядок просмотра может быть последовательным, случайным и т. д. Некоторые сети, обучающиеся без учителя, например, сети Хопфилда просматривают выборку только один раз. Другие, например, сети Кохонена, а также сети, обучающиеся с учителем, просматривают выборку множество раз, при этом один полный проход по выборке называется эпохой обучения. При обучении с учителем набор исходных данных делят на две части — собственно обучающую выборку и тестовые данные; принцип разделения может быть произвольным. Обучающие данные подаются сети для обучения, а проверочные используются для расчета ошибки сети (проверочные данные никогда для обучения сети не применяются). Таким образом, если на проверочных данных ошибка уменьшается, то сеть действительно выполняет обобщение. Если ошибка на обучающих данных продолжает уменьшаться, а ошибка на тестовых данных увеличивается, значит, сеть перестала выполнять обобщение и просто «запоминает» обучающие данные. Это явление называется переобучением сети или оверфиттингом. В таких случаях обучение обычно прекращают. В процессе обучения могут проявиться другие проблемы, такие как паралич или попадание сети в локальный минимум поверхности ошибок. Невозможно заранее предсказать проявление той или иной проблемы, равно как и дать однозначные рекомендации к их разрешению.

Мастер Йода рекомендует:  Основы Git контроль версий для самых маленьких

Проверка адекватности обучения

Даже в случае успешного, на первый взгляд, обучения сеть не всегда обучается именно тому, чего от неё хотел создатель. Известен случай, когда сеть обучалась распознаванию изображений танков по фотографиям, однако позднее выяснилось, что все танки были сфотографированы на одном и том же фоне. В результате сеть «научилась» распознавать этот тип ландшафта, вместо того, чтобы «научиться» распознавать танки [12] . Таким образом, сеть «понимает» не то, что от неё требовалось, а то, что проще всего обобщить.

Классификация по типу входной информации

  • Аналоговые нейронные сети (используют информацию в форме действительных чисел);
  • Двоичные нейронные сети (оперируют с информацией, представленной в двоичном виде).

Классификация по характеру обучения

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

Классификация по характеру настройки синапсов

  • Сети с фиксированными связями (весовые коэффициенты нейронной сети выбираются сразу, исходя из условий задачи, при этом: , где W — весовые коэффициенты сети);
  • сети с динамическими связями (для них в процессе обучения происходит настройка синаптических связей, то есть , где W — весовые коэффициенты сети).

Классификация по времени передачи сигнала

В ряде нейронных сетей активирующая функция может зависеть не только от весовых коэффициентов связей wij , но и от времени передачи импульса (сигнала) по каналам связи τij . По этому в общем виде активирующая (передающая) функция связи cij от элемента ui к элементу uj имеет вид: . Тогда синхронной сетью называют такую сеть у которой время передачи τij каждой связи равна либо нулю, либо фиксированной постоянной τ . Асинхронной называют такую сеть у которой время передачи τij для каждой связи между элементами ui и uj свое, но тоже постоянное.

Классификация по характеру связей

Сети прямого распространения (Feedforward)

Все связи направлены строго от входных нейронов к выходным. Примерами таких сетей являются перцептрон Розенблатта, многослойный перцептрон, сети Ворда.

Рекуррентные нейронные сети‎

Сигнал с выходных нейронов или нейронов скрытого слоя частично передается обратно на входы нейронов входного слоя (обратная связь). Рекуррентная сеть сеть Хопфилда «фильтрует» входные данные, возвращаясь к устойчивому состоянию и, таким образом, позволяет решать задачи компрессии данных и построения ассоциативной памяти [13] . Частным случаем рекуррентных сетей является двунаправленные сети. В таких сетях между слоями существуют связи как в направлении от входного слоя к выходному, так и в обратном. Классическим примером является Нейронная сеть Коско.

Радиально-базисные функции

Искусственные нейронные сети, использующие в качестве активационных функций радиально-базисные (такие сети сокращённо называются RBF-сетями). Общий вид радиально-базисной функции:

где x — вектор входных сигналов нейрона, σ — ширина окна функции, φ(y) — убывающая функция (чаще всего, равная нулю вне некоторого отрезка).

Радиально-базисная сеть характеризуется тремя особенностями:

1. Единственный скрытый слой

2. Только нейроны скрытого слоя имеют нелинейную активационную функцию

3. Синаптические веса связей входного и скрытого слоев равны единице

Про процедуру обучения — см. литературу

Самоорганизующиеся карты

Такие сети представляют собой соревновательную нейронную сеть с обучением без учителя, выполняющую задачу визуализации и кластеризации. Является методом проецирования многомерного пространства в пространство с более низкой размерностью (чаще всего, двумерное), применяется также для решения задач моделирования, прогнозирования и др. Является одной из версий нейронных сетей Кохонена. [14] Самоорганизующиеся карты Кохонена служат, в первую очередь, для визуализации и первоначального («разведывательного») анализа данных. [15]

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

Удобно рассматривать такие карты как двумерные сетки узлов, размещенных в многомерном пространстве. Изначально самоорганизующаяся карта представляет из себя сетку из узлов, соединенный между собой связями. Кохонен рассматривал два варианта соединения узлов — в прямоугольную и гексагональную сетку — отличие состоит в том, что в прямоугольной сетке каждый узел соединен с 4-мя соседними, а в гексагональной — с 6-ю ближайщими узлами. Для двух таких сеток процесс построения сети Кохонена отличается лишь в том месте, где перебираются ближайшие к данному узлу соседи.

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

  1. Случайным образом выбирается точка данных x .
  2. Определяется ближайший к x узел карты (BMU — Best Matching Unit).
  3. Этот узел перемещается на заданный шаг по направлению к x. Однако, он перемещается не один, а увлекает за собой определенное количество ближайших узлов из некоторой окрестности на карте. Из всех двигающихся узлов наиболее сильно смещается центральный — ближайший к точке данных — узел, а остальные испытывают тем меньшие смещения, чем дальше они от BMU. В настройке карты различают два этапа — этап грубой (ordering) и этап тонкой (fine-tuning) настройки. На первом этапе выбираются большие значения окрестностей и движение узлов носит коллективный характер — в результате карта «расправляется» и грубым образом отражает структуру данных; на этапе тонкой настройки радиус окрестности равен 1-2 и настраиваются уже индивидуальные положения узлов. Кроме этого, величина смещения равномерно затухает со временем, то есть она велика в начале каждого из этапов обучения и близка к нулю в конце.
  4. Алгоритм повторяется определенное число эпох (понятно, что число шагов может сильно изменяться в зависимости от задачи).

Известные типы сетей

  • Персептрон Розенблатта;
  • Многослойный перцептрон;
  • Сеть Джордана;
  • Сеть Элмана;
  • Сеть Хэмминга;
  • Сеть Ворда;
  • Сеть Хопфилда;
  • Сеть Кохонена;
  • Когнитрон;
  • Неокогнитрон;
  • Хаотическая нейронная сеть;
  • Осцилляторная нейронная сеть;
  • Сеть встречного распространения;
  • Сеть радиальных базисных функций (RBF-сеть);
  • Сеть обобщенной регрессии;
  • Вероятностная сеть;
  • Сиамская нейронная сеть;
  • Сети адаптивного резонанса.

Отличия от машин с архитектурой фон Неймана

Длительный период эволюции придал мозгу человека много качеств, которые отсутствуют в машинах с архитектурой фон Неймана:

  • Массовый параллелизм;
  • Распределённое представление информации и вычисления;
  • Способность к обучению и обобщению;
  • Адаптивность;
  • Свойство контекстуальной обработки информации;
  • Толерантность к ошибкам;
  • Низкое энергопотребление.

Нейронные сети — универсальные аппроксиматоры

Нейронные сети — универсальные аппроксимирующие устройства и могут с любой точностью имитировать любой непрерывный автомат. Доказана обобщённая аппроксимационная теорема [16] : с помощью линейных операций и каскадного соединения можно из произвольного нелинейного элемента получить устройство, вычисляющее любую непрерывную функцию с любой наперёд заданной точностью. Это означает, что нелинейная характеристика нейрона может быть произвольной: от сигмоидальной до произвольного волнового пакета или вейвлета, синуса или полинома. От выбора нелинейной функции может зависеть сложность конкретной сети, но с любой нелинейностью сеть остаётся универсальным аппроксиматором и при правильном выборе структуры может сколь угодно точно аппроксимировать функционирование любого непрерывного автомата.

Примеры приложений

Предсказание финансовых временных рядов

Входные данные — курс акций за год. Задача — определить завтрашний курс. Проводится следующее преобразование — выстраивается в ряд курс за сегодня, вчера, за позавчера, за позапозавчера. Следующий ряд — смещается по дате на один день и так далее. На полученном наборе обучается сеть с 3 входами и одним выходом — то есть выход: курс на дату, входы: курс на дату минус 1 день, минус 2 дня, минус 3 дня. Обученной сети подаем на вход курс за сегодня, вчера, позавчера и получаем ответ на завтра. Нетрудно заметить, что в этом случае сеть просто выведет зависимость одного параметра от трёх предыдущих. Если желательно учитывать ещё какой-то параметр (например, общий индекс по отрасли), то его надо добавить как вход (и включить в примеры), переобучить сеть и получить новые результаты. Для наиболее точного обучения стоит использовать метод ОРО, как наиболее предсказуемый и несложный в реализации.

Психодиагностика

Серия работ М. Г. Доррера с соавторами посвящена исследованию вопроса о возможности развития психологической интуиции у нейросетевых экспертных систем. [17] [18] Полученные результаты дают подход к раскрытию механизма интуиции нейронных сетей, проявляющейся при решении ими психодиагностических задач. Создан нестандартный для компьютерных методик интуитивный подход к психодиагностике, заключающийся в исключении построения описанной реальности. Он позволяет сократить и упростить работу над психодиагностическими методиками.

Хемоинформатика

Нейронные сети широко используются в химических и биохимических исследованиях [19] В настоящее время нейронные сети являются одним из самых распространенных методов хемоинформатики для поиска количественных соотношений структура-свойство [20] [21] , благодаря чему они активно используются как для прогнозирования физико-химических свойств и биологической активности химических соединений, так и для направленного дизайна химических соединений и материалов с заранее заданными свойствами, в том числе при разработке новых лекарственных препаратов.

См. также

Примечания

  1. Мак-Каллок У. С., Питтс В.,Логическое исчисление идей, относящихся к нервной активности // В сб.: «Автоматы» под ред. К. Э. Шеннона и Дж. Маккарти. — М.: Изд-во иностр. лит., 1956. — с.363-384. (Перевод английской статьи 1943 г.)
  2. Pattern Recognition and Adaptive Control. BERNARD WIDROW
  3. Уидроу Б., Стирнс С., Адаптивная обработка сигналов. — М.: Радио и связь, 1989. — 440 c.
  4. Werbos P. J., Beyond regression: New tools for prediction and analysis in the behavioral sciences. Ph.D. thesis, Harvard University, Cambridge, MA, 1974.
  5. Галушкин А. И. Синтез многослойных систем распознавания образов. — М.: «Энергия», 1974.
  6. Rumelhart D.E., Hinton G.E., Williams R.J., Learning Internal Representations by Error Propagation. In: Parallel Distributed Processing, vol. 1, pp. 318—362. Cambridge, MA, MIT Press. 1986.
  7. Барцев С. И., Охонин В. А. Адаптивные сети обработки информации. Красноярск : Ин-т физики СО АН СССР, 1986. Препринт N 59Б. — 20 с.
  8. BaseGroup Labs — Практическое применение нейросетей в задачах классификации
  9. Такой вид кодирования иногда называют кодом «1 из N»
  10. 12Открытые системы — введение в нейросети
  11. Миркес Е. М.,Логически прозрачные нейронные сети и производство явных знаний из данных, В кн.: Нейроинформатика / А. Н. Горбань, В. Л. Дунин-Барковский, А. Н. Кирдин и др. — Новосибирск: Наука. Сибирское предприятие РАН, 1998. — 296 с ISBN 5020314102
  12. Упоминание этой истории в журнале «Популярная механика»
  13. https://www.intuit.ru/department/expert/neuro/10/ INTUIT.ru — Рекуррентные сети как ассоциативные запоминающие устройства]
  14. Kohonen, T. (1989/1997/2001), Self-Organizing Maps, Berlin — New York: Springer-Verlag. First edition 1989, second edition 1997, third extended edition 2001, ISBN 0-387-51387-6, ISBN 3-540-67921-9
  15. Зиновьев А. Ю.Визуализация многомерных данных. — Красноярск: Изд. Красноярского государственного технического университета, 2000. — 180 с.
  16. Горбань А. Н., Обобщенная аппроксимационная теорема и вычислительные возможности нейронных сетей, Сибирский журнал вычислительной математики, 1998. Т.1, № 1. С. 12-24.
  17. Gorban A.N., Rossiyev D.A., Dorrer M.G., MultiNeuron — Neural Networks Simulator For Medical, Physiological, and Psychological Applications, Wcnn’95, Washington, D.C.: World Congress on Neural Networks 1995 International Neural Network Society Annual Meeting : Renaissance Hotel, Washington, D.C., USA, July 17-21, 1995.
  18. Доррер М. Г., Психологическая интуиция искусственных нейронных сетей, Дисс. . 1998. Другие копии онлайн: [1], [2]
  19. Баскин И. И., Палюлин В. А., Зефиров Н. С.,Применение искусственных нейронных сетей в химических и биохимических исследованиях, Вестн. Моск. Ун-Та. Сер. 2. Химия. 1999. Т.40. № 5.
  20. Гальберштам Н. М., Баскин И. И., Палюлин В. А., Зефиров Н. С. Нейронные сети как метод поиска зависимостей структура – свойство органических соединений // Успехи химии. — 2003. — Т. 72. — № 7. — С. 706-727.
  21. Баскин И. И., Палюлин В. А., Зефиров Н. С. Многослойные персептроны в исследовании зависимостей «структура-свойство» для органических соединений // Российский химический журнал (Журнал Российского химического общества им. Д.И.Менделеева). — 2006. — Т. 50. — С. 86-96.

Ссылки

  • Artificial Neural Network for PHP 5.x — Серьезный проект по разработке нейронных сетей на языке программирования PHP 5.X
  • Лекции по нейроинформатике
  • Лекции по машинному обучению и нейронным сетям
  • Форум, посвященный Нейронным Сетям и Генетическим Алгоритмам
  • Форум по нейросетям на BaseGroup Labs
  • Описание нейросетевых алгоритмов
  • Миркес Е. М., Нейроинформатика: Учеб. пособие для студентов с программами для выполнения лабораторных работ.
  • Forecasting Financial Markests using Artificial Neural Networks
  • Пошаговые примеры реализации наиболее известных типов нейронных сетей на MATLAB, Neural Network Toolbox
  • Лекции по нейронным сетям
  • Подборка материалов по нейронным сетям и интеллектуальному анализу
  • Статьяпротивника применения нейронных сетей в прогнозировании цен на акции
  • Подборка статей по нейронным сетям
  • Программные проекты с использованием нейросетей
  • Простой пример сети, с комментариями. Написан на php.

Литература

  • Круглов Владимир Васильевич, Борисов Вадим ВладимировичИскусственные нейронные сети. Теория и практика. — 1-е. — М.: Горячая линия — Телеком, 2001. — С. 382. — ISBN 5-93517-031-О
  • В. А. Терехов, Д. В. Ефимов, И. Ю. Тюкин Нейросетевые системы управления. — 1-е. — Высшая школа, 2002. — С. 184. — ISBN 5-06-004094-1
  • Уоссермен, Ф.Нейрокомпьютерная техника: Теория и практика = Neural Computing. Theory and Practice. — М.: Мир, 1992. — 240 с. — ISBN 5-03-002115-9
  • Саймон Хайкин Нейронные сети: полный курс = Neural Networks: A Comprehensive Foundation. — 2-е. — М.: «Вильямс», 2006. — С. 1104. — ISBN 0-13-273350-1
  • Роберт Каллан Основные концепции нейронных сетей = The Essence of Neural Networks First Edition. — 1-е. — «Вильямс», 2001. — С. 288. — ISBN 5-8459-0210-X
  • Л.Н. Ясницкий Введение в искусственный интеллект. — 1-е. — Издательский центр «Академия», 2005. — С. 176. — ISBN 5-7695-1958-4
  • Г. К. Вороновский, К. В. Махотило, С. Н. Петрашев, С. А. Сергеев Генетические алгоритмы, искусственные нейронные сети и проблемы виртуальной реальности. — заказное. — Х.: ОСНОВА, 1997. — С. 112. — ISBN 5-7768-0293-8
  • Миркес Е. М., Нейрокомпьютер. Проект стандарта. — Новосибирск: Наука, 1999. — 337 с. ISBN 5-02-031409-9 Другие копии онлайн: [3], [4].
  • Нейроинформатика. Новосибирск: Наука, 1998.

Инженерия знаний Информатика Общие понятия Данные · Метаданные · Знания · Метазнание · Представление знаний · База знаний · Онтология Жёсткие модели Продукции · Семантическая сеть · Фреймы · Логическая модель Мягкие методы Нейронная сеть · Генетический алгоритм · Нечёткая логика · Гибридная интеллектуальная система

Искусственный интеллект
Направления Агентный подход • Адаптивное управление • Генетические алгоритмы • Инженерия знаний • Машинное обучение • Нейронные сети • Нечёткая логика • Обработка естественного языка • Распознавание образов • Эволюционные алгоритмы • Экспертные системы
Применение Голосовое управление • Задача классификации • Классификация документов • Кластеризация документов • Кластерный анализ • Локальный поиск (оптимизация) • Машинный перевод • Оптическое распознавание символов • Распознавание речи • Распознавание рукописного ввода • Компьютерные игры
Исследователи ИИ Винер, Норберт • Алан Тьюринг • Глушков, Виктор Михайлович • Осипов, Геннадий С. • Попов Д. Э. • Поспелов, Дмитрий Александрович • Гаазе-Рапопорт, Модест Георгиевич • Гаврилова, Татьяна Альбертовна • Хорошевский, Владимир Фёдорович • Поспелов, Гермоген Сергеевич • Марвин Мински • Маккарти, Джон • Розенблатт, Фрэнк • Бэббидж, Чарльз • Ньюэлл, Аллен • Саймон, Герберт Александер • Хомский, Аврам Ноам • Паперт, Сеймур • Шеннон, Клод • Вейценбаум, Джозеф • Винстон, Патрик (Patrick Winston) • Финн, Виктор Константинович
Организации Singularity Institute for Artificial Intelligence
Философия ИИ Тест Тьюринга • Китайская комната
Все статьи • Портал

Wikimedia Foundation . 2010 .

Смотреть что такое «Нейронные сети» в других словарях:

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

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

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

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

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

Нейронная сеть Кохонена — Нейронные сети Кохонена класс нейронных сетей, основным элементом которых является слой Кохонена. Слой Кохонена состоит из адаптивных линейных сумматоров («линейных формальных нейронов»). Как правило, выходные сигналы слоя Кохонена… … Википедия

Векторное квантование — Нейронные сети Кохонена класс нейронных сетей, основным элементом которых является слой Кохонена. Слой Кохонена состоит из адаптивных линейных сумматоров («линейных формальных нейронов»). Как правило, выходные сигналы слоя Кохонена… … Википедия

Карта данных — Нейронные сети Кохонена класс нейронных сетей, основным элементом которых является слой Кохонена. Слой Кохонена состоит из адаптивных линейных сумматоров («линейных формальных нейронов»). Как правило, выходные сигналы слоя Кохонена… … Википедия

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

Искусственная нейросеть — Запрос «Нейронная сеть» перенаправляется сюда. Cм. также другие значения. Схема простой нейросети. Зелёным обозначены входные элементы, жёлтым выходной элемент Искусственные нейронные сети (ИНС) математические модели, а также их программные или… … Википедия

Скачай курс
в приложении

О курсе

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

Для кого этот курс

Студенты и научные работники всех специальностей, школьники старших классов профильных направлений.

Принципы построения нейронных сетей. Пишем простую нейросеть на JavaScript

Рассмотрим базовые принципы работы нейронных сетей, узнаем про Brain.js и попробуем подкрепить теорию на практике. Напишем свою первую нейронную сеть, которая будет уметь чуть больше чем ничего, но чуть меньше чем что-то. Статья не претендует на пособие по разработке нейронных сетей, я постараюсь дать Вам базовые знания и представления о работе нейросетей, которыми обладаю сам>

Введем понятие ИНС — искусственная нейронная сеть. т.e. сеть построенная при помощи компьютерной системы;

НС — нейронная сеть мозга человека.

Что такое ИНС?

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

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

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

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

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

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

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

Мастер Йода рекомендует:  Полезные функции Android

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

Важно понимать что ИНС оперирует данными в диапазоне от 0 до 1. Вычисление веса в сумматоре производится пос следующей формуле:

(L1 * W1) + (L2 * W2) + (L3 * W3) = W

Функция совершенно линейна, из этого мы получаем следующую формулу:

(0.35 * 0.1) + (0.12 * 0.3) + (0.6 * 0.2) = 0.191

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

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

Функций активации достаточно много поэтому мы рассмотрим самые основные: Линейная, Сигмоид (Логистическая) и Гиперболический тангенс. Главные их отличия — это диапазон значений.

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

Это самая распространенная функция активации, ее диапазон значений [0,1]. Именно на ней показано большинство примеров в сети, также ее иногда называют логистической функцией. Соответственно, если в вашем случае присутствуют отрицательные значения (например, акции могут идти не только вверх, но и вниз), то вам понадобиться функция которая захватывает и отрицательные значения.

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

Подведем итоги. Что мы узнали про ИНС?

У нейрона есть входы. На них подаются сигналы в виде чисел. Каждый вход имеет свой вес (тоже число). Сигналы на входе умножаются на соответствующие веса. Получаем набор «взвешенных» входных сигналов.

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

Затем взвешенная сумма преобразуется функцией активации и мы получаем выход нейрона.

Виды ИНС

Мы разобрались со структурой искусственного нейрона. Искусственные нейронные сети состоят из совокупности искусственных нейронов. Возникает логичный вопрос – а как располагать/соединять друг с другом эти самые искусственные нейроны?

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

На этом схожесть заканчивается и начинаются различия.

Однослойные нейронные сети

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

Выглядит однослойная нейронная сеть следующим образом:

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

Нейроны соединены друг с другом стрелками. Над стрелками расположены веса соответствующих связей (весовые коэффициенты).

Однослойная нейронная сеть (Single-layer neural network) — сеть, в которой сигналы от входного слоя сразу подаются на выходной слой, который и преобразует сигнал и сразу же выдает ответ.

Многослойные нейронные сети

Такие сети, помимо входного и выходного слоев нейронов, характеризуются еще и скрытым слоем (слоями). Понять их расположение просто – эти слои находятся между входным и выходным слоями.

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

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

Многослойные нейронные сети обладают гораздо большими возможностями, чем однослойные.

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

Сети прямого распространения

Можно заметить одну очень интересную деталь на картинках нейросетей в примерах выше.

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

Сети прямого распространения (Feedforward neural network) (feedforward сети) — искусственные нейронные сети, в которых сигнал распространяется строго от входного слоя к выходному. В обратном направлении сигнал не распространяется.

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

Однако никто не запрещает сигналу идти и в обратную сторону.

Сети с обратными связями

В сетях такого типа сигнал может идти и в обратную сторону. В чем преимущество?

Дело в том, что в сетях прямого распространения выход сети определяется входным сигналом и весовыми коэффициентами при искусственных нейронах.

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

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

Классификация ИНС

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

Классификация образов. Задача состоит в указании принадлежности входного образа (например, речевого сигнала или рукописного символа), представленного вектором признаков, одному или нескольким предварительно определенным классам. К известным приложениям относятся распознавание букв, распознавание речи, классификация сигнала электрокардио-граммы, классификация клеток крови, обеспечение деятельности биометрических сканеров и т. п.

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

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

Предсказание/прогноз. Пусть заданы n дискретных отсчетов в последовательные моменты времени t1, t2. tn. Задача состоит в предсказании значения y (tn+1) в некоторый будущий момент времени tn+1. Предсказание/прогноз имеют значительное влияние на принятие решений в бизнесе, науке и технике. Предсказание цен на фондовой бирже и прогноз погоды являются типичными приложениями техники предсказания/прогноза.

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

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

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

Отлично! Но как научить сеть делать то, что я от нее хочу? Может нужно помочь ей? Или она сама себя обучит?

Искусственная нейронная сеть – это совокупность искусственных нейронов. Теперь давайте возьмем, например, 100 нейронов и соединим их друг с другом. Ясно, что при подаче сигнала на вход, мы получим что-то бессмысленное на выходе.

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

Что мы можем менять в нейронной сети?

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

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

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

Остается только один вариант – менять веса связей.

Обучение нейронной сети (Training) — поиск такого набора весовых коэффициентов, при котором входной сигнал после прохода по сети преобразуется в нужный нам выходной.

Такой подход к термину «обучение нейронной сети» соответствует и биологическим нейросетям. Наш мозг состоит из огромного количества связанных друг с другом нейросетей. Каждая из них в отдельности состоит из нейронов одного типа (функция активации одинаковая). Мы обучаемся благодаря изменению синапсов – элементов, которые усиливают/ослабляют входной сигнал.

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

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

Именно с этой целью и создаются обучающие выборки.

Обучающая выборка (Training set) — конечный набор входных сигналов (иногда вместе с правильными выходными сигналами), по которым происходит обучение сети.

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

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

Тестовая выборка (Testing set) — конечный набор входных сигналов (иногда вместе с правильными выходными сигналами), по которым происходит оценка качества работы сети.

Мы поняли, что такое «обучение сети» – подбор правильного набора весов. Теперь возникает вопрос – а как можно обучать сеть? В самом общем случае есть два подхода, приводящие к разным результатам: обучение с учителем и обучение без учителя.

Обучение с учителем

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

Важный момент. Не путайте правильные ответы и известный алгоритм решения! Вы можете обвести пальцем лицо на фото (правильный ответ), но не сможете сказать, как это сделали (известный алгоритм). Тут такая же ситуация.

Затем, с помощью специальных алгоритмов, вы меняете веса связей нейронной сети и снова даете ей входной сигнал. Сравниваете ее ответ с правильным и повторяете этот процесс до тех пор, пока сеть не начнет отвечать с приемлемой точностью (как я говорил в 1 главе, однозначно точных ответов сеть давать не может).

Обучение без учителя

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

Что же происходит при таком обучении сети? Оказывается, что при таком «обучении» сеть начинает выделять классы подаваемых на вход сигналов. Короче говоря – сеть начинает кластеризацию.

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

Обучение без учителя (Unsupervised learning) — вид обучения сети, при котором сеть самостоятельно классифицирует входные сигналы. Правильные (эталонные) выходные сигналы не демонстрируются.

Выводы

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

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

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

Вы уже знаете необходимую теорию. Давайте попробуем подкрепить наши знания на практике.

Практика

Наиболее распространенным решением является использование Python для построения ИНС. Существует огромное множество готовых решений и библиотек для построения ИНС. Но так как мы лучше знакомы с веб языками программирования, то мы будем использовать JavaScript. При работе с ИНС Вам вряд ли придется их самостоятельно писать, но понимать принцип работы ИНС необходимо понимать при работе с ними.
Мы будем использовать популярную JavaScript библиотеку brain.js.

В библиотеке уже реализованы все необходимые инструменты для работы с ИНС и нам лишь необходимо передать необходимые параметры для создания нужного нам экземпляра brain.js. Первый релиз библиотеки состоялся 1 января 2020г. Правильнее будет сказать, что первый релиз после упадка библиотеки состоялся 1 января 2020г. Библиотека brain.js является работой энтузиастов, которые не стали равнодушны к закрытию проекта brain и создали собственный форк, который по сей день очень активно развивается. Начать работать с brain.js очень просто, для этого Вам необходимо пройти несколько шагов:

  • Установить NodeJS и NPM, либо использовать версию для браузера (ее можно подключить прямо в документ с CDN);
  • Если Вы решили использовать NodeJS, то Вам необходимо установить пакет brain.js, выполнив команду npm install brain.js и подключить ее в файл командой const brain = require(‘brain.js’) ;
  • Создать экземпляр объекта ИНС, передав необходимые параметры конструктору: const net = new brain.NeuralNetwork(<. >) ;
  • Тренировать сеть при помощи команды train и набора тренировочных данных;
  • Использовать ИНС при помощи команды run ;

Библиотека имеет отличный пример работы в котором на первом этапе Вам необходимо создать тренировочные данные для ИНС выбирая цвет текста на разноцветных плитках, который лучше видно. На втором этапе после обучения, ИНС сама будет определять какой цвет текста будет лучше видно на разноцветных плитках. Пример находится по этому адресу. Так же существует отличный интерактивный урок по работе с brain.js на scrimba. Еще больше примеров и уроков можно найти в WIKI на GitHub.

Вот некоторая техническая информация которая может понадобиться Вам при работе с brain.js. Я не нашел русского перевода, поэтому перевел самостоятельно, поправьте если я где-то допустил ошибку.

Использование brain.js в браузере требует вычислительных затрат, поэтому вы должны попытаться обучить сеть в автономном режиме (или на рабочем месте) и использовать опции toFunction()или toJSON(), чтобы подключить предварительно обученную сеть к своему веб-сайту.

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

Тренировка с NeuralNetwork

Каждый тренировочный шаблон должен иметь an inputи an output , оба из которых могут быть либо массивом чисел от 0 до 1 , либо хешем чисел от 0 до 1 . Для демонстрации цветового контраста это выглядит примерно так:

Для обучения с RNNTimeStep, LSTMTimeStepиGRUTimeStep
Каждый шаблон тренировки может:

— Быть массивом чисел
— Быть массивом массивов чисел

Пример использования массива чисел:

Пример использования массива чисел:

Для обучения с RNN, LSTMиGRU
Каждый шаблон тренировки может:

— Быть массивом значений
— Будь строкой
— Есть input и output
Любой из которых может массив значений или строка

Пример использования прямых строк:

Пример использования строк с входами и выходами:

Варианты обучения

train() принимает хэш опций в качестве второго аргумента:

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

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

Скорость обучения — это параметр, который влияет на скорость обучения в сети. Это число от 0до 1. Если скорость обучения близка 0, обучение займет больше времени. Если скорость обучения ближе 1, она будет тренироваться быстрее, но результаты обучения могут быть ограничены локальным минимумом и плохо работать с новыми данными. ( Переоснащение ) Скорость обучения по умолчанию — 0.3.

JSON
Сериализация или загрузка в состоянии обученной сети с помощью JSON:

Автономная функция
Вы также можете получить настраиваемую автономную функцию из обученной сети, которая действует так же, как run():

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

— sigmoid
— relu
— leaky-relu (с этой опцией доступен параметр «leakyReluAlpha», по умолчанию 0,01)
— tanh

Вот таблица (спасибо, Википедия!), Обобщающая множество функций активации — Функция активации

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

hiddenLayers: [3, 4]
По умолчанию brain.js используется один скрытый слой с размером, пропорциональным размеру входного массива.

Типы нейронных сетей

Теперь когда мы знаем что представляют из себя ИНС и обладаем технической информацией по работе с brain.js можно приступить к написанию своей первой ИНС. Я буду использовать repl.it для публикации кода и NodeJS для вычислительных процессов что бы не нагружать Ваши браузеры.

В качестве первого примера предлагаю написать нейронную сеть по расчету XOR. XOR — это операция, которая принимает значение «истина» только если всего один из аргументов имеет значение «истина».

Более подробно изучить работу XOR Вы можете в отличной статье fealsoft на habr.com.

Пример 1

В реальной жизни эта ИНС конечно же является абсолютно бесполезной, но отлично подходит для простого промера. В качестве тренировочных данных на вход мы будем передавать два аргумента, а на выход результат XOR. К примеру [input: [0,0];output: 0,input:[0,1];output:1, . ] . Таким образом наша ИНС найдет закономерность и будет самостоятельно выявлять XOR. Важно понимать фактически она не будет высчитывать XOR, она будет делать предсказания каким может быть XOR для введенных аргументов. Весь код имеет комментарии и не вижу необходимости более детально углубляться в подробности реализации, Вы можете попробовать поменять значения передаваемые в функцию run и проверить корректность работы ИНС. Пример ИНС для расчета XOR:

Разрабатывать бесполезную ИНС для выполнения элементарных вычислений безумно «увлекательное » занятие, не так ли? Вы наверняка хотели бы создавать нейросети, которые будут уметь отвечать пользователю, проявлять признаки интеллекта или хотя бы будут как-то полезны обществу. Не вопрос!

Пример 2

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

Предположим что в учебном заведении есть закрытая социальная сеть, в которой учащиеся ежедневно оставляют более 500 000 сообщений. Эта информация строго конфиденциальная, но Вы имеете к ней доступ, так как подписали договор о не разглашении. Отлично! Теперь у нас есть несколько миллионов сообщений вместо 30 000 учеников!

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

Перед нами стоит следующая задача: Построить ИИС которая будет определять эмоциональное состояние человека по сообщению.

Входными данными является сообщение пользователя.

Выходными данными является строка: «хорошее» — если эмоциональный окрас сообщения позитивный, «плохое» — если эмоциональный окрас сообщения агрессивный или депрессивный.

Сообщение «Завтра будет просто ужасный день!»

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

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

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

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