Руководство для начинающих по нейронным сетям

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

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

Слои нейронных сетей

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

Чтобы полностью понять сеть, мы более подробно расскажем о том, как работает отдельный нейрон.

Нейрон

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

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

  • Нейрон получит какой-то вход (x), который обычно представляет собой число или вектор чисел.
  • Каждый ввод умножается на вес (w), который описывает силу соединения. Веса рассматриваются как обучаемый параметр (по сути, регулируемое число, которое можно настроить для получения оптимального результата).
  • bias (b) — это параметр, связанный с каждым узлом в нейронной сети. Он используется для настройки вывода узла, даже если вход равен нулю. Смещение позволяет модели лучше соответствовать данным и делать более точные прогнозы.
  • Линейная функция (Z) представляет собой сумму взвешенных входных
  • Выходные данные или функция активации(f) используются в сети для внесения нелинейности в нашу модель. Это делается для того, чтобы наша нейронная сеть изучала более сложные закономерности в данных.

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

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

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

  • Гиперболический тангенс (Tanh): функция гиперболического тангенса похожа на сигмоидальную функцию, но она отображает входные данные в диапазоне от -1 до 1. Она имеет более сильный эффект насыщения, чем сигмоидальная функция, но он также имеет нулевое среднее значение, что может упростить обучение модели с использованием определенных алгоритмов оптимизации.

  • Выпрямленная линейная единица (ReLU). Выпрямленная линейная единица — это простая и популярная функция активации, которая сопоставляет входные данные с диапазоном от 0 до бесконечности. Он имеет линейную форму для положительных входов и постоянный нулевой выход для отрицательных входов. Функция ReLU быстро вычисляется, и на практике было показано, что она хорошо работает для многих задач.

На рисунке ниже показаны упомянутые выше и другие функции активации.

Обучение

Процесс обучения нейронной сети делится на две фазы: прямое распространение и обратное распространение.

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

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

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

Потеря

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

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

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

Ссылка:

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.