Реализация процесса обучения искусственной нейронной сети на Python
Искусственная нейронная сеть (ИНС) — это парадигма обработки информации, созданная по образу и подобию человеческого мозга. Искусственные нейронные сети, как и люди, учатся на примерах. Искусственная нейронная сеть настраивается для решения конкретной задачи, например распознавания образов или классификации данных, в процессе обучения. Обучение в значительной степени связано с корректировкой синаптических связей между нейронами.
Мозг состоит из сотен миллиардов клеток, называемых нейронами. Нейроны соединены между собой синапсами — это не что иное, как связи, по которым нейрон может посылать импульс другому нейрону. Когда нейрон посылает возбуждающий сигнал другому нейрону, этот сигнал суммируется со всеми остальными входными сигналами этого нейрона. Если сумма превысит определенный порог, целевой нейрон подаст сигнал к действию — так происходит процесс мышления. В информатике мы моделируем этот процесс, создавая «сети» на компьютере с помощью матриц. Эти сети можно рассматривать как абстракцию нейронов без учета всех биологических сложностей. Для простоты мы смоделируем простую нейронную сеть с двумя слоями, способную решать задачу линейной классификации.
Допустим, у нас есть задача, в которой мы хотим предсказать результат на основе набора входных данных и выходных значений в качестве обучающего примера, как показано ниже:
Обратите внимание, что результат напрямую связан с третьим столбцом, то есть значения входного параметра 3 — это и есть результат в каждом обучающем примере на рис. 2. Таким образом, в тестовом примере результат должен быть равен 1.
Процесс обучения состоит из следующих этапов:
Прямое распространение: берем входные данные, умножаем их на весовые коэффициенты (в качестве весовых коэффициентов используются случайные числа) Пусть Y = WiIi = W1I1+W2I2+W3I3 Пропустите результат через сигмовидную функцию, чтобы вычислить выходной сигнал нейрона. Сигмовидная функция используется для нормализации результата в диапазоне от 0 до 1: 1/1 + e-y
Обратное распространение Рассчитайте ошибку, то есть разницу между фактическим и ожидаемым результатом. В зависимости от ошибки скорректируйте весовые коэффициенты, умножив ошибку на входные данные и снова на градиент сигмоидальной кривой: Weight += Error Input Output (1-Output), где Output (1-Output) — производная сигмоидальной кривой.
Примечание:Повторите весь процесс несколько тысяч раз. Давайте реализуем весь процесс на Python. Мы будем использовать библиотеку Numpy, которая упростит все вычисления с матрицами. Чтобы запустить код, вам нужно установить в систему библиотеку numpy Команда для установки numpy:
sudo apt -get install python-numpy
Ожидаемый результат: После 10 итераций наша нейронная сеть предсказывает значение 0,65980921. Результат не очень хороший, ведь правильный ответ — 1. Если увеличить количество итераций до 100, мы получим 0,87680541. Наша сеть становится умнее! Таким образом, после 10 000 итераций мы получаем результат 0,9897704, который довольно близок к истине и вполне приемлем.
Общайтесь, делитесь информацией и участвуйте в жизни сообщества, выстраивайте отношения. Пожалуйста, войдите в систему, если вы уже зарегистрированы, или создайте учетную запись.
Мы можем использовать файлы cookie или любые другие технологии отслеживания, когда вы посещаете наш веб-сайт, включая любые другие медиа-формы, мобильные веб-сайты или мобильные приложения, связанные с Сайтом или подключенные к нему, чтобы помочь настроить Сайт и улучшить ваш опыт. Узнать больше