нейросеть что это за сеть

Нейронные сети

Что такое нейронные сети?

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

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

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

Принцип работы нейронных сетей

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

∑wixi + bias = w1x1 + w2x2 + w3x3 + bias

output = f(x) = 1 if ∑w1x1 + b> = 0; 0 if ∑w1x1 + b

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

Попробуем представить отдельно взятый узел в виде двоичных чисел. Для более наглядной демонстрации этой концепции рассмотрим реальный пример: допустим, вам нужно принять решение, стоит ли идти на серфинг (Да: 1, Нет: 0). Решение «идти» или «не идти» — наш прогнозируемый результат или «y c крышечкой». Предположим, существует три фактора, которые влияют на принятие решения:

Предположим, у нас имеются следующие входные данные:

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

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

Y-hat = (1*5) + (0*2) + (1*4) – 3 = 6

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

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

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

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

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

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

Виды нейронных сетей

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

Персептрон — первая нейронная сеть, созданная Фрэнком Розентблаттом в 1958 году. Она содержит один нейрон и представляет собой простейшую форму нейронной сети:

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

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

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

Сравнение нейронных сетей и глубокого обучения

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

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

Читайте также:  можно ли собаке колоть мовалис

История возникновения нейронных сетей

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

1943: Уоррен Маккалок и Уолтер Питтс опубликовали работу «Логическое исчисление идей, относящихся к нервной деятельности» (внешняя ссылка, PDF, 1 МБ). Целью данного исследования было изучение работы человеческого мозга, а именно: создание сложных моделей путем передачи сигналов клетками мозга или нейронами. Одной из главных идей, возникших в ходе данного исследования, стала аналогия между нейронами с двоичным пороговым значением и булевской логикой (значения 0/1 или утверждения истина/ложь).

1958: Фрэнк Розенблатт в своем исследовании «Персептрон: вероятностная модель хранения и организации информации в головном мозге» (внешняя ссылка, PDF, 1,6 МБ) описал модель персептрона. Он развил идеи Маккалока и Питтса, добавив в формулу весовые коэффициенты. На компьютере IBM 704 Розенблатт смог обучить систему распознавать карточки, маркированные слева и справа.

1974: первым ученым на территории США, описавшим в своей диссертации (внешняя ссылка, PDF, 8,1 МБ) использование алгоритма обратного распространения ошибки в нейронных сетях, стал Пол Вербос, хотя развитием этой идеи занимались многие исследователи.

1989: Янн Лекун опубликовал статью (внешняя ссылка, PDF, 5,7 МБ), в которой было описано практическое использование ограничений обратного распространения ошибки и интеграция в архитектуру нейронной сети для обучения алгоритмов. В данном исследовании нейронная сеть успешно обучилась распознавать рукописные символы почтового индекса, предоставленные Почтовой службой США.

Нейронные сети и IBM Cloud

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

Архитектура UIMA (Apache Unstructured Information Management Architecture) и программное обеспечение IBM DeepQA, лежащие в основе Watson, позволяют интегрировать в приложения мощные функции глубокого обучения. С помощью таких инструментов, как IBM Watson Studio, ваше предприятие сможет эффективно перенести ИИ-проекты с открытым исходным кодом в рабочую среду с возможностью развертывания и выполнения моделей в любой облачной среде.

Более подробная информация о том, как приступить к использованию технологии глубокого обучения, приведена на страницах IBM Watson Studio и Deep Learning service.

Источник

Содержание

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Ушиб большого пальца на ноге чем намазать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Нейронные сети для начинающих. Часть 1

Привет всем читателям Habrahabr, в этой статье я хочу поделиться с Вами моим опытом в изучении нейронных сетей и, как следствие, их реализации, с помощью языка программирования Java, на платформе Android. Мое знакомство с нейронными сетями произошло, когда вышло приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. Заинтересовавшись этим, я бросился искать статьи и «туториалы», в первую очередь, на Хабре. И к моему великому удивлению, я не нашел ни одну статью, которая четко и поэтапно расписывала алгоритм работы нейронных сетей. Информация была разрознена и в ней отсутствовали ключевые моменты. Также, большинство авторов бросается показывать код на том или ином языке программирования, не прибегая к детальным объяснениям.

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

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

