В этом проекте я реализовал доказательство концепции всех моих теоретических знаний о нейронной сети для кодирования простой нейронной сети с нуля на Python без использования какой-либо библиотеки машинного обучения.

Введение

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

В этом проекте используется единственная нейронная сеть скрытого слоя с функцией активации сигмоида в единицах скрытого слоя и функцией активации сигмоида также для выходного слоя, поскольку выход логики XOR является двоичным, т.е. 0 или 1, только один нейрон находится в выходном слое. . Математика, лежащая в основе нейронной сети, объясняется ниже:

Объяснение математики, лежащей в основе нейронной сети:

Следующая работа показывает математику, лежащую в основе нейронной сети с одним скрытым слоем:

Код

Следующий код показывает инициализацию параметров нейронной сети.

Следующий код показывает функцию активации и функцию прямого и обратного распространения в Python.

В итоге мы запускаем нейронную сеть для 10000 EPOCHS и просматриваем функцию потерь следующим образом:

Результаты

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

Ниже приведены прогнозы нейронной сети на тестовых входах:

Как мы знаем, для входов XOR 1,0 и 0,1 будут выходить 1, а входы 1,1 и 0,0 будут выходить 0. Это именно то, что делает нейронная сеть.

Код

Пожалуйста, просмотрите полный код на Github по адресу https://github.com/shayanalibhatti/Coding-neural_network-for-XOR-logic-from-scratch, в нем есть код с комментариями, чтобы его было легко понять читателям.

Заключение

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