Что такое нейронная сеть?
Нейронная сеть — это метод в искусственном интеллекте, который учит компьютеры обрабатывать данные таким же способом, как и человеческий мозг. Это тип процесса машинного обучения, называемый глубоким обучением, который использует взаимосвязанные узлы или нейроны в слоистой структуре, напоминающей человеческий мозг. Он создает адаптивную систему, с помощью которой компьютеры учатся на своих ошибках и постоянно совершенствуются. Таким образом, искусственные нейронные сети пытаются решать сложные задачи, такие как резюмирование документов или распознавание лиц, с более высокой точностью.
В чем заключается важность нейронных сетей?
Нейронные сети помогают компьютерам принимать разумные решения с ограниченным участием человека. Они могут изучать и моделировать отношения между нелинейными и сложными входными и выходными данными. Например, нейронные сети могут выполнять следующие задачи.
Обобщать и делать выводы
Нейронные сети могут понимать неструктурированные данные и делать общие наблюдения без специального обучения. Например, они могут распознать, что два разных входных предложения имеют одинаковое значение:
- Не подскажете как произвести оплату?
- Как мне перевести деньги?
Нейронная сеть поймет, что оба предложения означают одно и то же. Также она может определить, что Бакстер-роуд — это место, а Бакстер Смит — это имя человека.
Для чего используются нейронные сети?
Нейронные сети распространены во множестве отраслей. В их числе:
- Диагностика с помощью классификации медицинских изображений
- Целевой маркетинг с помощью фильтрации социальных сетей и анализа поведенческих данных
- Финансовые прогнозы с помощью обработки исторических данных финансовых инструментов
- Прогнозирование электрической нагрузки и потребности в энергии
- Контроль соответствия требованиям и качества
- Определение химических соединений
Ниже представлены четыре важнейших задачи, которые помогают решить нейронные сети.
Машинное зрение
Машинное зрение — это способность компьютеров извлекать информацию и смысл из изображений и видео. С помощью нейронных сетей компьютеры могут различать и распознавать изображения так, как это делают люди. Машинное зрение применяется в нескольких областях, например:
- Визуальное распознавание в беспилотных автомобилях, чтобы они могли реагировать на дорожные знаки и других участников движения
- Модерация контента для автоматического удаления небезопасного или неприемлемого контента из архивов изображений и видео
- Распознавание лиц для идентификации людей и распознавания таких атрибутов, как открытые глаза, очки и растительность на лице
- Маркировка изображения для идентификации логотипов бренда, одежды, защитного снаряжения и других деталей изображения
Распознавание речи
Нейронные сети могут анализировать человеческую речь независимо от ее речевых моделей, высоты, тона, языка и акцента. Виртуальные помощники, такие как Amazon Alexa и программное обеспечение для автоматической транскрипции, используют распознавание речи для выполнения следующих задач:
- Помощь операторам колл-центра и автоматическая классификация звонков
- Преобразование клинических рекомендаций в документацию в режиме реального времени
- Точные субтитры к видео и записям совещаний для более широкого охвата контента
Обработка естественного языка
Обработка естественного языка (NLP) — это способность обрабатывать естественный, созданный человеком текст. Нейронные сети помогают компьютерам извлекать информацию и смысл из текстовых данных и документов. NLP имеет несколько сфер применения, в том числе:
- Автоматизированные виртуальные агенты и чат-боты
- Автоматическая организация и классификация записанных данных
- Бизнес-аналитика длинных документов: например, электронных писем и форм
- Индексация ключевых фраз, указывающих на настроение: например, положительных и отрицательных комментариев в социальных сетях
- Обобщение документов и генерация статей по заданной теме
Сервисы рекомендаций
Нейронные сети могут отслеживать действия пользователей для разработки персонализированных рекомендаций. Они также могут анализировать все действия пользователей и обнаруживать новые продукты или услуги, которые интересуют конкретного потребителя. Например, стартап из Филадельфии Curalate помогает брендам конвертировать сообщения в социальных сетях в продажи. Бренды используют службу интеллектуальной маркировки продуктов (IPT) Curalate для автоматизации сбора и обработки контента пользователей социальных сетей. IPT использует нейронные сети для автоматического поиска и рекомендации продуктов, соответствующих активности пользователя в социальных сетях. Потребителям не нужно рыться в онлайн-каталогах, чтобы найти конкретный продукт по изображению в социальных сетях. Вместо этого они могут использовать автоматическую маркировку Curalate, чтобы с легкостью приобрести продукт.
Как работают нейронные сети?
Архитектура нейронных сетей повторяет структуру человеческого мозга. Клетки человеческого мозга, называемые нейронами, образуют сложную сеть с высокой степенью взаимосвязи и посылают друг другу электрические сигналы, помогая людям обрабатывать информацию. Точно так же искусственная нейронная сеть состоит из искусственных нейронов, которые взаимодействуют для решения проблем. Искусственные нейроны — это программные модули, называемые узлами, а искусственные нейронные сети — это программы или алгоритмы, которые используют вычислительные системы для выполнения математических вычислений.
Архитектура базовой нейронной сети
Базовая нейронная сеть содержит три слоя взаимосвязанных искусственных нейронов:
Входной слой
Информация из внешнего мира поступает в искусственную нейронную сеть из входного слоя. Входные узлы обрабатывают данные, анализируют или классифицируют их и передают на следующий слой.
Скрытый слой
Скрытые слои получают входные данные от входного слоя или других скрытых слоев. Искусственные нейронные сети могут иметь большое количество скрытых слоев. Каждый скрытый слой анализирует выходные данные предыдущего слоя, обрабатывает их и передает на следующий слой.
Выходной слой
Выходной слой дает окончательный результат обработки всех данных искусственной нейронной сетью. Он может иметь один или несколько узлов. Например, при решении задачи двоичной классификации (да/нет) выходной слой будет иметь один выходной узел, который даст результат «1» или «0». Однако в случае множественной классификации выходной слой может состоять из более чем одного выходного узла.
Архитектура глубокой нейронной сети
Глубокие нейронные сети или сети глубокого обучения имеют несколько скрытых слоев с миллионами связанных друг с другом искусственных нейронов. Число, называемое весом, указывает на связи одного узла с другими. Вес является положительным числом, если один узел возбуждает другой, или отрицательным, если один узел подавляет другой. Узлы с более высокими значениями веса имеют большее влияние на другие узлы.
Теоретически глубокие нейронные сети могут сопоставлять любой тип ввода с любым типом вывода. Однако стоит учитывать, что им требуется гораздо более сложное обучение, чем другим методам машинного обучения. Таким узлам нужны миллионы примеров обучающих данных, а не сотни или тысячи, как в случае с простыми сетями.
Какие типы нейронных сетей существуют?
Искусственные нейронные сети можно классифицировать по тому, как данные передаются от входного узла к выходному узлу. Ниже приведены несколько примеров.
Нейронные сети прямого распространения
Нейронные сети прямого распространения обрабатывают данные в одном направлении, от входного узла к выходному узлу. Каждый узел одного слоя связан с каждым узлом следующего слоя. Нейронные сети прямого распространения используют процесс обратной связи для улучшения прогнозов с течением времени.
Алгоритм обратного распространения
Искусственные нейронные сети постоянно обучаются, используя корректирующие циклы обратной связи для улучшения своей прогностической аналитики. Проще говоря, речь идет о данных, протекающих от входного узла к выходному узлу по множеству различных путей в нейронной сети. Правильным является только один путь, который сопоставляет входной узел с правильным выходным узлом. Чтобы найти этот путь, нейронная сеть использует петлю обратной связи, которая работает следующим образом:
- Каждый узел делает предположение о следующем узле на пути.
- Он проверяет, является ли предположение правильным. Узлы присваивают более высокие значения веса путям, которые приводят к более правильным предположениям, и более низкие значения веса путям узлов, которые приводят к неправильным предположениям.
- Для следующей точки данных узлы делают новый прогноз, используя пути с более высоким весом, а затем повторяют шаг 1.
Сверточные нейронные сети
Скрытые слои в сверточных нейронных сетях выполняют определенные математические функции (например, суммирование или фильтрацию), называемые свертками. Они очень полезны для классификации изображений, поскольку могут извлекать из них соответствующие признаки, полезные для распознавания и классификации. Новую форму легче обрабатывать без потери функций, которые имеют решающее значение для правильного предположения. Каждый скрытый слой извлекает и обрабатывает различные характеристики изображения: границы, цвет и глубину.
Как обучать нейронные сети?
Обучение нейронной сети — это процесс обучения нейронной сети выполнению задачи. Нейронные сети обучаются путем первичной обработки нескольких больших наборов размеченных или неразмеченных данных. На основе этих примеров сети могут более точно обрабатывать неизвестные входные данные.
Контролируемое обучение
При контролируемом обучении специалисты по работе с данными предлагают искусственным нейронным сетям помеченные наборы данных, которые заранее дают правильный ответ. Например, сеть глубокого обучения, обучающаяся распознаванию лиц, обрабатывает сотни тысяч изображений человеческих лиц с различными терминами, связанными с этническим происхождением, страной или эмоциями, описывающими каждое изображение.
Нейронная сеть медленно накапливает знания из этих наборов данных, которые заранее дают правильный ответ. После обучения сеть начинает делать предположения об этническом происхождении или эмоциях нового изображения человеческого лица, которое она никогда раньше не обрабатывала.
Что такое глубокое обучение в контексте нейронных сетей?
Искусственный интеллект — это область компьютерных наук, которая исследует методы предоставления машинам возможности выполнять задачи, требующие человеческого интеллекта. Машинное обучение — это метод искусственного интеллекта, который дает компьютерам доступ к очень большим наборам данных для дальнейшего обучения. Программное обеспечение для машинного обучения находит шаблоны в существующих данных и применяет эти шаблоны к новым данным для принятия разумных решений. Глубокое обучение — это разновидность машинного обучения, в котором для обработки данных используются сети глубокого обучения.
Машинное обучение и глубокое обучение
Традиционные методы машинного обучения требуют участия человека, чтобы программное обеспечение работало должным образом. Специалист по работе с данными вручную определяет набор соответствующих функций, которые должно анализировать программное обеспечение. Это ограничение делает создание и управление программным обеспечением утомительным и трудозатратным процессом.
С другой стороны, при глубоком обучении специалист по работе с данными предоставляет программному обеспечению только необработанные данные. Сеть глубокого обучения извлекает функции самостоятельно и обучается более независимо. Она может анализировать неструктурированные наборы данных (например, текстовые документы), определять приоритеты атрибутов данных и решать более сложные задачи.
Например, при обучении программного обеспечения с алгоритмами машинного обучения правильно идентифицировать изображение домашнего животного вам потребуется выполнить следующие шаги:
- Найти и вручную отметить тысячи изображений домашних животных: кошек, собак, лошадей, хомяков, попугаев и т. д.
- Сообщить программному обеспечению с алгоритмами машинного обучения, какие функции необходимо найти, чтобы оно могло идентифицировать изображение методом исключения. Например, оно может подсчитать количество ног, а затем проверить форму глаз, ушей, хвоста, цвет меха и так далее.
- Вручную оценить и изменить помеченные наборы данных, чтобы повысить точность программного обеспечения. Например, если в вашем тренировочном наборе слишком много изображений черных кошек, программное обеспечение правильно определит черную кошку, но не белую.
- При глубоком обучении нейронные сети будут обрабатывать все изображения и автоматически определять, что сначала им требуется проанализировать количество ног и форму морды, а уже после посмотреть на хвосты, чтобы правильно идентифицировать животное на изображении.
Что такое сервисы глубокого обучения в AWS?
Сервисы глубокого обучения AWS используют возможности облачных вычислений, чтобы вы могли масштабировать свои нейронные сети глубокого обучения с меньшими затратами и оптимизировать их для повышения скорости. Вы также можете использовать подобные сервисы AWS для полного управления конкретными приложениями глубокого обучения:
- Amazon Rekognition для добавления предварительно обученных или настраиваемых функций машинного зрения в ваше приложение.
- Amazon Transcribe для автоматического распознавания и точной расшифровки речи.
- Amazon Lex для создания интеллектуальных чат-ботов, которые понимают намерения, поддерживают диалоговый контекст и автоматизируют простые задачи на разных языках.
Начните работу с нейронными сетями глубокого обучения в AWS с помощью Amazon SageMaker, чтобы быстро и легко создавать, обучать и развертывать модели в любом масштабе. Также можно использовать решение AMI глубокого обучения AWS для разработки пользовательских сред и рабочих процессов для глубокого обучения.
Создайте бесплатный аккаунт AWS, чтобы начать работу уже сегодня.
Как работает нейронная сеть: разбираемся с основами
Мария Жарова Эксперт по Python и математике для Data Science, ментор одного из проектов на курсе по Data Science.
Сейчас на слуху «творчество нейросетей»: сгенерированные машиной тексты и стихи, несуществующие картины и фотографии людей, почти похожие на настоящие. Для человека вне IT это выглядит как чудо. Но на самом деле нейронные сети хорошо объясняются математически, хотя результат их работы действительно невозможно предсказать.
Что такое нейросети?
Нейросети — математические модели и их программное воплощение, основанные на строении человеческой нервной системы. Самую простую нейронную сеть, перцептрон (модель восприятия информации мозгом), вы сможете легко самостоятельно написать и запустить на своем компьютере, не используя сторонние мощности и дополнительные устройства. Пройдите наш тест и узнайте, какой контент подготовил искусственный интеллект, а какой — реальный человек. Чтобы лучше понять, что это такое, попробуем сначала разобраться, как работают биологические нейронные сети — те, что находятся внутри нашего организма. Именно они стали прообразом для машинных нейронных сетей. Биологические нейронные сети. Нервная система живого существа состоит из нейронов — клеток, которые накапливают и передают информацию в виде электрических и химических импульсов. У нейронов есть аксон — основная часть клетки, и дендрит — длинный отросток на ее конце, который может достигать сантиметра в длину. Дендриты передают информацию с одной клетки на другую и работают как «провода» для нервных импульсов. С помощью специальных шипов они цепляются за другие нейроны, и так сигналы передаются по всей нервной системе.
Освойте профессию «Data Scientist» на курсе с МГУ
Data Scientist с нуля до PRO
Освойте профессию Data Scientist с нуля до уровня PRO на углубленном курсе совместно с академиком РАН из МГУ. Изучите продвинутую математику с азов, получите реальный опыт на практических проектах и начните работать удаленно из любой точки мира.
25 месяцев
Data Scientist с нуля до PRO
Создавайте ML-модели и работайте с нейронными сетями
11 317 ₽/мес 6 790 ₽/мес
В качестве примера можно привести любое осознанное действие. Например, человек решает поднять руку: импульс сначала появляется в его мозгу, потом через сеть нейронов информация передается от одной клетки к другой. По пути она преобразуется и в конечном итоге достигает клеток в руке. Рука поднимается. Так работает большинство процессов в организме — тех, которые управляются мозгом. Но главная особенность нейронных сетей — способность обучаться. И именно она легла в основу машинных нейросетей. Первые машинные нейросети. В сороковых годах прошлого века люди впервые попытались описать сеть нейронов математически. Затем, в пятидесятых, — воссоздать ее модель с помощью кода. Получилась та самая структура, которую назвали перцептрон. На графиках и иллюстрациях ее обычно рисуют как набор кругов и прямых, их соединяющих — это и есть нейроны, образующие сетку. Перцептрон был проще современных нейросетей. Он имел всего один слой и три типа элементов: первый тип принимал информацию, второй обрабатывал и создавал ассоциативные связи, третий выдавал результат. Но даже элементарная структура уже могла обучаться и более-менее точно решать простые задачи. Например, перцептрон мог ответить, есть ли на картинке предмет, который его научили распознавать. Он был способен отвечать только на вопросы, где есть два варианта ответов: «да» и «нет». После этого развитие нейросетей замедлилось. Существующих на тот момент технологий было недостаточно, чтобы создать мощную систему. Наработки шли неторопливо, но чем больше развивалась компьютерная отрасль, тем больше интереса вызывал концепт. Современные нейронные сети. Когда компьютеры развились до современных мощностей, концепция нейронной сети снова стала привлекательной. К тому моменту ученые успели описать много алгоритмов, которые помогали распространять информацию по нейронам, и предложили несколько структур. Это были как однослойные, так и многослойные сети, однонаправленные и рекуррентные — подробнее мы расскажем о классификации далее. Чем более продвинутыми становились компьютеры, тем больше сложных и интересных задач могли реализовать нейронные сети. Мощность системы играет важную роль, т.к. каждый нейрон постоянно выполняет ресурсоемкие вычисления. Чтобы решить сложную задачу, обычно нужно много нейронов, их масштабная структура и множество математических функций. Понятно, что для этого понадобится очень сильный компьютер.
Как работает нейросеть?
Структуру нейрона воссоздают при помощи кода. В качестве «аксона» используется ячейка, которая хранит в себе ограниченный диапазон значений. Информация о как бы «нервных импульсах» хранится в виде математических формул и чисел. Связи между нейронами тоже реализованы программно. Один из них передает другому на вход какую-либо вычисленную информацию, тот получает ее, обрабатывает, и затем передает результат уже своих вычислений дальше. Таким образом, информация распространяется по сети, коэффициенты внутри нейронов меняются — происходит процесс обучения.
Станьте дата-сайентистом на курсе с МГУ и решайте амбициозные задачи с помощью нейросетей
Как работает обучение?
Предоставление информации. Когда нейросеть обучают, ей «показывают» данные, по которым необходимо что-то предсказать, и эталонные правильные ответы для них — это называется обучающей выборкой. Информации должно быть много — считается, что минимум в десять раз больше, чем количество нейронов в сети. Во время обучения нейросети показывают какую-либо информацию и говорят, что это такое, т.е. дают ответ. Все данные представляются не посредством слов, а с помощью формул и числовых коэффициентов. Например, изображению женщины соответствует «1», а изображению мужчины — «0». Это простой пример; реальные сети устроены сложнее. Преобразования. Входные нейроны получают информацию, преобразуют ее и передают дальше. Содержание информации автоматически обрабатывается с помощью формул и превращается в математические коэффициенты. Примерно как то, что мы видим глазами, превращается в нервные импульсы и передается в мозг. Он их обрабатывает, и человек понимает, что находится вокруг него. Здесь принцип похож.
Науки о данных
Онлайн-магистратура МФТИ.
Приобретите опыт на реальных проектах и выйдите на новый уровень в профессии и карьере.
Обработка и выводы. У каждого нейрона есть «вес» — число внутри него, рассчитанное по особым алгоритмам. Он показывает, насколько показания нейрона значимы для всей сети. Соответственно, во время обучения веса нейронов автоматически меняются и балансируются. В результате складывается ситуация, когда определенные нейроны реагируют, например, на силуэт человека — и выдают информацию, которая преобразуется в ответ: «Это человек». При этом человека не нужно описывать как набор математических фигур — во время обучения нейронная сеть сама задает значения весов, которые определяют его. Результат. Выводом нейронной сети становится набор формул и чисел, которые преобразуются в ответ. Например, если изображение мужчины — «0», а женщины — «1», то результат 0,67 будет означать что-то вроде «Скорее всего, это женщина». Нейросеть из-за своей структуры не может дать абсолютно точный ответ — только вероятность. И из-за закрытости и нестабильности нейронов ее показания могут различаться даже для одинаковых выборок.
Читайте также Как написать свою первую нейросеть на Python
Особенности нейронных сетей
Из архитектуры и режима работы нейросети следует несколько особенностей, ключевых для понимания направления. Нейросети закрыты. Мы не можем сказать, по каким критериям программа «решает», что на картинке изображен человек или что текст является стихотворением. Все это происходит автоматически; задача разработчика — правильно описать структуру и задать формулы. Примерно так же мы не можем достоверно сказать, что именно происходит в человеческом мозгу, почему он понимает, что собака — это собака, даже если впервые видит незнакомую породу. Если у собаки не будет хвоста, она окажется бесшерстной или покрашенной в неестественный цвет, мы все равно определим ее как собаку — по ряду характеристик, которые до конца не осознаем сами. Нейроны в сетях независимы. Каждый нейрон никак не связан с процессом работы других. Да, они получают друг от друга информацию, но их внутренняя деятельность не зависит от других элементов. Поэтому даже если один нейрон выйдет из строя, другой продолжит работать — это важно в вопросе отказоустойчивости. Подобная устойчивость свойственна и биологическим нейронным сетям, которые продолжают работать, даже если оказываются повреждены. Но у независимости есть и недостаток: из-за нее решения оказываются многоступенчатыми и порой хаотичными, их сложно предсказать и повлиять на них.
Начните карьеру в Data Science.
Онлайн-магистратура МФТИ с практикой на реальных проектах
Нейросети очень гибкие. Так как нейроны сами подбирают критерии и не зависят друг от друга, нейросети более гибкие, чем другие модели машинного обучения. Их архитектура унаследовала важные свойства биологической нервной системы: способность самообучаться и приспосабливаться к новым данным, возможность игнорировать «шумы» и неважные детали входной информации. Как живой человек сможет различить знакомого в толпе, так нейросеть можно научить выделять нужное и отбрасывать ненужное. Гибкость проявляется не только в этом. Нейросети способны решать широкий спектр задач, и их можно адаптировать практически под любые обстоятельства. Нейросети приблизительны. Мы уже говорили: любой результат, выданный нейронной сетью, приблизителен и неточен. Например, сеть, которая распознает картинки, может сказать «Здесь изображена корова» только с определенной вероятностью. И эта вероятность всегда будет меньше единицы, то есть ниже ста процентов. Более того: если два раза показать нейросети одну и ту же картинку, она может выдать разные вероятности в качестве ответа. Различаться они, конечно, будут на сотые и тысячные доли, но это все же неодинаковый, недетерминированный результат. Нейросети могут ошибаться. Любой искусственный интеллект уступает человеческому. Это происходит из-за того, что мощности нашего мозга до сих пор невозможно повторить. В теле человека 86 миллиардов нейронов, и еще не создана сеть, которая хотя бы немного приблизилась к этому числу. В современных нейросетях содержится примерно 10 миллиардов нейронов. Даже при наличии продвинутых формул искусственная нейросеть все равно остается упрощенной моделью — например, в ней нет понятия силы импульса, которое есть в биологических нервах. У биологических нейронных сетей, конечно, тоже бывают ошибки. Но для нейросетей они проявляются более ярко за счет их упрощенной структуры. Читайте также: Искусственный интеллект против сценаристов: как нейросети создают истории
Ошибки нейросетей: какими они бывают
Существует три основных проблемы работы с сетями — это явления забывчивости и переобучения, а также непредсказуемость. В биологических нейронных сетях они тоже есть, но мы их корректируем. В искусственных нейросетях аналогично применяются методы корректировки, но это сложнее и не всегда может быть эффективно. Забывчивость. Представьте, что вы попали сразу в несколько незнакомых ситуаций, опыта для которых ранее не было. Скорее всего, вам будет тяжело эффективно работать. Даже простые, но отличающиеся действия будут вызывать стресс, вы будете допускать больше ошибок. В теории нейронных сетей это называется забывчивостью: программы плохо реагируют на большое разнообразие ситуаций. Если обстоятельства все время меняются, нейросеть будет пытаться подстроиться под каждое из них, и в результате точность решений упадет. Но если человек еще может сориентироваться в незнакомой обстановке, то программе это сделать сложнее, ведь она — «вещь в себе», лишенная нейропластичности. Переобучение. Это явление, когда модель хорошо объясняет только примеры из обучающей выборки, адаптируясь к примерам оттуда, вместо того, чтобы учиться классифицировать что-то другое, не участвующее в обучении. Если вы когда-нибудь смотрели на автомобиль и видели, что фары похожи на глаза, а решетка радиатора — на рот, вы понимаете, как это работает. Нейросеть точно так же начинает путаться. Но ресурсов человеческого мозга хватает, чтобы понять, что машина — не настоящее лицо. Программа понять это не может и в подобной ситуации способна действительно выдать результат, что на картинке изображен человек. Еще один пример переобучения можно привести для сетей, которые создают что-то новое, например стиль. Вы, наверное, замечали, что у реальных художников и писателей есть свои характерные приемы, а их произведения со временем становятся все более похожими друг на друга. Это тоже пример переобучения — и генерирующие контент нейросети также ему подвержены. Непредсказуемость. Это прямое следствие закрытости и автономности нейронов. Сложно предугадать результат работы нейросети, будет ли она корректно работать в решении той или иной задачи. И если с предыдущими ошибками можно бороться благодаря правильным алгоритмам обучения, то непредсказуемость не пропадает. Это не стандартная программа, которая выдает известный результат для каждой ситуации. С непредсказуемостью тоже борются: точность можно повысить, если использовать подходящую архитектуру. Не обязательно более сложную — с некоторыми задачами хорошо справляются, наоборот, более простые сети. Но это дополнительно усложняет работу над нейросетями, особенно когда результат работы критичен.
Для чего нужны нейронные сети?
Нейросети используются в огромном количестве сфер, в первую очередь в тех, где от машины нужна функциональность сродни человеческой. То есть в ситуациях, где нет четко заданного скрипта, описывающего каждый конкретный случай; входные данные могут быть любыми, поэтому нужно уметь обрабатывать все возможные варианты. Хороший пример — робот-ассистент или подсказки в поле поиска. В свое время именно поисковые системы дали толчок развитию методов искусственного интеллекта. Пока с нейронными сетями работают в основном большие компании и холдинги. Для того чтобы создать нейросеть, способную достаточно грамотно работать в сложных условиях, нужны мощные машины и большие наборы обучающих данных. Такие ресурсы могут себе позволить только крупные корпорации. Еще есть стартапы — они в основном работают на арендованных мощностях и концентрируются на создании нейросети под конкретные задачи. Пример — знаменитое приложение Prisma. Отрасль может быть любой. Во всех сферах есть задачи, которые в силах решить нейросеть. Рассмотрим основные области задач, для решения которых используются нейросети. Классификация. Нейросеть получает объект и относит его к определенному классу. Самая первая сеть, перцептрон, решала именно задачи классификации, но очень простые. Сейчас возможности шире: сети могут классифицировать клиентов и выделять аудитории по интересам — вы сталкиваетесь с этой возможностью каждый день, когда ваш электронный почтовый ящик определяет (классифицирует) некоторые письма как спам. Но это не единственный пример: автоматический скоринг в банках, контекстная реклама — это все касается классификации. Распознавание. Задача поставлена иначе: она не в том, чтобы отнести объект к одному из классов, а в том, чтобы найти нужное среди множества данных — например, лицо на картинке. «Умные» фильтры для фотографий работают именно так. Можно вспомнить многочисленные нейросети, которые превращают фотографии в картины маслом или постеры, — они тоже сначала распознают, что находится на изображении. Распознавать можно и текстовые данные, например приложения для определения названия музыкальных треков. Но распознавание — это не только приложения. Это и поиск по картинке, и чтение текста с изображения, и работа «умных» камер слежения. Разнообразные программы для людей с ограниченными возможностями тоже используют возможности распознавания. Сюда же относятся голосовые ассистенты, которые распознают речь. Сейчас нейросети начинают активно применяться в медицине, например распознают информацию на снимках, что облегчает диагностику. Прогнозирование. Третий вариант — нейросети, которые получают входные данные и на их основе что-то предсказывают. Их часто применяют в аналитике, например в финансовом секторе такая сеть может предсказывать поведение рынка, а в маркетинге — тренды и аудитории. Нейросетевые программы, которые дописывают текст или дорисовывают изображение, тоже по сути занимаются прогнозированием. Так же работают поисковые системы: вы начинаете вводить фразу, а вам предлагают ее завершение. Это тоже задача прогнозирования, причем интересная — с учетом смысла предыдущих слов. Генерация. Нейронные сети могут сами генерировать контент. Пока он далек от идеального, но программы становятся умнее. Сейчас нейросети могут писать музыку, создавать изображения, и со временем они становятся все больше похожими на настоящие. Это комплексная задача, которая может состоять из нескольких предыдущих. Например, «дорисовка» человека на фотографии — задача распознавания и прогнозирования одновременно. Генерация текста в определенном стиле — классификация плюс прогнозирование.
Какими бывают нейронные сети?
У нейросетей есть общие черты — например, наличие входного слоя, который принимает информацию на вход. Но много и различий. Для каждой из перечисленных выше задач потребуется своя нейронная сеть. У них будут различаться структуры, архитектура, типы нейронов и многое другое. Создать универсальный алгоритм невозможно, по крайней мере пока, поэтому сети отдельно оптимизируют под определенные спектры задач. Однонаправленные. Нейросети работают в одном направлении — как оригинальный перцептрон. Это значит, что у них нет «памяти», а поток информации передается только в одну сторону. Структура выходит более простой, чем в случае с рекуррентными сетями, о которых мы поговорим ниже. Но это не плохо: для решения некоторых задач простые структуры подходят лучше. Однонаправленные сети хорошо подходят для задач распознавания. Суть примерно та же, что и в случае с восприятием окружающего мира реальным мозгом. Органы чувств получают информацию и передают ее в одном направлении, та в процессе трансформируется и распознается. Мозг делает вывод: «я вижу собаку», «слышна рок-музыка», «на улице холодно». Однонаправленная модель работает по тому же принципу, но более упрощенно. Еще один вариант применения — прогнозирование. Принцип такой же: «На улице тучи — значит, пойдет дождь». Но критерии, по которым нейросети делают выводы, до конца непонятны. Рекуррентные. У этих сетей есть эффект «памяти» благодаря тому, что данные передаются в двух направлениях, а не в одном. В результате они воспринимают предыдущую полученную информацию и могут глубже ее «анализировать». Это полезно, если перед сетью стоит сложная задача вроде перевода текста. Однонаправленная нейросеть переведет каждое слово по отдельности, и получится бессвязная «каша». Рекуррентная сможет учесть контекст и перевести, например, apple tree не как «яблоко дерево», а как «яблоня». Или более сложный пример: идиома that’s a piece of cake в контексте переведется не как «это кусок торта», а как «проще простого» в зависимости от стиля текста. На это сейчас способны не все переводчики. Задачи для рекуррентной сети можно сформулировать так: это работа с большим объемом данных, которые надо разбить на более мелкие и обработать. Причем с учетом связей между друг другом. Правильно настроенная рекуррентная нейронная сеть способна отличать контекст одной ситуации от другой. Это важно, например, при создании «говорящих» ботов: вспомните, как «обижаются» голосовые помощники, если сказать им что-то грубое. Сверточные. Это отдельная категория нейронных сетей, менее закрытая, чем другие, благодаря принципиальной многослойности. Многослойными называются нейронные сети, в которых нейроны сгруппированы в слои. При этом каждый нейрон предыдущего слоя связан со всеми нейронами следующего слоя, а внутри слоев связи между нейронами отсутствуют. Сверточные сети используют для распознавания образов. У них особая структура слоев: часть занимается «свертыванием», преобразованием картинки, а часть — группировкой и распознаванием маленьких дискретных элементов, созданных на сверточных слоях. Таких слоев несколько. Результат — более высокая точность и качественное восприятие информации. Интересный факт: как обычные нейросети были основаны на нейронах в головном мозгу, так сверточные — на структуре зрительной коры. Это та часть мозга, которая отвечает за восприятие картинок. В ней чередуются «простые» и «сложные» клетки: первые реагируют на определенные линии и очертания, вторые — на активацию конкретных простых клеток. Так происходит процесс распознавания образов в мозгу, и примерно так же устроена сверточная нейросеть. Сверточные слои «воспринимают» отдельные элементы картинки как простые клетки — линии. Особые слои, называемые субдискретизирующими, реагируют на конкретные найденные элементы. Чем больше слоев, тем более абстрактные детали способна заметить и определить сеть. На результат работы промежуточных слоев можно посмотреть, если заглянуть в файлы нейросети. Поэтому она и считается менее закрытой. Результат больше всего напоминает карту признаков из машинного обучения.
Нейронные сети — это машинное обучение?
Не совсем. Нейронные сети относят к глубокому обучению (Deep Learning), которое является частью машинного, но от классического ML подход сильно отличается. В стандартном машинном обучении программе предварительно рассказывают, как выглядит то, что она должна сделать. Например, если нужно отличить мужчину от женщины, потребуется «объяснить» модели, в чем принципиальные различия между фигурами. Это делается с помощью математических формул и абстракций, которые будут описывать параметры. Выше мы говорили про понятие карты признаков — по сути, это она и есть. При обучении нейросети такой задачи не стоит. Признаки сеть находит сама, их не нужно описывать. Необходимо только задать коэффициенты и результаты, соответствующие каждому возможному исходу. Это и хорошо, и плохо. Плохо — потому что приводит к уже описанной выше непредсказуемости. Хорошо — потому что дает больше гибкости: два необученных исходника одной и той же сети можно обучить на выполнение двух разных задач. Не понадобится писать другой алгоритм и задавать новые параметры. Можно оставить ту же архитектуру, главное — чтобы она изначально была оптимальной для этого типа задач.
То есть нейронная сеть может заменить человека?
Нейросети действительно используются для решения задач, похожих на те, которые решает человеческий мозг. Но даже мощная нейросеть может ошибиться. И в некоторых случаях цена этой ошибки может быть крайне велика, а ее вероятность намного больше, чем если задачу решает человек. Поэтому сейчас нейронные сети используются скорее для ассистирования, чем для полномасштабной самостоятельной работы. Существуют проблемы, в решении которых машины действительно могут заменить человека. Это некоторые аналитические задачи, а также те, которые связаны с более-менее однообразными действиями. Например, с помощью нейросети может работать робот-почтальон. Но далеко не все задачи можно решить вот так. Например, робот может ответить на более менее стандартные вопросы в банковском приложении, но не поймет, что делать, если человек задаст что-то неочевидное.
А что с творчеством нейронных сетей?
Нейросеть не осознает свои действия. Даже если она генерирует контент — она делает это машинально, на основе предыдущих данных, а не благодаря собственному мышлению. Вряд ли нейронная сеть, даже сложная, сможет догадаться, что созданное ей предложение абсурдно и не имеет смысла. Для нее нет такого понятия, как «смысл». Творчество нейросетей — примерно как «речь» говорящего попугая или «китайская комната». Поэтому есть мнение, что книга или картина, написанные нейросетью, не смогут заменить человеческие, даже если алгоритмы будут очень хорошо имитировать наше творчество. Вряд ли много кто захочет читать книгу, если точно известно, что автор не вкладывал туда никаких мыслей. Правда, пока создавать с нуля контент, похожий на настоящий, могут немногие системы. Но вы можете внести свой вклад в их развитие — если освоите, как они работают. Сейчас это направление востребовано как никогда. Тест: нейросеть или человек — сможете определить?
Примеры популярных нейронных сетей
Нейросеть | Описание |
---|---|
Convolutional Neural Network (CNN) | Используется для обработки изображений и распознавания паттернов в них. Применяется в компьютерном зрении. |
Recurrent Neural Network (RNN) | Подходит для работы с последовательными данными, такими как текст и аудио. Применяется в языковых моделях. |
Generative Adversarial Network (GAN) | Используется для генерации новых данных, таких как изображения и звуки. Применяется в синтезе контента. |
Transformer | Базовая архитектура для моделей обработки естественного языка, таких как BERT и GPT. |
Deep Q-Network (DQN) | Применяется в обучении с подкреплением для игр и задач управления. |
U-Net | Широко используется в сегментации изображений, включая медицинское изображение. |
YOLO (You Only Look Once) | Одна из популярных архитектур для реального времени обнаружения объектов на изображении. |
ResNet | Известная архитектура с нейронными блоками остаточных связей, обычно используется для классификации. |
ChatGPT | Разработанный OpenAI, является мощной языковой моделью, основанной на архитектуре GPT (Generative Pre-trained Transformer). ChatGPT способен генерировать тексты и поддерживать разговоры с пользователем, делая его популярным инструментом для задач генерации текста и чат-ботов. |
Нейросети: какие бывают, как их обучают и 10 онлайн нейросетей
Нейросеть или нейронная сеть — это компьютерный алгоритм, который имитирует поведение человеческого мозга при обработке данных. Сталкиваясь с незнакомым предметом, нейросеть, как и человек, изучает его, делает выводы и использует полученную информацию в дальнейшем.
Объясняем на примерах, как работают и учатся нейронные сети, чем они полезны и как связаны с глубоким обучением. В конце — подборка сервисов, чтобы самостоятельно попробовать нейросети в деле. Вы увидите, как искусственный интеллект генерирует тексты, рисует картины и даже делает музыку.
Нет времени читать статью? Найдите ее в нашем телеграм-канале и сохраните себе в «Избранном» на будущее.
Что такое нейросеть?
При стандартном подходе к программированию человек пишет алгоритмы для компьютеров, то есть сообщает им, что конкретно нужно сделать. В случае с нейронными сетями мы не говорим, как решить задачу, — они учатся это делать сам на основе разных данных.
Со временем нейросеть выявляет закономерности и генерирует на их основе и новые решения. При этом придумать что-то уникальное искусственный интеллект не может — он действует только в рамках той информации, которую изучил.
Пример нейронной сети — голосовые помощники Siri, Алиса, Маруся и другие. Со временем они начинают узнавать голос, понимают предпочтения и рекомендуют более подходящий контент.
Принцип работы нейросетей придумали еще в середине XX века, но у человечества было недостаточно информации, чтобы обучить модели. Нейронные сети стали активно использовать в 2010-х годах, когда появились большие объемы данных. С тех пор нейросети многому научились: они могут писать тексты, рисовать, читать вслух, делать видео и даже музыку.
Например, в сентябре 2022 года вышел журнал «РБК Стиль», обложки к которому нарисовала нейронная сеть. Искусственный интеллект проанализировал работы с выставки современного искусства Cosmoscow и сгенерировал изображение.
Обложка к журналу «РБК Стиль» №5, 2022 г. Автор — искусственный интеллект
В период обучения нейросеть может выдавать странные результаты. Например, в 2019 году робот-помощник Тинькофф Банка грубо ответил пользовательнице. Девушка пожаловалась на проблемы со входом в приложение по отпечатку, на что искусственный интеллект посоветовал ей отрезать пальцы. Так произошло из-за того, что нейросеть училась на языковом корпусе — большом объеме данных из разных источников. Какие-то тексты в корпусе были литературными, а какие-то — нет. Чтобы избежать таких ситуаций, тексты пришлось бы отбирать вручную, но это нереально.
Читайте также: Искусственный интеллект: его возможности и виды, развитие и использование
Как работает нейросеть?
Нейронная сеть состоит из искусственных нейронов или узлов — небольших программ, которые производят расчеты. Таких узлов много, поэтому их объединяют в слои:
- входной, куда приходят данные;
- один или несколько скрытых, где производятся вычисления;
- выходной, где данные выходят наружу.
Каждый узел соединяется с соседними, их связь называется синапс и имеет определенный вес. Чем выше это значение, тем важнее связь между двумя узлами. Если выход любого узла превышает указанное значение, этот узел активируется и отправляет данные на следующий уровень сети. В противном случае данные не передаются дальше.
Мы подготовили наглядную схему, на которой видно принцип работы нейросети.
Разберем работу нейронной сети на примере. Допустим, мы хотим, чтобы нейросеть отличала картинку с собакой от картинки с кошкой — для этого нужно загрузить много фотографий этих животных. Нейросеть изучит каждое изображение и выдаст результат в виде двух чисел: первое будет показывать, насколько алгоритм уверен, что на картинке собака, а второе — что кошка. Если ответ неверный, нужно указать на ошибку — алгоритм всё пересчитает и запомнит.
Нейросеть не может генерировать уникальные результаты, потому что действует только на основе предыдущего опыта. Так, если в нашу нейросеть загрузить фотографию попугая, она ничего не поймет и идентифицирует его как кошку или собаку. Чтобы нейросеть узнавала еще и попугаев, ее нужно обучить дополнительно по тому же алгоритму.
Читайте также: 5 технологий Data Science в маркетинге
Как обучить нейросеть?
Чтобы научить нейросеть, нужно много данных. Существуют даже отдельные системы, в которых информация размечена специально для искусственного интеллекта.
Вы наверняка встречали капчи от Google, на которых нужно выбрать светофоры, машины, корабли и прочее. Принято считать, что так сайт проверяет, кто делает запрос: робот или человек. Но это не единственное предназначение капчей. Попробуйте дать частично верный ответ, и система вас все равно пропустит.
Алгоритм нужен еще и для того, чтобы обучить нейросеть Google на конкретных примерах. Это способ собрать большой массив данных, на создание которого у работников ушло бы намного больше времени.
Google создал специальный сайт, где каждый желающий может обучить нейросеть, — Teachable Machine. С помощью сервиса можно научить искусственный интеллект распознавать звуки, позы и изображения. Готовую модель можно скачать на Google Диск в формате zip, чтобы потом вернуться и продолжить работу.
Мы научили нейросеть отличать яблоки от бананов: для этого мы загрузили несколько образцов, модель их изучила и смогла распознать яблоко с точностью 74%. Чтобы результаты были лучше, нужно дать нейросети больше фотографий.
Читайте также: Как использовать машинное обучение в маркетинге
Какие бывают нейросети?
Существует много типов нейронных сетей: они различаются по сложности, вариантам использования, структуре, а также по тому, как моделируются искусственные нейроны, и по связям между узлами. Самыми популярными считаются три типа нейросетей:
- персептрон (перцептрон),
- рекуррентные,
- сверточные.
Персептрон
Самая простая и самая старая форма нейронных сетей. Состоит из одного нейрона, который выполняет две операции: принимает входные данные и применяет к ним функцию активации — в результате получается вывод в двоичной системе.
Персептрон не содержит скрытых слоев и может использоваться только для тех задач, где нужно разделить данные на две классификации. Из-за своей простоты этот тип нейросетей уже почти не используют.
Существуют и более сложные многослойные персептроны, в которые добавляются дополнительные скрытые слои. Их используют для более сложных задач, таких как распознавание голоса.
Как работают персептрон и многослойный персептрон
Рекуррентные нейронные сети
Рекуррентные нейросети применяют для генерации текстов, обработки речи и перевода. Это сети с циклами, главная особенность которых — использование памяти. Модель будет перемещать данные вперед и возвращать их к предыдущим шагам, чтобы как можно лучше выполнить задачу.
Слои между входным и выходным слоями повторяются, поскольку данные зацикливаются и сохраняются — так сеть хранит информацию о всех доступных данных. Благодаря этому модели лучше понимают контекст входных данных и улучшают прогнозы выходных данных.
Сверточные нейронные сети
Чаще всего сверточные нейросети используют для классификации изображений, видео, распознавания объектов и лиц. Если обычная нейронная сеть состоит из трех типов слоев, то сверточная — из пяти:
- входной,
- сверточный,
- объединяющий,
- подключенный
- выходной.
Такие сети дают устойчивый результат, даже если изменить ракурс и масштаб фото. Каждый слой изучает определенную часть изображения, а на выходе соединяет все полученные данные.
Например, нам нужно распознать лицо по фотографии. На первом этапе нейросеть определяет простые очертания, на втором — группы краев, которые образуют фигуры, на третьем — глаза и нос. Сети нужно 5–6 уровней, чтобы собрать все эти черты в портрет человека.
Сверточная нейронная сеть рассматривает изображение по кусочкам
Читайте также: Google: искусственный интеллект может стать разумным?
Как связаны нейросеть и умные устройства?
Нейросети позволяют обычным устройствам становиться умными. Например, современные камеры видеонаблюдения могут не только записывать видео, но и анализировать его: обнаруживать человека, фиксировать движение в кадре, распознавать лица.
А еще умные устройства — это отличная база для обучения нейросетей. Умные часы фиксируют жизненные показатели, колонки слушают наши разговоры, телефоны наблюдают за перемещениями. Эти и другие устройства отправляют данные на серверы компаний — в дальнейшем из информации получаются обученные алгоритмы.
Данные отправляют на серверы, так как в маленьких устройствах обычно недостаточно мощности и памяти для обучения. Попробуйте поговорить с голосовым помощником на смартфоне, когда у вас нет доступа к Интернету, — ничего не получится, потому что устройство только собирает данные, но не обрабатывает их. Ученые уже работают над тем, чтобы портативные устройства смогли обучаться сами, сохраняя конфиденциальность пользователя.
Читайте также: Интернет вещей: как работает и где используют
Нейросеть и глубокое обучение (deep learning) — в чем отличие?
Глубокое обучение — это подраздел машинного обучения, а нейронные сети составляют основу его алгоритмов. Слово «глубокий» относится к количеству скрытых слоев в нейронной сети, то есть к ее глубине. По сути, каждая нейронная сеть с более чем тремя слоями, включая входной и выходной, может считаться моделью глубокого обучения.
Проще всего понять отличия нейросетей от глубокого обучения, если рассмотреть их структуру.
Нейронные сети для начинающих. Часть 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, которая сохраняет баланс в вычислении ошибки.
Root MSE
Arctan
Принцип подсчета ошибки во всех случаях одинаков. За каждый сет, мы считаем ошибку, отняв от идеального ответа, полученный. Далее, либо возводим в квадрат, либо вычисляем квадратный тангенс из этой разности, после чего полученное число делим на количество сетов.
Задача
Теперь, чтобы проверить себя, подсчитайте результат, данной нейронной сети, используя сигмоид, и ее ошибку, используя MSE.
Данные: I1=1, I2=0, w1=0.45, w2=0.78 ,w3=-0.12 ,w4=0.13 ,w5=1.5 ,w6=-2.3.
Решение
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
O1ideal = 1 (0xor1=1)
Результат — 0.33, ошибка — 45%.
Большое спасибо за внимание! Надеюсь, что данная статья смогла помочь вам в изучении нейронных сетей. В следующей статье, я расскажу о нейронах смещения и о том, как тренировать нейронную сеть, используя метод обратного распространения и градиентного спуска.
- нейронные сети
- алгоритмы
- для начинающих
- для новичков
- туториал