Результатом работы является класс Network, реализующий нейронную сеть с возможностью добавления полносвязных слоев произвольной размерности
Сеть обучается на наборе примеров методом градиентного спуска
Пример обучения сети представлен в файле notebooks/TestNeural.ipynb
В представленном наборе примеров отрицательным значениям признаков соответствуют большие значения предикторов, а положительным - меньшие.
В результате при инициализации сеть вычисляет большие значения для примеров с положительными признаками и меньшие - для примеров с отрицательными, так как изначально все параметры сети положительны
После обучения сеть сеть вычисляет меньшие значения для примеров с положительными признаками и большие - для примеров с отрицательными, что свидетельствует об успешном обучении модели
Сеть состоит из слоев, каждый из которых представлен матрицей, строки в которой - веса нейронов.
Вычисление слоя есть матричное произведение входных данных с добавленной единицей для порогового коэффициента "нейрона" и матрицы слоя
Предсказание осуществляется путем последовательного вычисления слоёв с использованием результата вычисления предыдущего слоя в качестве входных данных для следующего
При добавлении первого слоя в сеть в ней автоматически создается входной слой
Все доступные слои являются наследниками класса Layer, и потому взаимозаменяемы внутри сети
Обучение сети происходит с указанием функции ошибки и представляет собой последовательную поправку параметров слоёв на антиградиент с некоторым задаваемым коэффициентом. Обучение происходит в обратном порядке (с конца), и каждый слой опирается на частные производные следующего слоя для вычисления градиента по нейронам.