a b c
0 0 0
0 1 1
1 0 1
1 1 0

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

Что такое нейронная сеть?

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

Какие бывают нейронные сети?

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

Для чего нужны нейронные сети?

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

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

Читайте также:  над чем заставила задуматься трагедия скупой рыцарь

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

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

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

Что такое нейрон?

Нейрон — это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной (синий), скрытый (красный) и выходной (зеленый). Также есть нейрон смещения и контекстный нейрон о которых мы поговорим в следующей статье. В том случае, когда нейросеть состоит из большого количества нейронов, вводят термин слоя. Соответственно, есть входной слой, который получает информацию, n скрытых слоев (обычно их не больше 3), которые ее обрабатывают и выходной слой, который выводит результат. У каждого из нейронов есть 2 основных параметра: входные данные (input data) и выходные данные (output data). В случае входного нейрона: input=output. В остальных, в поле input попадает суммарная информация всех нейронов с предыдущего слоя, после чего, она нормализуется, с помощью функции активации (пока что просто представим ее f(x)) и попадает в поле output.

Важно помнить, что нейроны оперируют числами в диапазоне [0,1] или [-1,1]. А как же, вы спросите, тогда обрабатывать числа, которые выходят из данного диапазона? На данном этапе, самый простой ответ — это разделить 1 на это число. Этот процесс называется нормализацией, и он очень часто используется в нейронных сетях. Подробнее об этом чуть позже.

Что такое синапс?

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

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

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

В данном примере изображена часть нейронной сети, где буквами I обозначены входные нейроны, буквой H — скрытый нейрон, а буквой w — веса. Из формулы видно, что входная информация — это сумма всех входных данных, умноженных на соответствующие им веса. Тогда дадим на вход 1 и 0. Пусть w1=0.4 и w2 = 0.7 Входные данные нейрона Н1 будут следующими: 1*0.4+0*0.7=0.4. Теперь когда у нас есть входные данные, мы можем получить выходные данные, подставив входное значение в функцию активации (подробнее о ней далее). Теперь, когда у нас есть выходные данные, мы передаем их дальше. И так, мы повторяем для всех слоев, пока не дойдем до выходного нейрона. Запустив такую сеть в первый раз мы увидим, что ответ далек от правильно, потому что сеть не натренирована. Чтобы улучшить результаты мы будем ее тренировать. Но прежде чем узнать как это делать, давайте введем несколько терминов и свойств нейронной сети.

Функция активации

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

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

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

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

Тренировочный сет

Тренировочный сет — это последовательность данных, которыми оперирует нейронная сеть. В нашем случае исключающего или (xor) у нас всего 4 разных исхода то есть у нас будет 4 тренировочных сета: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

Итерация

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

Эпоха

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

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

Ошибка

Ошибка — это процентная величина, отражающая расхождение между ожидаемым и полученным ответами. Ошибка формируется каждую эпоху и должна идти на спад. Если этого не происходит, значит, вы что-то делаете не так. Ошибку можно вычислить разными путями, но мы рассмотрим лишь три основных способа: Mean Squared Error (далее MSE), Root MSE и Arctan. Здесь нет какого-либо ограничения на использование, как в функции активации, и вы вольны выбрать любой метод, который будет приносить вам наилучший результат. Стоит лишь учитывать, что каждый метод считает ошибки по разному. У Arctan, ошибка, почти всегда, будет больше, так как он работает по принципу: чем больше разница, тем больше ошибка. У Root MSE будет наименьшая ошибка, поэтому, чаще всего, используют MSE, которая сохраняет баланс в вычислении ошибки.

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

Задача

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

H1input = 1*0.45+0*-0.12=0.45
H1output = sigmoid(0.45)=0.61

H2input = 1*0.78+0*0.13=0.78
H2output = sigmoid(0.78)=0.69

O1input = 0.61*1.5+0.69*-2.3=-0.672
O1output = sigmoid(-0.672)=0.33

Результат — 0.33, ошибка — 45%.

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

Источник

Строительный портал