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

menu icon

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

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

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

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

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

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

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

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

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

Математическая формула для вычисления суммы

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

Математическая формула для вычисления выходных данных

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

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

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

  1. Хорошие ли сегодня волны? (Да: 1, Нет: 0)
  2. Свободен ли лайнап? (Да: 1, Нет: 0)
  3. Были ли случаи нападения акул в последнее время? (Да: 0, Нет: 1)

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

  • X1 = 1, так как сегодня хорошие волны для серфинга
  • X2 = 0, так как уже собралось много серферов
  • X3 = 1, так как в последнее время не было нападений акул

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

  • W1 = 5, так как большие свеллы — редкость
  • W2 = 2, так как вы уже привыкли к скоплению серферов
  • W3 = 4, так как вы боитесь акул

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

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

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

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

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

  • i обозначает индекс выборки,
  • y-hat («y c крышечкой») обозначает прогнозируемый результат,
  • y обозначает фактическое значение,
  • m обозначает число выборок.
Математическая формула для вычисления функции стоимости

𝐶𝑜𝑠𝑡 𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 = 𝑀𝑆𝐸 =1/2𝑚 ∑129_(𝑖 =1)^𝑚▒(𝑦 ̂^((𝑖) )−𝑦^((𝑖) ) )^2

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

Линейная диаграмма с изображением точки сходимости

Для более подробного изучения математических понятий, используемых в нейронных сетях, рекомендуем прочитать статью на сайте 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.

Получите IBMid и создайте учетную запись IBM Cloud.