Алгоритм обратного распространения реализован для набора данных Iris.

Введение

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

Мы будем использовать знаменитый набор данных Iris. Вы можете скачать его по адресу https://archive.ics.uci.edu/ml/datasets/iris.

Код

Сначала мы будем импортировать необходимые библиотеки.

Numpy - это библиотека Python с открытым исходным кодом, которая удобна для выполнения многих математических операций с массивами.

Затем мы загрузим набор данных Iris. Это можно просто сделать с помощью функции load_iris () модуля sklearn.datasets.

Мы можем напрямую загрузить набор данных iris с помощью sklearn, или вы можете загрузить его из репозитория UCL Machine Learning. Есть много других интересных наборов данных, с которыми вы можете работать с https://archive.ics.uci.edu/ml/index.php .

X и Y будут структурами данных в памяти, которые будут представлять наш набор данных. Мы можем легко использовать для них numpy, и обработка будет легкой.

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

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

Теперь мы просто создаем разделение теста на поезд следующим образом: -

Набор данных Iris состоит из 150 экземпляров цветов, каждый из которых характеризуется четырьмя атрибутами.

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

Функция принимает в качестве входных данных все нейроны в слое, вычисляет сигмоид и возвращает выходные данные сигмоида для всех нейронов в виде массива.

Теперь мы определим модель и случайным образом инициализируем связанные с ними веса.

Модель содержит 4 слоя с 4- ›8-› 8- ›3 нейронами соответственно. Нейронная сеть представляет собой многоступенчатый граф, т.е. узлы разделены на наборы, а узлы из слоя i связаны с узлами в слое (i + 1) Теперь задайте веса между входным слоем (слой 1) и слоем 2 как w12, аналогично веса, связанные между слоями 2 и 3 как w23 и т. д. b1, b2 и b3 - это смещение, связанное со слоями 1, 2. и 3 соответственно.

В нейронной сети каждый нейрон в слое i подключен к каждому нейронному слою (i + 1). Следовательно, w12 представляет собой матрицу размерности 8 x 4 (количество нейронов в слое ix no нейронов в слое (i-1)). Каждый нейрон в слое связан с смещением, поэтому размеры матрицы смещения равны (количество нейронов в слое x 1).

Прямое распространение: -

Функция обратного распространения ошибки

Основная функция

Вес после тренировки

Прогнозы

Спасибо, что прочитали статью

Полный код доступен по адресу: https://github.com/HRKagdi/Machine-Learning